diff options
author | 2018-06-19 13:15:18 -0700 | |
---|---|---|
committer | 2018-06-19 13:16:41 -0700 | |
commit | 13dc3882e84fb139cc1756fd610c028e3de74516 (patch) | |
tree | f7e31b4a5e47d5551c5a37ab23026d6073bc0bfe /src/main/java/com/google/devtools/build | |
parent | 09fe0620a616bcc8d8a900e98f7c67526d132370 (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.java | 3 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java | 23 |
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)); |