From bf41e38c852304d1a7308a2b8ea8513503d867d1 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 4 Nov 2011 12:20:14 +0100 Subject: [PATCH] exception handling --- .../src/org/jetbrains/jps/server/ServerState.java | 9 +++++++-- .../ether/dependencyView/DependencyContext.java | 9 ++------- .../jetbrains/ether/dependencyView/Mappings.java | 5 +++-- jps/src/org/jetbrains/ether/ProjectWrapper.java | 14 ++++++++++++-- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java b/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java index 0683a4ea54a1..86c9e7be641d 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java +++ b/jps/jps-builders/src/org/jetbrains/jps/server/ServerState.java @@ -1,5 +1,6 @@ package org.jetbrains.jps.server; +import com.intellij.openapi.util.io.FileUtil; import org.codehaus.groovy.runtime.MethodClosure; import org.jetbrains.ether.dependencyView.Mappings; import org.jetbrains.jps.JavaSdk; @@ -7,6 +8,7 @@ import org.jetbrains.jps.Library; import org.jetbrains.jps.Module; import org.jetbrains.jps.Project; import org.jetbrains.jps.api.BuildParameters; +import org.jetbrains.jps.api.BuildType; import org.jetbrains.jps.api.GlobalLibrary; import org.jetbrains.jps.api.SdkLibrary; import org.jetbrains.jps.idea.IdeaProjectLoader; @@ -52,6 +54,7 @@ class ServerState { public void startBuild(String projectPath, Set modules, final BuildParameters params, final MessageHandler msgHandler) throws Throwable{ final String projectName = getProjectName(projectPath); + BuildType buildType = params.buildType; Project project; Mappings mappings; @@ -80,8 +83,10 @@ class ServerState { mappings = new Mappings(mappingsRoot); } catch (IOException e) { - msgHandler.processMessage(new CompilerMessage(IncProjectBuilder.JPS_SERVER_NAME, BuildMessage.Kind.WARNING, e.getMessage())); + FileUtil.delete(mappingsRoot); + msgHandler.processMessage(new CompilerMessage(IncProjectBuilder.JPS_SERVER_NAME, BuildMessage.Kind.WARNING, "Problems reading dependency information, rebuild required: " + e.getMessage())); mappings = new Mappings(mappingsRoot); + buildType = BuildType.REBUILD; } myProjectMappings.put(projectPath, mappings); @@ -106,7 +111,7 @@ class ServerState { if (msgHandler != null) { builder.addMessageHandler(msgHandler); } - switch (params.buildType) { + switch (buildType) { case REBUILD: builder.build(compileScope, false); break; diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/DependencyContext.java b/jps/model/src/org/jetbrains/ether/dependencyView/DependencyContext.java index 531bd37a6869..abc11459c04f 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/DependencyContext.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/DependencyContext.java @@ -51,15 +51,10 @@ class DependencyContext { return file; } - DependencyContext(final File rootDir) { + DependencyContext(final File rootDir) throws IOException { final File file = getTableFile(rootDir, stringTableName); - try { - enumerator = new PersistentStringEnumerator(file, true); - } - catch (IOException e) { - throw new RuntimeException(e); - } + enumerator = new PersistentStringEnumerator(file, true); } static KeyDescriptor descriptorS = new KeyDescriptor() { diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java index dccf2e0ba157..12362d225567 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java @@ -10,6 +10,7 @@ import org.objectweb.asm.Opcodes; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; +import java.io.IOException; import java.lang.annotation.ElementType; import java.lang.annotation.RetentionPolicy; import java.util.*; @@ -80,7 +81,7 @@ public class Mappings implements RW.Writable { classToForm = new HashMap(); } - public Mappings(final File rootDir) { + public Mappings(final File rootDir) throws IOException { context = new DependencyContext(rootDir); classToSubclasses = new PersistentMaplet(DependencyContext.getTableFile(rootDir, @@ -96,7 +97,7 @@ public class Mappings implements RW.Writable { classToForm = new HashMap(); } - public Mappings(final File rootDir, final BufferedReader r) { + public Mappings(final File rootDir, final BufferedReader r) throws IOException { context = new DependencyContext(rootDir); classToSubclasses = new PersistentMaplet(DependencyContext.getTableFile(rootDir, classToSubclassesName), DependencyContext.descriptorS, DependencyContext.descriptorS, stringSetConstructor); diff --git a/jps/src/org/jetbrains/ether/ProjectWrapper.java b/jps/src/org/jetbrains/ether/ProjectWrapper.java index 43b8e7fb9c57..0e4a92679355 100644 --- a/jps/src/org/jetbrains/ether/ProjectWrapper.java +++ b/jps/src/org/jetbrains/ether/ProjectWrapper.java @@ -852,7 +852,12 @@ public class ProjectWrapper { myProjectSnapshot = myHomeDir + File.separator + myJPSDir + File.separator + myRoot.replace(File.separatorChar, myFileSeparatorReplacement); - dependencyMapping = new Mappings(getMapDir()); + try { + dependencyMapping = new Mappings(getMapDir()); + } + catch (IOException e) { + throw new RuntimeException(e); + } backendCallback = dependencyMapping.getCallback(); for (Module m : myProject.getModules().values()) { @@ -908,7 +913,12 @@ public class ProjectWrapper { RW.readMany(r, RW.myStringReader, affectedFiles); - dependencyMapping = new Mappings(getMapDir(), r); + try { + dependencyMapping = new Mappings(getMapDir(), r); + } + catch (IOException e) { + throw new RuntimeException(e); + } backendCallback = dependencyMapping.getCallback(); }