aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-08-08 10:20:08 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-08 10:21:46 -0700
commit0f232691719ef89a0a1c7be631a84f435894a6ce (patch)
tree59148119a6d4ed3b72c9ccf79e9add7a02b7aeb0 /src/main/java/com/google/devtools/build/lib/rules
parentbf1db78d75ac6d2fe40742c36f79341859274f50 (diff)
Expose GeneratedExtensionRegistryProvider to Skylark.
RELNOTES: None PiperOrigin-RevId: 207905848
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java132
5 files changed, 113 insertions, 28 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 9466d7060a..e18857f31e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -678,7 +678,7 @@ public class AndroidCommon {
idlHelper.addTransitiveInfoProviders(builder, classJar, manifestProtoOutput);
if (generatedExtensionRegistryProvider != null) {
- builder.add(GeneratedExtensionRegistryProvider.class, generatedExtensionRegistryProvider);
+ builder.addNativeDeclaredProvider(generatedExtensionRegistryProvider);
}
OutputJar resourceJar = null;
if (resourceApk.getResourceJavaClassJar() != null && resourceSourceJar != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index 5700cf35d0..b484479169 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -324,8 +324,7 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext);
if (generatedExtensionRegistryProvider != null) {
- builder.addProvider(
- GeneratedExtensionRegistryProvider.class, generatedExtensionRegistryProvider);
+ builder.addNativeDeclaredProvider(generatedExtensionRegistryProvider);
}
JavaRuleOutputJarsProvider ruleOutputJarsProvider = javaRuleOutputJarsProviderBuilder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index 6bba8faf1b..45edf6c647 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -306,7 +306,7 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
new JavaPrimaryClassProvider(
semantics.getPrimaryClass(ruleContext, common.getSrcsArtifacts())));
if (generatedExtensionRegistryProvider != null) {
- builder.add(GeneratedExtensionRegistryProvider.class, generatedExtensionRegistryProvider);
+ builder.addNativeDeclaredProvider(generatedExtensionRegistryProvider);
}
Artifact deployJar =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index 317b169c97..2d3e7deacd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -177,7 +177,7 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
semantics.addProviders(ruleContext, common, genSourceJar, builder);
if (generatedExtensionRegistryProvider != null) {
- builder.add(GeneratedExtensionRegistryProvider.class, generatedExtensionRegistryProvider);
+ builder.addNativeDeclaredProvider(generatedExtensionRegistryProvider);
}
JavaCompilationArgsProvider compilationArgsProvider = javaCompilationArgs;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java
index 4aae6dbce7..0c03339c36 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/GeneratedExtensionRegistryProvider.java
@@ -14,15 +14,17 @@
package com.google.devtools.build.lib.rules.java.proto;
-import com.google.auto.value.AutoValue;
import com.google.common.base.Verify;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Strategy;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.skylarkbuildapi.java.GeneratedExtensionRegistryProviderApi;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
/**
* A {@link TransitiveInfoProvider} for {@link Artifact}s created and used to generate the proto
@@ -30,54 +32,138 @@ import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.
* from a target, that the top most target produces a registry that is a superset of any child
* registries.
*/
-@AutoCodec(strategy = Strategy.AUTO_VALUE_BUILDER)
-@AutoValue
@Immutable
-public abstract class GeneratedExtensionRegistryProvider implements TransitiveInfoProvider {
+public final class GeneratedExtensionRegistryProvider extends NativeInfo
+ implements GeneratedExtensionRegistryProviderApi<Artifact> {
+
+ public static final String PROVIDER_NAME = "GeneratedExtensionRegistryProvider";
+ public static final Provider PROVIDER = new Provider();
+
+ private final Label generatingRuleLabel;
+ private final boolean isLite;
+ private final Artifact classJar;
+ private final Artifact srcJar;
+ private final NestedSet<Artifact> inputs;
/** @return the rule label for which this registry was built. */
- public abstract Label getGeneratingRuleLabel();
+ @Override
+ public Label getGeneratingRuleLabel() {
+ return generatingRuleLabel;
+ }
/** @return if this registry was generated for lite or full runtime. */
- public abstract boolean isLite();
+ @Override
+ public boolean isLite() {
+ return isLite;
+ }
/** @return the class jar generated by the registry. */
- public abstract Artifact getClassJar();
+ @Override
+ public Artifact getClassJar() {
+ return classJar;
+ }
/** @return the source jar generated by the registry. */
- public abstract Artifact getSrcJar();
+ @Override
+ public Artifact getSrcJar() {
+ return srcJar;
+ }
/** @return the proto jars used to generate the registry. */
- public abstract NestedSet<Artifact> getInputs();
+ @Override
+ public NestedSet<Artifact> getInputs() {
+ return inputs;
+ }
public static Builder builder() {
- return new AutoValue_GeneratedExtensionRegistryProvider.Builder();
+ return new GeneratedExtensionRegistryProvider.Builder();
+ }
+
+ GeneratedExtensionRegistryProvider(
+ Label generatingRuleLabel,
+ boolean isLite,
+ Artifact classJar,
+ Artifact srcJar,
+ NestedSet<Artifact> inputs) {
+ super(PROVIDER);
+ this.generatingRuleLabel = generatingRuleLabel;
+ this.isLite = isLite;
+ this.classJar = classJar;
+ this.srcJar = srcJar;
+ this.inputs = inputs;
}
/** A builder for {@link GeneratedExtensionRegistryProvider}. */
- @AutoValue.Builder
- public abstract static class Builder {
+ public static class Builder {
+ private Label generatingRuleLabel = null;
+ private boolean isLite = false;
+ private Artifact classJar = null;
+ private Artifact srcJar = null;
+ private NestedSet<Artifact> inputs = null;
/** Sets the rule label for which this registry was built. */
- public abstract Builder setGeneratingRuleLabel(Label label);
+ public Builder setGeneratingRuleLabel(Label label) {
+ this.generatingRuleLabel = label;
+ return this;
+ }
/** Indicates this registry was built for lite runtime if <tt>true</tt>, full otherwise. */
- public abstract Builder setLite(boolean lite);
+ public Builder setLite(boolean lite) {
+ this.isLite = lite;
+ return this;
+ }
/** Sets the class jar containing the generated extension registry. */
- public abstract Builder setClassJar(Artifact classJar);
+ public Builder setClassJar(Artifact classJar) {
+ this.classJar = classJar;
+ return this;
+ }
/** Sets the source jar containing the generated extension registry. */
- public abstract Builder setSrcJar(Artifact srcJar);
+ public Builder setSrcJar(Artifact srcJar) {
+ this.srcJar = srcJar;
+ return this;
+ }
/** Sets the transitive set of protos used to produce the generated extension registry. */
- public abstract Builder setInputs(NestedSet<Artifact> inputs);
+ public Builder setInputs(NestedSet<Artifact> inputs) {
+ this.inputs = inputs;
+ return this;
+ }
- abstract GeneratedExtensionRegistryProvider autoBuild();
public GeneratedExtensionRegistryProvider build() {
- GeneratedExtensionRegistryProvider result = autoBuild();
- Verify.verify(!result.getInputs().isEmpty());
- return autoBuild();
+ Verify.verify(!inputs.isEmpty());
+ return new GeneratedExtensionRegistryProvider(
+ generatingRuleLabel, isLite, classJar, srcJar, inputs);
+ }
+ }
+
+ /** Provider class for {@link GeneratedExtensionRegistryProvider} objects. */
+ public static class Provider extends BuiltinProvider<GeneratedExtensionRegistryProvider>
+ implements GeneratedExtensionRegistryProviderApi.Provider<Artifact> {
+ private Provider() {
+ super(PROVIDER_NAME, GeneratedExtensionRegistryProvider.class);
+ }
+
+ public String getName() {
+ return PROVIDER_NAME;
+ }
+
+ @Override
+ public GeneratedExtensionRegistryProvider create(
+ Label generatingRuleLabel,
+ boolean isLite,
+ Artifact classJar,
+ Artifact srcJar,
+ SkylarkNestedSet inputs) {
+ return new GeneratedExtensionRegistryProvider(
+ generatingRuleLabel,
+ isLite,
+ classJar,
+ srcJar,
+ NestedSetBuilder.<Artifact>stableOrder()
+ .addTransitive(inputs.getSet(Artifact.class))
+ .build());
}
}
}