diff options
author | 2018-02-08 05:43:43 -0800 | |
---|---|---|
committer | 2018-02-08 05:45:48 -0800 | |
commit | 093d22d23ba09f6f56fc3eb419a93223c8388867 (patch) | |
tree | 558b2e166ab7cc4022c1a2f38905ea96263f95f6 /src/main/java/com/google | |
parent | 943afc78c1170e93e154edd1ef17389bae248e6b (diff) |
Move BazelRuleClassProvider.J2OBJC_RULES to its own class.
PiperOrigin-RevId: 184983111
Diffstat (limited to 'src/main/java/com/google')
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); } |