aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-06-19 13:15:18 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-19 13:16:41 -0700
commit13dc3882e84fb139cc1756fd610c028e3de74516 (patch)
treef7e31b4a5e47d5551c5a37ab23026d6073bc0bfe /src/main/java/com/google/devtools/build
parent09fe0620a616bcc8d8a900e98f7c67526d132370 (diff)
Make some Android things more serializable.
PiperOrigin-RevId: 201228699
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java23
2 files changed, 21 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index 6b8514b0a2..15460c70e5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -67,6 +67,7 @@ import com.google.devtools.build.lib.rules.java.proto.JavaProtoLibraryAspectProv
import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
import com.google.devtools.build.lib.rules.proto.ProtoSourcesProvider;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -81,6 +82,7 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
* Function that returns a {@link Rule}'s {@code incremental_dexing} attribute for use by this
* aspect. Must be provided when attaching this aspect to a target.
*/
+ @AutoCodec
public static final Function<Rule, AspectParameters> PARAM_EXTRACTOR =
(Rule rule) -> {
AttributeMap attributes = NonconfigurableAttributeMapper.of(rule);
@@ -94,6 +96,7 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
* attaching this aspect to a target. This is intended for implicit attributes like the stub APKs
* for {@code blaze mobile-install}.
*/
+ @AutoCodec
static final Function<Rule, AspectParameters> ONLY_DESUGAR_JAVA8 =
(Rule rule) ->
new AspectParameters.Builder()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java
index 899340f67a..57cc800b8c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java
@@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.CommandLineItem;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.rules.android.ResourceContainerConverter.ToArg.Includes;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.HashSet;
import java.util.Set;
@@ -75,25 +76,37 @@ public class ResourceContainerConverter {
switch (separatorType) {
case COLON_COMMA:
- argJoiner = Joiner.on(":");
+ argJoiner = COLON_JOINER;
// We currently use ":" to separate components of an argument and "," to separate
// arguments in a list of arguments. Those characters require escaping if used in a label
// (part of the set of allowed characters in a label).
if (includes.contains(Includes.Label)) {
- escaper = (String input) -> input.replace(":", "\\:").replace(",", "\\,");
+ escaper = COLON_COMMA;
} else {
- escaper = Functions.identity();
+ escaper = IDENTITY;
}
break;
case SEMICOLON_AMPERSAND:
- argJoiner = Joiner.on(";");
- escaper = Functions.identity();
+ argJoiner = SEMICOLON_JOINER;
+ escaper = IDENTITY;
break;
default:
throw new IllegalStateException("Unknown separator type " + separatorType);
}
}
+ @AutoCodec @AutoCodec.VisibleForSerialization
+ static final Function<String, String> IDENTITY = Functions.identity();
+
+ @AutoCodec @AutoCodec.VisibleForSerialization
+ static final Function<String, String> COLON_COMMA =
+ (input) -> input.replace(":", "\\:").replace(",", "\\,");
+
+ @AutoCodec @AutoCodec.VisibleForSerialization
+ static final Joiner SEMICOLON_JOINER = Joiner.on(";");
+
+ @AutoCodec @AutoCodec.VisibleForSerialization static final Joiner COLON_JOINER = Joiner.on(":");
+
@Override
public void expandToCommandLine(ValidatedAndroidData container, Consumer<String> args) {
args.accept(map(container));