aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar lpino <lpino@google.com>2018-02-08 05:43:43 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-08 05:45:48 -0800
commit093d22d23ba09f6f56fc3eb419a93223c8388867 (patch)
tree558b2e166ab7cc4022c1a2f38905ea96263f95f6 /src/main/java/com/google
parent943afc78c1170e93e154edd1ef17389bae248e6b (diff)
Move BazelRuleClassProvider.J2OBJC_RULES to its own class.
PiperOrigin-RevId: 184983111
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapper.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/J2ObjcRules.java51
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AbstractAttributeMapper.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AttributeMap.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/DelegatingAttributeMapper.java5
7 files changed, 77 insertions, 23 deletions
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 bdd31e35a8..b45e350fc4 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 @@ class AspectAwareAttributeMapper implements AttributeMap {
}
@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 c718e04adb..c409ce4abd 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.proto.CcProtoLibraryRule;
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 class BazelRuleClassProvider {
}
};
- 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 @@ public class BazelRuleClassProvider {
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 0000000000..7ebd59a7ae
--- /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 3f1629e695..fc587e090b 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 @@ public abstract class AbstractAttributeMapper implements AttributeMap {
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 a43fd86bbe..7d650bc9f8 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 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper {
}
@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 d00c6db754..b8a28ce845 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 @@ public interface AttributeMap {
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 37163fb115..28f29bc96e 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 @@ public class DelegatingAttributeMapper implements AttributeMap {
}
@Override
+ public String getRuleClassName() {
+ return delegate.getRuleClassName();
+ }
+
+ @Override
public <T> T get(String attributeName, Type<T> type) {
return delegate.get(attributeName, type);
}