From 3855911ae2084a29825d888e08b1e6ca6858b94e Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Wed, 1 Feb 2012 15:37:02 +0400 Subject: [PATCH 01/43] Optimization of calculation MavenProjectChanges. --- .../idea/maven/project/MavenProject.java | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java index cb5a81b73cdd..93afbfdd96d9 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProject.java @@ -896,25 +896,23 @@ public class MavenProject { MavenProjectChanges result = new MavenProjectChanges(); - result.packaging |= !Comparing.equal(myPackaging, other.myPackaging); + result.packaging = !Comparing.equal(myPackaging, other.myPackaging); - result.output |= !Comparing.equal(myFinalName, other.myFinalName); - result.output |= !Comparing.equal(myBuildDirectory, other.myBuildDirectory); - result.output |= !Comparing.equal(myOutputDirectory, other.myOutputDirectory); - result.output |= !Comparing.equal(myTestOutputDirectory, other.myTestOutputDirectory); + result.output = !Comparing.equal(myFinalName, other.myFinalName) + || !Comparing.equal(myBuildDirectory, other.myBuildDirectory) + || !Comparing.equal(myOutputDirectory, other.myOutputDirectory) + || !Comparing.equal(myTestOutputDirectory, other.myTestOutputDirectory); - result.sources |= !Comparing.equal(mySources, other.mySources); - result.sources |= !Comparing.equal(myTestSources, other.myTestSources); - result.sources |= !Comparing.equal(myResources, other.myResources); - result.sources |= !Comparing.equal(myTestResources, other.myTestResources); + result.sources = !Comparing.equal(mySources, other.mySources) + || !Comparing.equal(myTestSources, other.myTestSources) + || !Comparing.equal(myResources, other.myResources) + || !Comparing.equal(myTestResources, other.myTestResources); boolean repositoryChanged = !Comparing.equal(myLocalRepository, other.myLocalRepository); - result.dependencies |= repositoryChanged; - result.dependencies |= !Comparing.equal(myDependencies, other.myDependencies); + result.dependencies = repositoryChanged || !Comparing.equal(myDependencies, other.myDependencies); - result.plugins |= repositoryChanged; - result.plugins |= !Comparing.equal(myPlugins, other.myPlugins); + result.plugins = repositoryChanged || !Comparing.equal(myPlugins, other.myPlugins); return result; } From 4dba29422e9899775d636ee85bf3f8497e93759e Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Wed, 1 Feb 2012 15:40:27 +0400 Subject: [PATCH 02/43] Minor code change. --- .../idea/maven/dom/references/MavenPropertyPsiReference.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReference.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReference.java index dbdf23ca459f..1dbbd29ab12b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReference.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenPropertyPsiReference.java @@ -31,6 +31,7 @@ import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.IncorrectOperationException; import com.intellij.util.PlatformIcons; +import com.intellij.util.containers.CollectionFactory; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.xml.DomElement; import com.intellij.util.xml.DomUtil; @@ -51,13 +52,12 @@ import org.jetbrains.idea.maven.vfs.MavenPropertiesVirtualFileSystem; import javax.swing.*; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Set; public class MavenPropertyPsiReference extends MavenPsiReference { private static final Set BASEDIR_PROPS = - new THashSet(Arrays.asList("basedir", "project.basedir", "pom.basedir", "baseUri", "project.baseUri", "pom.baseUri")); + CollectionFactory.newTroveSet("basedir", "project.basedir", "pom.basedir", "baseUri", "project.baseUri", "pom.baseUri"); private static final String TIMESTAMP_PROP = "maven.build.timestamp"; From aac78256f6c6143b08c680871fbfa27f8f244f81 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 2 Feb 2012 15:22:09 +0400 Subject: [PATCH 03/43] IDEA-80626 (error on maven-resources-plugin in pom.xml) --- .../MavenPluginConfigurationDomExtender.java | 82 ++++--- .../idea/maven/dom/plugin/MavenDomMojo.java | 3 + .../2.5/maven-resources-plugin-2.5.jar | 0 .../2.5/maven-resources-plugin-2.5.jar.sha1 | 1 + .../2.5/maven-resources-plugin-2.5.pom | 203 ++++++++++++++++++ .../2.5/maven-resources-plugin-2.5.pom.sha1 | 1 + ...nExtensionCompletionAndResolutionTest.java | 3 +- ...avenPluginCompletionAndResolutionTest.java | 58 ++++- 8 files changed, 314 insertions(+), 37 deletions(-) create mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar create mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 create mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom create mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenPluginConfigurationDomExtender.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenPluginConfigurationDomExtender.java index 2414a8852270..85689bea5aa5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenPluginConfigurationDomExtender.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenPluginConfigurationDomExtender.java @@ -89,12 +89,13 @@ public class MavenPluginConfigurationDomExtender extends DomExtender d2.getRequiringLevel(); + } + private static void fillParameterData(String name, ParameterData data, MavenDomMojo mojo) { XmlTag config = mojo.getConfiguration().getXmlTag(); if (config == null) return; @@ -153,15 +164,27 @@ public class MavenPluginConfigurationDomExtender extends DomExtender annotationType() { + return Required.class; + } + }); } } @@ -181,43 +204,32 @@ public class MavenPluginConfigurationDomExtender extends DomExtender collectionClasses = Arrays.asList("java.util.List", - "java.util.Set", - "java.util.Collection"); - return collectionClasses.contains(type); + return type.equals("java.util.List") || type.equals("java.util.Set") || type.equals("java.util.Collection"); } public static class ParameterData { - public MavenDomParameter parameter; + public final MavenDomParameter parameter; public @Nullable String defaultValue; public @Nullable String expression; private ParameterData(MavenDomParameter parameter) { this.parameter = parameter; } - } - - private static class MyRequired implements Required { - private final String myRequired; - - public MyRequired(String required) { - myRequired = required; + + @NotNull + public MavenDomMojo getMojo() { + return (MavenDomMojo)parameter.getParent().getParent(); } - public boolean value() { - return Boolean.valueOf(myRequired); - } + public int getRequiringLevel() { + if (!Boolean.parseBoolean(parameter.getRequired().getStringValue())) return 0; - public boolean nonEmpty() { - return false; - } + if (!StringUtil.isEmptyOrSpaces(defaultValue) || !StringUtil.isEmptyOrSpaces(expression)) { + return 1; + } - public boolean identifier() { - return false; - } - - public Class annotationType() { - return Required.class; + return 2; } } + } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/plugin/MavenDomMojo.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/plugin/MavenDomMojo.java index 93eef0da0547..6df04f0965d1 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/plugin/MavenDomMojo.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/plugin/MavenDomMojo.java @@ -23,6 +23,9 @@ public interface MavenDomMojo extends MavenDomElement { @NotNull GenericDomValue getGoal(); + @NotNull + GenericDomValue getPhase(); + @NotNull MavenDomParameters getParameters(); diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 new file mode 100644 index 000000000000..66f7045df9cb --- /dev/null +++ b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 @@ -0,0 +1 @@ +4d0907396ac6a770e05c81f6e8ed6348740f86a0 diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom new file mode 100644 index 000000000000..f74aea0ce484 --- /dev/null +++ b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom @@ -0,0 +1,203 @@ + + + + + + 4.0.0 + + + maven-plugins + org.apache.maven.plugins + 19 + ../maven-plugins/pom.xml + + + maven-resources-plugin + 2.5 + maven-plugin + + Maven Resources Plugin + + The Resources Plugin handles the copying of project resources to the output + directory. There are two different kinds of resources: main resources and test resources. The + difference is that the main resources are the resources associated to the main + source code while the test resources are associated to the test source code. + Thus, this allows the separation of resources for the main source code and its + unit tests. + + 2001 + + + ${mavenVersion} + + + + scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-resources-plugin-2.5 + scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-resources-plugin-2.5 + http://svn.apache.org/viewvc/maven/plugins/tags/maven-resources-plugin-2.5 + + + JIRA + http://jira.codehaus.org/browse/MRESOURCES + + + + 1.0 + 2.0.6 + + + + + org.apache.maven + maven-plugin-api + ${mavenVersion} + + + org.apache.maven + maven-project + ${mavenVersion} + + + org.apache.maven + maven-core + ${mavenVersion} + + + org.apache.maven + maven-artifact + ${mavenVersion} + + + org.apache.maven + maven-settings + ${mavenVersion} + + + org.apache.maven + maven-model + ${mavenVersion} + + + org.apache.maven + maven-monitor + ${mavenVersion} + + + + org.codehaus.plexus + plexus-container-default + 1.0-alpha-9-stable-1 + + + + org.codehaus.plexus + plexus-utils + 2.0.5 + + + + org.apache.maven.shared + maven-filtering + ${mavenFilteringVersion} + + + + org.codehaus.plexus + plexus-interpolation + 1.13 + + + + org.apache.maven.shared + maven-plugin-testing-harness + 1.0-beta-1 + test + + + commons-io + commons-io + 1.4 + test + + + + + + run-its + + + + org.apache.maven.plugins + maven-jar-plugin + + + + test-jar + + + + + + org.codehaus.plexus + plexus-maven-plugin + + + + test-descriptor + + + + + + org.apache.maven.plugins + maven-invoker-plugin + + true + src/it + + **/pom.xml + + verify + ${project.build.directory}/local-repo + + clean + process-test-resources + + src/it/settings.xml + ${project.build.directory}/it + + fromExecProps + + + + + integration-test + + install + run + + + + + + + + + diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 new file mode 100644 index 000000000000..ed141e784c90 --- /dev/null +++ b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 @@ -0,0 +1 @@ +2d44c4a29ea56775c87002edb5aa23aab47e71ac diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java index abb177cb9160..c0d3a9cee077 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java @@ -65,7 +65,7 @@ public class MavenExtensionCompletionAndResolutionTest extends MavenDomWithIndic " " + ""); - assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-eclipse-plugin", "maven-surefire-plugin"); + assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-eclipse-plugin", "maven-surefire-plugin", "maven-resources-plugin"); } public void testArtifactWithoutGroupCompletion() throws Exception { @@ -86,6 +86,7 @@ public class MavenExtensionCompletionAndResolutionTest extends MavenDomWithIndic "maven-war-plugin", "maven-surefire-plugin", "build-helper-maven-plugin", + "maven-resources-plugin", "maven-eclipse-plugin"); } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java index eaea5c74b3c3..b98768519a1e 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java @@ -71,7 +71,7 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT " " + ""); - assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-surefire-plugin", "maven-eclipse-plugin"); + assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-surefire-plugin", "maven-eclipse-plugin", "maven-resources-plugin"); } public void testArtifactWithoutGroupCompletion() throws Exception { @@ -92,6 +92,7 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT "maven-war-plugin", "build-helper-maven-plugin", "maven-surefire-plugin", + "maven-resources-plugin", "maven-eclipse-plugin"); } @@ -902,4 +903,59 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT assertCompletionVariants(myProjectPom); } + + public void testRequiringParameter() throws Throwable { + createProjectPom("test" + + "project" + + "1" + + + "" + + " " + + " \n" + + " maven-resources-plugin\n" + + " \n" + + " <outputDirectory/>\n" + + " \n" + + " \n" + + + " \n" + + " maven-resources-plugin\n" + + "" + + " \n" + + " aaa\n" + + " \n" + + " \n" + + + " \n" + + " maven-resources-plugin\n" + + "" + + " \n" + + " \n" + + " \n" + + + " \n" + + " maven-resources-plugin\n" + + " " + + " " + + " " + + " copy-resources" + + " resources" + + " " + + " <configuration>\n" + + " \n" + + " " + + " " + + " " + + "" + + " \n" + + " \n" + + " \n" + + + + " " + + ""); + + checkHighlighting(); + } + } From 5224c54b624603192e4bb4a62b878553344e45a6 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 2 Feb 2012 15:18:32 +0400 Subject: [PATCH 04/43] faster core jar vfs --- .../openapi/vfs/impl/jar/CoreJarHandler.java | 41 ++++++++------ .../vfs/impl/jar/CoreJarVirtualFile.java | 56 +++++-------------- 2 files changed, 38 insertions(+), 59 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java index c2650490286c..741c1b9584ca 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java @@ -25,30 +25,39 @@ import java.util.Map; * @author yole */ public class CoreJarHandler extends JarHandlerBase { - private final Map myFileMap = new HashMap(); + private final CoreJarFileSystem myFileSystem; + private final VirtualFile myRoot; public CoreJarHandler(CoreJarFileSystem fileSystem, String path) { super(path); myFileSystem = fileSystem; + + Map entries = new HashMap(); + + for (EntryInfo info : getEntriesMap().values()) { + getOrCreateFile(info, entries); + } + + myRoot = getOrCreateFile(getEntryInfo(""), entries); + } + + private CoreJarVirtualFile getOrCreateFile(EntryInfo info, Map entries) { + CoreJarVirtualFile answer = entries.get(info); + if (answer == null) { + answer = new CoreJarVirtualFile(this, info, getOrCreateFile(info.parent, entries)); + entries.put(info, answer); + } + + return answer; } @Nullable public VirtualFile findFileByPath(String pathInJar) { - if (getZip() == null) { - return null; - } - VirtualFile file = myFileMap.get(pathInJar); - if (file == null) { - if (pathInJar.length() > 0) { - EntryInfo entryInfo = getEntryInfo(pathInJar); - if (entryInfo == null) { - return null; - } - } - file = new CoreJarVirtualFile(myFileSystem, this, pathInJar); - myFileMap.put(pathInJar, file); - } - return file; + return myRoot != null ? myRoot.findFileByRelativePath(pathInJar) : null; + } + + public CoreJarFileSystem getFileSystem() { + return myFileSystem; } } diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java index c2969d9edc09..e5ea5d2d4e68 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java @@ -23,44 +23,40 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; -import java.util.List; /** * @author yole */ public class CoreJarVirtualFile extends VirtualFile { - private final CoreJarFileSystem myFileSystem; private final CoreJarHandler myHandler; - private final String myPathInJar; private final VirtualFile myParent; - private VirtualFile[] myChildren; + private final ArrayList myChildren = new ArrayList(); + private final JarHandlerBase.EntryInfo myEntry; - public CoreJarVirtualFile(CoreJarFileSystem fileSystem, CoreJarHandler handler, String pathInJar) { - myFileSystem = fileSystem; + public CoreJarVirtualFile(CoreJarHandler handler, JarHandlerBase.EntryInfo entry, CoreJarVirtualFile parent) { myHandler = handler; - myPathInJar = pathInJar; - myParent = calcParent(); + myParent = parent; + myEntry = entry; + + parent.myChildren.add(this); } @NotNull @Override public String getName() { - final int lastSlash = myPathInJar.lastIndexOf('/'); - if (lastSlash < 0) { - return myPathInJar; - } - return myPathInJar.substring(lastSlash+1); + return myEntry.shortName; } @NotNull @Override public VirtualFileSystem getFileSystem() { - return myFileSystem; + return myHandler.getFileSystem(); } @Override public String getPath() { - return myHandler.myBasePath + "!/" + myPathInJar; + if (myParent == null) return myHandler.myBasePath + "!/"; + return myParent.getPath() + "/" + myEntry.shortName; } @Override @@ -70,7 +66,7 @@ public class CoreJarVirtualFile extends VirtualFile { @Override public boolean isDirectory() { - return myHandler.isDirectory(this); + return myEntry.isDirectory; } @Override @@ -83,35 +79,9 @@ public class CoreJarVirtualFile extends VirtualFile { return myParent; } - private VirtualFile calcParent() { - if (myPathInJar.length() == 0) { - return null; - } - int lastSlash = myPathInJar.lastIndexOf('/'); - if (lastSlash < 0) { - return myHandler.findFileByPath(""); - } - return myHandler.findFileByPath(myPathInJar.substring(0, lastSlash)); - } - @Override public VirtualFile[] getChildren() { - VirtualFile[] answer = myChildren; - if (answer == null) { - answer = calcChildren(); - myChildren = answer; - } - return answer; - } - - private VirtualFile[] calcChildren() { - List result = new ArrayList(); - final String[] children = myHandler.list(this); - for (String child : children) { - final VirtualFile childFile = myPathInJar.isEmpty() ? myHandler.findFileByPath(child) : myHandler.findFileByPath(myPathInJar + "/" + child); - result.add(childFile); - } - return result.toArray(new VirtualFile[result.size()]); + return myChildren.toArray(new VirtualFile[myChildren.size()]); } @NotNull From e35b58a06364e55ca678d0150dfa1b9a83dd182e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 2 Feb 2012 15:22:54 +0400 Subject: [PATCH 05/43] wording --- .../com/intellij/refactoring/actions/RenameFileAction.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/actions/RenameFileAction.java b/java/java-impl/src/com/intellij/refactoring/actions/RenameFileAction.java index 1e0008cb867d..1a3244595e6d 100644 --- a/java/java-impl/src/com/intellij/refactoring/actions/RenameFileAction.java +++ b/java/java-impl/src/com/intellij/refactoring/actions/RenameFileAction.java @@ -27,7 +27,7 @@ import com.intellij.refactoring.rename.PsiElementRenameHandler; * @author ven */ public class RenameFileAction extends AnAction implements DumbAware { - public static final String RENAME_FILE = "Rename File"; + public static final String RENAME_FILE = "Rename File..."; public void actionPerformed(final AnActionEvent e) { final PsiFile file = e.getData(LangDataKeys.PSI_FILE); @@ -47,7 +47,7 @@ public class RenameFileAction extends AnAction implements DumbAware { presentation.setVisible(enabled); if (enabled) { presentation.setText(RENAME_FILE); - presentation.setDescription(RENAME_FILE); + presentation.setDescription("Rename selected file"); } } } From d25595f40996c4b823736ff57c47d1261492e038 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 2 Feb 2012 15:48:23 +0400 Subject: [PATCH 06/43] NPE --- .../src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java index 741c1b9584ca..4df4ce644252 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarHandler.java @@ -45,7 +45,8 @@ public class CoreJarHandler extends JarHandlerBase { private CoreJarVirtualFile getOrCreateFile(EntryInfo info, Map entries) { CoreJarVirtualFile answer = entries.get(info); if (answer == null) { - answer = new CoreJarVirtualFile(this, info, getOrCreateFile(info.parent, entries)); + EntryInfo parentEntry = info.parent; + answer = new CoreJarVirtualFile(this, info, parentEntry != null ? getOrCreateFile(parentEntry, entries) : null); entries.put(info, answer); } From 254e5eb6ee4e89096f8872e2c1f2399834152209 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 31 Jan 2012 17:34:51 +0400 Subject: [PATCH 07/43] EA-32882 fix already disposed --- .../android/compiler/AndroidCompileUtil.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java index 858500668f22..726a42a95bc2 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidCompileUtil.java @@ -35,6 +35,7 @@ import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; import com.intellij.openapi.ui.Messages; +import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; @@ -351,14 +352,24 @@ public class AndroidCompileUtil { } public static void generate(final Module module, final GeneratingCompiler compiler) { - module.getProject().getComponent(AndroidProjectComponent.class).runIfNotInCompilation(new Runnable() { + final Project project = module.getProject(); + final AndroidProjectComponent component = ApplicationManager.getApplication().runReadAction(new Computable() { + @Nullable + @Override + public AndroidProjectComponent compute() { + return !project.isDisposed() ? project.getComponent(AndroidProjectComponent.class) : null; + } + }); + if (component == null) { + return; + } + component.runIfNotInCompilation(new Runnable() { @Override public void run() { assert !ApplicationManager.getApplication().isDispatchThread(); final CompileContext[] contextWrapper = new CompileContext[1]; ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { - Project project = module.getProject(); if (project.isDisposed()) return; CompilerTask task = new CompilerTask(project, true, "Android auto-generation", true); CompileScope scope = new ModuleCompileScope(module, false); From 0781701fdcedab28797432234c4772fe66104d9d Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 31 Jan 2012 17:54:20 +0400 Subject: [PATCH 08/43] EA_32364 fix AIOOBE --- .../jetbrains/android/util/AndroidUtils.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java b/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java index 12615f7ae66e..9bc4c6a0675a 100644 --- a/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java +++ b/plugins/android/src/org/jetbrains/android/util/AndroidUtils.java @@ -455,12 +455,15 @@ public class AndroidUtils { LOG.info(commandLine.getCommandLineString()); OSProcessHandler handler = new OSProcessHandler(commandLine.createProcess(), ""); + final StringBuffer buffer = new StringBuffer(); + final ProcessAdapter listener = new ProcessAdapter() { + public void onTextAvailable(final ProcessEvent event, final Key outputType) { + buffer.append(event.getText()); + } + }; + if (timeout == null || timeout > 0) { - handler.addProcessListener(new ProcessAdapter() { - public void onTextAvailable(final ProcessEvent event, final Key outputType) { - messageBuilder.append(event.getText()); - } - }); + handler.addProcessListener(listener); } handler.startNotify(); @@ -483,7 +486,9 @@ public class AndroidUtils { } if (timeout == null || timeout > 0) { - String message = messageBuilder.toString(); + handler.removeProcessListener(listener); + final String message = buffer.toString(); + messageBuilder.append(message); LOG.info(message); } From 529656f7eefb3125541199ec277f72d2bfbeff6f Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 31 Jan 2012 18:36:43 +0400 Subject: [PATCH 09/43] fix condition for local attributes map invalidation --- .../facet/AndroidResourceFilesListener.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidResourceFilesListener.java b/plugins/android/src/org/jetbrains/android/facet/AndroidResourceFilesListener.java index 27d7809494f8..e422429d59a3 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidResourceFilesListener.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidResourceFilesListener.java @@ -16,6 +16,7 @@ package org.jetbrains.android.facet; +import com.android.resources.ResourceFolderType; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.compiler.GeneratingCompiler; import com.intellij.openapi.module.Module; @@ -31,6 +32,7 @@ import org.jetbrains.android.compiler.*; import org.jetbrains.android.dom.manifest.Manifest; import org.jetbrains.android.fileTypes.AndroidIdlFileType; import org.jetbrains.android.fileTypes.AndroidRenderscriptFileType; +import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.android.util.AndroidUtils; import org.jetbrains.android.util.ResourceEntry; import org.jetbrains.annotations.NotNull; @@ -147,7 +149,7 @@ class AndroidResourceFilesListener extends VirtualFileAdapter { final GeneratingCompiler compilerToRun = ApplicationManager.getApplication().runReadAction(new Computable() { @Nullable public GeneratingCompiler compute() { - return computeCompilerToRun(); + return computeCompilerToRunAndInvalidateLocalAttributesMap(); } }); @@ -175,7 +177,7 @@ class AndroidResourceFilesListener extends VirtualFileAdapter { } @Nullable - private GeneratingCompiler computeCompilerToRun() { + private GeneratingCompiler computeCompilerToRunAndInvalidateLocalAttributesMap() { if (myFacet.isDisposed()) { return null; } @@ -197,10 +199,18 @@ class AndroidResourceFilesListener extends VirtualFileAdapter { return null; } - parent = parent.getParent(); + final VirtualFile gp = parent.getParent(); + + final VirtualFile resourceDir = AndroidRootUtil.getResourceDir(module); + + if (gp == resourceDir && + ResourceFolderType.VALUES.getName().equals(AndroidResourceUtil.getResourceTypeByDirName(parent.getName()))) { + myFacet.getLocalResourceManager().invalidateAttributeDefinitions(); + } + if (AndroidAptCompiler.isToCompileModule(module, myFacet.getConfiguration()) && - (myFacet.getConfiguration().REGENERATE_R_JAVA && parent == AndroidRootUtil.getResourceDir(module) || - AndroidRootUtil.getManifestFile(module) == file)) { + (myFacet.getConfiguration().REGENERATE_R_JAVA && (gp == resourceDir || + AndroidRootUtil.getManifestFile(module) == file))) { final Manifest manifest = myFacet.getManifest(); final String aPackage = manifest != null ? manifest.getPackage().getValue() : null; @@ -209,8 +219,6 @@ class AndroidResourceFilesListener extends VirtualFileAdapter { AndroidCompileUtil.removeDuplicatingClasses(myModule, myCachedPackage, AndroidUtils.R_CLASS_NAME, null, aptGenDirPath); } myCachedPackage = aPackage; - myFacet.getLocalResourceManager().invalidateAttributeDefinitions(); - return new AndroidAptCompiler(); } From 88c3faf7298d67addf67a60eaf98d39ca4c95f6d Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 31 Jan 2012 18:40:45 +0400 Subject: [PATCH 10/43] clean up --- .../android/dom/converters/ResourceReferenceConverter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java b/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java index 28d55346b78c..cbb6dacf8c61 100644 --- a/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java +++ b/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java @@ -21,6 +21,7 @@ import com.intellij.openapi.command.undo.UndoUtil; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; @@ -122,7 +123,7 @@ public class ResourceReferenceConverter extends ResolvingConverter Date: Tue, 31 Jan 2012 19:30:32 +0400 Subject: [PATCH 11/43] IDEA-64487 do not suggest resource types, which there are no resources in project --- .../ResourceReferenceConverter.java | 30 ++++++++++-- .../LocalResourceManager.java | 47 +++++++++++++++++-- 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java b/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java index cbb6dacf8c61..4e2d2eee87a4 100644 --- a/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java +++ b/plugins/android/src/org/jetbrains/android/dom/converters/ResourceReferenceConverter.java @@ -22,6 +22,7 @@ import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; @@ -31,8 +32,8 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.util.ArrayUtil; import com.intellij.util.PsiNavigateUtil; import com.intellij.util.xml.*; -import org.jetbrains.android.dom.ResourceType; import org.jetbrains.android.dom.AdditionalConverter; +import org.jetbrains.android.dom.ResourceType; import org.jetbrains.android.dom.resources.Item; import org.jetbrains.android.dom.resources.ResourceElement; import org.jetbrains.android.dom.resources.ResourceValue; @@ -111,7 +112,8 @@ public class ResourceReferenceConverter extends ResolvingConverter recommendedTypes = getResourceTypes(context); + + final Set recommendedTypes = getResourceTypes(context); // hack to check if it is a real id attribute if (recommendedTypes.contains("id") && recommendedTypes.size() == 1) { @@ -138,12 +140,17 @@ public class ResourceReferenceConverter extends ResolvingConverter filteringSet = SYSTEM_RESOURCE_PACKAGE.equals(resourcePackage) + ? null + : getResourceTypesInCurrentModule(facet); + for (String type : ResourceManager.REFERABLE_RESOURCE_TYPES) { String typePrefix = getTypePrefix(resourcePackage, type); if (value.startsWith(typePrefix)) { addResourceReferenceValues(facet, type, resourcePackage, result, true); } - else if (recommendedTypes.contains(type)) { + else if (recommendedTypes.contains(type) && + (filteringSet == null || filteringSet.contains(type))) { result.add(ResourceValue.literal(typePrefix)); } } @@ -158,6 +165,23 @@ public class ResourceReferenceConverter extends ResolvingConverter getResourceTypesInCurrentModule(@NotNull AndroidFacet facet) { + final Set result = new HashSet(); + final LocalResourceManager manager = facet.getLocalResourceManager(); + + for (VirtualFile resSubdir : manager.getResourceSubdirs(null)) { + final String resType = AndroidResourceUtil.getResourceTypeByDirName(resSubdir.getName()); + + if (resType != null && com.android.resources.ResourceType.getEnum(resType) != null) { + result.add(resType); + } + } + + result.addAll(manager.getValueResourceTypes()); + return result; + } @NotNull private String getTypePrefix(String resourcePackage, String type) { diff --git a/plugins/android/src/org/jetbrains/android/resourceManagers/LocalResourceManager.java b/plugins/android/src/org/jetbrains/android/resourceManagers/LocalResourceManager.java index 5a7a1f8d265f..750a3f0c882c 100644 --- a/plugins/android/src/org/jetbrains/android/resourceManagers/LocalResourceManager.java +++ b/plugins/android/src/org/jetbrains/android/resourceManagers/LocalResourceManager.java @@ -17,6 +17,7 @@ package org.jetbrains.android.resourceManagers; import com.android.AndroidConstants; +import com.android.resources.ResourceType; import com.intellij.CommonBundle; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; @@ -27,10 +28,14 @@ import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.xml.XmlFile; import com.intellij.util.IncorrectOperationException; +import com.intellij.util.containers.HashMap; import com.intellij.util.containers.HashSet; +import com.intellij.util.indexing.FileBasedIndex; import org.jetbrains.android.AndroidFileTemplateProvider; +import org.jetbrains.android.AndroidValueResourcesIndex; import org.jetbrains.android.actions.CreateResourceFileAction; import org.jetbrains.android.dom.attrs.AttributeDefinitions; import org.jetbrains.android.dom.resources.Attr; @@ -42,13 +47,12 @@ import org.jetbrains.android.facet.AndroidRootUtil; import org.jetbrains.android.util.AndroidBundle; import org.jetbrains.android.util.AndroidResourceUtil; import org.jetbrains.android.util.AndroidUtils; +import org.jetbrains.android.util.ResourceEntry; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; import static org.jetbrains.android.util.AndroidUtils.loadDomElement; @@ -135,6 +139,43 @@ public class LocalResourceManager extends ResourceManager { return facet != null ? facet.getLocalResourceManager() : null; } + @NotNull + public Set getValueResourceTypes() { + final Map> file2Types = new HashMap>(); + final FileBasedIndex index = FileBasedIndex.getInstance(); + final GlobalSearchScope scope = GlobalSearchScope.projectScope(myModule.getProject()); + + for (String resourceType : ResourceType.getNames()) { + final ResourceEntry typeMarkerEntry = AndroidValueResourcesIndex.createTypeMarkerEntry(resourceType); + + for (Set entrySet : index.getValues(AndroidValueResourcesIndex.INDEX_ID, typeMarkerEntry, scope)) { + for (ResourceEntry entry : entrySet) { + final Collection files = index.getContainingFiles(AndroidValueResourcesIndex.INDEX_ID, entry, scope); + + for (VirtualFile file : files) { + Set resourcesInFile = file2Types.get(file); + + if (resourcesInFile == null) { + resourcesInFile = new HashSet(); + file2Types.put(file, resourcesInFile); + } + resourcesInFile.add(entry.getType()); + } + } + } + } + final Set result = new HashSet(); + + for (VirtualFile file : getAllValueResourceFiles()) { + final Set types = file2Types.get(file); + + if (types != null) { + result.addAll(types); + } + } + return result; + } + @NotNull public AttributeDefinitions getAttributeDefinitions() { if (myAttrDefs == null) { From ac23b07e8241fe46b691ea69170697e008062159 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Tue, 31 Jan 2012 19:32:42 +0400 Subject: [PATCH 12/43] update tests --- .../org/jetbrains/android/dom/AndroidLayoutDomTest.java | 5 +---- .../org/jetbrains/android/dom/AndroidManifestDomTest.java | 7 +------ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/plugins/android/testSrc/org/jetbrains/android/dom/AndroidLayoutDomTest.java b/plugins/android/testSrc/org/jetbrains/android/dom/AndroidLayoutDomTest.java index ebf4b0d9ac74..c326a2ae1dc2 100644 --- a/plugins/android/testSrc/org/jetbrains/android/dom/AndroidLayoutDomTest.java +++ b/plugins/android/testSrc/org/jetbrains/android/dom/AndroidLayoutDomTest.java @@ -9,7 +9,6 @@ import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; -import com.intellij.util.ArrayUtil; import java.io.IOException; import java.util.ArrayList; @@ -116,9 +115,7 @@ public class AndroidLayoutDomTest extends AndroidDomTest { public void testResourceCompletion() throws Throwable { doTestCompletionVariants("av3.xml", "@color/", "@android:", "@drawable/"); - List list = getAllResources(); - list.add("@android:"); - doTestCompletionVariants("av8.xml", ArrayUtil.toStringArray(list)); + doTestCompletionVariants("av8.xml", "@android:", "@anim/", "@color/", "@dimen/", "@drawable/", "@id/", "@layout/", "@string/", "@style/"); } public void testLocalResourceCompletion1() throws Throwable { diff --git a/plugins/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java b/plugins/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java index 0175d09e004d..5e06bc821029 100644 --- a/plugins/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java +++ b/plugins/android/testSrc/org/jetbrains/android/dom/AndroidManifestDomTest.java @@ -1,11 +1,8 @@ package org.jetbrains.android.dom; import com.android.sdklib.SdkConstants; -import com.intellij.util.ArrayUtil; import org.jetbrains.android.inspections.AndroidUnknownAttributeInspection; -import java.util.List; - /** * @author coyote */ @@ -73,9 +70,7 @@ public class AndroidManifestDomTest extends AndroidDomTest { } public void testResourceCompletion3() throws Throwable { - List list = getAllResources(); - list.add("@android:"); - doTestCompletionVariants("av4.xml", ArrayUtil.toStringArray(list)); + doTestCompletionVariants("av4.xml", "@android:", "@anim/", "@color/", "@dimen/", "@drawable/", "@id/", "@string/", "@style/"); } public void testTagNameCompletion1() throws Throwable { From 1e09a09e791c7e6d0e56cfcab24ea93dfb01d331 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Wed, 1 Feb 2012 17:48:04 +0400 Subject: [PATCH 13/43] do not pack class files from dependent android app modules into apk --- .../src/org/jetbrains/android/facet/AndroidRootUtil.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java b/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java index 34b5b2f15aa4..9633ed4c480a 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java @@ -256,7 +256,8 @@ public class AndroidRootUtil { } } } - else { + // do not support android-app->android-app compile dependencies + else if (facet == null) { if (!outputDirs.contains(classDir) && classDir != null && classDir.exists()) { outputDirs.add(classDir); } From e80f4109bb96c2d9fd1322c14d874c0b45ffd60d Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Wed, 1 Feb 2012 17:48:42 +0400 Subject: [PATCH 14/43] android: install compile-dependent android apps too --- .../jetbrains/android/run/AndroidRunConfigurationBase.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java index ab6a6a3ab281..9675f7469784 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java @@ -31,7 +31,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.DependencyScope; import com.intellij.openapi.roots.ModuleOrderEntry; import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.roots.OrderEntry; @@ -158,7 +157,8 @@ public abstract class AndroidRunConfigurationBase extends ModuleBasedConfigurati TARGET_SELECTION_MODE = mode.name(); } - private static boolean fillRuntimeAndTestDependencies(@NotNull Module module, @NotNull Map module2PackageName) { + private static boolean fillRuntimeAndTestDependencies(@NotNull Module module, + @NotNull Map module2PackageName) { for (OrderEntry entry : ModuleRootManager.getInstance(module).getOrderEntries()) { if (entry instanceof ModuleOrderEntry) { ModuleOrderEntry moduleOrderEntry = (ModuleOrderEntry)entry; @@ -167,8 +167,7 @@ public abstract class AndroidRunConfigurationBase extends ModuleBasedConfigurati AndroidFacet depFacet = AndroidFacet.getInstance(depModule); if (depFacet != null && !module2PackageName.containsKey(depFacet) && - !depFacet.getConfiguration().LIBRARY_PROJECT && - moduleOrderEntry.getScope() != DependencyScope.COMPILE) { + !depFacet.getConfiguration().LIBRARY_PROJECT) { String packageName = getPackageName(depFacet); if (packageName == null) { return false; From 2d59b764163f3fa880341d3028069803b8909123 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Wed, 1 Feb 2012 17:49:44 +0400 Subject: [PATCH 15/43] fix running proguard --- .../android/compiler/AndroidDexCompiler.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java index 95fe18f85242..21e042f5c5ba 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java @@ -105,11 +105,6 @@ public class AndroidDexCompiler implements ClassPostProcessingCompiler { } } } - - private static boolean shouldRunProguard(@NotNull AndroidFacet facet, @NotNull CompileContext context) { - return AndroidCompileUtil.isReleaseBuild(context) && - AndroidCompileUtil.getProguardConfigFile(facet) != null; - } private static final class PrepareAction implements Computable { private final CompileContext myContext; @@ -129,7 +124,10 @@ public class AndroidDexCompiler implements ClassPostProcessingCompiler { Collection files; - if (shouldRunProguard(facet, myContext)) { + final boolean shouldRunProguard = myContext.getCompileScope(). + getUserData(AndroidProguardCompiler.PROGUARD_CFG_PATH_KEY) != null; + + if (shouldRunProguard) { final VirtualFile obfuscatedSourcesJar = dexOutputDir.findChild(AndroidProguardCompiler.PROGUARD_OUTPUT_JAR_NAME); if (obfuscatedSourcesJar == null) { myContext.addMessage(CompilerMessageCategory.INFORMATION, "Dex won't be launched for module " + @@ -166,10 +164,10 @@ public class AndroidDexCompiler implements ClassPostProcessingCompiler { } } - VirtualFile outputDirForTests = extension.getCompilerOutputPathForTests(); + VirtualFile outputDirForTests = extension.getCompilerOutputPathForTests(); - if (outputDirForTests != null) { - addModuleOutputDir(files, outputDirForTests); + if (outputDirForTests != null) { + addModuleOutputDir(files, outputDirForTests); } } From a176ef425ad82b4e04b078a4f3bf270104c7b057 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Wed, 1 Feb 2012 19:27:44 +0400 Subject: [PATCH 16/43] VFs can be non-unique in jar fs, use paths instead --- .../android/sdk/AndroidSdkConfigurableForm.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java index 64916c814fc5..f51c00b5a798 100644 --- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java +++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkConfigurableForm.java @@ -76,10 +76,17 @@ class AndroidSdkConfigurableForm { final IAndroidTarget target = (IAndroidTarget)e.getItem(); List roots = AndroidSdkUtils.getLibraryRootsForTarget(target, mySdkLocation); - Map configuredRoots = new HashMap(); + Map configuredRoots = new HashMap(); for (OrderRootType type : OrderRootType.getAllTypes()) { - configuredRoots.put(type, sdkModificator.getRoots(type)); + final VirtualFile[] oldRoots = sdkModificator.getRoots(type); + final String[] oldRootPaths = new String[oldRoots.length]; + + for (int i = 0; i < oldRootPaths.length; i++) { + oldRootPaths[i] = oldRoots[i].getPath(); + } + + configuredRoots.put(type, oldRootPaths); } for (OrderRoot root : roots) { @@ -87,8 +94,8 @@ class AndroidSdkConfigurableForm { sdkModificator.removeRoot(root.getFile(), root.getType()); } else { - VirtualFile[] configuredRootsForType = configuredRoots.get(root.getType()); - if (ArrayUtil.find(configuredRootsForType, root.getFile()) == -1) { + String[] configuredRootsForType = configuredRoots.get(root.getType()); + if (ArrayUtil.find(configuredRootsForType, root.getFile().getPath()) == -1) { sdkModificator.addRoot(root.getFile(), root.getType()); } } From 793ad0d11a1d2f6fdd2cb10656c27ca77b347dd9 Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Thu, 2 Feb 2012 15:59:36 +0400 Subject: [PATCH 17/43] IDEA-80640 setting if include test code and resources into apk --- .../messages/AndroidBundle.properties | 3 +- .../android/compiler/AndroidDexCompiler.java | 2 + .../android/compiler/AndroidIdlCompiler.java | 2 +- .../compiler/AndroidPackagingCompiler.java | 17 ++++--- .../facet/AndroidFacetConfiguration.java | 2 + .../android/facet/AndroidFacetEditorTab.form | 20 ++++++--- .../android/facet/AndroidFacetEditorTab.java | 7 +++ .../android/facet/AndroidRootUtil.java | 10 +---- .../newProject/AndroidModuleBuilder.java | 1 + .../android/run/AndroidRunConfiguration.java | 7 ++- .../run/AndroidRunConfigurationBase.java | 2 +- .../android/run/AndroidRunningState.java | 5 +-- .../testing/AndroidTestRunConfiguration.java | 44 ++++++++++++++++++- 13 files changed, 89 insertions(+), 33 deletions(-) diff --git a/plugins/android/resources/messages/AndroidBundle.properties b/plugins/android/resources/messages/AndroidBundle.properties index 4ed608cd7172..b32689f9ade4 100644 --- a/plugins/android/resources/messages/AndroidBundle.properties +++ b/plugins/android/resources/messages/AndroidBundle.properties @@ -322,4 +322,5 @@ android.lint.inspections.set.to.wrap.content=Replace size attribute with 'wrap_c android.lint.inspections.add.permission.attribute=Add 'permission' attribute android.lint.inspections.add.input.type.attribute=Add 'inputType' attribute android.lint.inspections.remove.unnecessary.view=Remove unnecessary view -android.lint.inspections.replace.with.suggested.characters=Replace with suggested characters \ No newline at end of file +android.lint.inspections.replace.with.suggested.characters=Replace with suggested characters +android.facet.settings.pack.test.sources=Include test code and resources into APK \ No newline at end of file diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java index 21e042f5c5ba..1be64ac6c0d4 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidDexCompiler.java @@ -164,10 +164,12 @@ public class AndroidDexCompiler implements ClassPostProcessingCompiler { } } + if (facet.getConfiguration().PACK_TEST_CODE) { VirtualFile outputDirForTests = extension.getCompilerOutputPathForTests(); if (outputDirForTests != null) { addModuleOutputDir(files, outputDirForTests); + } } } diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidIdlCompiler.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidIdlCompiler.java index 594e6a40429c..dddc60b173d4 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidIdlCompiler.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidIdlCompiler.java @@ -226,7 +226,7 @@ public class AndroidIdlCompiler implements SourceGeneratingCompiler { } try { - VirtualFile[] sourceRoots = AndroidPackagingCompiler.getSourceRootsForModuleAndDependencies(idlItem.myModule); + VirtualFile[] sourceRoots = AndroidPackagingCompiler.getSourceRootsForModuleAndDependencies(idlItem.myModule, false); final String[] sourceRootPaths = AndroidCompileUtil.toOsPaths(sourceRoots); final Map> messages = AndroidIdl diff --git a/plugins/android/src/org/jetbrains/android/compiler/AndroidPackagingCompiler.java b/plugins/android/src/org/jetbrains/android/compiler/AndroidPackagingCompiler.java index 9fa3535efe81..d39188ed8012 100644 --- a/plugins/android/src/org/jetbrains/android/compiler/AndroidPackagingCompiler.java +++ b/plugins/android/src/org/jetbrains/android/compiler/AndroidPackagingCompiler.java @@ -65,11 +65,14 @@ public class AndroidPackagingCompiler implements PackagingCompiler { return VirtualFile.EMPTY_ARRAY; } - private static void fillSourceRoots(@NotNull Module module, @NotNull Set visited, @NotNull Set result) { + private static void fillSourceRoots(@NotNull Module module, + @NotNull Set visited, + @NotNull Set result, + boolean includingTests) { visited.add(module); VirtualFile resDir = AndroidRootUtil.getResourceDir(module); ModuleRootManager manager = ModuleRootManager.getInstance(module); - for (VirtualFile sourceRoot : manager.getSourceRoots()) { + for (VirtualFile sourceRoot : manager.getSourceRoots(includingTests)) { if (resDir != sourceRoot) { result.add(sourceRoot); } @@ -78,10 +81,10 @@ public class AndroidPackagingCompiler implements PackagingCompiler { if (entry instanceof ModuleOrderEntry) { ModuleOrderEntry moduleOrderEntry = (ModuleOrderEntry)entry; DependencyScope scope = moduleOrderEntry.getScope(); - if (scope == DependencyScope.COMPILE || scope == DependencyScope.TEST) { + if (scope == DependencyScope.COMPILE) { Module depModule = moduleOrderEntry.getModule(); if (depModule != null && !visited.contains(depModule)) { - fillSourceRoots(depModule, visited, result); + fillSourceRoots(depModule, visited, result, false); } } } @@ -89,9 +92,9 @@ public class AndroidPackagingCompiler implements PackagingCompiler { } @NotNull - public static VirtualFile[] getSourceRootsForModuleAndDependencies(@NotNull Module module) { + public static VirtualFile[] getSourceRootsForModuleAndDependencies(@NotNull Module module, boolean includingTests) { Set result = new HashSet(); - fillSourceRoots(module, new HashSet(), result); + fillSourceRoots(module, new HashSet(), result, includingTests); return VfsUtil.toVirtualFileArray(result); } @@ -102,7 +105,7 @@ public class AndroidPackagingCompiler implements PackagingCompiler { AndroidFacet facet = AndroidFacet.getInstance(module); if (facet != null && !facet.getConfiguration().LIBRARY_PROJECT) { VirtualFile manifestFile = AndroidRootUtil.getManifestFileForCompiler(facet); - VirtualFile[] sourceRoots = getSourceRootsForModuleAndDependencies(module); + VirtualFile[] sourceRoots = getSourceRootsForModuleAndDependencies(module, facet.getConfiguration().PACK_TEST_CODE); if (manifestFile != null) { AndroidFacetConfiguration configuration = facet.getConfiguration(); VirtualFile outputDir = AndroidDexCompiler.getOutputDirectoryForDex(module); diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetConfiguration.java b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetConfiguration.java index 1e400ddc4cba..510911d99ac0 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetConfiguration.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetConfiguration.java @@ -81,6 +81,8 @@ public class AndroidFacetConfiguration implements FacetConfiguration { public String CUSTOM_DEBUG_KEYSTORE_PATH = ""; + public boolean PACK_TEST_CODE = false; + private AndroidFacet myFacet = null; public void init(@NotNull Module module, @NotNull VirtualFile contentRoot) { diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.form b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.form index 73c9b53d0f2d..c588020758ea 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.form +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.form @@ -115,8 +115,8 @@ - - + + @@ -124,7 +124,7 @@ - + @@ -198,11 +198,11 @@ - + - + @@ -237,7 +237,7 @@ - + @@ -297,6 +297,14 @@ + + + + + + + + diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java index dbbdfa6fc0e2..658462b9787c 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacetEditorTab.java @@ -93,6 +93,7 @@ public class AndroidFacetEditorTab extends FacetEditorTab { private JLabel myRGenPathLabel; private TextFieldWithBrowseButton myCustomDebugKeystoreField; private JBLabel myCustomKeystoreLabel; + private JCheckBox myIncludeTestCodeAndCheckBox; public AndroidFacetEditorTab(FacetEditorContext context, AndroidFacetConfiguration androidFacetConfiguration) { final Project project = context.getProject(); @@ -282,6 +283,9 @@ public class AndroidFacetEditorTab extends FacetEditorTab { if (!myConfiguration.CUSTOM_DEBUG_KEYSTORE_PATH.equals(getSelectedCustomKeystorePath())) { return true; } + if (myConfiguration.PACK_TEST_CODE != myIncludeTestCodeAndCheckBox.isSelected()) { + return true; + } return false; } @@ -390,6 +394,8 @@ public class AndroidFacetEditorTab extends FacetEditorTab { myConfiguration.RUN_PROCESS_RESOURCES_MAVEN_TASK = myRunProcessResourcesRadio.isSelected(); myConfiguration.GENERATE_UNSIGNED_APK = myGenerateUnsignedApk.isSelected(); + + myConfiguration.PACK_TEST_CODE = myIncludeTestCodeAndCheckBox.isSelected(); boolean useCustomAptSrc = myUseCustomSourceDirectoryRadio.isSelected(); @@ -513,6 +519,7 @@ public class AndroidFacetEditorTab extends FacetEditorTab { myCompileResourcesByIdeRadio.setSelected(!myConfiguration.RUN_PROCESS_RESOURCES_MAVEN_TASK); myGenerateUnsignedApk.setSelected(myConfiguration.GENERATE_UNSIGNED_APK); + myIncludeTestCodeAndCheckBox.setSelected(myConfiguration.PACK_TEST_CODE); updateAptPanel(); diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java b/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java index 9633ed4c480a..0b7a0410bb6d 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidRootUtil.java @@ -257,14 +257,8 @@ public class AndroidRootUtil { } } // do not support android-app->android-app compile dependencies - else if (facet == null) { - if (!outputDirs.contains(classDir) && classDir != null && classDir.exists()) { - outputDirs.add(classDir); - } - VirtualFile classDirForTests = extension.getCompilerOutputPathForTests(); - if (!outputDirs.contains(classDirForTests) && classDirForTests != null && classDirForTests.exists()) { - outputDirs.add(classDirForTests); - } + else if (facet == null && !outputDirs.contains(classDir) && classDir != null && classDir.exists()) { + outputDirs.add(classDir); } } fillExternalLibrariesAndModules(depModule, outputDirs, libraries, visited, !libraryProject || exportedLibrariesOnly); diff --git a/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleBuilder.java b/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleBuilder.java index 35a6e6e89c82..672a47f4bb79 100644 --- a/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleBuilder.java +++ b/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleBuilder.java @@ -128,6 +128,7 @@ public class AndroidModuleBuilder extends JavaModuleBuilder { if (myProjectType == ProjectType.TEST) { assert myTestedModule != null; + facet.getConfiguration().PACK_TEST_CODE = true; ModuleOrderEntry entry = rootModel.addModuleOrderEntry(myTestedModule); entry.setScope(DependencyScope.PROVIDED); } diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java index 436dbf46988b..ce0a5c8cf1c6 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfiguration.java @@ -92,11 +92,10 @@ public class AndroidRunConfiguration extends AndroidRunConfigurationBase impleme } @Override - public RunProfileState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { - RunProfileState state = super.getState(executor, env); + public AndroidRunningState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { + AndroidRunningState state = super.getState(executor, env); if (state != null) { - assert state instanceof AndroidRunningState; - ((AndroidRunningState)state).setDeploy(DEPLOY); + state.setDeploy(DEPLOY); } return state; } diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java index 9675f7469784..54e28b8b1012 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java @@ -183,7 +183,7 @@ public abstract class AndroidRunConfigurationBase extends ModuleBasedConfigurati return true; } - public RunProfileState getState(@NotNull final Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { + public AndroidRunningState getState(@NotNull final Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { final Module module = getConfigurationModule().getModule(); if (module == null) { throw new ExecutionException("Module is not found"); diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java index 4f6233148d6f..976b7eb14a90 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java @@ -218,10 +218,6 @@ public abstract class AndroidRunningState implements RunProfileState, AndroidDeb return myLock; } - public AndroidFacet getAndroidFacet() { - return myFacet; - } - public String getPackageName() { return myPackageName; } @@ -230,6 +226,7 @@ public abstract class AndroidRunningState implements RunProfileState, AndroidDeb return myFacet.getModule(); } + @NotNull public AndroidFacet getFacet() { return myFacet; } diff --git a/plugins/android/src/org/jetbrains/android/run/testing/AndroidTestRunConfiguration.java b/plugins/android/src/org/jetbrains/android/run/testing/AndroidTestRunConfiguration.java index 9f64c41095cc..210a3984fc4d 100644 --- a/plugins/android/src/org/jetbrains/android/run/testing/AndroidTestRunConfiguration.java +++ b/plugins/android/src/org/jetbrains/android/run/testing/AndroidTestRunConfiguration.java @@ -28,6 +28,7 @@ import com.intellij.execution.Executor; import com.intellij.execution.configurations.*; import com.intellij.execution.junit.JUnitUtil; import com.intellij.execution.process.ProcessOutputTypes; +import com.intellij.execution.runners.ExecutionEnvironment; import com.intellij.execution.testframework.sm.SMTestRunnerConnectionUtil; import com.intellij.execution.testframework.ui.BaseTestsOutputConsoleView; import com.intellij.execution.ui.ConsoleView; @@ -35,6 +36,8 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.options.SettingsEditor; import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Disposer; import com.intellij.psi.JavaPsiFacade; import com.intellij.psi.PsiClass; @@ -43,6 +46,7 @@ import com.intellij.psi.PsiPackage; import org.jetbrains.android.dom.manifest.Instrumentation; import org.jetbrains.android.dom.manifest.Manifest; import org.jetbrains.android.facet.AndroidFacet; +import org.jetbrains.android.facet.AndroidFacetConfiguration; import org.jetbrains.android.run.AndroidApplicationLauncher; import org.jetbrains.android.run.AndroidRunConfigurationBase; import org.jetbrains.android.run.AndroidRunConfigurationEditor; @@ -108,6 +112,44 @@ public class AndroidTestRunConfiguration extends AndroidRunConfigurationBase { } } + @Override + public AndroidRunningState getState(@NotNull Executor executor, @NotNull ExecutionEnvironment env) throws ExecutionException { + final AndroidRunningState state = super.getState(executor, env); + + if (state == null) { + return null; + } + + final AndroidFacet facet = state.getFacet(); + final AndroidFacetConfiguration configuration = facet.getConfiguration(); + + if (!configuration.PACK_TEST_CODE) { + final Module module = facet.getModule(); + final int count = getTestSourceRootCount(module); + + if (count > 0) { + final String message = "Code and resources under test source " + (count > 1 ? "roots" : "root") + + " aren't included into debug APK.\nWould you like to include them and recompile " + + module.getName() + " module?" + "\n(You may change this option in Android facet settings later)"; + final int result = + Messages.showYesNoCancelDialog(getProject(), message, "Test code not included into APK", Messages.getQuestionIcon()); + + if (result == Messages.YES) { + configuration.PACK_TEST_CODE = true; + } + else if (result == Messages.CANCEL) { + return null; + } + } + } + return state; + } + + private static int getTestSourceRootCount(@NotNull Module module) { + final ModuleRootManager manager = ModuleRootManager.getInstance(module); + return manager.getSourceRoots(true).length - manager.getSourceRoots(false).length; + } + private void checkTestMethod() throws RuntimeConfigurationException { JavaRunConfigurationModule configurationModule = getConfigurationModule(); final PsiClass testClass = @@ -166,7 +208,7 @@ public class AndroidTestRunConfiguration extends AndroidRunConfigurationBase { BaseTestsOutputConsoleView consoleView = SMTestRunnerConnectionUtil .createAndAttachConsole("Android", state.getProcessHandler(), properties, state.getRunnerSettings(), state.getConfigurationSettings() ); - Disposer.register(state.getAndroidFacet().getModule().getProject(), consoleView); + Disposer.register(state.getFacet().getModule().getProject(), consoleView); return consoleView; } From c1c302ab8ca9f5da07336e20b19a60ff1eb47c95 Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Thu, 2 Feb 2012 16:04:26 +0400 Subject: [PATCH 18/43] IDEA-37783 --- .../uiDesigner/designSurface/GuiEditor.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GuiEditor.java b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GuiEditor.java index fa1f228af021..cdbeeedd4d67 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GuiEditor.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/designSurface/GuiEditor.java @@ -129,6 +129,7 @@ public final class GuiEditor extends JPanel implements DataProvider { private final Document myDocument; final MainProcessor myProcessor; + @NotNull private final JScrollPane myScrollPane; /** * This layered pane contains all layers to lay components out and to * show all necessary decoration items @@ -302,11 +303,12 @@ public final class GuiEditor extends JPanel implements DataProvider { gbc.gridy = 1; gbc.weightx = 1.0; gbc.weighty = 1.0; - final JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myLayeredPane); - scrollPane.setBackground(Color.WHITE); - panel.add(scrollPane, gbc); - myHorzCaptionPanel.attachToScrollPane(scrollPane); - myVertCaptionPanel.attachToScrollPane(scrollPane); + + myScrollPane = ScrollPaneFactory.createScrollPane(myLayeredPane); + myScrollPane.setBackground(Color.WHITE); + panel.add(myScrollPane, gbc); + myHorzCaptionPanel.attachToScrollPane(myScrollPane); + myVertCaptionPanel.attachToScrollPane(myScrollPane); myValidCard.add(panel, BorderLayout.CENTER); @@ -319,7 +321,7 @@ public final class GuiEditor extends JPanel implements DataProvider { myPsiTreeChangeListener = new MyPsiTreeChangeListener(); PsiManager.getInstance(module.getProject()).addPsiTreeChangeListener(myPsiTreeChangeListener); - myQuickFixManager = new QuickFixManagerImpl(this, myGlassLayer, scrollPane.getViewport()); + myQuickFixManager = new QuickFixManagerImpl(this, myGlassLayer, myScrollPane.getViewport()); myDropTargetListener = new DesignDropTargetListener(this); if (!ApplicationManager.getApplication().isHeadlessEnvironment()) { @@ -987,7 +989,9 @@ public final class GuiEditor extends JPanel implements DataProvider { width += 50; height += 40; - return new Dimension(width, height); + Rectangle bounds = myScrollPane.getViewport().getBounds(); + + return new Dimension(Math.max(width, bounds.width), Math.max(height, bounds.height)); } public Dimension getPreferredScrollableViewportSize() { From 6fd33267a9b8ea3dd9556bcfe1a0b22d847ddf7c Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 2 Feb 2012 14:44:51 +0400 Subject: [PATCH 19/43] check for invalid symlinks --- .../openapi/vfs/impl/win32/Win32LocalFileSystem.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/win32/Win32LocalFileSystem.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/win32/Win32LocalFileSystem.java index c69ca7f5379c..81e6f06cf1c4 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/win32/Win32LocalFileSystem.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/win32/Win32LocalFileSystem.java @@ -20,6 +20,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.impl.local.LocalFileSystemBase; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import java.io.FileNotFoundException; @@ -91,6 +92,10 @@ public class Win32LocalFileSystem extends LocalFileSystemBase { @NotNull @Override public String[] list(@NotNull VirtualFile file) { + if (isInvalidSymLink(file)) { + return ArrayUtil.EMPTY_STRING_ARRAY; + } + try { String[] strings = myKernel.list(file.getPath()); if (checkMe && !Arrays.asList(strings).equals(Arrays.asList(super.list(file)))) { From bcd89a816b42e8f4a2498440708b51e3fe3787a0 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 2 Feb 2012 16:13:43 +0400 Subject: [PATCH 20/43] log if not passed --- .../com/intellij/openapi/vfs/local/SymLinkHandlingTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymLinkHandlingTest.java b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymLinkHandlingTest.java index c76e5a112113..a3ea474cd6c9 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymLinkHandlingTest.java +++ b/platform/platform-tests/testSrc/com/intellij/openapi/vfs/local/SymLinkHandlingTest.java @@ -44,7 +44,10 @@ public class SymLinkHandlingTest extends LightPlatformLangTestCase { } public void testBadLinksAreIgnored() throws Exception { - if (!SystemInfo.areSymLinksSupported) return; + if (!SystemInfo.areSymLinksSupported) { + System.out.println("Test not passed"); + return; + } final File missingFile = new File(FileUtil.getTempDirectory(), "missing_file"); assertTrue(missingFile.getAbsolutePath(), !missingFile.exists() || missingFile.delete()); From e73e239151f0e33ee015b1cc9c0fae19a3ee6d06 Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 2 Feb 2012 13:37:31 +0100 Subject: [PATCH 21/43] Robust location of ps command. Just 'ps' doesn't work sometimes (RUBY-10022). --- .../intellij/execution/process/UnixProcessManager.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/platform/util/src/com/intellij/execution/process/UnixProcessManager.java b/platform/util/src/com/intellij/execution/process/UnixProcessManager.java index 965953f761b2..3a695a6f8256 100644 --- a/platform/util/src/com/intellij/execution/process/UnixProcessManager.java +++ b/platform/util/src/com/intellij/execution/process/UnixProcessManager.java @@ -172,14 +172,18 @@ public class UnixProcessManager { } public static String[] getPSCmd(boolean commandLineOnly) { + String psCommand = "/bin/ps"; + if (!new File(psCommand).isFile()) { + psCommand = "ps"; + } if (SystemInfo.isLinux) { - return new String[]{"ps", "-e", "e", "--format", commandLineOnly ? "%a" : "%P%p%a"}; + return new String[]{psCommand, "-e", "e", "--format", commandLineOnly ? "%a" : "%P%p%a"}; } else if (SystemInfo.isMac) { - return new String[]{"ps", "-ax", "-E", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; + return new String[]{psCommand, "-ax", "-E", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; } else if (SystemInfo.isFreeBSD) { - return new String[]{"ps", "-ax", "-e", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; + return new String[]{psCommand, "-ax", "-e", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; } else { throw new IllegalStateException(System.getProperty("os.name") + " is not supported."); From a7dcb8205a2da668e1e515b1315387d4768393b6 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 2 Feb 2012 16:06:38 +0400 Subject: [PATCH 22/43] rename directory with module inside (IDEA-68988) --- .../openapi/module/ModifiableModuleModel.java | 2 + .../openapi/module/impl/ModuleImpl.java | 39 +++++++++++++++++++ .../module/impl/ModuleManagerImpl.java | 6 +++ .../roots/impl/storage/ClasspathStorage.java | 13 +++++++ .../storage/ClasspathStorageProvider.java | 2 + .../EclipseClasspathStorageProvider.java | 8 ++++ 6 files changed, 70 insertions(+) diff --git a/platform/lang-api/src/com/intellij/openapi/module/ModifiableModuleModel.java b/platform/lang-api/src/com/intellij/openapi/module/ModifiableModuleModel.java index bf7df2e7e171..4f33e81c9f68 100644 --- a/platform/lang-api/src/com/intellij/openapi/module/ModifiableModuleModel.java +++ b/platform/lang-api/src/com/intellij/openapi/module/ModifiableModuleModel.java @@ -137,4 +137,6 @@ public interface ModifiableModuleModel { boolean hasModuleGroups(); void setModuleGroupPath(Module module, String[] groupPath); + + void setModuleFilePath(Module module, String oldPath, String newFilePath); } diff --git a/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleImpl.java b/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleImpl.java index 423711e8b47c..f8dda219271d 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleImpl.java @@ -29,6 +29,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.extensions.AreaInstance; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleComponent; import com.intellij.openapi.module.impl.scopes.ModuleWithDependenciesScope; @@ -36,6 +37,7 @@ import com.intellij.openapi.module.impl.scopes.ModuleWithDependentsScope; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.impl.storage.ClasspathStorage; import com.intellij.openapi.util.Comparing; +import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.*; import com.intellij.psi.search.GlobalSearchScope; @@ -329,6 +331,20 @@ public class ModuleImpl extends ComponentManagerImpl implements Module { final Object requestor = event.getRequestor(); if (MODULE_RENAMING_REQUESTOR.equals(requestor)) return; if (!VirtualFile.PROP_NAME.equals(event.getPropertyName())) return; + + final VirtualFile parent = event.getParent(); + if (parent != null) { + final String parentPath = parent.getPath(); + final String ancestorPath = parentPath + "/" + event.getOldValue(); + final String moduleFilePath = getModuleFilePath(); + if (VfsUtil.isAncestor(new File(ancestorPath), new File(moduleFilePath), true)) { + final String newValue = (String)event.getNewValue(); + final String relativePath = FileUtil.getRelativePath(ancestorPath, moduleFilePath, '/'); + final String newFilePath = parentPath + "/" + newValue + "/" + relativePath; + setModuleFilePath(moduleFilePath, newFilePath); + } + } + final VirtualFile moduleFile = getModuleFile(); if (moduleFile == null) return; if (moduleFile.equals(event.getFile())) { @@ -336,6 +352,29 @@ public class ModuleImpl extends ComponentManagerImpl implements Module { ModuleManagerImpl.getInstanceImpl(getProject()).fireModuleRenamedByVfsEvent(ModuleImpl.this); } } + + private void setModuleFilePath(String moduleFilePath, String newFilePath) { + ClasspathStorage.modulePathChanged(ModuleImpl.this, newFilePath); + + final ModifiableModuleModel modifiableModel = ModuleManagerImpl.getInstanceImpl(getProject()).getModifiableModel(); + modifiableModel.setModuleFilePath(ModuleImpl.this, moduleFilePath, newFilePath); + modifiableModel.commit(); + + getStateStore().setModuleFilePath(newFilePath); + } + + @Override + public void fileMoved(VirtualFileMoveEvent event) { + final VirtualFile oldParent = event.getOldParent(); + final VirtualFile newParent = event.getNewParent(); + final String dirName = event.getFileName(); + final String ancestorPath = oldParent.getPath() + "/" + dirName; + final String moduleFilePath = getModuleFilePath(); + if (VfsUtil.isAncestor(new File(ancestorPath), new File(moduleFilePath), true)) { + final String relativePath = FileUtil.getRelativePath(ancestorPath, moduleFilePath, '/'); + setModuleFilePath(moduleFilePath, newParent.getPath() + "/" + dirName + "/" + relativePath); + } + } } protected MutablePicoContainer createPicoContainer() { diff --git a/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java b/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java index 9cec66af96d5..4c7b91dcb961 100644 --- a/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerImpl.java @@ -919,6 +919,12 @@ public class ModuleManagerImpl extends ModuleManager implements ProjectComponent myModuleGroupPath.put(module, groupPath); } } + + @Override + public void setModuleFilePath(Module module, String oldPath, String newFilePath) { + myPathToModule.remove(oldPath); + myPathToModule.put(newFilePath, module); + } } private void commitModel(final ModuleModelImpl moduleModel, final Runnable runnable) { diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java index 934b00982e0b..e4c70d8f3651 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorage.java @@ -328,6 +328,10 @@ public class ClasspathStorage implements StateStorage { getProvider(getStorageType(module)).moduleRenamed(module, newName); } + public static void modulePathChanged(Module module, String path) { + getProvider(getStorageType(module)).modulePathChanged(module, path); + } + private static class DefaultStorageProvider implements ClasspathStorageProvider { @NonNls public String getID() { @@ -356,6 +360,10 @@ public class ClasspathStorage implements StateStorage { public String getContentRoot(ModifiableRootModel model) { return null; } + + @Override + public void modulePathChanged(Module module, String path) { + } } public static class UnsupportedStorageProvider implements ClasspathStorageProvider { @@ -406,5 +414,10 @@ public class ClasspathStorage implements StateStorage { public String getContentRoot(ModifiableRootModel model) { return null; } + + @Override + public void modulePathChanged(Module module, String path) { + throw new UnsupportedOperationException(getDescription()); + } } } diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java index 66ef390a49d0..20935866199b 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/storage/ClasspathStorageProvider.java @@ -53,6 +53,8 @@ public interface ClasspathStorageProvider { String getContentRoot(ModifiableRootModel model); + void modulePathChanged(Module module, String path); + interface ClasspathConverter { FileSet getFileSet(); diff --git a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java index 6a26285225b3..28471448c01d 100644 --- a/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java +++ b/plugins/eclipse/src/org/jetbrains/idea/eclipse/config/EclipseClasspathStorageProvider.java @@ -103,6 +103,14 @@ public class EclipseClasspathStorageProvider implements ClasspathStorageProvider return model.getContentRoots()[0].getPath(); } + @Override + public void modulePathChanged(Module module, String path) { + final EclipseModuleManager moduleManager = EclipseModuleManager.getInstance(module); + if (moduleManager != null) { + moduleManager.setDocumentSet(null); + } + } + public static void registerFiles(final CachedXmlDocumentSet fileCache, final Module module, final String moduleRoot, final String storageRoot) { fileCache.register(EclipseXml.CLASSPATH_FILE, storageRoot); fileCache.register(EclipseXml.PROJECT_FILE, storageRoot); From e0b4c0a1ad0ad26527505e2e669dda1cf81aa7f4 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 2 Feb 2012 16:43:00 +0400 Subject: [PATCH 23/43] undo/redo module renaming (IDEA-59715) --- .../projectView/impl/RenameModuleHandler.java | 54 ++++++++++++++----- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/RenameModuleHandler.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/RenameModuleHandler.java index 98e956b9f60c..2ec203bf6131 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/RenameModuleHandler.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/RenameModuleHandler.java @@ -22,6 +22,10 @@ import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; +import com.intellij.openapi.command.undo.BasicUndoableAction; +import com.intellij.openapi.command.undo.UndoManager; +import com.intellij.openapi.command.undo.UndoableAction; +import com.intellij.openapi.command.undo.UnexpectedUndoException; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.module.ModifiableModuleModel; @@ -37,6 +41,7 @@ import com.intellij.psi.PsiFile; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.rename.RenameHandler; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * @author dsl @@ -86,6 +91,41 @@ public class RenameModuleHandler implements RenameHandler, TitledHandler { } public boolean canClose(final String inputString) { + final String oldName = myModule.getName(); + final ModifiableModuleModel modifiableModel = renameModule(inputString); + if (modifiableModel == null) return false; + final Ref success = Ref.create(Boolean.TRUE); + CommandProcessor.getInstance().executeCommand(myProject, new Runnable() { + public void run() { + UndoableAction action = new BasicUndoableAction() { + public void undo() throws UnexpectedUndoException { + final ModifiableModuleModel modifiableModel = renameModule(oldName); + if (modifiableModel != null) { + modifiableModel.commit(); + } + } + + @Override + public void redo() throws UnexpectedUndoException { + final ModifiableModuleModel modifiableModel = renameModule(inputString); + if (modifiableModel != null) { + modifiableModel.commit(); + } + } + }; + UndoManager.getInstance(myProject).undoableActionPerformed(action); + ApplicationManager.getApplication().runWriteAction(new Runnable() { + public void run() { + modifiableModel.commit(); + } + }); + } + }, IdeBundle.message("command.renaming.module", oldName), null); + return success.get().booleanValue(); + } + + @Nullable + private ModifiableModuleModel renameModule(String inputString) { final ModifiableModuleModel modifiableModel = ModuleManager.getInstance(myProject).getModifiableModel(); try { modifiableModel.renameModule(myModule, inputString); @@ -93,19 +133,9 @@ public class RenameModuleHandler implements RenameHandler, TitledHandler { catch (ModuleWithNameAlreadyExists moduleWithNameAlreadyExists) { Messages.showErrorDialog(myProject, IdeBundle.message("error.module.already.exists", inputString), IdeBundle.message("title.rename.module")); - return false; + return null; } - final Ref success = Ref.create(Boolean.TRUE); - CommandProcessor.getInstance().executeCommand(myProject, new Runnable() { - public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - modifiableModel.commit(); - } - }); - } - }, IdeBundle.message("command.renaming.module", myModule.getName()), null); - return success.get().booleanValue(); + return modifiableModel; } } From ca18fd19a860e862614fec9d2ebda612d051016c Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 2 Feb 2012 16:43:47 +0400 Subject: [PATCH 24/43] NPE --- .../com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java index e5ea5d2d4e68..e0c4af1adc4a 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java @@ -38,7 +38,9 @@ public class CoreJarVirtualFile extends VirtualFile { myParent = parent; myEntry = entry; - parent.myChildren.add(this); + if (parent != null) { + parent.myChildren.add(this); + } } @NotNull From 662274478e9a4c811124ffc4177006bdd540d45c Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 2 Feb 2012 14:06:33 +0100 Subject: [PATCH 25/43] Removed environment option for ps cmd. --- .../execution/process/UnixProcessManager.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/platform/util/src/com/intellij/execution/process/UnixProcessManager.java b/platform/util/src/com/intellij/execution/process/UnixProcessManager.java index 3a695a6f8256..3cc2fe9bbf37 100644 --- a/platform/util/src/com/intellij/execution/process/UnixProcessManager.java +++ b/platform/util/src/com/intellij/execution/process/UnixProcessManager.java @@ -177,23 +177,16 @@ public class UnixProcessManager { psCommand = "ps"; } if (SystemInfo.isLinux) { - return new String[]{psCommand, "-e", "e", "--format", commandLineOnly ? "%a" : "%P%p%a"}; + return new String[]{psCommand, "-e", "--format", commandLineOnly ? "%a" : "%P%p%a"}; } - else if (SystemInfo.isMac) { - return new String[]{psCommand, "-ax", "-E", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; - } - else if (SystemInfo.isFreeBSD) { - return new String[]{psCommand, "-ax", "-e", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; + else if (SystemInfo.isMac || SystemInfo.isFreeBSD) { + return new String[]{psCommand, "-ax", "-o", commandLineOnly ? "command" : "ppid,pid,command"}; } else { throw new IllegalStateException(System.getProperty("os.name") + " is not supported."); } } - public static boolean containsMarker(@NotNull String environ, @NotNull String uid) { - return environ.contains(uid); - } - @NotNull public static String readProcEnviron(int child_pid) throws FileNotFoundException { StringBuffer res = new StringBuffer(); From f3ab3b8aebdad6e9403452364ced5a86c0de2a8f Mon Sep 17 00:00:00 2001 From: Dmitry Trofimov Date: Thu, 2 Feb 2012 14:08:51 +0100 Subject: [PATCH 26/43] StringBuffer->StringBuilder. --- .../src/com/intellij/execution/process/UnixProcessManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/util/src/com/intellij/execution/process/UnixProcessManager.java b/platform/util/src/com/intellij/execution/process/UnixProcessManager.java index 3cc2fe9bbf37..73b60845b61e 100644 --- a/platform/util/src/com/intellij/execution/process/UnixProcessManager.java +++ b/platform/util/src/com/intellij/execution/process/UnixProcessManager.java @@ -152,7 +152,7 @@ public class UnixProcessManager { result = false; } - StringBuffer errorStr = new StringBuffer(); + StringBuilder errorStr = new StringBuilder(); while ((s = stdError.readLine()) != null) { errorStr.append(s).append("\n"); } From 53f7a92523ee68764d33a4e320192ce59ae845c6 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 2 Feb 2012 15:15:15 +0400 Subject: [PATCH 27/43] toolbars are gone from debugger views, console and log can live with horizontal --- .../src/com/intellij/execution/ui/layout/impl/RunnerLayout.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java index 851d3a42944c..2f6dbc88635c 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayout.java @@ -174,7 +174,7 @@ public class RunnerLayout { } public boolean isToolbarHorizontal() { - return myGeneral.horizontalToolbar; + return false; } public void setToolbarHorizontal(boolean horizontal) { From 472660fb6975be9e1fd1430b1505985732fa09a5 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 2 Feb 2012 16:09:18 +0400 Subject: [PATCH 28/43] EA-33421 --- .../ui/layout/impl/RunnerContentUi.java | 21 +++++++++++++++++++ .../ui/layout/impl/RunnerLayoutUiImpl.java | 6 +++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java index f256405b29e1..b7d0331a9517 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java @@ -695,6 +695,27 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac return (ActionGroup)myActionManager.getAction(SETTINGS); } + public ContentManager getContentManager(Content content) { + if (hasContent(myManager, content)) { + return myManager; + } + for (RunnerContentUi child : myChildren) { + if (hasContent(child.myManager, content)) { + return child.myManager; + } + } + return myManager; + } + + private static boolean hasContent(ContentManager manager, Content content) { + for (Content c : manager.getContents()) { + if (c == content) { + return true; + } + } + return false; + } + private static void moveFollowingTabs(int index, final JBRunnerTabs tabs) { for (TabInfo info : tabs.getTabs()) { final TabImpl tab = getTabFor(info); diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java index 584d919fb087..c850e815f0e2 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerLayoutUiImpl.java @@ -169,7 +169,11 @@ public class RunnerLayoutUiImpl implements Disposable, RunnerLayoutUi, LayoutSta public ActionCallback selectAndFocus(@Nullable final Content content, boolean requestFocus, final boolean forced, boolean implicit) { if (content == null) return new ActionCallback.Rejected(); - return getContentManager().setSelectedContent(content, requestFocus || shouldRequestFocus(), forced, implicit); + return getContentManager(content).setSelectedContent(content, requestFocus || shouldRequestFocus(), forced, implicit); + } + + private ContentManager getContentManager(@NotNull Content content) { + return myContentUI.getContentManager(content); } private boolean shouldRequestFocus() { From 536832f507ef99bd484eee60ebdcefa45c4d00e0 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 2 Feb 2012 14:53:50 +0100 Subject: [PATCH 29/43] fix possible NPEs --- .../ether/dependencyView/Mappings.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java index c500c9d1b09a..23c124d3c631 100644 --- a/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java +++ b/jps/model/src/org/jetbrains/ether/dependencyView/Mappings.java @@ -1433,11 +1433,12 @@ public class Mappings { debug("Dependent file: ", depFile); final Collection depClusters = mySourceFileToUsages.get(depFile); - - for (UsageRepr.Cluster depCluster : depClusters) { - final Set depUsages = depCluster.getUsages(); - - if (depUsages != null) { + if (depClusters != null) { + for (UsageRepr.Cluster depCluster : depClusters) { + final Set depUsages = depCluster.getUsages(); + if (depUsages == null) { + continue; + } final Set usages = new HashSet(depUsages); usages.retainAll(affectedUsages); @@ -1512,15 +1513,17 @@ public class Mappings { myClassToSubclasses.removeFrom(superSomething, cr.name); } - for (UsageRepr.Cluster cluster : clusters) { - final Set usages = cluster.getUsages(); - if (usages != null) { - for (UsageRepr.Usage u : usages) { - if (u instanceof UsageRepr.ClassUsage) { - final Set residents = cluster.getResidence(u); + if (clusters != null) { + for (UsageRepr.Cluster cluster : clusters) { + final Set usages = cluster.getUsages(); + if (usages != null) { + for (UsageRepr.Usage u : usages) { + if (u instanceof UsageRepr.ClassUsage) { + final Set residents = cluster.getResidence(u); - if (residents != null && residents.contains(cr.name)) { - myClassToClassDependency.removeFrom(((UsageRepr.ClassUsage)u).className, cr.name); + if (residents != null && residents.contains(cr.name)) { + myClassToClassDependency.removeFrom(((UsageRepr.ClassUsage)u).className, cr.name); + } } } } From 216edb996a870ca4bf071e95dec18efff268913e Mon Sep 17 00:00:00 2001 From: Shaverdova Elena Date: Thu, 2 Feb 2012 17:30:54 +0400 Subject: [PATCH 30/43] WI-8243 File deployment: Sync: Compare by = Timestamp reports files uploaded from project to server as different --- .../platform-api/src/com/intellij/ide/diff/DirDiffSettings.java | 1 + .../vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java b/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java index d37ccdea1c8a..592607973708 100644 --- a/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java +++ b/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java @@ -38,6 +38,7 @@ public class DirDiffSettings { public boolean showNewOnTarget = true; public boolean showCompareModes = true; public CompareMode compareMode = CompareMode.CONTENT; + public double compareTimestampAccuracy = 0; public boolean showInFrame = true; // in dialog otherwise diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java index fc0aadd8898e..55f79ac29eb4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java +++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java @@ -162,7 +162,7 @@ public class DTree { dtype = isEqual(src, trg) ? DType.EQUAL : DType.CHANGED; break; case TIMESTAMP: - dtype = src.getTimeStamp() == trg.getTimeStamp() ? DType.EQUAL : DType.CHANGED; + dtype = Math.abs(src.getTimeStamp() - trg.getTimeStamp()) <= settings.compareTimestampAccuracy ? DType.EQUAL : DType.CHANGED; break; } } From 2b60fe51789b939febe411cde568b08b35e2ad20 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 2 Feb 2012 18:09:56 +0400 Subject: [PATCH 31/43] fix double slash in paths --- .../openapi/vfs/impl/jar/CoreJarVirtualFile.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java index e0c4af1adc4a..25286f8b820e 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java @@ -58,7 +58,15 @@ public class CoreJarVirtualFile extends VirtualFile { @Override public String getPath() { if (myParent == null) return myHandler.myBasePath + "!/"; - return myParent.getPath() + "/" + myEntry.shortName; + + String parentPath = myParent.getPath(); + StringBuilder answer = new StringBuilder(parentPath.length() + 1 + myEntry.shortName.length()); + if (answer.charAt(answer.length() - 1) != '/') { + answer.append('/'); + } + answer.append(myEntry.shortName); + + return answer.toString(); } @Override From 000342e1b5f01d1898b80a6689d98eea38ed85ee Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 2 Feb 2012 18:34:04 +0400 Subject: [PATCH 32/43] fix double slash in paths --- .../com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java index 25286f8b820e..3827ecc2da66 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java @@ -61,6 +61,7 @@ public class CoreJarVirtualFile extends VirtualFile { String parentPath = myParent.getPath(); StringBuilder answer = new StringBuilder(parentPath.length() + 1 + myEntry.shortName.length()); + answer.append(parentPath); if (answer.charAt(answer.length() - 1) != '/') { answer.append('/'); } From 08c20b63e0a2b701eb6a041e6ed43c343a049b80 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 2 Feb 2012 18:37:28 +0400 Subject: [PATCH 33/43] junit: avoid start via old junit3 starter (IDEA-80728) vm option: idea.force.junit3 --- .../intellij/execution/junit/TestClass.java | 12 +++---- .../intellij/execution/junit/TestMethod.java | 21 ------------ .../intellij/execution/junit/TestMethods.java | 17 ---------- .../intellij/execution/junit/TestObject.java | 1 - .../com/intellij/junit3/TestRunnerUtil.java | 1 - .../intellij/junit4/JUnit4TestRunnerUtil.java | 6 ---- .../rt/execution/junit/JUnitStarter.java | 32 ++++--------------- 7 files changed, 10 insertions(+), 80 deletions(-) diff --git a/plugins/junit/src/com/intellij/execution/junit/TestClass.java b/plugins/junit/src/com/intellij/execution/junit/TestClass.java index 25acd5c5fa45..5fe8a2b08b87 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestClass.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestClass.java @@ -16,7 +16,10 @@ package com.intellij.execution.junit; -import com.intellij.execution.*; +import com.intellij.execution.ExecutionBundle; +import com.intellij.execution.ExecutionException; +import com.intellij.execution.JavaExecutionUtil; +import com.intellij.execution.ProgramRunnerUtil; import com.intellij.execution.configurations.*; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; @@ -24,9 +27,7 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiPackage; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.listeners.RefactoringElementListener; -import com.intellij.rt.execution.junit.JUnitStarter; class TestClass extends TestObject { public TestClass(final Project project, @@ -41,11 +42,6 @@ class TestClass extends TestObject { final JUnitConfiguration.Data data = myConfiguration.getPersistentData(); RunConfigurationModule module = myConfiguration.getConfigurationModule(); configureModule(myJavaParameters, module, data.getMainClassName()); - final Project project = module.getProject(); - final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project)); - if (JUnitUtil.isJUnit4TestClass(psiClass)) { - myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); - } myJavaParameters.getProgramParametersList().add(data.getMainClassName()); } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java index e84c0ff0bc7a..8ad7f6245043 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethod.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethod.java @@ -25,11 +25,9 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiPackage; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.listeners.RefactoringElementAdapter; import com.intellij.refactoring.listeners.RefactoringElementListener; import com.intellij.refactoring.listeners.UndoRefactoringElementListener; -import com.intellij.rt.execution.junit.JUnitStarter; import org.jetbrains.annotations.NotNull; class TestMethod extends TestObject { @@ -45,8 +43,6 @@ class TestMethod extends TestObject { final JUnitConfiguration.Data data = myConfiguration.getPersistentData(); RunConfigurationModule module = myConfiguration.getConfigurationModule(); configureModule(getJavaParameters(), module, data.getMainClassName()); - addJUnit4Parameter(data, module.getProject()); - getJavaParameters().getProgramParametersList().add(data.getMainClassName() + "," + data.getMethodName()); } @@ -54,23 +50,6 @@ class TestMethod extends TestObject { super.initialize(); } - protected void addJUnit4Parameter(final JUnitConfiguration.Data data, Project project) { - final PsiClass psiClass = JavaExecutionUtil.findMainClass(project, data.getMainClassName(), GlobalSearchScope.allScope(project)); - LOG.assertTrue(psiClass != null); - if (JUnitUtil.isJUnit4TestClass(psiClass)) { - myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); - return; - } - final String methodName = data.getMethodName(); - PsiMethod[] methods = psiClass.findMethodsByName(methodName, true); - for (PsiMethod method : methods) { - if (JUnitUtil.isTestAnnotated(method)) { - myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); - break; - } - } - } - public String suggestActionName() { return ProgramRunnerUtil.shortenName(myConfiguration.getPersistentData().METHOD_NAME, 2) + "()"; } diff --git a/plugins/junit/src/com/intellij/execution/junit/TestMethods.java b/plugins/junit/src/com/intellij/execution/junit/TestMethods.java index 46610b5decb1..14fe7cb6cbcf 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestMethods.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestMethods.java @@ -33,7 +33,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; -import com.intellij.rt.execution.junit.JUnitStarter; import com.intellij.util.Function; import java.util.Collection; @@ -58,7 +57,6 @@ public class TestMethods extends TestMethod { final JUnitConfiguration.Data data = myConfiguration.getPersistentData(); RunConfigurationModule module = myConfiguration.getConfigurationModule(); final Project project = module.getProject(); - addJUnit4Parameter(data, project); final ExecutionException[] exception = new ExecutionException[1]; ApplicationManager.getApplication().runReadAction(new Runnable() { public void run() { @@ -92,21 +90,6 @@ public class TestMethods extends TestMethod { }, data.getPackageName(), true, false); } - protected void addJUnit4Parameter(final JUnitConfiguration.Data data, Project project) { - for (AbstractTestProxy failedTest : myFailedTests) { - Location location = failedTest.getLocation(project); - if (!(location instanceof MethodLocation)) continue; - if (JUnitUtil.isJUnit4TestClass(((MethodLocation)location).getContainingClass())) { - myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); - return; - } - PsiMethod method = ((MethodLocation)location).getPsiElement(); - if (JUnitUtil.isTestAnnotated(method)) { - myJavaParameters.getProgramParametersList().add(JUnitStarter.JUNIT4_PARAMETER); - return; - } - } - } public String suggestActionName() { return ActionsBundle.message("action.RerunFailedTests.text"); diff --git a/plugins/junit/src/com/intellij/execution/junit/TestObject.java b/plugins/junit/src/com/intellij/execution/junit/TestObject.java index b3a288099cb6..c8ba4cafcc8a 100644 --- a/plugins/junit/src/com/intellij/execution/junit/TestObject.java +++ b/plugins/junit/src/com/intellij/execution/junit/TestObject.java @@ -399,7 +399,6 @@ public abstract class TestObject implements JavaCommandLine { final PrintWriter writer = new PrintWriter(myTempFile, "UTF-8"); try { - writer.println(junit4 ? JUnitStarter.JUNIT4_PARAMETER : "-junit3"); writer.println(packageName); final List testNames = new ArrayList(); for (final T element : elements) { diff --git a/plugins/junit_rt/src/com/intellij/junit3/TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit3/TestRunnerUtil.java index db09301dbab4..e6b94fb176b8 100644 --- a/plugins/junit_rt/src/com/intellij/junit3/TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit3/TestRunnerUtil.java @@ -51,7 +51,6 @@ public class TestRunnerUtil { BufferedReader reader = new BufferedReader(new FileReader(suiteClassName.substring(1))); Vector vector; try { - reader.readLine(); //skip junit4/junit3 parameter suiteName = reader.readLine(); vector = new Vector(); String line; diff --git a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java index 95cf1181ab5d..75a4d4d32af7 100644 --- a/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java +++ b/plugins/junit_rt/src/com/intellij/junit4/JUnit4TestRunnerUtil.java @@ -17,8 +17,6 @@ package com.intellij.junit4; import org.junit.Ignore; import org.junit.internal.AssumptionViolatedException; -import org.junit.internal.builders.AllDefaultPossibilitiesBuilder; -import org.junit.internal.builders.AnnotatedBuilder; import org.junit.internal.requests.ClassRequest; import org.junit.internal.runners.model.EachTestNotifier; import org.junit.runner.Description; @@ -29,14 +27,11 @@ import org.junit.runner.manipulation.Filter; import org.junit.runner.notification.RunNotifier; import org.junit.runners.BlockJUnit4ClassRunner; import org.junit.runners.Parameterized; -import org.junit.runners.ParentRunner; import org.junit.runners.model.FrameworkMethod; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; -import java.lang.annotation.Annotation; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.*; @@ -60,7 +55,6 @@ public class JUnit4TestRunnerUtil { final Map classMethods = new HashMap(); BufferedReader reader = new BufferedReader(new FileReader(suiteClassName.substring(1))); try { - reader.readLine(); //skip junit4/junit3 parameter final String packageName = reader.readLine(); String line; diff --git a/plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitStarter.java b/plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitStarter.java index f492409c9e18..376f1e749890 100644 --- a/plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitStarter.java +++ b/plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitStarter.java @@ -32,7 +32,6 @@ import java.util.Vector; public class JUnitStarter { public static final int VERSION = 5; public static final String IDE_VERSION = "-ideVersion"; - public static final String JUNIT4_PARAMETER = "-junit4"; private static final String SOCKET = "-socket"; private static String ourForkMode; private static String ourCommandFileName; @@ -65,17 +64,12 @@ public class JUnitStarter { } private static boolean processParameters(Vector args, final List listeners) { - boolean isJunit4 = false; - String tempFilePath = null; Vector result = new Vector(args.size()); for (int i = 0; i < args.size(); i++) { String arg = (String)args.get(i); if (arg.startsWith(IDE_VERSION)) { //ignore } - else if (arg.equals(JUNIT4_PARAMETER)){ - isJunit4 = true; - } else { if (arg.startsWith("@@@")) { final int pos = arg.indexOf(','); @@ -96,8 +90,6 @@ public class JUnitStarter { } } continue; - } else if (arg.startsWith("@")) { - tempFilePath = arg.substring(1); } else if (arg.startsWith(SOCKET)) { final int port = Integer.parseInt(arg.substring(SOCKET.length())); try { @@ -114,37 +106,25 @@ public class JUnitStarter { e.printStackTrace(); } - isJunit4 = isJUnit4(isJunit4, tempFilePath); continue; } result.addElement(arg); } } - if (tempFilePath != null && !args.contains(SOCKET)) { - isJunit4 = isJUnit4(isJunit4, tempFilePath); - } args.removeAllElements(); for (int i = 0; i < result.size(); i++) { String arg = (String)result.get(i); args.addElement(arg); } - return isJunit4; - } - - private static boolean isJUnit4(boolean junit4, String tempFilePath) { + final String forceJUnit3 = System.getProperty("idea.force.junit3"); + if (forceJUnit3 != null && Boolean.valueOf(forceJUnit3).booleanValue()) return false; try { - BufferedReader reader = new BufferedReader(new FileReader(tempFilePath)); - try { - junit4 |= JUNIT4_PARAMETER.equals(reader.readLine()); - } - finally { - reader.close(); - } + Class.forName("org.junit.Test"); + return true; } - catch (IOException e) { - e.printStackTrace(); + catch (ClassNotFoundException e) { + return false; } - return junit4; } public static boolean checkVersion(String[] args, SegmentedOutputStream notifications) { From 317f93f980911b229ef4472f9ca948633119c93a Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Feb 2012 14:06:14 +0100 Subject: [PATCH 34/43] less spam in compile server javac progress messages --- .../src/org/jetbrains/jps/incremental/IncProjectBuilder.java | 2 ++ .../src/org/jetbrains/jps/incremental/java/JavaBuilder.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index 11ef36a2f3f1..7ddfdc33a493 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -166,6 +166,8 @@ public class IncProjectBuilder { context.processMessage(new ProgressMessage("Running 'after' tasks")); runTasks(context, myBuilderRegistry.getAfterTasks()); + + context.processMessage(new ProgressMessage("Finished, saving caches...")); } private CompileContext createContext(CompileScope scope, boolean isMake, final boolean isProjectRebuild) throws ProjectBuildException { diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java index 9383724a555e..152a5fca45e1 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/java/JavaBuilder.java @@ -727,7 +727,7 @@ public class JavaBuilder extends ModuleLevelBuilder { myContext.processMessage(new ProgressMessage("Parsing sources...")); } else { - if (!message.startsWith("total")) { + if (!message.startsWith("total ") && !message.startsWith("loading ") && !message.startsWith("wrote ")) { myContext.processMessage(new ProgressMessage(FileUtil.toSystemDependentName(message))); } } From f96cf9acfd614b1352900a50e4be357354379191 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Feb 2012 14:49:25 +0100 Subject: [PATCH 35/43] IDEA-80749 Make it possible to enable live templates for specific language in custom language plugin --- .../template/impl/LiveTemplateCompletionContributor.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java index 8679d726deb0..6c1bc1123a2b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/LiveTemplateCompletionContributor.java @@ -47,7 +47,7 @@ public class LiveTemplateCompletionContributor extends CompletionContributor { final PsiFile file = parameters.getPosition().getContainingFile(); final int offset = parameters.getOffset(); final List templates = listApplicableTemplates(file, offset); - if (Registry.is("show.live.templates.in.completion")) { + if (showAllTemplates()) { final Ref templatesShown = Ref.create(false); result.runRemainingContributors(parameters, new Consumer() { @@ -78,6 +78,11 @@ public class LiveTemplateCompletionContributor extends CompletionContributor { }); } + @SuppressWarnings("MethodMayBeStatic") //for Kotlin + protected boolean showAllTemplates() { + return Registry.is("show.live.templates.in.completion"); + } + private static void ensureTemplatesShown(Ref templatesShown, List templates, CompletionResultSet result) { if (!templatesShown.get()) { templatesShown.set(true); From 42cf895280c51d5531f1a3a4dd9fe566dad50a83 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 2 Feb 2012 18:29:53 +0400 Subject: [PATCH 36/43] IDEA-80706 Debug Tool Window: restore view under Debugger view hides previously restored view --- .../com/intellij/execution/ui/layout/impl/GridCellImpl.java | 3 +-- .../com/intellij/execution/ui/layout/impl/RunnerContentUi.java | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/GridCellImpl.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/GridCellImpl.java index 1350d5fa0468..c85261cd83f8 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/GridCellImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/GridCellImpl.java @@ -449,9 +449,8 @@ public class GridCellImpl implements GridCell { } } - private ActionCallback restore(Content content) { + ActionCallback restore(Content content) { myMinimizedContents.remove(content); - myContext.getContentManager().addContent(content); return new ActionCallback.Done(); } } diff --git a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java index b7d0331a9517..81f6cb266d6b 100644 --- a/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java +++ b/platform/lang-impl/src/com/intellij/execution/ui/layout/impl/RunnerContentUi.java @@ -1326,6 +1326,9 @@ public class RunnerContentUi implements ContentUI, Disposable, CellTransform.Fac final GridImpl grid = getGridFor(content, false); if (grid == null) { getStateFor(content).assignTab(myLayoutSettings.getOrCreateTab(-1)); + } else { + //noinspection ConstantConditions + ((GridCellImpl)findCellFor(content)).restore(content); } getStateFor(content).setMinimizedInGrid(false); myManager.addContent(content); From 3a290433fbf4fc47ecd3e7b5e25950d3c80ec19e Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Feb 2012 16:00:15 +0100 Subject: [PATCH 37/43] understand
as line separator --- .../src/com/intellij/notification/EventLog.java | 11 +++++------ .../com/intellij/notification/EventLogTest.groovy | 6 ++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/notification/EventLog.java b/platform/platform-impl/src/com/intellij/notification/EventLog.java index 310e5544c0e8..0ba18358cf37 100644 --- a/platform/platform-impl/src/com/intellij/notification/EventLog.java +++ b/platform/platform-impl/src/com/intellij/notification/EventLog.java @@ -46,6 +46,7 @@ import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.ui.awt.RelativePoint; import com.intellij.ui.content.Content; import com.intellij.ui.content.ContentFactory; +import com.intellij.util.containers.CollectionFactory; import com.intellij.util.containers.hash.LinkedHashMap; import com.intellij.util.text.CharArrayUtil; import org.jetbrains.annotations.NonNls; @@ -58,6 +59,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Matcher; @@ -74,6 +76,7 @@ public class EventLog implements Notifications { private static final String A_CLOSING = ""; private static final Pattern TAG_PATTERN = Pattern.compile("<[^>]*>"); private static final Pattern A_PATTERN = Pattern.compile("]* )?href=[\"\']([^>]*)[\"\'][^>]*>"); + private static final Set NEW_LINES = CollectionFactory.newSet("
", "
", "
", "

", "

", "

"); public EventLog() { ApplicationManager.getApplication().getMessageBus().connect().subscribe(Notifications.TOPIC, this); @@ -188,11 +191,7 @@ public class EventLog implements Notifications { } hasHtml = true; - if ("
".equals(tagStart) || - "
".equals(tagStart) || - "

".equals(tagStart) || - "

".equals(tagStart) || - "

".equals(tagStart)) { + if (NEW_LINES.contains(tagStart)) { lineSeparators.add(document.createRangeMarker(TextRange.from(document.getTextLength(), 0))); } else if (!"".equals(tagStart) && !"".equals(tagStart) && !"".equals(tagStart) && !"".equals(tagStart)) { @@ -219,7 +218,7 @@ public class EventLog implements Notifications { if (offset < document.getTextLength()) { boolean spaceAfter = Character.isWhitespace(document.getCharsSequence().charAt(offset)); int next = CharArrayUtil.shiftForward(document.getCharsSequence(), offset, " \t"); - if (next < document.getTextLength() && Character.isUpperCase(document.getCharsSequence().charAt(next))) { + if (next < document.getTextLength() && !Character.isLowerCase(document.getCharsSequence().charAt(next))) { document.insertString(offset, (spaceBefore ? "" : " ") + "//" + (spaceAfter ? "" : " ")); continue; } diff --git a/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy b/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy index e15a4d732592..5c0c049b42a9 100644 --- a/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy +++ b/platform/platform-tests/testSrc/com/intellij/notification/EventLogTest.groovy @@ -68,4 +68,10 @@ class EventLogTest extends LightPlatformTestCase { assert entry.message == 'link: content (show balloon)' } + public void testVariousNewlines() throws Exception { + assert EventLog.formatForLog(new Notification("xxx", 'title', "foo
bar", NotificationType.ERROR)).message == 'title: foo bar' + assert EventLog.formatForLog(new Notification("xxx", 'title', "foo
/bar", NotificationType.ERROR)).message == 'title: foo // /bar' + assert EventLog.formatForLog(new Notification("xxx", 'title', "foo
Bar", NotificationType.ERROR)).message == 'title: foo // Bar' + } + } From 0e68af47b794d796ec5337b47d9cf6c28d80bcd3 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 2 Feb 2012 19:05:53 +0400 Subject: [PATCH 38/43] Replace ApplicationManager.getApplication().runReadAction() to ApplicationManager.getApplication().acquireReadActionLock(). --- .../MavenSmartCompletionContributor.java | 21 +++++----- .../maven/indices/MavenIndicesManager.java | 16 ++++---- .../maven/project/MavenProjectsManager.java | 13 +++--- .../idea/maven/project/MavenProjectsTree.java | 40 ++++++++++--------- .../idea/maven/utils/MavenJDOMUtil.java | 31 ++++++++------ .../utils/MavenProblemFileHighlighter.java | 16 ++++---- .../maven/wizards/MavenProjectBuilder.java | 32 ++++++++------- .../idea/maven/MavenImportingTestCase.java | 17 ++++---- 8 files changed, 103 insertions(+), 83 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java index 52c2b2616f71..46b3838f9cf9 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java @@ -20,12 +20,9 @@ import com.intellij.codeInsight.completion.CompletionContributor; import com.intellij.codeInsight.completion.CompletionParameters; import com.intellij.codeInsight.completion.CompletionResultSet; import com.intellij.codeInsight.completion.CompletionType; -import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupElementBuilder; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.util.Computable; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiNamedElement; import com.intellij.psi.PsiReference; import com.intellij.psi.impl.source.xml.TagNameReference; import com.intellij.psi.xml.XmlText; @@ -46,12 +43,16 @@ public class MavenSmartCompletionContributor extends CompletionContributor { public void fillCompletionVariants(final CompletionParameters parameters, CompletionResultSet result) { if (parameters.getCompletionType() != CompletionType.SMART) return; - Collection variants = ApplicationManager.getApplication().runReadAction(new Computable>() { - @Override - public Collection compute() { - return getVariants(parameters); - } - }); + Collection variants; + + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + variants = getVariants(parameters); + } + finally { + accessToken.finish(); + } + MavenPropertyCompletionContributor.addVariants(variants, result); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java index 4d06f837f9a1..383ac1124ea9 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/indices/MavenIndicesManager.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.indices; import com.intellij.openapi.Disposable; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.extensions.Extensions; @@ -283,14 +284,15 @@ public class MavenIndicesManager { private static MavenGeneralSettings getMavenSettings(@NotNull final Project project, @NotNull MavenProgressIndicator indicator) throws MavenProcessCanceledException { + MavenGeneralSettings settings; - MavenGeneralSettings settings = ApplicationManager.getApplication().runReadAction(new Computable() { - @Override - public MavenGeneralSettings compute() { - if (project.isDisposed()) return null; - return MavenProjectsManager.getInstance(project).getGeneralSettings(); - } - }); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + settings = project.isDisposed() ? null : MavenProjectsManager.getInstance(project).getGeneralSettings(); + } + finally { + accessToken.finish(); + } if (settings == null) { // project was closed diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java index 8ed52326939a..4dfb559d7484 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsManager.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project; import com.intellij.ide.startup.StartupManagerEx; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.PersistentStateComponent; import com.intellij.openapi.components.SettingsSavingComponent; @@ -403,11 +404,13 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent } public boolean isMavenizedModule(final Module m) { - return ApplicationManager.getApplication().runReadAction(new Computable() { - public Boolean compute() { - return "true".equals(m.getOptionValue(getMavenizedModuleOptionName())); - } - }); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + return "true".equals(m.getOptionValue(getMavenizedModuleOptionName())); + } + finally { + accessToken.finish(); + } } public void setMavenizedModules(Collection modules, boolean mavenized) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java index 7a2b61135328..2cd984935388 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsTree.java @@ -15,10 +15,10 @@ */ package org.jetbrains.idea.maven.project; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; @@ -645,27 +645,29 @@ public class MavenProjectsTree { private MavenProjectTimestamp calculateTimestamp(final MavenProject mavenProject, final Collection explicitProfiles, final MavenGeneralSettings generalSettings) { - return ApplicationManager.getApplication().runReadAction(new Computable() { - public MavenProjectTimestamp compute() { - long pomTimestamp = getFileTimestamp(mavenProject.getFile()); - MavenProject parent = findParent(mavenProject); - long parentLastReadStamp = parent == null ? -1 : parent.getLastReadStamp(); - VirtualFile profilesXmlFile = mavenProject.getProfilesXmlFile(); - long profilesTimestamp = getFileTimestamp(profilesXmlFile); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + long pomTimestamp = getFileTimestamp(mavenProject.getFile()); + MavenProject parent = findParent(mavenProject); + long parentLastReadStamp = parent == null ? -1 : parent.getLastReadStamp(); + VirtualFile profilesXmlFile = mavenProject.getProfilesXmlFile(); + long profilesTimestamp = getFileTimestamp(profilesXmlFile); - long userSettingsTimestamp = getFileTimestamp(generalSettings.getEffectiveUserSettingsFile()); - long globalSettingsTimestamp = getFileTimestamp(generalSettings.getEffectiveGlobalSettingsFile()); + long userSettingsTimestamp = getFileTimestamp(generalSettings.getEffectiveUserSettingsFile()); + long globalSettingsTimestamp = getFileTimestamp(generalSettings.getEffectiveGlobalSettingsFile()); - int profilesHashCode = explicitProfiles.hashCode(); + int profilesHashCode = explicitProfiles.hashCode(); - return new MavenProjectTimestamp(pomTimestamp, - parentLastReadStamp, - profilesTimestamp, - userSettingsTimestamp, - globalSettingsTimestamp, - profilesHashCode); - } - }); + return new MavenProjectTimestamp(pomTimestamp, + parentLastReadStamp, + profilesTimestamp, + userSettingsTimestamp, + globalSettingsTimestamp, + profilesHashCode); + } + finally { + accessToken.finish(); + } } private static long getFileTimestamp(VirtualFile file) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenJDOMUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenJDOMUtil.java index a7162adf0e72..707fae5105a6 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenJDOMUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenJDOMUtil.java @@ -15,8 +15,8 @@ */ package org.jetbrains.idea.maven.utils; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.CharsetToolkit; @@ -38,19 +38,24 @@ import static com.intellij.openapi.util.text.StringUtil.isEmptyOrSpaces; public class MavenJDOMUtil { @Nullable public static Element read(final VirtualFile file, @Nullable final ErrorHandler handler) { - String text = ApplicationManager.getApplication().runReadAction(new Computable() { - public String compute() { - if (!file.isValid()) return null; - try { - return VfsUtil.loadText(file); - } - catch (IOException e) { - if (handler != null) handler.onReadError(e); - return null; - } + String text; + + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + if (!file.isValid()) return null; + + try { + text = VfsUtil.loadText(file); } - }); - if (text == null) return null; + catch (IOException e) { + if (handler != null) handler.onReadError(e); + return null; + } + } + finally { + accessToken.finish(); + } + return doRead(text, handler); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenProblemFileHighlighter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenProblemFileHighlighter.java index 49eb62bdcaff..20b2b3293c0b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenProblemFileHighlighter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenProblemFileHighlighter.java @@ -15,9 +15,9 @@ */ package org.jetbrains.idea.maven.utils; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; @@ -32,11 +32,13 @@ public class MavenProblemFileHighlighter implements Condition { } public boolean value(final VirtualFile file) { - return ApplicationManager.getApplication().runReadAction(new Computable() { - public Boolean compute() { - PsiFile psiFile = PsiManager.getInstance(myProject).findFile(file); - return psiFile != null && MavenDomUtil.isMavenFile(psiFile); - } - }); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + PsiFile psiFile = PsiManager.getInstance(myProject).findFile(file); + return psiFile != null && MavenDomUtil.isMavenFile(psiFile); + } + finally { + accessToken.finish(); + } } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectBuilder.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectBuilder.java index b531f5382496..613dc2789961 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectBuilder.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenProjectBuilder.java @@ -15,6 +15,7 @@ */ package org.jetbrains.idea.maven.wizards; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; @@ -25,7 +26,6 @@ import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ui.configuration.ModulesConfigurator; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; -import com.intellij.openapi.util.Computable; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packaging.artifacts.ModifiableArtifactModel; @@ -236,24 +236,26 @@ public class MavenProjectBuilder extends ProjectImportBuilder { } private MavenWorkspaceSettings getDirectProjectsSettings() { - return ApplicationManager.getApplication().runReadAction(new Computable() { - @Override - public MavenWorkspaceSettings compute() { - return MavenWorkspaceSettingsComponent.getInstance(getProject()).getState(); - } - }); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + return MavenWorkspaceSettingsComponent.getInstance(getProject()).getState(); + } + finally { + accessToken.finish(); + } } @NotNull private Project getProject() { - return ApplicationManager.getApplication().runReadAction(new Computable() { - @Override - public Project compute() { - Project result = isUpdate() ? getProjectToUpdate() : null; - if (result == null || result.isDisposed()) result = ProjectManager.getInstance().getDefaultProject(); - return result; - } - }); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + Project result = isUpdate() ? getProjectToUpdate() : null; + if (result == null || result.isDisposed()) result = ProjectManager.getInstance().getDefaultProject(); + return result; + } + finally { + accessToken.finish(); + } } public void setFiles(List files) { diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java index 8f4550408c9b..13b1770f6776 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/MavenImportingTestCase.java @@ -20,6 +20,7 @@ import com.intellij.compiler.CompilerManagerImpl; import com.intellij.compiler.CompilerWorkspaceConfiguration; import com.intellij.compiler.impl.ModuleCompileScope; import com.intellij.compiler.impl.TranslatingCompilerFilesMonitor; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.compiler.*; import com.intellij.openapi.module.Module; @@ -291,13 +292,15 @@ public abstract class MavenImportingTestCase extends MavenTestCase { } protected Module getModule(final String name) { - Module m = ApplicationManager.getApplication().runReadAction(new Computable() { - public Module compute() { - return ModuleManager.getInstance(myProject).findModuleByName(name); - } - }); - assertNotNull("Module " + name + " not found", m); - return m; + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + Module m = ModuleManager.getInstance(myProject).findModuleByName(name); + assertNotNull("Module " + name + " not found", m); + return m; + } + finally { + accessToken.finish(); + } } private ContentEntry getContentRoot(String moduleName) { From d77e31b0d004b9e5ca2c90ccedac86055f05f3ec Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Feb 2012 16:01:30 +0100 Subject: [PATCH 39/43] less duplication in successful push notification --- plugins/git4idea/src/git4idea/push/GitPushResult.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/plugins/git4idea/src/git4idea/push/GitPushResult.java b/plugins/git4idea/src/git4idea/push/GitPushResult.java index 5cb5542a358f..3d327d591431 100644 --- a/plugins/git4idea/src/git4idea/push/GitPushResult.java +++ b/plugins/git4idea/src/git4idea/push/GitPushResult.java @@ -264,11 +264,7 @@ class GitPushResult { notificationType = NotificationType.WARNING; } else { notificationType = NotificationType.INFORMATION; - if (pushedCommitsNumber == 0) { // happens on new branch creation - title = "Pushed successfully"; - } else { - title = "Pushed " + pushedCommitsNumber + " " + StringUtil.pluralize("commit", pushedCommitsNumber); - } + title = "Push successful"; } String errorReport = reportForGroup(groupedResult.myErrorResults, GroupedResult.Type.ERROR); From 8078ea568961a68c04158a80b0bf1f3b8ab274a8 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Feb 2012 16:10:28 +0100 Subject: [PATCH 40/43] correctly place dot when chosen a class name in completion with it --- .../codeInsight/completion/JavaCompletionUtil.java | 2 +- .../codeInsight/completion/normal/ClassNameDot.java | 5 +++++ .../codeInsight/completion/normal/ClassNameDot_after.java | 7 +++++++ .../codeInsight/completion/NormalCompletionTest.groovy | 2 ++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/completion/normal/ClassNameDot.java create mode 100644 java/java-tests/testData/codeInsight/completion/normal/ClassNameDot_after.java diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java index c081d03ff391..b803bc1d126d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCompletionUtil.java @@ -740,7 +740,7 @@ public class JavaCompletionUtil { newElement = CodeInsightUtilBase.forcePsiPostprocessAndRestoreElement(newElement); if (newElement != null) { newEndOffset = newElement.getTextRange().getEndOffset(); - if (newElement instanceof PsiJavaCodeReferenceElement) { + if (newElement instanceof PsiJavaCodeReferenceElement && !(newElement instanceof PsiReferenceExpression)) { PsiReferenceParameterList parameterList = ((PsiJavaCodeReferenceElement)newElement).getParameterList(); if (parameterList != null) { newEndOffset = parameterList.getTextRange().getStartOffset(); diff --git a/java/java-tests/testData/codeInsight/completion/normal/ClassNameDot.java b/java/java-tests/testData/codeInsight/completion/normal/ClassNameDot.java new file mode 100644 index 000000000000..9646474f789a --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/ClassNameDot.java @@ -0,0 +1,5 @@ +class Foo { + { + FIStr + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/completion/normal/ClassNameDot_after.java b/java/java-tests/testData/codeInsight/completion/normal/ClassNameDot_after.java new file mode 100644 index 000000000000..33dc5773ce85 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normal/ClassNameDot_after.java @@ -0,0 +1,7 @@ +import java.io.FileInputStream; + +class Foo { + { + FileInputStream. + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy index e5203e7f1069..4adf38e80a35 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionTest.groovy @@ -1264,4 +1264,6 @@ public class ListUtils { public void testPackageInMemberType() { doTest() } + public void testClassNameDot() { doTest('.') } + } From e1038a5963762ba4db8147a25d5d84a692a86596 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Thu, 2 Feb 2012 16:16:47 +0100 Subject: [PATCH 41/43] find instance by component --- .../src/com/intellij/openapi/ui/ComboBox.java | 14 +------------- .../src/com/intellij/openapi/ui/DialogWrapper.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/ui/ComboBox.java b/platform/platform-api/src/com/intellij/openapi/ui/ComboBox.java index 87a7b96aeb3e..b84c801e1b21 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/ComboBox.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/ComboBox.java @@ -197,22 +197,10 @@ public class ComboBox extends ComboBoxWithWidePopup implements AWTEventListener myMinimumAndPreferredWidth = minimumAndPreferredWidth; } - @Nullable - private static DialogWrapperDialog getParentDialog(Component c) { - do { - if (c == null || c instanceof DialogWrapperDialog) { - return (DialogWrapperDialog)c; - } - c = c.getParent(); - } - while (true); - } - private void registerCancelOnEscape() { registerKeyboardAction(new ActionListener() { public void actionPerformed(final ActionEvent e) { - final DialogWrapperDialog dialogWrapperDialog = getParentDialog(ComboBox.this); - final DialogWrapper dialogWrapper = dialogWrapperDialog == null ? null : dialogWrapperDialog.getDialogWrapper(); + final DialogWrapper dialogWrapper = DialogWrapper.findInstance(ComboBox.this); if (isPopupVisible()) { setPopupVisible(false); diff --git a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java index ccd09e11ce14..093a628d51a7 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java @@ -1573,6 +1573,17 @@ public abstract class DialogWrapper { }, 300, null); } + @Nullable + public static DialogWrapper findInstance(Component c) { + while (c != null){ + if (c instanceof DialogWrapperDialog) { + return ((DialogWrapperDialog)c).getDialogWrapper(); + } + c = c.getParent(); + } + return null; + } + private void updateHeightForErrorText() { if (getRootPane() == null) return; From 35d7691eb896da29ed48a043e2613b86c0886468 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 2 Feb 2012 19:31:24 +0400 Subject: [PATCH 42/43] Replace ApplicationManager.getApplication().runWriteAction() to ApplicationManager.getApplication().acquireWriteActionLock(). --- .../MavenSmartCompletionContributor.java | 10 +--- .../maven/importing/MavenFoldersImporter.java | 46 ++++++++++--------- ...ectsProcessorArtifactsDownloadingTask.java | 15 +++--- .../utils/MavenEnvironmentRegistrar.java | 16 ++++--- .../idea/maven/utils/MavenRehighlighter.java | 16 ++++--- .../library/RepositoryAttachHandler.java | 26 ++++++----- .../importing/DependenciesImportingTest.java | 14 ++++-- 7 files changed, 77 insertions(+), 66 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java index 46b3838f9cf9..e4b1c51c854b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/model/completion/MavenSmartCompletionContributor.java @@ -43,15 +43,7 @@ public class MavenSmartCompletionContributor extends CompletionContributor { public void fillCompletionVariants(final CompletionParameters parameters, CompletionResultSet result) { if (parameters.getCompletionType() != CompletionType.SMART) return; - Collection variants; - - AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); - try { - variants = getVariants(parameters); - } - finally { - accessToken.finish(); - } + Collection variants = getVariants(parameters); MavenPropertyCompletionContributor.addVariants(variants, result); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java index 8a8073d2d34d..2cf3f3aed5bc 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/importing/MavenFoldersImporter.java @@ -15,7 +15,8 @@ */ package org.jetbrains.idea.maven.importing; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.AccessToken; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; @@ -29,7 +30,6 @@ import org.jetbrains.idea.maven.project.MavenImportingSettings; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.Path; -import org.jetbrains.idea.maven.utils.Url; import java.io.File; import java.util.ArrayList; @@ -45,31 +45,33 @@ public class MavenFoldersImporter { final MavenProjectsManager manager = MavenProjectsManager.getInstance(project); final MavenImportingSettings settings = manager.getImportingSettings(); - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - List rootModels = new ArrayList(); - for (Module each : ModuleManager.getInstance(project).getModules()) { - MavenProject mavenProject = manager.findProject(each); - if (mavenProject == null) continue; + AccessToken accessToken = WriteAction.start(); + try { + List rootModels = new ArrayList(); + for (Module each : ModuleManager.getInstance(project).getModules()) { + MavenProject mavenProject = manager.findProject(each); + if (mavenProject == null) continue; - MavenRootModelAdapter a = new MavenRootModelAdapter(mavenProject, each, new MavenDefaultModifiableModelsProvider(project)); - new MavenFoldersImporter(mavenProject, settings, a).config(updateTargetFoldersOnly); + MavenRootModelAdapter a = new MavenRootModelAdapter(mavenProject, each, new MavenDefaultModifiableModelsProvider(project)); + new MavenFoldersImporter(mavenProject, settings, a).config(updateTargetFoldersOnly); - ModifiableRootModel model = a.getRootModel(); - if (model.isChanged()) { - rootModels.add(model); - } - else { - model.dispose(); - } + ModifiableRootModel model = a.getRootModel(); + if (model.isChanged()) { + rootModels.add(model); } - - if (!rootModels.isEmpty()) { - ModifiableRootModel[] modelsArray = rootModels.toArray(new ModifiableRootModel[rootModels.size()]); - ProjectRootManager.getInstance(project).multiCommit(modelsArray); + else { + model.dispose(); } } - }); + + if (!rootModels.isEmpty()) { + ModifiableRootModel[] modelsArray = rootModels.toArray(new ModifiableRootModel[rootModels.size()]); + ProjectRootManager.getInstance(project).multiCommit(modelsArray); + } + } + finally { + accessToken.finish(); + } } public MavenFoldersImporter(MavenProject mavenProject, MavenImportingSettings settings, MavenRootModelAdapter model) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java index 5bc207ee652b..ddf7b4630d9f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectsProcessorArtifactsDownloadingTask.java @@ -15,7 +15,8 @@ */ package org.jetbrains.idea.maven.project; -import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.AccessToken; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ex.ProjectRootManagerEx; import com.intellij.openapi.util.AsyncResult; @@ -58,11 +59,13 @@ public class MavenProjectsProcessorArtifactsDownloadingTask implements MavenProj // todo: hack to update all file pointers. MavenUtil.invokeLater(project, new Runnable() { public void run() { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.getInstance(), false, true); - } - }); + AccessToken accessToken = WriteAction.start(); + try { + ProjectRootManagerEx.getInstanceEx(project).makeRootsChange(EmptyRunnable.getInstance(), false, true); + } + finally { + accessToken.finish(); + } } }); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenEnvironmentRegistrar.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenEnvironmentRegistrar.java index b778be3751be..90daa24baf34 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenEnvironmentRegistrar.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenEnvironmentRegistrar.java @@ -17,8 +17,10 @@ package org.jetbrains.idea.maven.utils; import com.intellij.ide.highlighter.XmlFileType; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathMacros; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.fileTypes.FileTypeManager; import org.jetbrains.annotations.NotNull; @@ -42,12 +44,14 @@ public class MavenEnvironmentRegistrar implements ApplicationComponent { private void registerFileTypes() { // we should not change file types in unit test mode if (ApplicationManager.getApplication().isUnitTestMode()) return; - ApplicationManager.getApplication().runWriteAction(new Runnable() { - @Override - public void run() { - FileTypeManager.getInstance().associateExtension(XmlFileType.INSTANCE, MavenConstants.POM_EXTENSION); - } - }); + + AccessToken accessToken = WriteAction.start(); + try { + FileTypeManager.getInstance().associateExtension(XmlFileType.INSTANCE, MavenConstants.POM_EXTENSION); + } + finally { + accessToken.finish(); + } } private void registerPathVariable() { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenRehighlighter.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenRehighlighter.java index 265b0b24beb4..e51a3ab0b80c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenRehighlighter.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenRehighlighter.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.utils; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.editor.Document; @@ -94,13 +95,14 @@ public class MavenRehighlighter extends MavenSimpleProjectComponent { } public static void rehighlight(final Project project, final MavenProject mavenProject) { - ApplicationManager.getApplication().runReadAction(new Runnable() { - @Override - public void run() { - if (project.isDisposed()) return; - ServiceManager.getService(project, MavenRehighlighter.class).myQueue.queue(new MyUpdate(project, mavenProject)); - } - }); + AccessToken accessToken = ApplicationManager.getApplication().acquireReadActionLock(); + try { + if (project.isDisposed()) return; + ServiceManager.getService(project, MavenRehighlighter.class).myQueue.queue(new MyUpdate(project, mavenProject)); + } + finally { + accessToken.finish(); + } } private static class MyUpdate extends Update { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java index 3c2c5d14d320..83b1ffb1795a 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/library/RepositoryAttachHandler.java @@ -18,8 +18,10 @@ package org.jetbrains.idea.maven.utils.library; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ModalityState; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.progress.Task; @@ -85,17 +87,19 @@ public class RepositoryAttachHandler { public boolean process(final List artifacts) { final boolean nothingRetrieved = artifacts.isEmpty(); if (!nothingRetrieved) { - ApplicationManager.getApplication().runWriteAction(new Runnable() { - public void run() { - final List roots = createRoots(artifacts, copyTo); - result.set(new NewLibraryConfiguration(coord, RepositoryLibraryType.getInstance(), new RepositoryLibraryProperties(coord)) { - @Override - public void addRoots(@NotNull LibraryEditor editor) { - editor.addRoots(roots); - } - }); - } - }); + AccessToken accessToken = WriteAction.start(); + try { + final List roots = createRoots(artifacts, copyTo); + result.set(new NewLibraryConfiguration(coord, RepositoryLibraryType.getInstance(), new RepositoryLibraryProperties(coord)) { + @Override + public void addRoots(@NotNull LibraryEditor editor) { + editor.addRoots(roots); + } + }); + } + finally { + accessToken.finish(); + } } final StringBuilder sb = new StringBuilder(); final String title; diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java index e2aeb5b866ac..d5ac1ec9cb63 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/DependenciesImportingTest.java @@ -15,7 +15,9 @@ */ package org.jetbrains.idea.maven.importing; +import com.intellij.openapi.application.AccessToken; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable; @@ -2047,11 +2049,13 @@ public class DependenciesImportingTest extends MavenImportingTestCase { } private Library createProjectLibrary(final String libraryName) { - return ApplicationManager.getApplication().runWriteAction(new Computable() { - public Library compute() { - return ProjectLibraryTable.getInstance(myProject).createLibrary(libraryName); - } - }); + AccessToken accessToken = WriteAction.start(); + try { + return ProjectLibraryTable.getInstance(myProject).createLibrary(libraryName); + } + finally { + accessToken.finish(); + } } private void createAndAddProjectLibrary(final String moduleName, final String libraryName) { From e2d6cb5685cfbebfb1e4442287ad48277621dd8d Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 2 Feb 2012 19:31:56 +0400 Subject: [PATCH 43/43] Revert broken tests. --- .../2.5/maven-resources-plugin-2.5.jar | 0 .../2.5/maven-resources-plugin-2.5.jar.sha1 | 1 - .../2.5/maven-resources-plugin-2.5.pom | 203 ------------------ .../2.5/maven-resources-plugin-2.5.pom.sha1 | 1 - ...nExtensionCompletionAndResolutionTest.java | 3 +- ...avenPluginCompletionAndResolutionTest.java | 58 +---- 6 files changed, 2 insertions(+), 264 deletions(-) delete mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar delete mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 delete mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom delete mode 100644 plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 deleted file mode 100644 index 66f7045df9cb..000000000000 --- a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -4d0907396ac6a770e05c81f6e8ed6348740f86a0 diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom deleted file mode 100644 index f74aea0ce484..000000000000 --- a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - 4.0.0 - - - maven-plugins - org.apache.maven.plugins - 19 - ../maven-plugins/pom.xml - - - maven-resources-plugin - 2.5 - maven-plugin - - Maven Resources Plugin - - The Resources Plugin handles the copying of project resources to the output - directory. There are two different kinds of resources: main resources and test resources. The - difference is that the main resources are the resources associated to the main - source code while the test resources are associated to the test source code. - Thus, this allows the separation of resources for the main source code and its - unit tests. - - 2001 - - - ${mavenVersion} - - - - scm:svn:http://svn.apache.org/repos/asf/maven/plugins/tags/maven-resources-plugin-2.5 - scm:svn:https://svn.apache.org/repos/asf/maven/plugins/tags/maven-resources-plugin-2.5 - http://svn.apache.org/viewvc/maven/plugins/tags/maven-resources-plugin-2.5 - - - JIRA - http://jira.codehaus.org/browse/MRESOURCES - - - - 1.0 - 2.0.6 - - - - - org.apache.maven - maven-plugin-api - ${mavenVersion} - - - org.apache.maven - maven-project - ${mavenVersion} - - - org.apache.maven - maven-core - ${mavenVersion} - - - org.apache.maven - maven-artifact - ${mavenVersion} - - - org.apache.maven - maven-settings - ${mavenVersion} - - - org.apache.maven - maven-model - ${mavenVersion} - - - org.apache.maven - maven-monitor - ${mavenVersion} - - - - org.codehaus.plexus - plexus-container-default - 1.0-alpha-9-stable-1 - - - - org.codehaus.plexus - plexus-utils - 2.0.5 - - - - org.apache.maven.shared - maven-filtering - ${mavenFilteringVersion} - - - - org.codehaus.plexus - plexus-interpolation - 1.13 - - - - org.apache.maven.shared - maven-plugin-testing-harness - 1.0-beta-1 - test - - - commons-io - commons-io - 1.4 - test - - - - - - run-its - - - - org.apache.maven.plugins - maven-jar-plugin - - - - test-jar - - - - - - org.codehaus.plexus - plexus-maven-plugin - - - - test-descriptor - - - - - - org.apache.maven.plugins - maven-invoker-plugin - - true - src/it - - **/pom.xml - - verify - ${project.build.directory}/local-repo - - clean - process-test-resources - - src/it/settings.xml - ${project.build.directory}/it - - fromExecProps - - - - - integration-test - - install - run - - - - - - - - - diff --git a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 b/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 deleted file mode 100644 index ed141e784c90..000000000000 --- a/plugins/maven/src/test/data/plugins/org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1 +++ /dev/null @@ -1 +0,0 @@ -2d44c4a29ea56775c87002edb5aa23aab47e71ac diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java index c0d3a9cee077..abb177cb9160 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenExtensionCompletionAndResolutionTest.java @@ -65,7 +65,7 @@ public class MavenExtensionCompletionAndResolutionTest extends MavenDomWithIndic " " + ""); - assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-eclipse-plugin", "maven-surefire-plugin", "maven-resources-plugin"); + assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-eclipse-plugin", "maven-surefire-plugin"); } public void testArtifactWithoutGroupCompletion() throws Exception { @@ -86,7 +86,6 @@ public class MavenExtensionCompletionAndResolutionTest extends MavenDomWithIndic "maven-war-plugin", "maven-surefire-plugin", "build-helper-maven-plugin", - "maven-resources-plugin", "maven-eclipse-plugin"); } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java index b98768519a1e..eaea5c74b3c3 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPluginCompletionAndResolutionTest.java @@ -71,7 +71,7 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT " " + ""); - assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-surefire-plugin", "maven-eclipse-plugin", "maven-resources-plugin"); + assertCompletionVariants(myProjectPom, "maven-compiler-plugin", "maven-war-plugin", "maven-surefire-plugin", "maven-eclipse-plugin"); } public void testArtifactWithoutGroupCompletion() throws Exception { @@ -92,7 +92,6 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT "maven-war-plugin", "build-helper-maven-plugin", "maven-surefire-plugin", - "maven-resources-plugin", "maven-eclipse-plugin"); } @@ -903,59 +902,4 @@ public class MavenPluginCompletionAndResolutionTest extends MavenDomWithIndicesT assertCompletionVariants(myProjectPom); } - - public void testRequiringParameter() throws Throwable { - createProjectPom("test" + - "project" + - "1" + - - "" + - " " + - " \n" + - " maven-resources-plugin\n" + - " \n" + - " <outputDirectory/>\n" + - " \n" + - " \n" + - - " \n" + - " maven-resources-plugin\n" + - "" + - " \n" + - " aaa\n" + - " \n" + - " \n" + - - " \n" + - " maven-resources-plugin\n" + - "" + - " \n" + - " \n" + - " \n" + - - " \n" + - " maven-resources-plugin\n" + - " " + - " " + - " " + - " copy-resources" + - " resources" + - " " + - " <configuration>\n" + - " \n" + - " " + - " " + - " " + - "" + - " \n" + - " \n" + - " \n" + - - - " " + - ""); - - checkHighlighting(); - } - }