IDEA-135033 Storage for activation status fixed & .gdsl files within library sources...
authorDaniil Ovchinnikov <daniil.ovchinnikov@jetbrains.com>
Mon, 19 Jan 2015 14:12:52 +0000 (17:12 +0300)
committerDaniil Ovchinnikov <daniil.ovchinnikov@jetbrains.com>
Mon, 19 Jan 2015 14:12:52 +0000 (17:12 +0300)
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/DslActivationStatus.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/dsl/GroovyDslFileIndex.java

index de1d162148bb79ca42f749ced2e2064e7bcdd905..267707e082072a1a86ba7460c044e15fa23e46be 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
 package org.jetbrains.plugins.groovy.dsl;
 
 import com.intellij.openapi.components.*;
+import com.intellij.openapi.util.text.StringUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.openapi.vfs.VirtualFileManager;
 import gnu.trove.THashMap;
@@ -49,11 +50,16 @@ public class DslActivationStatus implements PersistentStateComponent<Element> {
   @Nullable
   public synchronized String getInactivityReason(VirtualFile file) {
     String status = myStatus.get(file);
-    return status == null || status == ENABLED ? null : status;
+    return ENABLED.equals(status) ? null : status;
   }
 
   public synchronized boolean isActivated(VirtualFile file) {
-    return myStatus.get(file) == ENABLED;
+    final String status = myStatus.get(file);
+    if (status == null) {
+      myStatus.put(file, ENABLED);
+      return true;
+    }
+    return ENABLED.equals(status);
   }
 
   @Nullable
@@ -66,7 +72,9 @@ public class DslActivationStatus implements PersistentStateComponent<Element> {
       Element element = new Element("file");
       root.addContent(element);
       element.setAttribute("url", file.getUrl());
-      element.setAttribute("status", (status == ENABLED ? "" : status));
+      if (!ENABLED.equals(status)) {
+        element.setAttribute("status", status);
+      }
     }
     return root;
   }
@@ -76,10 +84,10 @@ public class DslActivationStatus implements PersistentStateComponent<Element> {
     List<Element> children = state.getChildren("file");
     for (Element element : children) {
       String url = element.getAttributeValue("url", "");
-      String status = element.getAttributeValue("status", ENABLED);
+      String status = element.getAttributeValue("status");
       VirtualFile file = VirtualFileManager.getInstance().findFileByUrl(url);
       if (file != null) {
-        myStatus.put(file, status);
+        myStatus.put(file, StringUtil.isNotEmpty(status) ? status : ENABLED);
       }
     }
   }
index e9692292588f3b71d02b1b7e7adde9af907b1bce..692aab0efc4c374b6d9e995963e8311a8905dd61 100644 (file)
@@ -74,7 +74,7 @@ import java.util.regex.Pattern;
  */
 public class GroovyDslFileIndex extends ScalarIndexExtension<String> {
   private static final Key<Pair<GroovyDslExecutor, Long>> CACHED_EXECUTOR = Key.create("CachedGdslExecutor");
-  private static final Logger LOG = Logger.getInstance("#org.jetbrains.plugins.groovy.dsl.GroovyDslFileIndex");
+  private static final Logger LOG = Logger.getInstance(GroovyDslFileIndex.class);
 
   @NonNls public static final ID<String, Void> NAME = ID.create("GroovyDslFileIndex");
   @NonNls private static final String OUR_KEY = "ourKey";
@@ -412,7 +412,10 @@ public class GroovyDslFileIndex extends ScalarIndexExtension<String> {
           if (!vfile.isValid()) {
             continue;
           }
-          if (!fileIndex.isInLibraryClasses(vfile) && !fileIndex.isInLibrarySource(vfile)) {
+          if (fileIndex.isInLibrarySource(vfile)) {
+            continue;
+          } 
+          if (!fileIndex.isInLibraryClasses(vfile)) {
             if (!fileIndex.isInSourceContent(vfile) || !isActivated(vfile)) {
               continue;
             }