summaryrefslogtreecommitdiff
path: root/android/src
diff options
context:
space:
mode:
authorFuyao Zhao <fuyaoz@google.com>2015-07-22 15:09:04 -0700
committerFuyao Zhao <fuyaoz@google.com>2015-08-03 18:26:56 -0700
commit68d3d13cddc98e84f24b963ed209bbd7bd6d9d07 (patch)
tree001dc5451967598f24158f99bcf7d3a0a6db652a /android/src
parentd0aa6f6e42a8ff80e71b676efb6240446e41d697 (diff)
downloadidea-68d3d13cddc98e84f24b963ed209bbd7bd6d9d07.tar.gz
Add module dep quickfix will correctly consider the type of module.
Don't generate source when doing gradle sync. Change-Id: I0076332bef7ce48cc1221b318a7445205847bd16
Diffstat (limited to 'android/src')
-rw-r--r--android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java39
1 files changed, 37 insertions, 2 deletions
diff --git a/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java b/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java
index d3722172a90..00583cb99e4 100644
--- a/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java
+++ b/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java
@@ -15,6 +15,7 @@
*/
package com.android.tools.idea.quickfix;
+import com.android.builder.model.AndroidProject;
import com.android.tools.idea.gradle.parser.Dependency;
import com.google.common.base.Function;
import com.google.common.collect.Sets;
@@ -42,6 +43,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
+import static com.android.tools.idea.gradle.util.GradleUtil.getAndroidProject;
import static com.android.tools.idea.gradle.util.GradleUtil.getGradlePath;
import static com.intellij.compiler.ModuleCompilerUtil.addingDependencyFormsCircularity;
import static com.intellij.util.containers.ContainerUtil.getFirstItem;
@@ -66,6 +68,7 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix {
Project project = psiElement.getProject();
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex();
+ ModuleType currentModuleType = getModuleType(currentModule);
for (PsiClass aClass : classes) {
if (!facade.getResolveHelper().isAccessible(aClass, psiElement, aClass)) {
@@ -79,9 +82,25 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix {
if (virtualFile == null) {
continue;
}
- final Module classModule = fileIndex.getModuleForFile(virtualFile);
+ Module classModule = fileIndex.getModuleForFile(virtualFile);
if (classModule != null && classModule != currentModule && !ModuleRootManager.getInstance(currentModule).isDependsOn(classModule)) {
- myModules.add(classModule);
+ ModuleType classModuleType = getModuleType(classModule);
+ boolean legalDependency = false;
+ switch (currentModuleType) {
+ case JAVA:
+ legalDependency = classModuleType == ModuleType.JAVA;
+ break;
+ case ANDROID_LIBRARY:
+ legalDependency = classModuleType == ModuleType.JAVA || classModuleType == ModuleType.ANDROID_LIBRARY;
+ break;
+ case ANDROID_APPLICATION:
+ legalDependency = classModuleType != ModuleType.ANDROID_APPLICATION;
+ break;
+ }
+
+ if (legalDependency) {
+ myModules.add(classModule);
+ }
}
}
myCurrentModule = currentModule;
@@ -227,4 +246,20 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix {
addDependency(from, dependency);
}
}
+
+ private enum ModuleType {
+ JAVA,
+ ANDROID_LIBRARY,
+ ANDROID_APPLICATION
+ }
+
+ @NotNull
+ private static ModuleType getModuleType(@NotNull Module module) {
+ AndroidProject androidProject = getAndroidProject(module);
+ if (androidProject == null) {
+ return ModuleType.JAVA;
+ } else {
+ return androidProject.isLibrary() ? ModuleType.ANDROID_LIBRARY : ModuleType.ANDROID_APPLICATION;
+ }
+ }
}