diff options
author | Esteban de la Canal <estebandlc@google.com> | 2014-06-30 16:57:28 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-06-30 16:57:28 +0000 |
commit | 28542d6cd005ba872ace1ffcedbf92625139a20a (patch) | |
tree | 39fe96c0cb44f1c426b8c8a7ab011f4b3cfa43f2 | |
parent | a839624b0bd813c69477b5a4e2609cef291baf6d (diff) | |
parent | d3cd00427f466118a994ace0a15b24b9df8f9515 (diff) | |
download | idea-28542d6cd005ba872ace1ffcedbf92625139a20a.tar.gz |
am d3cd0042: Merge "Fixes case where the cache is so out of date that a module is missing." into idea133 automerge: 85a1a7f
* commit 'd3cd00427f466118a994ace0a15b24b9df8f9515':
Fixes case where the cache is so out of date that a module is missing.
-rw-r--r-- | android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectData.java | 15 | ||||
-rw-r--r-- | android/testSrc/com/android/tools/idea/gradle/project/AndroidGradleProjectDataTest.java | 9 |
2 files changed, 18 insertions, 6 deletions
diff --git a/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectData.java b/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectData.java index e160750f544..c1d1b8fc3bf 100644 --- a/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectData.java +++ b/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectData.java @@ -224,9 +224,10 @@ public class AndroidGradleProjectData implements Serializable { try { AndroidGradleProjectData data = (AndroidGradleProjectData)ois.readObject(); if (data.validate(rootDirPath)) { - data.applyTo(project); - PostProjectSetupTasksExecutor.getInstance(project).onProjectRestoreFromDisk(); - return true; + if (data.applyTo(project)) { + PostProjectSetupTasksExecutor.getInstance(project).onProjectRestoreFromDisk(); + return true; + } } } finally { @@ -414,10 +415,14 @@ public class AndroidGradleProjectData implements Serializable { * @param project the project to apply the data to. */ @VisibleForTesting - public void applyTo(Project project) { + public boolean applyTo(Project project) { final Module[] modules = ModuleManager.getInstance(project).getModules(); for (Module module : modules) { ModuleData data = myData.get(module.getName()); + // If no data is found, the cache doesn't match the project structure and we should resync. + if (data == null) { + return false; + } AndroidFacet androidFacet = AndroidFacet.getInstance(module); if (androidFacet != null && module.getModuleFile() != null) { @@ -440,6 +445,8 @@ public class AndroidGradleProjectData implements Serializable { } GradleSyncState syncState = GradleSyncState.getInstance(project); syncState.setLastGradleSyncTimestamp(myLastGradleSyncTimestamp); + + return true; } /** diff --git a/android/testSrc/com/android/tools/idea/gradle/project/AndroidGradleProjectDataTest.java b/android/testSrc/com/android/tools/idea/gradle/project/AndroidGradleProjectDataTest.java index 0a417f542f6..260cf8e1abc 100644 --- a/android/testSrc/com/android/tools/idea/gradle/project/AndroidGradleProjectDataTest.java +++ b/android/testSrc/com/android/tools/idea/gradle/project/AndroidGradleProjectDataTest.java @@ -164,7 +164,6 @@ public class AndroidGradleProjectDataTest extends AndroidGradleTestCase { Map<String, AndroidGradleProjectData.ModuleData> modules = data.getModuleData(); assertEquals(3, modules.size()); - AndroidGradleProjectData.ModuleData moduleData = modules.get(myAndroidFacet.getModule().getName()); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(outputStream); @@ -178,9 +177,15 @@ public class AndroidGradleProjectDataTest extends AndroidGradleTestCase { // Clear the sync state to make sure we set it correctly. syncState.setLastGradleSyncTimestamp(-1L); - newData.applyTo(project); + assertTrue(newData.applyTo(project)); assertEquals(previousSyncTime, syncState.getLastGradleSyncTimestamp()); + + // Test applying without a module. + String moduleName = myAndroidFacet.getModule().getName(); + Map<String, AndroidGradleProjectData.ModuleData> newModules = newData.getModuleData(); + newModules.remove(moduleName); + assertFalse(newData.applyTo(project)); } interface MyInterface { |