Move BazelRuleClassProvider.J2OBJC_RULES to its own class.
PiperOrigin-RevId: 184983111
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java
index bdd31e3..b45e350 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java
@@ -61,6 +61,11 @@
}
@Override
+ public String getRuleClassName() {
+ return ruleAttributes.getRuleClassName();
+ }
+
+ @Override
public Label getLabel() {
return ruleAttributes.getLabel();
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index c718e04..c409ce4 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -81,9 +81,6 @@
import com.google.devtools.build.lib.rules.cpp.transitions.LipoDataTransitionRuleSet;
import com.google.devtools.build.lib.rules.genrule.GenRuleBaseRule;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
-import com.google.devtools.build.lib.rules.objc.J2ObjcAspect;
-import com.google.devtools.build.lib.rules.objc.J2ObjcLibraryBaseRule;
-import com.google.devtools.build.lib.rules.objc.J2ObjcLibraryRule;
import com.google.devtools.build.lib.rules.platform.PlatformRules;
import com.google.devtools.build.lib.rules.proto.BazelProtoLibraryRule;
import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
@@ -299,25 +296,6 @@
}
};
- public static final RuleSet J2OBJC_RULES =
- new RuleSet() {
- @Override
- public void init(Builder builder) {
- String toolsRepository = checkNotNull(builder.getToolsRepository());
- J2ObjcAspect j2ObjcAspect = new J2ObjcAspect(toolsRepository);
-
- builder.addNativeAspectClass(j2ObjcAspect);
- builder.addRuleDefinition(new J2ObjcLibraryBaseRule());
- builder.addRuleDefinition(new J2ObjcLibraryRule(j2ObjcAspect));
- }
-
- @Override
- public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE, JavaRules.INSTANCE,
- ObjcRules.INSTANCE);
- }
- };
-
public static final RuleSet VARIOUS_WORKSPACE_RULES =
new RuleSet() {
@Override
@@ -362,7 +340,7 @@
ANDROID_RULES,
PYTHON_RULES,
ObjcRules.INSTANCE,
- J2OBJC_RULES,
+ J2ObjcRules.INSTANCE,
TestingSupportRules.INSTANCE,
VARIOUS_WORKSPACE_RULES,
// This rule set is a little special: it needs to depend on every configuration fragment
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java
new file mode 100644
index 0000000..7ebd59a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java
@@ -0,0 +1,51 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.bazel.rules;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet;
+import com.google.devtools.build.lib.rules.core.CoreRules;
+import com.google.devtools.build.lib.rules.objc.J2ObjcAspect;
+import com.google.devtools.build.lib.rules.objc.J2ObjcLibraryBaseRule;
+import com.google.devtools.build.lib.rules.objc.J2ObjcLibraryRule;
+
+/**
+ * Rules for supporting transpilation from Java to Objective-C in Bazel.
+ */
+public class J2ObjcRules implements RuleSet {
+ public static final J2ObjcRules INSTANCE = new J2ObjcRules();
+
+ private J2ObjcRules() {
+ // Use the static INSTANCE field instead.
+ }
+
+ @Override
+ public void init(Builder builder) {
+ String toolsRepository = checkNotNull(builder.getToolsRepository());
+ J2ObjcAspect j2ObjcAspect = new J2ObjcAspect(toolsRepository);
+
+ builder.addNativeAspectClass(j2ObjcAspect);
+ builder.addRuleDefinition(new J2ObjcLibraryBaseRule());
+ builder.addRuleDefinition(new J2ObjcLibraryRule(j2ObjcAspect));
+ }
+
+ @Override
+ public ImmutableList<RuleSet> requires() {
+ return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE, JavaRules.INSTANCE,
+ ObjcRules.INSTANCE);
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java
index 3f1629e..fc587e0 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java
@@ -52,6 +52,11 @@
return ruleLabel;
}
+ @Override
+ public String getRuleClassName() {
+ return ruleClass.getName();
+ }
+
@Nullable
@Override
public <T> T get(String attributeName, Type<T> type) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
index a43fd86..7d650bc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
@@ -488,6 +488,11 @@
}
@Override
+ public String getRuleClassName() {
+ return owner.getRuleClassName();
+ }
+
+ @Override
public Iterable<String> getAttributeNames() {
return ImmutableList.<String>builder()
.addAll(directMap.keySet())
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AttributeMap.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeMap.java
index d00c6db..b8a28ce 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AttributeMap.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeMap.java
@@ -40,6 +40,11 @@
Label getLabel();
/**
+ * Returns the name of the rule class.
+ */
+ String getRuleClassName();
+
+ /**
* Returns true if an attribute with the given name exists.
*/
boolean has(String attrName);
diff --git a/src/main/java/com/google/devtools/build/lib/packages/DelegatingAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/DelegatingAttributeMapper.java
index 37163fb..28f29bc 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/DelegatingAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/DelegatingAttributeMapper.java
@@ -42,6 +42,11 @@
}
@Override
+ public String getRuleClassName() {
+ return delegate.getRuleClassName();
+ }
+
+ @Override
public <T> T get(String attributeName, Type<T> type) {
return delegate.get(attributeName, type);
}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
index 502a048..222c198 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
@@ -141,7 +141,7 @@
@Test
public void j2objcConsistency() {
- checkModule(BazelRuleClassProvider.J2OBJC_RULES);
+ checkModule(J2ObjcRules.INSTANCE);
}
@Test