userdata is better than marker file
authorpeter <peter@jetbrains.com>
Tue, 31 Jan 2012 19:24:47 +0000 (20:24 +0100)
committerpeter <peter@jetbrains.com>
Tue, 31 Jan 2012 19:44:46 +0000 (20:44 +0100)
jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java
platform/util/src/com/intellij/openapi/util/Key.java

index 0364cd2f4dd3bef74c505800f96493ecaa265b81..2a156ddbb2535f9db54451087615d865dc121066 100644 (file)
@@ -2,6 +2,7 @@ package org.jetbrains.jps.incremental.groovy;
 
 
 import com.intellij.openapi.util.Comparing;
+import com.intellij.openapi.util.Key;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.util.ArrayUtil;
 import com.intellij.util.Consumer;
@@ -32,6 +33,7 @@ import java.util.*;
  */
 public class GroovyBuilder extends ModuleLevelBuilder {
   public static final String BUILDER_NAME = "groovy";
+  private static final Key<Boolean> CHUNK_REBUILD_ORDERED = Key.<Boolean>create("CHUNK_REBUILD_ORDERED");
   private final boolean myForStubs;
   private final String myBuilderName;
 
@@ -92,11 +94,10 @@ public class GroovyBuilder extends ModuleLevelBuilder {
         });
 
         if (myForStubs && handler.shouldRetry()) {
-          File marker = new File(moduleOutput, "groovy_stubs_retry");
-          if (marker.exists()) {
-            FileUtil.delete(marker);
+          if (CHUNK_REBUILD_ORDERED.get(context) != null) {
+            CHUNK_REBUILD_ORDERED.set(context, null);
           } else {
-            FileUtil.createIfDoesntExist(marker);
+            CHUNK_REBUILD_ORDERED.set(context, Boolean.TRUE);
             exitCode = ExitCode.CHUNK_REBUILD_REQUIRED;
             return exitCode;
           }
index 967fa81553e640b6b1c2921e9a841f6f53f114f9..d33c3f6fcf0b3730fb4b9986fa28cf9a93c51ab6 100644 (file)
@@ -82,7 +82,7 @@ public class Key<T> {
     return get(holder) != null;
   }
 
-  public void set(@Nullable UserDataHolder holder, T value) {
+  public void set(@Nullable UserDataHolder holder, @Nullable T value) {
     if (holder != null) {
       holder.putUserData(this, value);
     }