aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Williams <christianw@google.com>2017-10-10 18:53:48 -0700
committerChristian Williams <christianw@google.com>2017-10-10 18:53:48 -0700
commit9a561396e9894814a3862cec0060a075557b8e6b (patch)
treef5c70b5d79f444b07159fe967e8c5f4cc135a1b3
parentc037cbae43aaa91c9f2933c8f6b4c9c15056928a (diff)
downloadrobolectric-shadows-9a561396e9894814a3862cec0060a075557b8e6b.tar.gz
Clean up ManifestFactory et al. Deprecate #create().
-rw-r--r--resources/src/main/java/org/robolectric/manifest/AndroidManifest.java4
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/BuckManifestFactory.java21
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/DefaultManifestFactory.java12
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/GradleManifestFactory.java16
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/ManifestFactory.java24
-rw-r--r--robolectric/src/main/java/org/robolectric/internal/ManifestIdentifier.java14
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;
}