aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-02-23 10:05:03 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-23 13:10:09 +0000
commita7c3bd41a50880792562ee33ea05ebacddc184f8 (patch)
treeef937b0b00b2995bcfc84c21594d51fd91916140
parent19264edeb7b32f6dfe25f0138a2dfa061a1de3f7 (diff)
Refactor the JavaSemantics interface to reduce reliance on mutable JavaCommon.
Pass in the list of sources where applicable; see previous change on getMainClass / getPrimaryClass. -- MOS_MIGRATED_REVID=115318149
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java4
3 files changed, 10 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
index f00410ce93..1733a444ce 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaSemantics.java
@@ -323,7 +323,7 @@ public class BazelJavaSemantics implements JavaSemantics {
@Override
public Iterable<String> getJvmFlags(
- RuleContext ruleContext, JavaCommon javaCommon, List<String> userJvmFlags) {
+ RuleContext ruleContext, ImmutableList<Artifact> sources, List<String> userJvmFlags) {
ImmutableList.Builder<String> jvmFlags = ImmutableList.builder();
jvmFlags.addAll(userJvmFlags);
@@ -332,7 +332,7 @@ public class BazelJavaSemantics implements JavaSemantics {
String testClass = ruleContext.getRule().isAttrDefined("test_class", Type.STRING)
? ruleContext.attributes().get("test_class", Type.STRING) : "";
if (testClass.isEmpty()) {
- testClass = JavaCommon.determinePrimaryClass(ruleContext, javaCommon.getSrcsArtifacts());
+ testClass = JavaCommon.determinePrimaryClass(ruleContext, sources);
}
if (testClass == null) {
@@ -413,13 +413,13 @@ public class BazelJavaSemantics implements JavaSemantics {
}
@Override
- public List<String> getExtraArguments(RuleContext ruleContext, JavaCommon javaCommon) {
+ public List<String> getExtraArguments(RuleContext ruleContext, ImmutableList<Artifact> sources) {
if (ruleContext.getRule().getRuleClass().equals("java_test")) {
if (useLegacyJavaTest(ruleContext)) {
if (ruleContext.getConfiguration().getTestArguments().isEmpty()
&& !ruleContext.attributes().isAttributeValueExplicitlySpecified("args")) {
ImmutableList.Builder<String> builder = ImmutableList.builder();
- for (Artifact artifact : javaCommon.getSrcsArtifacts()) {
+ for (Artifact artifact : sources) {
PathFragment path = artifact.getRootRelativePath();
String className = JavaUtil.getJavaFullClassname(FileSystemUtils.removeExtension(path));
if (className != null) {
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 aa4a8ecce7..9084d9b3b0 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
@@ -196,7 +196,8 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
CppHelper.getToolchain(ruleContext).getDynamicRuntimeLinkInputs();
- Iterables.addAll(jvmFlags, semantics.getJvmFlags(ruleContext, common, userJvmFlags));
+ Iterables.addAll(jvmFlags,
+ semantics.getJvmFlags(ruleContext, common.getSrcsArtifacts(), userJvmFlags));
if (ruleContext.hasErrors()) {
return null;
}
@@ -241,7 +242,8 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
RunfilesSupport runfilesSupport = null;
if (createExecutable) {
- List<String> extraArgs = new ArrayList<>(semantics.getExtraArguments(ruleContext, common));
+ List<String> extraArgs =
+ new ArrayList<>(semantics.getExtraArguments(ruleContext, common.getSrcsArtifacts()));
if (runProguard) {
// Instead of changing the classpath written into the wrapper script, pass --singlejar when
// running the script (which causes the deploy.jar written by Proguard to be used instead of
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index 79745eb12e..827e7026d8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -307,7 +307,7 @@ public interface JavaSemantics {
* Return the JVM flags to be used in a Java binary.
*/
Iterable<String> getJvmFlags(
- RuleContext ruleContext, JavaCommon javaCommon, List<String> userJvmFlags);
+ RuleContext ruleContext, ImmutableList<Artifact> srcsArtifacts, List<String> userJvmFlags);
/**
* Adds extra providers to a Java target.
@@ -390,7 +390,7 @@ public interface JavaSemantics {
/**
* @return a list of extra arguments to appends to the runfiles support.
*/
- List<String> getExtraArguments(RuleContext ruleContext, JavaCommon javaCommon);
+ List<String> getExtraArguments(RuleContext ruleContext, ImmutableList<Artifact> sources);
/**
* @return main class (entry point) for the Java compiler.