am e19b9aac: am c0eb8c1d: Merge "Now Gradle plug-in "quick fix" uses the "recommended version", instead of "latest version"." into idea133 automerge: bb7c7bd

* commit 'e19b9aac04a3b1a06e9efccf2c260d72dd46e50c':
  Now Gradle plug-in "quick fix" uses the "recommended version", instead of "latest version".
diff --git a/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectResolver.java b/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectResolver.java
index 524bcf6..d395e1e 100644
--- a/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectResolver.java
+++ b/android/src/com/android/tools/idea/gradle/project/AndroidGradleProjectResolver.java
@@ -58,8 +58,8 @@
 import java.io.IOException;
 import java.util.*;
 
+import static com.android.SdkConstants.GRADLE_MINIMUM_VERSION;
 import static com.android.tools.idea.gradle.util.GradleBuilds.BUILD_SRC_FOLDER_NAME;
-import static com.android.tools.idea.gradle.util.GradleUtil.GRADLE_MINIMUM_VERSION;
 
 /**
  * Imports Android-Gradle projects into IDEA.
diff --git a/android/src/com/android/tools/idea/gradle/project/GradleModelVersionCheck.java b/android/src/com/android/tools/idea/gradle/project/GradleModelVersionCheck.java
index cd2caf0..24b3dac 100644
--- a/android/src/com/android/tools/idea/gradle/project/GradleModelVersionCheck.java
+++ b/android/src/com/android/tools/idea/gradle/project/GradleModelVersionCheck.java
@@ -15,9 +15,9 @@
  */
 package com.android.tools.idea.gradle.project;
 
+import com.android.SdkConstants;
 import com.android.builder.model.AndroidProject;
 import com.android.sdklib.repository.FullRevision;
-import com.android.tools.idea.gradle.util.GradleUtil;
 import com.google.common.base.Strings;
 import com.intellij.openapi.diagnostic.Logger;
 import org.jetbrains.annotations.NotNull;
@@ -26,7 +26,7 @@
 final class GradleModelVersionCheck {
   private static final Logger LOG = Logger.getInstance(GradleModelVersionCheck.class);
 
-  static final FullRevision MINIMUM_SUPPORTED_VERSION = FullRevision.parseRevision(GradleUtil.GRADLE_PLUGIN_MINIMUM_VERSION);
+  static final FullRevision MINIMUM_SUPPORTED_VERSION = FullRevision.parseRevision(SdkConstants.GRADLE_PLUGIN_MINIMUM_VERSION);
 
   static boolean isSupportedVersion(@NotNull AndroidProject androidProject) {
     return isSupportedVersion(androidProject, MINIMUM_SUPPORTED_VERSION);
diff --git a/android/src/com/android/tools/idea/gradle/project/ProjectImportErrorHandler.java b/android/src/com/android/tools/idea/gradle/project/ProjectImportErrorHandler.java
index 6959b79..939313c 100644
--- a/android/src/com/android/tools/idea/gradle/project/ProjectImportErrorHandler.java
+++ b/android/src/com/android/tools/idea/gradle/project/ProjectImportErrorHandler.java
@@ -16,7 +16,6 @@
 package com.android.tools.idea.gradle.project;
 
 import com.android.SdkConstants;
-import com.android.tools.idea.gradle.util.GradleUtil;
 import com.intellij.openapi.externalSystem.model.ExternalSystemException;
 import com.intellij.openapi.util.Pair;
 import org.gradle.tooling.UnsupportedVersionException;
@@ -30,6 +29,9 @@
 import java.net.UnknownHostException;
 import java.util.regex.Pattern;
 
+import static com.android.SdkConstants.GRADLE_MINIMUM_VERSION;
+import static com.android.SdkConstants.GRADLE_LATEST_VERSION;
+
 /**
  * Provides better error messages for android projects import failures.
  */
@@ -42,7 +44,7 @@
   private static final Pattern SDK_NOT_FOUND = Pattern.compile("The SDK directory '(.*?)' does not exist.");
 
   private static final String EMPTY_LINE = "\n\n";
-  private static final String UNSUPPORTED_GRADLE_VERSION_ERROR = "Gradle version " + GradleUtil.GRADLE_MINIMUM_VERSION + " is required";
+  private static final String UNSUPPORTED_GRADLE_VERSION_ERROR = "Gradle version " + GRADLE_MINIMUM_VERSION + " is required";
   private static final String SDK_DIR_PROPERTY_MISSING = "No sdk.dir property defined in local.properties file.";
 
   @Override
@@ -59,8 +61,7 @@
     Throwable rootCause = rootCauseAndLocation.getFirst();
 
     if (isOldGradleVersion(rootCause)) {
-      String msg = String.format("You are using an unsupported version of Gradle. Please use version %1$s.",
-                                 GradleUtil.GRADLE_MINIMUM_VERSION);
+      String msg = String.format("You are using an unsupported version of Gradle. Please use version %1$s.", GRADLE_LATEST_VERSION);
       msg += ('\n' + FIX_GRADLE_VERSION);
       // Location of build.gradle is useless for this error. Omitting it.
       return createUserFriendlyError(msg, null);
diff --git a/android/src/com/android/tools/idea/gradle/service/notification/FixGradleModelVersionHyperlink.java b/android/src/com/android/tools/idea/gradle/service/notification/FixGradleModelVersionHyperlink.java
index 1daba6a..26adf4b 100644
--- a/android/src/com/android/tools/idea/gradle/service/notification/FixGradleModelVersionHyperlink.java
+++ b/android/src/com/android/tools/idea/gradle/service/notification/FixGradleModelVersionHyperlink.java
@@ -31,10 +31,10 @@
 
 import java.io.File;
 
+import static com.android.SdkConstants.GRADLE_LATEST_VERSION;
+import static com.android.SdkConstants.GRADLE_PLUGIN_RECOMMENDED_VERSION;
 import static com.android.tools.idea.gradle.parser.BuildFileKey.PLUGIN_VERSION;
 import static com.android.tools.idea.gradle.service.notification.FixGradleVersionInWrapperHyperlink.updateGradleVersion;
-import static com.android.tools.idea.gradle.util.GradleUtil.GRADLE_LATEST_VERSION;
-import static com.android.tools.idea.gradle.util.GradleUtil.GRADLE_PLUGIN_LATEST_VERSION;
 
 class FixGradleModelVersionHyperlink extends NotificationHyperlink {
   private final boolean myOpenMigrationGuide;
@@ -65,7 +65,7 @@
           WriteCommandAction.runWriteCommandAction(project, new Runnable() {
             @Override
             public void run() {
-              buildFile.setValue(PLUGIN_VERSION, GRADLE_PLUGIN_LATEST_VERSION);
+              buildFile.setValue(PLUGIN_VERSION, GRADLE_PLUGIN_RECOMMENDED_VERSION);
             }
           });
           atLeastOnUpdated = true;
diff --git a/android/src/com/android/tools/idea/gradle/util/GradleUtil.java b/android/src/com/android/tools/idea/gradle/util/GradleUtil.java
index 2446989..b116036 100644
--- a/android/src/com/android/tools/idea/gradle/util/GradleUtil.java
+++ b/android/src/com/android/tools/idea/gradle/util/GradleUtil.java
@@ -80,12 +80,6 @@
 public final class GradleUtil {
   @NonNls public static final String BUILD_DIR_DEFAULT_NAME = "build";
 
-  @NonNls public static final String GRADLE_MINIMUM_VERSION = SdkConstants.GRADLE_MINIMUM_VERSION;
-  @NonNls public static final String GRADLE_LATEST_VERSION = SdkConstants.GRADLE_LATEST_VERSION;
-
-  @NonNls public static final String GRADLE_PLUGIN_MINIMUM_VERSION = SdkConstants.GRADLE_PLUGIN_MINIMUM_VERSION;
-  @NonNls public static final String GRADLE_PLUGIN_LATEST_VERSION = SdkConstants.GRADLE_PLUGIN_LATEST_VERSION;
-
   /** The name of the gradle wrapper executable associated with the current OS. */
   @NonNls public static final String GRADLE_WRAPPER_EXECUTABLE_NAME =
     SystemInfo.isWindows ? SdkConstants.FN_GRADLE_WRAPPER_WIN : SdkConstants.FN_GRADLE_WRAPPER_UNIX;
diff --git a/android/src/com/android/tools/idea/wizard/ImportWizardModuleBuilder.java b/android/src/com/android/tools/idea/wizard/ImportWizardModuleBuilder.java
index f894fc0..89a89dc 100644
--- a/android/src/com/android/tools/idea/wizard/ImportWizardModuleBuilder.java
+++ b/android/src/com/android/tools/idea/wizard/ImportWizardModuleBuilder.java
@@ -17,7 +17,6 @@
 
 import com.android.annotations.VisibleForTesting;
 import com.android.tools.idea.gradle.project.GradleProjectImporter;
-import com.android.tools.idea.gradle.util.GradleUtil;
 import com.android.tools.idea.templates.Template;
 import com.android.tools.idea.templates.TemplateMetadata;
 import com.google.common.base.Functions;
@@ -54,6 +53,8 @@
 import java.util.List;
 import java.util.Map;
 
+import static com.android.SdkConstants.GRADLE_LATEST_VERSION;
+import static com.android.SdkConstants.GRADLE_PLUGIN_LATEST_VERSION;
 import static com.android.tools.idea.templates.TemplateMetadata.*;
 import static com.android.tools.idea.wizard.NewModuleWizardState.ATTR_PROJECT_LOCATION;
 import static com.android.tools.idea.wizard.NewProjectWizardState.ATTR_MODULE_NAME;
@@ -135,8 +136,8 @@
     if (project != null) {
       myWizardState.put(NewModuleWizardState.ATTR_PROJECT_LOCATION, project.getBasePath());
     }
-    myWizardState.put(TemplateMetadata.ATTR_GRADLE_VERSION, GradleUtil.GRADLE_LATEST_VERSION);
-    myWizardState.put(TemplateMetadata.ATTR_GRADLE_PLUGIN_VERSION, GradleUtil.GRADLE_PLUGIN_LATEST_VERSION);
+    myWizardState.put(TemplateMetadata.ATTR_GRADLE_VERSION, GRADLE_LATEST_VERSION);
+    myWizardState.put(TemplateMetadata.ATTR_GRADLE_PLUGIN_VERSION, GRADLE_PLUGIN_LATEST_VERSION);
     update();
 
     myInitializationComplete = true;
diff --git a/android/src/com/android/tools/idea/wizard/NewProjectWizard.java b/android/src/com/android/tools/idea/wizard/NewProjectWizard.java
index eb9a569..b11b291 100644
--- a/android/src/com/android/tools/idea/wizard/NewProjectWizard.java
+++ b/android/src/com/android/tools/idea/wizard/NewProjectWizard.java
@@ -18,7 +18,6 @@
 import com.android.annotations.VisibleForTesting;
 import com.android.tools.idea.gradle.project.GradleProjectImporter;
 import com.android.tools.idea.gradle.project.NewProjectImportGradleSyncListener;
-import com.android.tools.idea.gradle.util.GradleUtil;
 import com.android.tools.idea.sdk.VersionCheck;
 import com.android.tools.idea.templates.Template;
 import com.android.tools.idea.templates.TemplateManager;
@@ -45,6 +44,8 @@
 import java.io.IOException;
 import java.util.List;
 
+import static com.android.SdkConstants.GRADLE_LATEST_VERSION;
+import static com.android.SdkConstants.GRADLE_PLUGIN_LATEST_VERSION;
 import static com.android.tools.idea.templates.Template.CATEGORY_ACTIVITIES;
 import static com.android.tools.idea.templates.TemplateMetadata.ATTR_JAVA_VERSION;
 import static icons.AndroidIcons.Wizards.NewProjectSidePanel;
@@ -102,8 +103,8 @@
     }
     myWizardState = new NewProjectWizardState();
     Template.convertApisToInt(myWizardState.getParameters());
-    myWizardState.put(TemplateMetadata.ATTR_GRADLE_VERSION, GradleUtil.GRADLE_LATEST_VERSION);
-    myWizardState.put(TemplateMetadata.ATTR_GRADLE_PLUGIN_VERSION, GradleUtil.GRADLE_PLUGIN_LATEST_VERSION);
+    myWizardState.put(TemplateMetadata.ATTR_GRADLE_VERSION, GRADLE_LATEST_VERSION);
+    myWizardState.put(TemplateMetadata.ATTR_GRADLE_PLUGIN_VERSION, GRADLE_PLUGIN_LATEST_VERSION);
     myWizardState.put(TemplateMetadata.ATTR_PER_MODULE_REPOS, false);
 
     myConfigureAndroidModuleStep = new ConfigureAndroidModuleStep(myWizardState, myProject, NewProjectSidePanel, this);
diff --git a/android/src/com/android/tools/idea/wizard/NewProjectWizardDynamic.java b/android/src/com/android/tools/idea/wizard/NewProjectWizardDynamic.java
index 2d30d62..355ff80 100644
--- a/android/src/com/android/tools/idea/wizard/NewProjectWizardDynamic.java
+++ b/android/src/com/android/tools/idea/wizard/NewProjectWizardDynamic.java
@@ -17,7 +17,6 @@
 
 import com.android.tools.idea.gradle.project.GradleProjectImporter;
 import com.android.tools.idea.gradle.project.NewProjectImportGradleSyncListener;
-import com.android.tools.idea.gradle.util.GradleUtil;
 import com.android.tools.idea.templates.KeystoreUtils;
 import com.android.tools.idea.templates.TemplateManager;
 import com.android.tools.idea.templates.TemplateMetadata;
@@ -38,6 +37,8 @@
 import java.io.IOException;
 import java.util.List;
 
+import static com.android.SdkConstants.GRADLE_LATEST_VERSION;
+import static com.android.SdkConstants.GRADLE_PLUGIN_LATEST_VERSION;
 import static com.android.tools.idea.templates.TemplateMetadata.*;
 import static com.android.tools.idea.wizard.ConfigureAndroidProjectStep.APPLICATION_NAME_KEY;
 import static com.android.tools.idea.wizard.ConfigureAndroidProjectStep.PROJECT_LOCATION_KEY;
@@ -83,8 +84,8 @@
       addPath(path);
     }
     ScopedStateStore state = getState();
-    state.put(GRADLE_VERSION_KEY, GradleUtil.GRADLE_LATEST_VERSION);
-    state.put(GRADLE_PLUGIN_VERSION_KEY, GradleUtil.GRADLE_PLUGIN_LATEST_VERSION);
+    state.put(GRADLE_VERSION_KEY, GRADLE_LATEST_VERSION);
+    state.put(GRADLE_PLUGIN_VERSION_KEY, GRADLE_PLUGIN_LATEST_VERSION);
     state.put(USE_PER_MODULE_REPOS_KEY, false);
     state.put(IS_NEW_PROJECT_KEY, true);
     state.put(IS_GRADLE_PROJECT_KEY, true);
diff --git a/android/testSrc/com/android/tools/idea/gradle/stubs/android/AndroidProjectStub.java b/android/testSrc/com/android/tools/idea/gradle/stubs/android/AndroidProjectStub.java
index 1a15f9c..80900d2 100644
--- a/android/testSrc/com/android/tools/idea/gradle/stubs/android/AndroidProjectStub.java
+++ b/android/testSrc/com/android/tools/idea/gradle/stubs/android/AndroidProjectStub.java
@@ -67,7 +67,7 @@
   @Override
   @NotNull
   public String getModelVersion() {
-    return GradleUtil.GRADLE_PLUGIN_MINIMUM_VERSION + "-SNAPSHOT";
+    return SdkConstants.GRADLE_PLUGIN_MINIMUM_VERSION + "-SNAPSHOT";
   }
 
   @Override
diff --git a/android/testSrc/com/android/tools/idea/templates/AndroidGradleTestCase.java b/android/testSrc/com/android/tools/idea/templates/AndroidGradleTestCase.java
index 042a7bf..6dc22be 100644
--- a/android/testSrc/com/android/tools/idea/templates/AndroidGradleTestCase.java
+++ b/android/testSrc/com/android/tools/idea/templates/AndroidGradleTestCase.java
@@ -178,10 +178,10 @@
     if (requireRecentSdk() && ourPreviousSdkData == null) {
       ourPreviousSdkData = AndroidSdkUtils.tryToChooseAndroidSdk();
       if (ourPreviousSdkData != null) {
-        VersionCheck.VersionCheckResult check = VersionCheck.checkVersion(ourPreviousSdkData.getPath());
+        VersionCheck.VersionCheckResult check = VersionCheck.checkVersion(ourPreviousSdkData.getLocation().getPath());
         // "The sdk1.5" version of the SDK stored in the test directory isn't really a 22.0.5 version of the SDK even
         // though its sdk1.5/tools/source.properties says it is. We can't use this one for these tests.
-        if (!check.isCompatibleVersion() || ourPreviousSdkData.getPath().endsWith(File.separator + "sdk1.5")) {
+        if (!check.isCompatibleVersion() || ourPreviousSdkData.getLocation().getPath().endsWith(File.separator + "sdk1.5")) {
           AndroidSdkData sdkData = createTestSdkManager();
           assertNotNull(sdkData);
           AndroidSdkUtils.setSdkData(sdkData);
@@ -320,7 +320,7 @@
     }
     FileUtil.copyDirContent(gradleWrapperSrc, projectRoot);
     File wrapperPropertiesFile = GradleUtil.getGradleWrapperPropertiesFilePath(projectRoot);
-    GradleUtil.updateGradleDistributionUrl(GradleUtil.GRADLE_LATEST_VERSION, wrapperPropertiesFile);
+    GradleUtil.updateGradleDistributionUrl(GRADLE_LATEST_VERSION, wrapperPropertiesFile);
   }
 
   protected static void assertFilesExist(@Nullable File baseDir, @NotNull String... paths) {
@@ -353,13 +353,14 @@
     assert sdkData != null;
 
     Template.convertApisToInt(projectWizardState.getParameters());
-    projectWizardState.put(TemplateMetadata.ATTR_GRADLE_VERSION, GradleUtil.GRADLE_LATEST_VERSION);
-    projectWizardState.put(TemplateMetadata.ATTR_GRADLE_PLUGIN_VERSION, GradleUtil.GRADLE_PLUGIN_LATEST_VERSION);
+    projectWizardState.put(TemplateMetadata.ATTR_GRADLE_VERSION, GRADLE_LATEST_VERSION);
+    projectWizardState.put(TemplateMetadata.ATTR_GRADLE_PLUGIN_VERSION, GRADLE_PLUGIN_LATEST_VERSION);
     projectWizardState.put(NewModuleWizardState.ATTR_PROJECT_LOCATION, project.getBasePath());
     projectWizardState.put(NewProjectWizardState.ATTR_MODULE_NAME, "TestModule");
     projectWizardState.put(TemplateMetadata.ATTR_PACKAGE_NAME, "test.pkg");
     projectWizardState.put(TemplateMetadata.ATTR_CREATE_ICONS, false); // If not, you need to initialize additional state
-    final BuildToolInfo buildTool = sdkData.getLatestBuildTool();
+    BuildToolInfo buildTool = sdkData.getLatestBuildTool();
+    assertNotNull(buildTool);
     projectWizardState.put(TemplateMetadata.ATTR_BUILD_TOOLS_VERSION, buildTool.getRevision().toString());
     IAndroidTarget[] targets = sdkData.getTargets();
     AndroidVersion version = targets[targets.length - 1].getVersion();
@@ -465,8 +466,7 @@
     GradleProjectImporter projectImporter = GradleProjectImporter.getInstance();
     // When importing project for tests we do not generate the sources as that triggers a compilation which finishes asynchronously. This
     // causes race conditions and intermittent errors. If a test needs source generation this should be handled separately.
-    boolean generateSources = false;
-    projectImporter.importProject(projectName, projectRoot, generateSources, new GradleSyncListener() {
+    projectImporter.importProject(projectName, projectRoot, false /* do not generate sources */, new GradleSyncListener() {
       @Override
       public void syncStarted(@NotNull Project project) {
       }
diff --git a/android/testSrc/com/android/tools/idea/templates/TemplateTest.java b/android/testSrc/com/android/tools/idea/templates/TemplateTest.java
index 35a5df8..248621d 100644
--- a/android/testSrc/com/android/tools/idea/templates/TemplateTest.java
+++ b/android/testSrc/com/android/tools/idea/templates/TemplateTest.java
@@ -50,8 +50,6 @@
 import java.util.Set;
 
 import static com.android.SdkConstants.*;
-import static com.android.tools.idea.gradle.util.GradleUtil.GRADLE_LATEST_VERSION;
-import static com.android.tools.idea.gradle.util.GradleUtil.GRADLE_PLUGIN_LATEST_VERSION;
 import static com.android.tools.idea.templates.TemplateMetadata.*;
 import static com.android.tools.idea.templates.TemplateMetadata.ATTR_TARGET_API;
 import static com.android.tools.idea.wizard.NewModuleWizardState.ATTR_CREATE_ACTIVITY;
@@ -151,7 +149,7 @@
           System.out.println("recentSDK required= " + requireRecentSdk());
           System.out.println("getTestSdkPath= " + getTestSdkPath());
           System.out.println("getPlatformDir=" + getPlatformDir());
-          String location = sdkData.getPath();
+          String location = sdkData.getLocation().getPath();
           System.out.println("Using SDK at " + location);
           VersionCheck.VersionCheckResult result = VersionCheck.checkVersion(location);
           System.out.println("Version check=" + result.getRevision());