summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorAlex Ruiz <alruiz@google.com>2015-08-03 21:14:02 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-08-03 21:14:02 +0000
commitf73d9f19e1acf56cfd84f1baa419e2c62eae8934 (patch)
tree112d3587d5c8ac51f7a33e41f92ce809cad9347f /android
parent915ca316103a7b54fd5e52e410bd3a83466a460a (diff)
parent7dca8b9f4b0a7f1362abc647cf6e0aebe10bddf3 (diff)
downloadidea-f73d9f19e1acf56cfd84f1baa419e2c62eae8934.tar.gz
Merge "Implement current source provider methods." into studio-1.4-dev automerge: ed3f379
automerge: 7dca8b9 * commit '7dca8b9f4b0a7f1362abc647cf6e0aebe10bddf3': Implement current source provider methods.
Diffstat (limited to 'android')
-rw-r--r--android/src/com/android/tools/idea/gradle/IdeaAndroidProject.java60
-rw-r--r--android/src/org/jetbrains/android/facet/AndroidFacet.java132
-rw-r--r--android/src/org/jetbrains/android/facet/IdeaSourceProvider.java63
-rw-r--r--android/testSrc/org/jetbrains/android/facet/IdeaSourceProviderTest.java40
4 files changed, 115 insertions, 180 deletions
diff --git a/android/src/com/android/tools/idea/gradle/IdeaAndroidProject.java b/android/src/com/android/tools/idea/gradle/IdeaAndroidProject.java
index b8b0e57c149..3b4c60383d9 100644
--- a/android/src/com/android/tools/idea/gradle/IdeaAndroidProject.java
+++ b/android/src/com/android/tools/idea/gradle/IdeaAndroidProject.java
@@ -152,13 +152,69 @@ public class IdeaAndroidProject implements AndroidModel, Serializable {
@NotNull
@Override
public List<SourceProvider> getActiveSourceProviders() {
- throw new UnsupportedOperationException("Not yet implemented.");
+ List<SourceProvider> providers = Lists.newArrayList();
+ // Main source provider.
+ providers.add(getDefaultSourceProvider());
+
+ Variant selectedVariant = getSelectedVariant();
+
+ // Flavor source providers.
+ for (String flavor : selectedVariant.getProductFlavors()) {
+ ProductFlavorContainer productFlavor = findProductFlavor(flavor);
+ assert productFlavor != null;
+ providers.add(productFlavor.getSourceProvider());
+ }
+
+ // Multi-flavor source provider.
+ AndroidArtifact mainArtifact = selectedVariant.getMainArtifact();
+ SourceProvider multiFlavorProvider = mainArtifact.getMultiFlavorSourceProvider();
+ if (multiFlavorProvider != null) {
+ providers.add(multiFlavorProvider);
+ }
+
+ // Build type source provider.
+ BuildTypeContainer buildType = findBuildType(selectedVariant.getBuildType());
+ assert buildType != null;
+ providers.add(buildType.getSourceProvider());
+
+ // Variant source provider.
+ SourceProvider variantProvider = mainArtifact.getVariantSourceProvider();
+ if (variantProvider != null) {
+ providers.add(variantProvider);
+ }
+ return providers;
}
@NotNull
@Override
public List<SourceProvider> getTestSourceProviders() {
- throw new UnsupportedOperationException("Not yet implemented.");
+ List<SourceProvider> providers = Lists.newArrayList();
+
+ // Collect the default config test source providers.
+ Collection<SourceProviderContainer> extraSourceProviders =
+ getAndroidProject().getDefaultConfig().getExtraSourceProviders();
+ providers.addAll(getSourceProvidersForSelectedTestArtifact(extraSourceProviders));
+
+ // Collect the product flavor test source providers.
+ Variant selectedVariant = getSelectedVariant();
+ for (String flavor : selectedVariant.getProductFlavors()) {
+ ProductFlavorContainer productFlavor = findProductFlavor(flavor);
+ assert productFlavor != null;
+ providers.addAll(
+ getSourceProvidersForSelectedTestArtifact(productFlavor.getExtraSourceProviders()));
+ }
+
+ // TODO: Does it make sense to add multi-flavor test source providers?
+
+ // Collect the build type test source providers.
+ BuildTypeContainer buildType = findBuildType(selectedVariant.getBuildType());
+ assert buildType != null;
+ providers.addAll(
+ getSourceProvidersForSelectedTestArtifact(buildType.getExtraSourceProviders()));
+
+ // TODO: Does it make sense to add variant test source providers?
+
+ return providers;
}
@NotNull
diff --git a/android/src/org/jetbrains/android/facet/AndroidFacet.java b/android/src/org/jetbrains/android/facet/AndroidFacet.java
index 62ddccb3c1b..a1a1c69bfe5 100644
--- a/android/src/org/jetbrains/android/facet/AndroidFacet.java
+++ b/android/src/org/jetbrains/android/facet/AndroidFacet.java
@@ -233,23 +233,6 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
return myMainIdeaSourceSet;
}
- @NotNull
- public List<IdeaSourceProvider> getMainIdeaTestSourceProviders() {
- if (!requiresAndroidModel() || myAndroidModel == null) {
- return Collections.emptyList();
- }
-
- Collection<SourceProviderContainer> extraSourceProviders =
- myAndroidModel.getAndroidProject().getDefaultConfig().getExtraSourceProviders();
-
- List<IdeaSourceProvider> providers = Lists.newArrayList();
- for (SourceProvider sourceProvider : myAndroidModel.getSourceProvidersForSelectedTestArtifact(extraSourceProviders)) {
- providers.add(IdeaSourceProvider.create(sourceProvider));
- }
-
- return providers;
- }
-
/**
* Returns the source provider for the current build type, which will never be {@code null} for a project backed by an
* {@link AndroidProject}, and always {@code null} for a legacy Android project.
@@ -268,44 +251,6 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
}
}
- /**
- * Like {@link #getBuildTypeSourceProvider()} but typed for internal IntelliJ usage with {@link VirtualFile} instead of {@link File}
- * references.
- *
- * @return the build type source set or {@code null}.
- */
- @Nullable
- public IdeaSourceProvider getIdeaBuildTypeSourceProvider() {
- SourceProvider sourceProvider = getBuildTypeSourceProvider();
- if (sourceProvider != null) {
- return IdeaSourceProvider.create(sourceProvider);
- } else {
- return null;
- }
- }
-
- @NotNull
- public List<IdeaSourceProvider> getIdeaBuildTypeTestSourceProvider() {
- if (myAndroidModel == null) {
- return Collections.emptyList();
- }
-
- List<IdeaSourceProvider> providers = Lists.newArrayList();
- Variant selectedVariant = myAndroidModel.getSelectedVariant();
- BuildTypeContainer buildType = myAndroidModel.findBuildType(selectedVariant.getBuildType());
- assert buildType != null;
-
- Collection<SourceProvider> testSourceProviders =
- myAndroidModel.getSourceProvidersForSelectedTestArtifact(buildType.getExtraSourceProviders());
-
-
- for (SourceProvider sourceProvider : testSourceProviders) {
- providers.add(IdeaSourceProvider.create(sourceProvider));
- }
-
- return providers;
- }
-
public ResourceFolderManager getResourceFolderManager() {
return myFolderManager;
}
@@ -350,51 +295,6 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
}
/**
- * Like {@link #getFlavorSourceProviders()} but typed for internal IntelliJ usage with {@link VirtualFile} instead of {@link File}
- * references.
- *
- * @return the flavor source providers or {@code null} in legacy projects.
- */
- @Nullable
- public List<IdeaSourceProvider> getIdeaFlavorSourceProviders() {
- List<SourceProvider> sourceProviders = getFlavorSourceProviders();
- if (sourceProviders != null) {
- List<IdeaSourceProvider> ideaSourceProviders = Lists.newArrayListWithExpectedSize(sourceProviders.size());
- for (SourceProvider provider : sourceProviders) {
- ideaSourceProviders.add(IdeaSourceProvider.create(provider));
- }
-
- return ideaSourceProviders;
- } else {
- return null;
- }
- }
-
- @NotNull
- public List<IdeaSourceProvider> getIdeaFlavorTestSourceProviders() {
- if (myAndroidModel == null) {
- return Collections.emptyList();
- }
-
- Variant selectedVariant = myAndroidModel.getSelectedVariant();
- List<String> productFlavors = selectedVariant.getProductFlavors();
- List<IdeaSourceProvider> providers = Lists.newArrayList();
- for (String flavor : productFlavors) {
- ProductFlavorContainer productFlavor = myAndroidModel.findProductFlavor(flavor);
- assert productFlavor != null;
-
- Collection<SourceProvider> testSourceProviders =
- myAndroidModel.getSourceProvidersForSelectedTestArtifact(productFlavor.getExtraSourceProviders());
-
- for (SourceProvider sourceProvider : testSourceProviders) {
- providers.add(IdeaSourceProvider.create(sourceProvider));
- }
- }
-
- return providers;
- }
-
- /**
* Returns the source provider specific to the flavor combination, if any.
*
* @return the source provider or {@code null}.
@@ -414,22 +314,6 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
}
/**
- * Like {@link #getMultiFlavorSourceProvider()} but typed for internal IntelliJ usage with {@link VirtualFile} instead of {@link File}
- * references.
- *
- * @return the flavor source providers or {@code null} in legacy projects.
- */
- @Nullable
- public IdeaSourceProvider getIdeaMultiFlavorSourceProvider() {
- SourceProvider provider = getMultiFlavorSourceProvider();
- if (provider != null) {
- return IdeaSourceProvider.create(provider);
- }
-
- return null;
- }
-
- /**
* Returns the source provider specific to the variant, if any.
*
* @return the source provider or {@code null}.
@@ -449,22 +333,6 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
}
/**
- * Like {@link #getVariantSourceProvider()} but typed for internal IntelliJ usage with {@link VirtualFile} instead of {@link File}
- * references.
- *
- * @return the flavor source providers or {@code null} in legacy projects.
- */
- @Nullable
- public IdeaSourceProvider getIdeaVariantSourceProvider() {
- SourceProvider provider = getVariantSourceProvider();
- if (provider != null) {
- return IdeaSourceProvider.create(provider);
- }
-
- return null;
- }
-
- /**
* This returns the primary resource directory; the default location to place newly created resources etc. This method is marked
* deprecated since we should be gradually adding in UI to allow users to choose specific resource folders among the available flavors
* (see {@link #getFlavorSourceProviders()} etc).
diff --git a/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java b/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java
index 613baf18fe1..878e3af104b 100644
--- a/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java
+++ b/android/src/org/jetbrains/android/facet/IdeaSourceProvider.java
@@ -16,6 +16,7 @@
package org.jetbrains.android.facet;
import com.android.builder.model.*;
+import com.android.tools.idea.model.AndroidModel;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -54,6 +55,15 @@ public abstract class IdeaSourceProvider {
}
@NotNull
+ private static List<IdeaSourceProvider> createAll(@NotNull List<SourceProvider> providers) {
+ List<IdeaSourceProvider> ideaProviders = Lists.newArrayList();
+ for (SourceProvider provider : providers) {
+ ideaProviders.add(create(provider));
+ }
+ return ideaProviders;
+ }
+
+ @NotNull
public static IdeaSourceProvider create(@NotNull final AndroidFacet facet) {
return new IdeaSourceProvider.Legacy(facet);
}
@@ -336,33 +346,10 @@ public abstract class IdeaSourceProvider {
if (!facet.requiresAndroidModel()) {
return Collections.singletonList(facet.getMainIdeaSourceProvider());
}
+ AndroidModel androidModel = facet.getAndroidModel();
+ assert androidModel != null;
- List<IdeaSourceProvider> providers = Lists.newArrayList();
-
- providers.add(facet.getMainIdeaSourceProvider());
- List<IdeaSourceProvider> flavorSourceProviders = facet.getIdeaFlavorSourceProviders();
- if (flavorSourceProviders != null) {
- for (IdeaSourceProvider provider : flavorSourceProviders) {
- providers.add(provider);
- }
- }
-
- IdeaSourceProvider multiProvider = facet.getIdeaMultiFlavorSourceProvider();
- if (multiProvider != null) {
- providers.add(multiProvider);
- }
-
- IdeaSourceProvider buildTypeSourceProvider = facet.getIdeaBuildTypeSourceProvider();
- if (buildTypeSourceProvider != null) {
- providers.add(buildTypeSourceProvider);
- }
-
- IdeaSourceProvider variantProvider = facet.getIdeaVariantSourceProvider();
- if (variantProvider != null) {
- providers.add(variantProvider);
- }
-
- return providers;
+ return createAll(androidModel.getActiveSourceProviders());
}
@NotNull
@@ -370,21 +357,9 @@ public abstract class IdeaSourceProvider {
if (!facet.requiresAndroidModel()) {
return Collections.emptyList();
}
-
- List<IdeaSourceProvider> providers = Lists.newArrayList();
-
- providers.addAll(facet.getMainIdeaTestSourceProviders());
- providers.addAll(facet.getIdeaFlavorTestSourceProviders());
-
- //TODO: Does this make sense?
- //providers.addAll(facet.getIdeaMultiFlavorTestSourceProviders());
-
- providers.addAll(facet.getIdeaBuildTypeTestSourceProvider());
-
- //TODO: Does this make sense?
- //providers.addAll(facet.getIdeaVariantTestSourceProvider());
-
- return providers;
+ AndroidModel androidModel = facet.getAndroidModel();
+ assert androidModel != null;
+ return createAll(androidModel.getTestSourceProviders());
}
private Collection<VirtualFile> getAllSourceFolders() {
@@ -543,11 +518,7 @@ public abstract class IdeaSourceProvider {
return Collections.singletonList(facet.getMainIdeaSourceProvider());
}
- List<IdeaSourceProvider> ideaSourceProviders = Lists.newArrayList();
- for (SourceProvider sourceProvider : getAllSourceProviders(facet)) {
- ideaSourceProviders.add(create(sourceProvider));
- }
- return ideaSourceProviders;
+ return createAll(getAllSourceProviders(facet));
}
/**
diff --git a/android/testSrc/org/jetbrains/android/facet/IdeaSourceProviderTest.java b/android/testSrc/org/jetbrains/android/facet/IdeaSourceProviderTest.java
index 8172541f8a8..c34a875ae5f 100644
--- a/android/testSrc/org/jetbrains/android/facet/IdeaSourceProviderTest.java
+++ b/android/testSrc/org/jetbrains/android/facet/IdeaSourceProviderTest.java
@@ -80,6 +80,7 @@ public class IdeaSourceProviderTest extends AndroidGradleTestCase {
assertNotNull(AndroidPlatform.getInstance(myLibModule));
}
+ /** TODO: Move this test to {@link com.android.tools.idea.gradle.IdeaAndroidProjectTest}. */
public void testGetCurrentSourceProviders() throws Exception {
StringBuilder sb = new StringBuilder();
VirtualFile baseDir = getProject().getBaseDir();
@@ -142,6 +143,45 @@ public class IdeaSourceProviderTest extends AndroidGradleTestCase {
}
/** TODO: Move this test to {@link com.android.tools.idea.gradle.IdeaAndroidProjectTest} */
+ public void testGetCurrentTestSourceProviders() throws Exception {
+ StringBuilder sb = new StringBuilder();
+ VirtualFile baseDir = getProject().getBaseDir();
+ for (IdeaSourceProvider provider : IdeaSourceProvider.getCurrentTestSourceProviders(myAppFacet)) {
+ sb.append(getStringRepresentation(provider, baseDir));
+ }
+
+ assertEquals("Manifest File: null\n" +
+ "Java Directories: []\n" +
+ "Res Directories: []\n" +
+ "Assets Directories: []\n" +
+ "AIDL Directories: []\n" +
+ "Renderscript Directories: []\n" +
+ "Jni Directories: []\n" +
+ "Resources Directories: []\n" +
+ "Manifest File: null\n" +
+ "Java Directories: []\n" +
+ "Res Directories: []\n" +
+ "Assets Directories: []\n" +
+ "AIDL Directories: []\n" +
+ "Renderscript Directories: []\n" +
+ "Jni Directories: []\n" +
+ "Resources Directories: []\n", sb.toString());
+
+ sb = new StringBuilder();
+ for (IdeaSourceProvider provider : IdeaSourceProvider.getCurrentTestSourceProviders(myLibFacet)) {
+ sb.append(getStringRepresentation(provider, baseDir));
+ }
+ assertEquals("Manifest File: null\n" +
+ "Java Directories: []\n" +
+ "Res Directories: []\n" +
+ "Assets Directories: []\n" +
+ "AIDL Directories: []\n" +
+ "Renderscript Directories: []\n" +
+ "Jni Directories: []\n" +
+ "Resources Directories: []\n", sb.toString());
+ }
+
+ /** TODO: Move this test to {@link com.android.tools.idea.gradle.IdeaAndroidProjectTest}. */
public void testGetAllSourceProviders() throws Exception {
StringBuilder sb = new StringBuilder();
File baseDir = new File(getProject().getBaseDir().getPath());