diff options
author | 2018-06-13 15:48:48 -0700 | |
---|---|---|
committer | 2018-06-13 15:50:10 -0700 | |
commit | ed1e7594b23100f89755491f36e46886b4a51c8d (patch) | |
tree | 12579d70fdd0454ff559cb4959a16a11238e2e3f /src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java | |
parent | fc83d753cf033f5906565b2eea13fbd8f2bdfb86 (diff) |
Reconvert the lambdas in AndroidDataConverter to anonymous inner classes.
Tag some static members with @AutoCodec.
Replace some lambdas with explicit functions or classes.
PiperOrigin-RevId: 200467500
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java index 28d242c033..0db9971af0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java @@ -19,6 +19,7 @@ import com.google.devtools.build.lib.actions.CommandLineItem.ParametrizedMapFn; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.errorprone.annotations.CompileTimeConstant; import java.util.Objects; @@ -37,6 +38,7 @@ public class AndroidDataConverter<T> extends ParametrizedMapFn<T> { * Converts Android data to the "SerializedAndroidData" format used by the Android data processing * actions. */ + @AutoCodec static final AndroidDataConverter<MergableAndroidData> MERGABLE_DATA_CONVERTER = AndroidDataConverter.<MergableAndroidData>builder(JoinerType.SEMICOLON_AMPERSAND) .withRoots(MergableAndroidData::getResourceRoots) @@ -137,24 +139,54 @@ public class AndroidDataConverter<T> extends ParametrizedMapFn<T> { } Builder<T> withRoots(Function<T, ImmutableList<PathFragment>> rootsFunction) { - return with(t -> rootsToString(rootsFunction.apply(t))); + // Anonymous inner class for serialization. + return with( + new Function<T, String>() { + @Override + public String apply(T t) { + // Copied from rootsToString to get rid of internal Lambda. + return rootsFunction + .apply(t) + .stream() + .map(PathFragment::toString) + .collect(Collectors.joining("#")); + } + }); } Builder<T> withArtifact(Function<T, Artifact> artifactFunction) { - return with(t -> artifactFunction.apply(t).getExecPathString()); + // Anonymous inner class for serialization. + return with( + new Function<T, String>() { + @Override + public String apply(T t) { + return artifactFunction.apply(t).getExecPathString(); + } + }); } Builder<T> maybeWithArtifact(Function<T, Artifact> nullableArtifactFunction) { + // Anonymous inner class for serialization. return with( - t -> { - @Nullable Artifact artifact = nullableArtifactFunction.apply(t); - return artifact == null ? "" : artifact.getExecPathString(); + new Function<T, String>() { + @Override + public String apply(T t) { + @Nullable Artifact artifact = nullableArtifactFunction.apply(t); + return artifact == null ? "" : artifact.getExecPathString(); + } }); } Builder<T> withLabel(Function<T, Label> labelFunction) { // Escape labels, since they are known to contain separating characters (specifically, ':'). - return with(t -> joinerType.escape(labelFunction.apply(t).toString())); + // Anonymous inner class for serialization. + return with( + new Function<T, String>() { + @Override + public String apply(T t) { + return joinerType.escape(labelFunction.apply(t).toString()); + } + }); } Builder<T> with(Function<T, String> stringFunction) { |