diff --git a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java index ddfdbb7f442f..73e353fa47ee 100644 --- a/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java +++ b/plugins/eclipse/testSources/org/jetbrains/idea/eclipse/EclipseClasspathTest.java @@ -20,24 +20,24 @@ */ package org.jetbrains.idea.eclipse; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PluginPathManager; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.module.StdModuleTypes; -import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.ModuleRootModel; +import com.intellij.openapi.roots.ModuleRootModificationUtil; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.testFramework.IdeaTestCase; -import junit.framework.Assert; +import com.intellij.util.Consumer; +import com.intellij.util.containers.ContainerUtil; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; @@ -48,8 +48,7 @@ import org.jetbrains.idea.eclipse.conversion.EclipseClasspathWriter; import java.io.File; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashSet; +import java.util.Set; public class EclipseClasspathTest extends IdeaTestCase { @Override @@ -73,31 +72,35 @@ public class EclipseClasspathTest extends IdeaTestCase { checkModule(path, setUpModule(path, project)); } - static Module setUpModule(final String path, @NotNull final Project project) - throws IOException, JDOMException, ConversionException, ConfigurationException { + static Module setUpModule(final String path, @NotNull final Project project) throws Exception { final File classpathFile = new File(path, EclipseXml.DOT_CLASSPATH_EXT); String fileText = FileUtil.loadFile(classpathFile).replaceAll("\\$ROOT\\$", project.getBaseDir().getPath()); if (!SystemInfo.isWindows) { fileText = fileText.replaceAll(EclipseXml.FILE_PROTOCOL + "/", EclipseXml.FILE_PROTOCOL); } final Element classpathElement = JDOMUtil.loadDocument(fileText).getRootElement(); + final Module module = WriteCommandAction.runWriteCommandAction(null, new Computable() { @Override public Module compute() { - return ModuleManager.getInstance(project) - .newModule(path + "/" + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT, StdModuleTypes.JAVA.getId()); + String imlPath = path + "/" + EclipseProjectFinder.findProjectName(path) + IdeaXml.IML_EXT; + return ModuleManager.getInstance(project).newModule(imlPath, StdModuleTypes.JAVA.getId()); } }); - final ModifiableRootModel rootModel = ModuleRootManager.getInstance(module).getModifiableModel(); - final EclipseClasspathReader classpathReader = new EclipseClasspathReader(path, project, null); - classpathReader.init(rootModel); - classpathReader - .readClasspath(rootModel, new ArrayList(), new ArrayList(), new HashSet(), new HashSet(), null, - classpathElement); - new EclipseClasspathStorageProvider().assertCompatible(rootModel); - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - rootModel.commit(); + + ModuleRootModificationUtil.updateModel(module, new Consumer() { + @Override + public void consume(ModifiableRootModel model) { + try { + final Set sink = ContainerUtil.newHashSet(); + final EclipseClasspathReader classpathReader = new EclipseClasspathReader(path, project, null); + classpathReader.init(model); + classpathReader.readClasspath(model, sink, sink, sink, sink, null, classpathElement); + new EclipseClasspathStorageProvider().assertCompatible(model); + } + catch (Exception e) { + throw new RuntimeException(e); + } } }); return module; @@ -116,8 +119,8 @@ public class EclipseClasspathTest extends IdeaTestCase { new EclipseClasspathWriter(model).writeClasspath(resultClasspathElement, classpathElement1); String resulted = new String(JDOMUtil.printDocument(new Document(resultClasspathElement), "\n")); - Assert.assertTrue(resulted.replaceAll(StringUtil.escapeToRegexp(module.getProject().getBaseDir().getPath()), "\\$ROOT\\$"), - JDOMUtil.areElementsEqual(classpathElement1, resultClasspathElement)); + assertTrue(resulted.replaceAll(StringUtil.escapeToRegexp(module.getProject().getBaseDir().getPath()), "\\$ROOT\\$"), + JDOMUtil.areElementsEqual(classpathElement1, resultClasspathElement)); }