diff options
author | Christian Williams <christianw@google.com> | 2017-10-10 18:53:48 -0700 |
---|---|---|
committer | Christian Williams <christianw@google.com> | 2017-10-10 18:53:48 -0700 |
commit | 9a561396e9894814a3862cec0060a075557b8e6b (patch) | |
tree | f5c70b5d79f444b07159fe967e8c5f4cc135a1b3 | |
parent | c037cbae43aaa91c9f2933c8f6b4c9c15056928a (diff) | |
download | robolectric-shadows-9a561396e9894814a3862cec0060a075557b8e6b.tar.gz |
Clean up ManifestFactory et al. Deprecate #create().
6 files changed, 32 insertions, 59 deletions
diff --git a/resources/src/main/java/org/robolectric/manifest/AndroidManifest.java b/resources/src/main/java/org/robolectric/manifest/AndroidManifest.java index c72c59b26..603c8529d 100644 --- a/resources/src/main/java/org/robolectric/manifest/AndroidManifest.java +++ b/resources/src/main/java/org/robolectric/manifest/AndroidManifest.java @@ -1,6 +1,5 @@ package org.robolectric.manifest; -import com.google.common.base.Preconditions; import java.io.InputStream; import java.util.ArrayList; import java.util.Collection; @@ -10,6 +9,7 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -90,7 +90,7 @@ public class AndroidManifest { * @param overridePackageName Application package name. */ public AndroidManifest(FsFile androidManifestFile, FsFile resDirectory, FsFile assetsDirectory, - List<AndroidManifest> libraryManifests, String overridePackageName) { + @Nonnull List<AndroidManifest> libraryManifests, String overridePackageName) { this.androidManifestFile = androidManifestFile; this.resDirectory = resDirectory; this.assetsDirectory = assetsDirectory; diff --git a/robolectric/src/main/java/org/robolectric/internal/BuckManifestFactory.java b/robolectric/src/main/java/org/robolectric/internal/BuckManifestFactory.java index 5c3d0c39f..087d7b9d5 100644 --- a/robolectric/src/main/java/org/robolectric/internal/BuckManifestFactory.java +++ b/robolectric/src/main/java/org/robolectric/internal/BuckManifestFactory.java @@ -10,10 +10,8 @@ import java.util.List; import java.util.stream.Collectors; import javax.annotation.Nonnull; import org.robolectric.annotation.Config; -import org.robolectric.manifest.AndroidManifest; import org.robolectric.res.Fs; import org.robolectric.res.FsFile; -import org.robolectric.util.Logger; import org.robolectric.util.Util; public class BuckManifestFactory implements ManifestFactory { @@ -61,25 +59,6 @@ public class BuckManifestFactory implements ManifestFactory { return new ManifestIdentifier(packageName, manifestFile, resDir, assetsDir, libraries); } - @Override - public AndroidManifest create(ManifestIdentifier manifestIdentifier) { - FsFile manifestFile = manifestIdentifier.getManifestFile(); - FsFile resDir = manifestIdentifier.getResDir(); - FsFile assetsDir = manifestIdentifier.getAssetDir(); - final String packageName = manifestIdentifier.getPackageName(); - - Logger.debug("Robolectric assets directory: " + assetsDir); - Logger.debug(" Robolectric res directory: " + resDir); - Logger.debug(" Robolectric manifest path: " + manifestFile); - Logger.debug(" Robolectric package name: " + packageName); - - List<ManifestIdentifier> libraries = manifestIdentifier.getLibraries(); - List<AndroidManifest> libraryManifests = libraries == null - ? Collections.emptyList() - : libraries.stream().map(this::create).collect(Collectors.toList()); - return new AndroidManifest(manifestFile, resDir, assetsDir, libraryManifests, packageName); - } - public static boolean isBuck() { return System.getProperty(BUCK_ROBOLECTRIC_MANIFEST) != null; } diff --git a/robolectric/src/main/java/org/robolectric/internal/DefaultManifestFactory.java b/robolectric/src/main/java/org/robolectric/internal/DefaultManifestFactory.java index 4ee581239..cc2d14fd2 100644 --- a/robolectric/src/main/java/org/robolectric/internal/DefaultManifestFactory.java +++ b/robolectric/src/main/java/org/robolectric/internal/DefaultManifestFactory.java @@ -7,7 +7,6 @@ import java.net.URL; import java.util.List; import java.util.Properties; import org.robolectric.annotation.Config; -import org.robolectric.manifest.AndroidManifest; import org.robolectric.res.Fs; import org.robolectric.res.FsFile; import org.robolectric.util.Logger; @@ -25,7 +24,6 @@ public class DefaultManifestFactory implements ManifestFactory { FsFile resourcesDir = getFsFileFromPath(properties.getProperty("android_merged_resources")); FsFile assetsDir = getFsFileFromPath(properties.getProperty("android_merged_assets")); String packageName = properties.getProperty("android_custom_package"); - List<FsFile> libraryDirs = emptyList(); String manifestConfig = config.manifest(); if (Config.NONE.equals(manifestConfig)) { @@ -46,6 +44,11 @@ public class DefaultManifestFactory implements ManifestFactory { packageName = config.packageName(); } + List<FsFile> libraryDirs = emptyList(); + if (config.libraries().length > 0) { + Logger.info("@Config(libraries) specified while using Build System API, ignoring"); + } + return new ManifestIdentifier(manifestFile, resourcesDir, assetsDir, packageName, libraryDirs); } @@ -70,9 +73,4 @@ public class DefaultManifestFactory implements ManifestFactory { return Fs.fileFromPath(property); } } - - @Override - public AndroidManifest create(ManifestIdentifier manifestIdentifier) { - return new AndroidManifest(manifestIdentifier.getManifestFile(), manifestIdentifier.getResDir(), manifestIdentifier.getAssetDir(), manifestIdentifier.getPackageName()); - } } diff --git a/robolectric/src/main/java/org/robolectric/internal/GradleManifestFactory.java b/robolectric/src/main/java/org/robolectric/internal/GradleManifestFactory.java index c306552b7..0fa2e5658 100644 --- a/robolectric/src/main/java/org/robolectric/internal/GradleManifestFactory.java +++ b/robolectric/src/main/java/org/robolectric/internal/GradleManifestFactory.java @@ -6,9 +6,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import org.robolectric.annotation.Config; -import org.robolectric.manifest.AndroidManifest; import org.robolectric.res.FileFsFile; -import org.robolectric.res.FsFile; import org.robolectric.util.Logger; import org.robolectric.util.ReflectionHelpers; @@ -71,20 +69,6 @@ public class GradleManifestFactory implements ManifestFactory { return new ManifestIdentifier(manifest, res, assets, packageName, null); } - @Override - public AndroidManifest create(ManifestIdentifier manifestIdentifier) { - FsFile manifestFile = manifestIdentifier.getManifestFile(); - FsFile resDir = manifestIdentifier.getResDir(); - FsFile assetDir = manifestIdentifier.getAssetDir(); - final String packageName = manifestIdentifier.getPackageName(); - - Logger.debug("Robolectric assets directory: " + assetDir.getPath()); - Logger.debug(" Robolectric res directory: " + resDir.getPath()); - Logger.debug(" Robolectric manifest path: " + manifestFile.getPath()); - Logger.debug(" Robolectric package name: " + packageName); - return new AndroidManifest(manifestFile, resDir, assetDir, packageName); - } - private static String getBuildOutputDir(Config config) { Path buildDir = Paths.get(config.buildDir(), "intermediates"); if (!Files.exists(buildDir)) { diff --git a/robolectric/src/main/java/org/robolectric/internal/ManifestFactory.java b/robolectric/src/main/java/org/robolectric/internal/ManifestFactory.java index c0cf3d9a1..f97f5c024 100644 --- a/robolectric/src/main/java/org/robolectric/internal/ManifestFactory.java +++ b/robolectric/src/main/java/org/robolectric/internal/ManifestFactory.java @@ -1,6 +1,5 @@ package org.robolectric.internal; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.robolectric.annotation.Config; @@ -17,20 +16,31 @@ import org.robolectric.manifest.AndroidManifest; * * Buck */ public interface ManifestFactory { + + /** + * Creates a {@link ManifestIdentifier} which represents an Android app, service, or library + * under test, indicating its manifest file, resources and assets directories, and optionally + * dependency libraries and an overridden package name. + * + * @param config The merged configuration for the running test. + */ ManifestIdentifier identify(Config config); + /** + * @deprecated This method should no longer be overridden as of Robolectric 3.5. Instead, + * {@link #identify(Config)} should return a fully-specified + * {@link ManifestIdentifier}. + */ + @Deprecated default AndroidManifest create(ManifestIdentifier manifestIdentifier) { return createLibraryAndroidManifest(manifestIdentifier); } static AndroidManifest createLibraryAndroidManifest(ManifestIdentifier manifestIdentifier) { List<ManifestIdentifier> libraries = manifestIdentifier.getLibraries(); - List<AndroidManifest> libraryManifests = new ArrayList<>(); - if (libraries != null) { - libraryManifests = libraries.stream() - .map(ManifestFactory::createLibraryAndroidManifest) - .collect(Collectors.toList()); - } + List<AndroidManifest> libraryManifests = libraries.stream() + .map(ManifestFactory::createLibraryAndroidManifest) + .collect(Collectors.toList()); return new AndroidManifest(manifestIdentifier.getManifestFile(), manifestIdentifier.getResDir(), manifestIdentifier.getAssetDir(), libraryManifests, manifestIdentifier.getPackageName()); diff --git a/robolectric/src/main/java/org/robolectric/internal/ManifestIdentifier.java b/robolectric/src/main/java/org/robolectric/internal/ManifestIdentifier.java index ec8dfd9de..de674029a 100644 --- a/robolectric/src/main/java/org/robolectric/internal/ManifestIdentifier.java +++ b/robolectric/src/main/java/org/robolectric/internal/ManifestIdentifier.java @@ -1,7 +1,9 @@ package org.robolectric.internal; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import javax.annotation.Nonnull; import org.robolectric.annotation.Config; import org.robolectric.res.FsFile; @@ -19,7 +21,7 @@ public class ManifestIdentifier { this.resDir = resDir; this.assetDir = assetDir; this.packageName = packageName; - this.libraries = libraries; + this.libraries = libraries == null ? Collections.emptyList() : libraries; } /** @@ -33,12 +35,10 @@ public class ManifestIdentifier { this.assetDir = assetDir; this.packageName = packageName; - if (libraryDirs == null) { - this.libraries = null; - } else { - this.libraries = new ArrayList<>(); + List<ManifestIdentifier> libraries = new ArrayList<>(); + if (libraryDirs != null) { for (FsFile libraryDir : libraryDirs) { - this.libraries.add(new ManifestIdentifier( + libraries.add(new ManifestIdentifier( null, libraryDir.join(Config.DEFAULT_MANIFEST_NAME), libraryDir.join(Config.DEFAULT_RES_FOLDER), @@ -46,6 +46,7 @@ public class ManifestIdentifier { null)); } } + this.libraries = Collections.unmodifiableList(libraries); } public FsFile getManifestFile() { @@ -64,6 +65,7 @@ public class ManifestIdentifier { return packageName; } + @Nonnull public List<ManifestIdentifier> getLibraries() { return libraries; } |