diff options
author | Alex Ruiz <alruiz@google.com> | 2015-08-03 21:14:02 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-08-03 21:14:02 +0000 |
commit | f73d9f19e1acf56cfd84f1baa419e2c62eae8934 (patch) | |
tree | 112d3587d5c8ac51f7a33e41f92ce809cad9347f /android | |
parent | 915ca316103a7b54fd5e52e410bd3a83466a460a (diff) | |
parent | 7dca8b9f4b0a7f1362abc647cf6e0aebe10bddf3 (diff) | |
download | idea-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')
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()); |