am 93c19203: am b185a0e1: Merge "Fixed bug where SDK created for android-L pointed to android-20 folder." into idea133 automerge: 97db606

* commit '93c192031375f7bffcb73622719f399c5b00956a':
  Fixed bug where SDK created for android-L pointed to android-20 folder.
diff --git a/android/src/com/android/tools/idea/sdk/DefaultSdks.java b/android/src/com/android/tools/idea/sdk/DefaultSdks.java
index fea9d04..0fd94fb 100644
--- a/android/src/com/android/tools/idea/sdk/DefaultSdks.java
+++ b/android/src/com/android/tools/idea/sdk/DefaultSdks.java
@@ -16,6 +16,7 @@
 package com.android.tools.idea.sdk;
 
 import com.android.SdkConstants;
+import com.android.sdklib.AndroidVersion;
 import com.android.sdklib.IAndroidTarget;
 import com.android.tools.idea.gradle.project.GradleProjectImporter;
 import com.android.tools.idea.gradle.util.LocalProperties;
@@ -30,7 +31,6 @@
 import com.intellij.openapi.project.ProjectManager;
 import com.intellij.openapi.projectRoots.*;
 import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil;
-import com.intellij.openapi.roots.libraries.ui.OrderRoot;
 import com.intellij.openapi.ui.Messages;
 import com.intellij.openapi.util.Pair;
 import com.intellij.openapi.util.io.FileUtil;
@@ -49,11 +49,12 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
-import java.util.regex.Pattern;
+
+import static org.jetbrains.android.sdk.AndroidSdkUtils.chooseNameForNewLibrary;
+import static org.jetbrains.android.sdk.AndroidSdkUtils.createNewAndroidPlatform;
 
 public final class DefaultSdks {
   private static final Logger LOG = Logger.getInstance(DefaultSdks.class);
-  private static final Pattern SDK_NAME_PATTERN = Pattern.compile(".*\\(\\d+\\)");
 
   private static final String ERROR_DIALOG_TITLE = "Project SDK Update";
 
@@ -221,13 +222,7 @@
         // Iterate over all current existing IJ Android SDKs
         for (Sdk sdk : AndroidSdkUtils.getAllAndroidSdks()) {
           if (sdk.getName().startsWith(AndroidSdkUtils.SDK_NAME_PREFIX)) {
-            // Try to set the path in the IntelliJ SDK to this Android SDK.
-            if (!setAndroidSdkPath(sdkData, sdk, resolvedPath)) {
-              // There wasn't a target in the Android SDK for this IntelliJ SDK. Maybe it
-              // points to an API target that doesn't exist in this Android SDK. Delete the
-              // IntelliJ SDK.
-              sdksToDelete.add(sdk);
-            }
+            sdksToDelete.add(sdk);
           }
         }
       }
@@ -266,17 +261,21 @@
    */
   @NotNull
   private static List<Sdk> createAndroidSdksForAllTargets(@NotNull File androidHome, @Nullable Sdk javaSdk) {
-    List<Sdk> sdks = Lists.newArrayList();
     AndroidSdkData sdkData = AndroidSdkData.getSdkData(androidHome);
-    if (sdkData != null) {
-      IAndroidTarget[] targets = sdkData.getTargets();
-      Sdk defaultJdk = javaSdk != null ? javaSdk : getDefaultJdk();
-      for (IAndroidTarget target : targets) {
-        if (target.isPlatform() && !doesDefaultAndroidSdkExist(target)) {
-          String name = AndroidSdkUtils.chooseNameForNewLibrary(target);
-          Sdk platform = AndroidSdkUtils.createNewAndroidPlatform(target, sdkData.getLocation().getPath(), name, defaultJdk, true);
-          sdks.add(platform);
-        }
+    if (sdkData == null) {
+      return Collections.emptyList();
+    }
+    IAndroidTarget[] targets = sdkData.getTargets();
+    if (targets.length == 0) {
+      return Collections.emptyList();
+    }
+    List<Sdk> sdks = Lists.newArrayList();
+    Sdk defaultJdk = javaSdk != null ? javaSdk : getDefaultJdk();
+    for (IAndroidTarget target : targets) {
+      if (target.isPlatform() && !doesDefaultAndroidSdkExist(target)) {
+        String name = chooseNameForNewLibrary(target);
+        Sdk sdk = createNewAndroidPlatform(target, sdkData.getLocation().getPath(), name, defaultJdk, true);
+        sdks.add(sdk);
       }
     }
     return sdks;
@@ -288,7 +287,9 @@
   private static boolean doesDefaultAndroidSdkExist(@NotNull IAndroidTarget target) {
     for (Sdk sdk : getEligibleAndroidSdks()) {
       IAndroidTarget platformTarget = getTarget(sdk);
-      if (platformTarget.getVersion().equals(target.getVersion())) {
+      AndroidVersion version = target.getVersion();
+      AndroidVersion existingVersion = platformTarget.getVersion();
+      if (existingVersion.equals(version)) {
         return true;
       }
     }
@@ -400,43 +401,6 @@
   }
 
   /**
-   * Sets the given Android SDK's home path to the given path, and resets all of its content roots.
-   */
-  private static boolean setAndroidSdkPath(@NotNull AndroidSdkData sdkData, @NotNull Sdk sdk, @NotNull String path) {
-    String name = sdk.getName();
-    if (!name.startsWith(AndroidSdkUtils.SDK_NAME_PREFIX) || SDK_NAME_PATTERN.matcher(name).matches()) {
-      return false;
-    }
-
-    SdkAdditionalData data = sdk.getSdkAdditionalData();
-    if (!(data instanceof AndroidSdkAdditionalData)) {
-      return false;
-    }
-
-    AndroidSdkAdditionalData androidSdkData = (AndroidSdkAdditionalData)data;
-    AndroidPlatform androidPlatform = androidSdkData.getAndroidPlatform();
-    if (androidPlatform == null) {
-      return false;
-    }
-
-    IAndroidTarget target = sdkData.findTargetByApiLevel(Integer.toString(androidPlatform.getApiLevel()));
-    if (target == null) {
-      return false;
-    }
-
-    SdkModificator sdkModificator = sdk.getSdkModificator();
-    sdkModificator.setHomePath(path);
-    sdkModificator.removeAllRoots();
-    for (OrderRoot orderRoot : AndroidSdkUtils.getLibraryRootsForTarget(target, path, true)) {
-      sdkModificator.addRoot(orderRoot.getFile(), orderRoot.getType());
-    }
-    ExternalAnnotationsSupport.attachJdkAnnotations(sdkModificator);
-
-    sdkModificator.commitChanges();
-    return true;
-  }
-
-  /**
    * @return the JDK with the default naming convention, creating one if it is not set up.
    */
   @Nullable