remove some duplication
authorpeter <peter@jetbrains.com>
Mon, 30 Jan 2012 13:47:12 +0000 (14:47 +0100)
committerpeter <peter@jetbrains.com>
Mon, 30 Jan 2012 16:07:30 +0000 (17:07 +0100)
jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java
jps/jps-builders/src/org/jetbrains/jps/incremental/groovy/GroovycOSProcessHandler.java
jps/jps-builders/src/org/jetbrains/jps/incremental/messages/CompilerMessage.java
plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerBase.java

index 0d3d9a82aac5631987fa8abc4110f98dbba33abe..8422fd25fc678134dd3a6af4e918cb80691b8384 100644 (file)
@@ -14,7 +14,6 @@ import org.jetbrains.jps.Module;
 import org.jetbrains.jps.ModuleChunk;
 import org.jetbrains.jps.incremental.*;
 import org.jetbrains.jps.incremental.java.JavaBuilder;
-import org.jetbrains.jps.incremental.messages.BuildMessage;
 import org.jetbrains.jps.incremental.messages.CompilerMessage;
 import org.jetbrains.jps.incremental.messages.FileGeneratedEvent;
 import org.jetbrains.jps.incremental.messages.ProgressMessage;
@@ -128,22 +127,10 @@ public class GroovyBuilder extends ModuleLevelBuilder {
 
         successfullyCompiled = handler.getSuccessfullyCompiled();
 
-        final List<CompilerMessage> messages = handler.getCompilerMessages();
-        for (CompilerMessage message : messages) {
+        for (CompilerMessage message : handler.getCompilerMessages()) {
           context.processMessage(message);
         }
 
-        boolean hasMessages = !messages.isEmpty();
-
-        final StringBuffer unparsedBuffer = handler.getStdErr();
-        if (unparsedBuffer.length() != 0) {
-          context.processMessage(new CompilerMessage(BUILDER_NAME, BuildMessage.Kind.INFO, unparsedBuffer.toString()));
-        }
-
-        final int exitValue = handler.getProcess().exitValue();
-        if (!hasMessages && exitValue != 0) {
-          context.processMessage(new CompilerMessage(BUILDER_NAME, BuildMessage.Kind.ERROR, "Internal groovyc error: code " + exitValue));
-        }
       }
       finally {
         if (!myForStubs) {
index 87a1ec8c22db8107368f23a18e409ac40e0c8999..aa6b4bcc2c114ac3c553c03af8610e8374356da9 100644 (file)
@@ -176,7 +176,18 @@ public class GroovycOSProcessHandler extends BaseOSProcessHandler {
   }
 
   public List<CompilerMessage> getCompilerMessages() {
-    return compilerMessages;
+    ArrayList<CompilerMessage> messages = new ArrayList<CompilerMessage>(compilerMessages);
+    final StringBuffer unparsedBuffer = getStdErr();
+    if (unparsedBuffer.length() != 0) {
+      messages.add(new CompilerMessage("Groovyc", BuildMessage.Kind.INFO, unparsedBuffer.toString()));
+    }
+
+    final int exitValue = getProcess().exitValue();
+    if (messages.isEmpty() && exitValue != 0) {
+      messages.add(new CompilerMessage("Groovyc", BuildMessage.Kind.ERROR, "Internal groovyc error: code " + exitValue));
+    }
+
+    return messages;
   }
 
   public StringBuffer getStdErr() {
index d33d8e63f52bd8cc18f9af2e5e8d5f473502af02..3fe04627663897ea1f66538e2b4cab98c5cb770a 100644 (file)
@@ -53,6 +53,7 @@ public class CompilerMessage extends BuildMessage {
     return myCompilerName;
   }
 
+  @Nullable
   public String getSourcePath() {
     return mySourcePath;
   }
index 8168474896d1b2f84246854e3df5a32a2f1468ee..73305880438ed4dcc294abbc5abd4e1fdd5daaf7 100644 (file)
@@ -219,29 +219,14 @@ public abstract class GroovyCompilerBase implements TranslatingCompiler {
         toRecompile.add(vFile);
       }
 
-      final List<CompilerMessage> messages = processHandler.getCompilerMessages();
-      for (CompilerMessage compilerMessage : messages) {
-        final CompilerMessageCategory category = getMessageCategory(compilerMessage);
-
+      for (CompilerMessage compilerMessage : processHandler.getCompilerMessages()) {
         final String url = compilerMessage.getSourcePath();
-
-        compileContext.addMessage(category, compilerMessage.getMessageText(), VfsUtil.pathToUrl(FileUtil.toSystemIndependentName(url)),
+        compileContext.addMessage(getMessageCategory(compilerMessage), compilerMessage.getMessageText(),
+                                  url == null ? null : VfsUtil.pathToUrl(FileUtil.toSystemIndependentName(url)),
                                   (int)compilerMessage.getLine(),
                                   (int)compilerMessage.getColumn());
       }
 
-      boolean hasMessages = !messages.isEmpty();
-
-      StringBuffer unparsedBuffer = processHandler.getStdErr();
-      if (unparsedBuffer.length() != 0) {
-        compileContext.addMessage(CompilerMessageCategory.INFORMATION, unparsedBuffer.toString(), null, -1, -1);
-      }
-
-      final int exitCode = processHandler.getProcess().exitValue();
-      if (!hasMessages && exitCode != 0) {
-        compileContext.addMessage(CompilerMessageCategory.ERROR, "Internal groovyc error: code " + exitCode, null, -1, -1);
-      }
-
       List<GroovycOSProcessHandler.OutputItem> outputItems = processHandler.getSuccessfullyCompiled();
       ArrayList<OutputItem> items = new ArrayList<OutputItem>();
       if (forStubs) {