diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
9 files changed, 394 insertions, 43 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java index a2afaa68ad..919c42b10a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java @@ -16,25 +16,21 @@ package com.google.devtools.build.lib.rules.android; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidResourcesInfoApi; import com.google.devtools.build.lib.syntax.EvalException; -import com.google.devtools.build.lib.syntax.SkylarkDict; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; /** A provider that supplies ResourceContainers from its transitive closure. */ @Immutable -public class AndroidResourcesInfo extends NativeInfo implements AndroidResourcesInfoApi { +public class AndroidResourcesInfo extends NativeInfo + implements AndroidResourcesInfoApi<Artifact, ValidatedAndroidData, ProcessedAndroidManifest> { - private static final String SKYLARK_NAME = "AndroidResourcesInfo"; - - /** - * Provider instance for {@link AndroidResourcesInfo}. - */ - public static final AndroidResourcesInfoProvider PROVIDER = - new AndroidResourcesInfoProvider(); + public static final String PROVIDER_NAME = "AndroidResourcesInfo"; + public static final Provider PROVIDER = new Provider(); /* * Local information about the target that produced this provider, for tooling. These values will @@ -97,11 +93,12 @@ public class AndroidResourcesInfo extends NativeInfo implements AndroidResources this.transitiveRTxt = transitiveRTxt; } - /** Returns the label that is associated with this piece of information. */ + @Override public Label getLabel() { return label; } + @Override public ProcessedAndroidManifest getManifest() { return manifest; } @@ -111,16 +108,17 @@ public class AndroidResourcesInfo extends NativeInfo implements AndroidResources return rTxt; } - /** Returns the transitive ResourceContainers for the label. */ + @Override public NestedSet<ValidatedAndroidData> getTransitiveAndroidResources() { return transitiveAndroidResources; } - /** Returns the immediate ResourceContainers for the label. */ + @Override public NestedSet<ValidatedAndroidData> getDirectAndroidResources() { return directAndroidResources; } + @Override public NestedSet<Artifact> getTransitiveResources() { return transitiveResources; } @@ -131,42 +129,79 @@ public class AndroidResourcesInfo extends NativeInfo implements AndroidResources return transitiveAssets; } + @Override public NestedSet<Artifact> getTransitiveManifests() { return transitiveManifests; } + @Override public NestedSet<Artifact> getTransitiveAapt2RTxt() { return transitiveAapt2RTxt; } + @Override public NestedSet<Artifact> getTransitiveSymbolsBin() { return transitiveSymbolsBin; } + @Override public NestedSet<Artifact> getTransitiveCompiledSymbols() { return transitiveCompiledSymbols; } + @Override public NestedSet<Artifact> getTransitiveStaticLib() { return transitiveStaticLib; } + @Override public NestedSet<Artifact> getTransitiveRTxt() { return transitiveRTxt; } /** Provider for {@link AndroidResourcesInfo}. */ - public static class AndroidResourcesInfoProvider extends BuiltinProvider<AndroidResourcesInfo> - implements AndroidResourcesInfoApiProvider { + public static class Provider extends BuiltinProvider<AndroidResourcesInfo> + implements AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider< + Artifact, ValidatedAndroidData, ProcessedAndroidManifest> { - private AndroidResourcesInfoProvider() { - super(SKYLARK_NAME, AndroidResourcesInfo.class); + private Provider() { + super(PROVIDER_NAME, AndroidResourcesInfo.class); } @Override - public AndroidResourcesInfo createInfo(SkylarkDict<?, ?> kwargs, Location loc) + public AndroidResourcesInfo createInfo( + Label label, + ProcessedAndroidManifest manifest, + Artifact rTxt, + SkylarkNestedSet transitiveAndroidResources, + SkylarkNestedSet directAndroidResources, + SkylarkNestedSet transitiveResources, + SkylarkNestedSet transitiveAssets, + SkylarkNestedSet transitiveManifests, + SkylarkNestedSet transitiveAapt2RTxt, + SkylarkNestedSet transitiveSymbolsBin, + SkylarkNestedSet transitiveCompiledSymbols, + SkylarkNestedSet transitiveStaticLib, + SkylarkNestedSet transitiveRTxt) throws EvalException { - return throwUnsupportedConstructorException(loc); + return new AndroidResourcesInfo( + label, + manifest, + rTxt, + nestedSet(transitiveAndroidResources, ValidatedAndroidData.class), + nestedSet(directAndroidResources, ValidatedAndroidData.class), + nestedSet(transitiveResources, Artifact.class), + nestedSet(transitiveAssets, Artifact.class), + nestedSet(transitiveManifests, Artifact.class), + nestedSet(transitiveAapt2RTxt, Artifact.class), + nestedSet(transitiveSymbolsBin, Artifact.class), + nestedSet(transitiveCompiledSymbols, Artifact.class), + nestedSet(transitiveStaticLib, Artifact.class), + nestedSet(transitiveRTxt, Artifact.class)); + } + + private <T> NestedSet<T> nestedSet(SkylarkNestedSet from, Class<T> with) { + return NestedSetBuilder.<T>stableOrder().addTransitive(from.getSet(with)).build(); } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java index 3aea312672..5d515c03f1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidManifest.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.rules.android; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidManifestApi; import javax.annotation.Nullable; /** @@ -22,7 +23,7 @@ import javax.annotation.Nullable; * * <p>TODO(b/30817309) Just use {@link StampedAndroidManifest} once the legacy merger is removed. */ -public class ProcessedAndroidManifest extends StampedAndroidManifest { +public class ProcessedAndroidManifest extends StampedAndroidManifest implements AndroidManifestApi { ProcessedAndroidManifest(Artifact manifest, @Nullable String pkg, boolean exported) { super(manifest, pkg, exported); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java index 97bc3738f3..4f18b35899 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidData.java @@ -17,6 +17,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.packages.RuleErrorConsumer; +import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi; /** * A {@link CompiledMergableAndroidData} that has been fully processed, validated, and packaged. @@ -27,7 +28,7 @@ import com.google.devtools.build.lib.packages.RuleErrorConsumer; * ResourceContainer} is removed, this interface can be replaced with {@link * ValidatedAndroidResources} */ -public interface ValidatedAndroidData extends CompiledMergableAndroidData { +public interface ValidatedAndroidData extends CompiledMergableAndroidData, ValidatedAndroidDataApi { Artifact getRTxt(); diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java index 7eb708d3e7..81ecedd6ce 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidBootstrap.java @@ -31,7 +31,8 @@ public class AndroidBootstrap implements Bootstrap { private final ApkInfoApiProvider apkInfoProvider; private final AndroidInstrumentationInfoApiProvider<?> androidInstrumentationInfoProvider; private final AndroidDeviceBrokerInfoApiProvider androidDeviceBrokerInfoProvider; - private final AndroidResourcesInfoApiProvider androidResourcesInfoProvider; + private final AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider<?, ?, ?> + androidResourcesInfoProvider; private final AndroidNativeLibsInfoApiProvider androidNativeLibsInfoProvider; public AndroidBootstrap( @@ -39,7 +40,7 @@ public class AndroidBootstrap implements Bootstrap { ApkInfoApiProvider apkInfoProvider, AndroidInstrumentationInfoApiProvider<?> androidInstrumentationInfoProvider, AndroidDeviceBrokerInfoApiProvider androidDeviceBrokerInfoProvider, - AndroidResourcesInfoApiProvider androidResourcesInfoProvider, + AndroidResourcesInfoApiProvider<?, ?, ?> androidResourcesInfoProvider, AndroidNativeLibsInfoApiProvider androidNativeLibsInfoProvider) { this.androidCommon = androidCommon; this.apkInfoProvider = apkInfoProvider; diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java new file mode 100644 index 0000000000..d128e2f415 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidManifestApi.java @@ -0,0 +1,24 @@ +// 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.skylarkbuildapi.android; + +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** Wraps an Android Manifest and provides utilities for working with it */ +@SkylarkModule( + name = "AndroidManifestApi", + doc = "Wraps an Android Manifest and provides utilities to work with it.", + category = SkylarkModuleCategory.PROVIDER) +public interface AndroidManifestApi {} diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java index e9c6788f32..a723c7f467 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java @@ -13,29 +13,45 @@ // limitations under the License. package com.google.devtools.build.lib.skylarkbuildapi.android; -import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.skylarkbuildapi.FileApi; import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi; import com.google.devtools.build.lib.skylarkbuildapi.StructApi; import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.syntax.EvalException; -import com.google.devtools.build.lib.syntax.SkylarkDict; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; /** A provider that supplies resource information from its transitive closure. */ @SkylarkModule( name = "AndroidResourcesInfo", doc = "Android resources provided by a rule", category = SkylarkModuleCategory.PROVIDER) -public interface AndroidResourcesInfoApi extends StructApi { +public interface AndroidResourcesInfoApi< + FileT extends FileApi, + ValidatedAndroidDataT extends ValidatedAndroidDataApi, + AndroidManifestT extends AndroidManifestApi> + extends StructApi { /** * Name of this info object. */ public static String NAME = "AndroidResourcesInfo"; + /** Returns the label that is associated with this piece of information. */ + @SkylarkCallable( + name = "label", + doc = "Returns the label that is associated with this piece of information.", + structField = true) + Label getLabel(); + + @SkylarkCallable(name = "manifest", doc = "", documented = false, structField = true) + AndroidManifestT getManifest(); + /** Returns the compiletime r.txt file for the target. */ @SkylarkCallable( name = "compiletime_r_txt", @@ -44,20 +60,170 @@ public interface AndroidResourcesInfoApi extends StructApi { + " stubbed out compiletime file and should not be built into APKs, inherited from" + " dependencies, or used at runtime.", structField = true) - FileApi getRTxt(); + FileT getRTxt(); + + /** Returns the transitive ResourceContainers for the label. */ + @SkylarkCallable( + name = "transitive_android_resources", + doc = "Returns the transitive ResourceContainers for the label.", + structField = true) + NestedSet<ValidatedAndroidDataT> getTransitiveAndroidResources(); + + /** Returns the immediate ResourceContainers for the label. */ + @SkylarkCallable( + name = "direct_android_resources", + doc = "Returns the immediate ResourceContainers for the label.", + structField = true) + NestedSet<ValidatedAndroidDataT> getDirectAndroidResources(); + + @SkylarkCallable(name = "transitive_resources", doc = "", documented = false, structField = true) + NestedSet<FileT> getTransitiveResources(); + + @SkylarkCallable(name = "transitive_resources", doc = "", documented = false, structField = true) + NestedSet<FileT> getTransitiveManifests(); + + @SkylarkCallable( + name = "transitive_aapt2_r_txt", + doc = "", + documented = false, + structField = true) + NestedSet<FileT> getTransitiveAapt2RTxt(); + + @SkylarkCallable( + name = "transitive_symbols_bin", + doc = "", + documented = false, + structField = true) + NestedSet<FileT> getTransitiveSymbolsBin(); + + @SkylarkCallable( + name = "transitive_compiled_symbols", + doc = "", + documented = false, + structField = true) + NestedSet<FileT> getTransitiveCompiledSymbols(); + + @SkylarkCallable(name = "transitive_static_lib", doc = "", documented = false, structField = true) + NestedSet<FileT> getTransitiveStaticLib(); + + @SkylarkCallable(name = "transitive_r_txt", doc = "", documented = false, structField = true) + NestedSet<FileT> getTransitiveRTxt(); /** Provider for {@link AndroidResourcesInfoApi}. */ @SkylarkModule(name = "Provider", doc = "", documented = false) - public interface AndroidResourcesInfoApiProvider extends ProviderApi { + public interface AndroidResourcesInfoApiProvider< + FileT extends FileApi, + ValidatedAndroidDataT extends ValidatedAndroidDataApi, + AndroidManifestT extends AndroidManifestApi> + extends ProviderApi { @SkylarkCallable( name = "AndroidResourcesInfo", - // This is left undocumented as it throws a "not-implemented in Skylark" error when invoked. documented = false, - extraKeywords = @Param(name = "kwargs"), - useLocation = true, + parameters = { + @Param( + name = "label", + doc = "A label of the target.", + positional = true, + named = false, + type = Label.class), + @Param( + name = "manifest", + positional = true, + named = false, + type = AndroidManifestApi.class), + @Param(name = "r_txt", positional = true, named = false, type = FileApi.class), + @Param( + name = "transitive_android_resources", + doc = + "A depset of ValidatedAndroidData of Android Resources in the transitive " + + "closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = ValidatedAndroidDataApi.class), + @Param( + name = "direct_android_resources", + doc = "A depset of ValidatedAndroidData of Android Resources for the target.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = ValidatedAndroidDataApi.class), + @Param( + name = "transitive_resources", + doc = "A depset of Artifacts of Android Resource files in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_assets", + doc = "A depset of Artifacts of Android Assets in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_manifests", + doc = "A depset of Artifacts of Android Manifests in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_aapt2_r_txt", + doc = "A depset of Artifacts of Android AAPT2 R.txt files in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_symbols_bin", + doc = "A depset of Artifacts of Android symbols files in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_compiled_symbols", + doc = + "A depset of Artifacts of Android compiled symbols files in the transitive " + + "closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_static_lib", + doc = "A depset of Artifacts of static lib files in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + @Param( + name = "transitive_r_txt", + doc = "A depset of Artifacts of Android AAPT R.txt files in the transitive closure.", + positional = true, + named = false, + type = SkylarkNestedSet.class, + generic1 = FileApi.class), + }, selfCall = true) - public AndroidResourcesInfoApi createInfo( - SkylarkDict<?, ?> kwargs, Location loc) throws EvalException; + @SkylarkConstructor(objectType = AndroidResourcesInfoApi.class) + AndroidResourcesInfoApi<FileT, ValidatedAndroidDataT, AndroidManifestT> createInfo( + Label label, + AndroidManifestT manifest, + FileT rTxt, + SkylarkNestedSet transitiveAndroidResources, + SkylarkNestedSet directAndroidResources, + SkylarkNestedSet transitiveResources, + SkylarkNestedSet transitiveAssets, + SkylarkNestedSet transitiveManifests, + SkylarkNestedSet transitiveAapt2RTxt, + SkylarkNestedSet transitiveSymbolsBin, + SkylarkNestedSet transitiveCompiledSymbols, + SkylarkNestedSet transitiveStaticLib, + SkylarkNestedSet transitiveRTxt) + throws EvalException; } } diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java new file mode 100644 index 0000000000..f8dc08abb4 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ValidatedAndroidDataApi.java @@ -0,0 +1,24 @@ +// 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.skylarkbuildapi.android; + +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; + +/** Validated Android data which can be merged together with assets from dependencies. */ +@SkylarkModule( + name = "ValidatedAndroidDataApi", + doc = "Validated Android data which can be merged together with assets from dependencies.", + category = SkylarkModuleCategory.PROVIDER) +public interface ValidatedAndroidDataApi {} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD index da88053956..f1e173ae82 100644 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD @@ -14,8 +14,10 @@ java_library( srcs = glob(["*.java"]), deps = [ "//src/main/java/com/google/devtools/build/lib:events", + "//src/main/java/com/google/devtools/build/lib:packages-internal", "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib:syntax", + "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi", "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android", diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java index 4de9a12369..ecf8c1232f 100644 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java @@ -14,17 +14,43 @@ package com.google.devtools.build.skydoc.fakebuildapi.android; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.packages.BuiltinProvider; +import com.google.devtools.build.lib.packages.NativeInfo; import com.google.devtools.build.lib.skylarkbuildapi.FileApi; +import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidManifestApi; import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidResourcesInfoApi; +import com.google.devtools.build.lib.skylarkbuildapi.android.ValidatedAndroidDataApi; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.syntax.EvalException; -import com.google.devtools.build.lib.syntax.SkylarkDict; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; -/** - * Fake implementation of {@link AndroidResourcesInfoApi}. - */ -public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi { +/** Fake implementation of {@link AndroidResourcesInfoApi}. */ +public class FakeAndroidResourcesInfo extends NativeInfo + implements AndroidResourcesInfoApi< + FileApi, + FakeAndroidResourcesInfo.FakeValidatedAndroidDataApi, + FakeAndroidResourcesInfo.FakeAndroidManifestApi> { + + public static final String PROVIDER_NAME = "FakeAndroidResourcesInfo"; + public static final FakeAndroidResourcesInfoProvider PROVIDER = + new FakeAndroidResourcesInfoProvider(); + + FakeAndroidResourcesInfo() { + super(PROVIDER); + } + + @Override + public Label getLabel() { + return null; + } + + @Override + public FakeAndroidManifestApi getManifest() { + return null; + } @Override public FileApi getRTxt() { @@ -32,6 +58,51 @@ public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi { } @Override + public NestedSet<FakeValidatedAndroidDataApi> getTransitiveAndroidResources() { + return null; + } + + @Override + public NestedSet<FakeValidatedAndroidDataApi> getDirectAndroidResources() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveResources() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveManifests() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveAapt2RTxt() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveSymbolsBin() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveCompiledSymbols() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveStaticLib() { + return null; + } + + @Override + public NestedSet<FileApi> getTransitiveRTxt() { + return null; + } + + @Override public String toProto(Location loc) throws EvalException { return ""; } @@ -44,13 +115,33 @@ public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi { @Override public void repr(SkylarkPrinter printer) {} - /** - * Fake implementation of {@link AndroidResourcesInfoApiProvider}. - */ - public static class FakeAndroidResourcesInfoProvider implements AndroidResourcesInfoApiProvider { + /** Fake implementation of {@link AndroidResourcesInfoApiProvider}. */ + public static class FakeAndroidResourcesInfoProvider + extends BuiltinProvider<FakeAndroidResourcesInfo> + implements AndroidResourcesInfoApi.AndroidResourcesInfoApiProvider< + FileApi, + FakeAndroidResourcesInfo.FakeValidatedAndroidDataApi, + FakeAndroidResourcesInfo.FakeAndroidManifestApi> { + + public FakeAndroidResourcesInfoProvider() { + super(PROVIDER_NAME, FakeAndroidResourcesInfo.class); + } @Override - public AndroidResourcesInfoApi createInfo(SkylarkDict<?, ?> kwargs, Location loc) + public FakeAndroidResourcesInfo createInfo( + Label label, + FakeAndroidManifestApi manifest, + FileApi rTxt, + SkylarkNestedSet transitiveAndroidResources, + SkylarkNestedSet directAndroidResources, + SkylarkNestedSet transitiveResources, + SkylarkNestedSet transitiveAssets, + SkylarkNestedSet transitiveManifests, + SkylarkNestedSet transitiveAapt2RTxt, + SkylarkNestedSet transitiveSymbolsBin, + SkylarkNestedSet transitiveCompiledSymbols, + SkylarkNestedSet transitiveStaticLib, + SkylarkNestedSet transitiveRTxt) throws EvalException { return new FakeAndroidResourcesInfo(); } @@ -58,4 +149,10 @@ public class FakeAndroidResourcesInfo implements AndroidResourcesInfoApi { @Override public void repr(SkylarkPrinter printer) {} } + + /** Fake implementation of {@link ValidatedAndroidDataApi}. */ + public static class FakeValidatedAndroidDataApi implements ValidatedAndroidDataApi {} + + /** Fake implementation of {@link AndroidManifestApi}. */ + public static class FakeAndroidManifestApi implements AndroidManifestApi {} } |