fixes to avoid problems induced by the appearance of OrderRootType.DOCUMENTATION
authorDmitry Jemerov <yole@jetbrains.com>
Tue, 28 Dec 2010 15:05:49 +0000 (18:05 +0300)
committerDmitry Jemerov <yole@jetbrains.com>
Tue, 28 Dec 2010 15:07:11 +0000 (18:07 +0300)
java/idea-ui/src/com/intellij/openapi/projectRoots/ui/SdkEditor.java
java/java-impl/src/com/intellij/openapi/projectRoots/impl/JavaSdkImpl.java
plugins/devkit/src/projectRoots/IdeaJdk.java
plugins/devkit/src/projectRoots/IdeaJdkConfigurable.java

index f8ebd6dd79e47cd9dd9b630e1d6428c90deaea77..a6718c1224b05fa2f73aa2dcb0b6288a3868997f 100644 (file)
@@ -406,7 +406,11 @@ public class SdkEditor implements Configurable, Place.Navigator {
     }
 
     public VirtualFile[] getRoots(OrderRootType rootType) {
-      return myPathEditors.get(rootType).getRoots();
+      final PathEditor editor = myPathEditors.get(rootType);
+      if (editor == null) {
+        throw new IllegalStateException("no editor for root type " + rootType);
+      }
+      return editor.getRoots();
     }
 
     public void addRoot(VirtualFile root, OrderRootType rootType) {
index cc478cc9dc29375d8615dee254073560991ece45..964ef742c369a536be5325ab7fd92820454f69a5 100644 (file)
@@ -18,6 +18,7 @@ package com.intellij.openapi.projectRoots.impl;
 import com.intellij.openapi.application.PathManager;
 import com.intellij.openapi.project.ProjectBundle;
 import com.intellij.openapi.projectRoots.*;
+import com.intellij.openapi.roots.AnnotationOrderRootType;
 import com.intellij.openapi.roots.JavadocOrderRootType;
 import com.intellij.openapi.roots.OrderRootType;
 import com.intellij.openapi.util.IconLoader;
@@ -485,4 +486,11 @@ public class JavaSdkImpl extends JavaSdk {
     return LocalFileSystem.getInstance().findFileByPath(path);
   }
 
+  @Override
+  public boolean isRootTypeApplicable(OrderRootType type) {
+    return type == OrderRootType.CLASSES ||
+           type == OrderRootType.SOURCES ||
+           type == JavadocOrderRootType.getInstance() ||
+           type == AnnotationOrderRootType.getInstance();
+  }
 }
index f8cb4bdd368d77a4cff079485bb10e66ed12ba8e..51f114ffce7ed0c82347bb47e94610e087dcd278 100644 (file)
@@ -19,6 +19,7 @@ import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.application.PathManager;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.projectRoots.*;
+import com.intellij.openapi.roots.AnnotationOrderRootType;
 import com.intellij.openapi.roots.JavadocOrderRootType;
 import com.intellij.openapi.roots.OrderRootType;
 import com.intellij.openapi.ui.Messages;
@@ -510,6 +511,14 @@ public class IdeaJdk extends SdkType implements JavaSdkType {
     return SdkType.findInstance(IdeaJdk.class);
   }
 
+  @Override
+  public boolean isRootTypeApplicable(OrderRootType type) {
+    return type == OrderRootType.CLASSES ||
+           type == OrderRootType.SOURCES ||
+           type == JavadocOrderRootType.getInstance() ||
+           type == AnnotationOrderRootType.getInstance();
+  }
+
   enum JDKVersion {
 
     V1_4("1.4"), V1_5("1.5"), V1_6("1.6");
index 9ec3590d58ff5b235fdf11fac9c38684060c2e5b..a0491c94c4ce02fd2f976cf270f86d5ad9663db8 100644 (file)
@@ -127,6 +127,9 @@ public class IdeaJdkConfigurable implements AdditionalDataConfigurable {
         if (myFreeze) return;
         final Sdk javaJdk = (Sdk)e.getItem();
         for (OrderRootType type : OrderRootType.getAllTypes()) {
+          if (!javaJdk.getSdkType().isRootTypeApplicable(type)) {
+            continue;
+          }
           final VirtualFile[] internalRoots = javaJdk.getSdkModificator().getRoots(type);
           final VirtualFile[] configuredRoots = mySdkModificator.getRoots(type);
           for (VirtualFile file : internalRoots) {