From bb7e6adbde6f9463d29ba9a95682ccff2ec1cd9f Mon Sep 17 00:00:00 2001 From: anna Date: Mon, 20 Feb 2012 10:45:12 +0100 Subject: [PATCH 01/79] EA-33792 - assert: ComponentManagerImpl.getPicoContainer --- .../com/intellij/packageDependencies/ui/DirectoryNode.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java index 48c96d92884f..f44497bb3a16 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/ui/DirectoryNode.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -237,7 +237,7 @@ public class DirectoryNode extends PackageDependenciesNode { @Override public String getComment() { - if (myVDirectory != null && myVDirectory.isValid()) { + if (myVDirectory != null && myVDirectory.isValid() && !myProject.isDisposed()) { return ProjectViewDirectoryHelper.getInstance(myProject).getLocationString(getPsiDirectory()); } return super.getComment(); From aafd460e77ff69b778cadf1df5887bdf767b8332 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Mon, 20 Feb 2012 11:18:52 +0100 Subject: [PATCH 02/79] AppCode: 'fix' for Xcode3 tests --- .../testFramework/PlatformTestCase.java | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java b/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java index 7c92f6ebc3b8..4e4a6bb5553d 100644 --- a/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/PlatformTestCase.java @@ -110,7 +110,7 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro private ThreadTracker myThreadTracker; protected static boolean ourPlatformPrefixInitialized; - private static Set ourEternallyLivingFiles; + private static Set ourEternallyLivingFilesCache; static { Logger.setFactory(TestLoggerFactory.getInstance()); @@ -343,20 +343,9 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro PatchedWeakReference.clearAll(); } - private static void addSubTree(VirtualFile root, Set to) { - if (root instanceof VirtualDirectoryImpl) { - for (VirtualFile child : ((VirtualDirectoryImpl)root).getCachedChildren()) { - if (child instanceof VirtualDirectoryImpl) { - to.add(child); - addSubTree(child, to); - } - } - } - } - - public static Set eternallyLivingFiles() { - if (ourEternallyLivingFiles != null) { - return ourEternallyLivingFiles; + private static Set eternallyLivingFiles() { + if (ourEternallyLivingFilesCache != null) { + return ourEternallyLivingFilesCache; } Set survivors = new HashSet(); @@ -367,17 +356,34 @@ public abstract class PlatformTestCase extends UsefulTestCase implements DataPro } } - ourEternallyLivingFiles = survivors; + ourEternallyLivingFilesCache = survivors; return survivors; } - public static void registerSurvivor(Set survivors, VirtualFile file) { + public static void addSurvivingFiles(@NotNull Collection files) { + for (VirtualFile each : files) { + registerSurvivor(eternallyLivingFiles(), each); + } + } + + private static void registerSurvivor(Set survivors, VirtualFile file) { addSubTree(file, survivors); while (file != null && survivors.add(file)) { file = file.getParent(); } } + private static void addSubTree(VirtualFile root, Set to) { + if (root instanceof VirtualDirectoryImpl) { + for (VirtualFile child : ((VirtualDirectoryImpl)root).getCachedChildren()) { + if (child instanceof VirtualDirectoryImpl) { + to.add(child); + addSubTree(child, to); + } + } + } + } + @Override protected void tearDown() throws Exception { CompositeException result = new CompositeException(); From ee3c17fbe4e1f2ac5a937ba946b99df35b14f9f0 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 20 Feb 2012 14:32:43 +0400 Subject: [PATCH 03/79] IDEA-76384 in pom.xml editor does not resolve ${project.parent.basedir} IDEA-26054 --- .../dom/MavenDomProjectProcessorUtils.java | 1 - .../MavenFilteredPropertyPsiReference.java | 2 +- .../references/MavenPropertyPsiReference.java | 265 ++++++++++-------- .../maven/project/MavenProjectReader.java | 22 +- ...PropertiesCompletionAndResolutionTest.java | 8 +- ...enPropertyCompletionAndResolutionTest.java | 73 ++--- 6 files changed, 193 insertions(+), 178 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java index c462fb40ced8..95b50f81e0f0 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/MavenDomProjectProcessorUtils.java @@ -152,7 +152,6 @@ public class MavenDomProjectProcessorUtils { return property[0]; } - @Nullable public static Set collectProperties(@NotNull MavenDomProjectModel projectDom, @NotNull final Project project) { final Set properties = new HashSet(); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenFilteredPropertyPsiReference.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenFilteredPropertyPsiReference.java index 4638e44917d3..26dafe7f8319 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenFilteredPropertyPsiReference.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/dom/references/MavenFilteredPropertyPsiReference.java @@ -55,7 +55,7 @@ public class MavenFilteredPropertyPsiReference extends MavenPropertyPsiReference for (String each : myMavenProject.getFilters()) { VirtualFile file = LocalFileSystem.getInstance().findFileByPath(each); if (file == null) continue; - collectPropertiesFileVariants(MavenDomUtil.getPropertiesFile(myProject, file), "", result); + collectPropertiesFileVariants(MavenDomUtil.getPropertiesFile(myProject, file), null, result); } } 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 1dbbd29ab12b..25defa028289 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 @@ -28,11 +28,8 @@ import com.intellij.psi.xml.XmlFile; import com.intellij.psi.xml.XmlTag; import com.intellij.psi.xml.XmlTagChild; 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; import com.intellij.xml.XmlElementDescriptor; @@ -46,19 +43,18 @@ import org.jetbrains.idea.maven.dom.MavenSchemaProvider; import org.jetbrains.idea.maven.dom.model.MavenDomProfile; import org.jetbrains.idea.maven.dom.model.MavenDomProjectModel; import org.jetbrains.idea.maven.dom.model.MavenDomSettingsModel; +import org.jetbrains.idea.maven.model.MavenId; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.utils.MavenIcons; import org.jetbrains.idea.maven.vfs.MavenPropertiesVirtualFileSystem; import javax.swing.*; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Set; public class MavenPropertyPsiReference extends MavenPsiReference { - private static final Set BASEDIR_PROPS = - CollectionFactory.newTroveSet("basedir", "project.basedir", "pom.basedir", "baseUri", "project.baseUri", "pom.baseUri"); - private static final String TIMESTAMP_PROP = "maven.build.timestamp"; protected final MavenDomProjectModel myProjectDom; @@ -86,79 +82,103 @@ public class MavenPropertyPsiReference extends MavenPsiReference { return result; } - // precedence - // 1. user/system - // 2. settings.xml - // 3. current profile (if property is used inside one) - // 4. profiles.xml - // 5. profiles in pom.xml - // 6. pom.xml - // 7. parent profiles.xml - // 8. profiles in parent pom.xml - // 9. parent pom.xml - // 10. model + // See org.apache.maven.project.interpolation.AbstractStringBasedModelInterpolator.createValueSources() @Nullable protected PsiElement doResolve() { - if (myText.startsWith("env.")) { - return resolveEnvPropety(); + boolean hasPrefix = false; + String unprefixed = myText; + + if (myText.startsWith("pom.")) { + unprefixed = myText.substring("pom.".length()); + hasPrefix = true; + } + else if (myText.startsWith("project.")) { + unprefixed = myText.substring("project.".length()); + hasPrefix = true; } - if (BASEDIR_PROPS.contains(myText)) { - return resolveBasedir(); + MavenProject mavenProject = myMavenProject; + + while (unprefixed.startsWith("parent.")) { + if (unprefixed.equals("parent.groupId") || unprefixed.equals("parent.artifactId") || unprefixed.equals("parent.version") + || unprefixed.equals("parent.relativePath")) { + break; + } + + MavenId parentId = mavenProject.getParentId(); + if (parentId == null) return null; + + mavenProject = myProjectsManager.findProject(parentId); + if (mavenProject == null) return null; + + unprefixed = unprefixed.substring("parent.".length()); + } + + if (unprefixed.equals("basedir") || (hasPrefix && mavenProject == myMavenProject && unprefixed.equals("baseUri"))) { + return getBaseDir(mavenProject); } if (myText.equals(TIMESTAMP_PROP)) { return myElement; } - PsiElement result = resolveSystemPropety(); - if (result != null) return result; + if (hasPrefix) { + MavenDomProjectModel domProjectModel = MavenDomUtil.getMavenDomProjectModel(myProject, mavenProject.getFile()); + if (domProjectModel != null) { + PsiElement res = resolveModelProperty(domProjectModel, "project." + unprefixed, new HashSet()); + if (res != null) { + return res; + } + } + } + + // todo resolve properties from config. MavenDomProfile profile = DomUtil.findDomElement(myElement, MavenDomProfile.class); if (profile != null) { - result = MavenDomProjectProcessorUtils.searchPropertyInProfile(myText, profile); + PsiElement result = MavenDomProjectProcessorUtils.searchPropertyInProfile(myText, profile); if (result != null) return result; } - result = MavenDomProjectProcessorUtils.searchProperty(myText, myProjectDom, myProject); + PsiElement result = MavenDomProjectProcessorUtils.searchProperty(myText, myProjectDom, myProject); if (result != null) return result; + IProperty property = MavenDomUtil.findProperty(myProject, MavenPropertiesVirtualFileSystem.SYSTEM_PROPERTIES_FILE, myText); + if (property != null) return property.getPsiElement(); + + if (myText.startsWith("env.")) { + property = MavenDomUtil.findProperty(myProject, MavenPropertiesVirtualFileSystem.ENV_PROPERTIES_FILE, + myText.substring("env.".length())); + if (property != null) return property.getPsiElement(); + } + + String textWithEnv = "env." + myText; + + property = MavenDomUtil.findProperty(myProject, MavenPropertiesVirtualFileSystem.SYSTEM_PROPERTIES_FILE, textWithEnv); + if (property != null) return property.getPsiElement(); + + property = MavenDomUtil.findProperty(myProject, MavenPropertiesVirtualFileSystem.ENV_PROPERTIES_FILE, textWithEnv); + if (property != null) return property.getPsiElement(); + + if (!hasPrefix) { + MavenDomProjectModel domProjectModel = MavenDomUtil.getMavenDomProjectModel(myProject, mavenProject.getFile()); + if (domProjectModel != null) { + PsiElement res = resolveModelProperty(domProjectModel, "project." + unprefixed, new HashSet()); + if (res != null) { + return res; + } + } + } + if (myText.startsWith("settings.")) { return resolveSettingsModelProperty(); } - String modelProperty = myText; - if (!modelProperty.startsWith("project.")) { - modelProperty = modelProperty.startsWith("pom.") - ? "project." + modelProperty.substring("pom.".length()) - : "project." + modelProperty; - } - return resolveModelProperty(myProjectDom, modelProperty, new THashSet()); + return null; } - @Nullable - private PsiElement resolveSystemPropety() { - IProperty property = MavenDomUtil.findProperty(myProject, - MavenPropertiesVirtualFileSystem.SYSTEM_PROPERTIES_FILE, - myText); - return property == null ? null : property.getPsiElement(); - } - - @Nullable - private PsiElement resolveEnvPropety() { - IProperty property = MavenDomUtil.findProperty(myProject, - MavenPropertiesVirtualFileSystem.ENV_PROPERTIES_FILE, - myText.substring("env.".length())); - return property == null ? null : property.getPsiElement(); - } - - @Nullable - private PsiElement resolveBasedir() { - return getBaseDir(); - } - - private PsiDirectory getBaseDir() { - return PsiManager.getInstance(myProject).findDirectory(myMavenProject.getDirectoryFile()); + private PsiDirectory getBaseDir(@NotNull MavenProject mavenProject) { + return PsiManager.getInstance(myProject).findDirectory(mavenProject.getDirectoryFile()); } @Nullable @@ -178,8 +198,7 @@ public class MavenPropertyPsiReference extends MavenPsiReference { private PsiElement resolveModelProperty(@NotNull MavenDomProjectModel projectDom, @NotNull final String path, @NotNull final Set recursionGuard) { - if (recursionGuard.contains(projectDom)) return null; - recursionGuard.add(projectDom); + if (!recursionGuard.add(projectDom)) return null; if (!schemaHasProperty(MavenSchemaProvider.MAVEN_PROJECT_SCHEMA_URL, path)) return null; @@ -187,7 +206,7 @@ public class MavenPropertyPsiReference extends MavenPsiReference { if (result != null) return result; if (path.equals("project.groupId") || path.equals("project.version")) { - return MavenDomUtil.findTag(projectDom, path.replace("project.", "project.parent.")); + return MavenDomUtil.findTag(projectDom, "project.parent." + path.substring("project.".length())); } result = new MavenDomProjectProcessorUtils.DomParentProjectFileProcessor(myProjectsManager) { @@ -224,72 +243,98 @@ public class MavenPropertyPsiReference extends MavenPsiReference { return ArrayUtil.toObjectArray(result); } - protected void collectVariants(List result) { - collectStandardVariants(result); - collectProjectSchemaVariants(result); - collectSettingsXmlSchemaVariants(result); + protected void collectVariants(final List result) { + int prefixLength = 0; + if (myText.startsWith("pom.")) { + prefixLength = "pom.".length(); + } + else if (myText.startsWith("project.")) { + prefixLength = "project.".length(); + } + + MavenProject mavenProject = myMavenProject; + while (myText.startsWith("parent.", prefixLength)) { + MavenId parentId = mavenProject.getParentId(); + if (parentId == null) return; + + mavenProject = myProjectsManager.findProject(parentId); + if (mavenProject == null) return; + + prefixLength += "parent.".length(); + } + + final String prefix = prefixLength == 0 ? null : myText.substring(0, prefixLength); + + PsiDirectory baseDir = getBaseDir(mavenProject); + addVariant(result, "basedir", baseDir, prefix, MavenIcons.MAVEN_ICON); + if (prefix == null) { + result.add(createLookupElement(baseDir, "project.baseUri", MavenIcons.MAVEN_ICON)); + result.add(createLookupElement(baseDir, "pom.baseUri", MavenIcons.MAVEN_ICON)); + result.add(createLookupElement(myElement, TIMESTAMP_PROP, MavenIcons.MAVEN_ICON)); + } + + processSchema(MavenSchemaProvider.MAVEN_PROJECT_SCHEMA_URL, new SchemaProcessor() { + @Override + public Object process(@NotNull String property, XmlElementDescriptor descriptor) { + if (property.startsWith("project.")) { + addVariant(result, property.substring("project.".length()), descriptor, prefix, MavenIcons.MAVEN_ICON); + } + return null; + } + }); + + processSchema(MavenSchemaProvider.MAVEN_SETTINGS_SCHEMA_URL, new SchemaProcessor(){ + + @Override + public Object process(@NotNull String property, XmlElementDescriptor descriptor) { + result.add(createLookupElement(descriptor, property, MavenIcons.MAVEN_ICON)); + return null; + } + }); + collectPropertiesVariants(result); collectSystemEnvProperties(MavenPropertiesVirtualFileSystem.SYSTEM_PROPERTIES_FILE, null, result); collectSystemEnvProperties(MavenPropertiesVirtualFileSystem.ENV_PROPERTIES_FILE, "env.", result); } - private void collectStandardVariants(List result) { - PsiDirectory basedir = getBaseDir(); - for (String each : BASEDIR_PROPS) { - result.add(createLookupElement(basedir, each, MavenIcons.MAVEN_ICON)); + private static void addVariant(List result, String name, @NotNull Object element, @Nullable String prefix, @NotNull Icon icon) { + String nameWithPrefix; + if (prefix == null) { + nameWithPrefix = name; + result.add(createLookupElement(element, "pom." + name, icon)); + result.add(createLookupElement(element, "project." + name, icon)); + } + else { + nameWithPrefix = prefix + name; } - result.add(createLookupElement(myElement, TIMESTAMP_PROP, MavenIcons.MAVEN_ICON)); - } - private void collectProjectSchemaVariants(final List result) { - processSchema(MavenSchemaProvider.MAVEN_PROJECT_SCHEMA_URL, new CollectingSchemaProcessor(result) { - @Override - public Object process(@NotNull String property, XmlElementDescriptor descriptor) { - super.process(property, descriptor); - String prefix = "project."; - if (property.length() > prefix.length()) { - String unqualified = property.substring(prefix.length()); - super.process("pom." + unqualified, descriptor); - super.process(unqualified, descriptor); - } - return null; - } - }); - } - - private void collectSettingsXmlSchemaVariants(final List result) { - processSchema(MavenSchemaProvider.MAVEN_SETTINGS_SCHEMA_URL, new CollectingSchemaProcessor(result)); + result.add(createLookupElement(element, nameWithPrefix, icon)); } private void collectPropertiesVariants(final List result) { - Set properties = MavenDomProjectProcessorUtils.collectProperties(myProjectDom, myProject); - result.addAll(ContainerUtil.map(properties, new Function() { - public LookupElement fun(XmlTag xmlTag) { - return createLookupElement(xmlTag, xmlTag.getName()); - } - })); + for (XmlTag xmlTag : MavenDomProjectProcessorUtils.collectProperties(myProjectDom, myProject)) { + result.add(createLookupElement(xmlTag, xmlTag.getName(), PlatformIcons.PROPERTY_ICON)); + } } - private void collectSystemEnvProperties(String propertiesFileName, String prefix, List result) { + private void collectSystemEnvProperties(String propertiesFileName, @Nullable String prefix, List result) { PropertiesFile file = MavenDomUtil.getPropertiesFile(myProject, propertiesFileName); collectPropertiesFileVariants(file, prefix, result); } - protected void collectPropertiesFileVariants(@Nullable PropertiesFile file, String prefix, List result) { + protected static void collectPropertiesFileVariants(@Nullable PropertiesFile file, @Nullable String prefix, List result) { if (file == null) return; for (IProperty each : file.getProperties()) { String name = each.getKey(); - if (prefix != null) name = prefix + name; - result.add(createLookupElement(each, name)); + if (name != null) { + if (prefix != null) name = prefix + name; + result.add(createLookupElement(each, name, PlatformIcons.PROPERTY_ICON)); + } } } - private static LookupElement createLookupElement(Object element, String name) { - return createLookupElement(element, name, PlatformIcons.PROPERTY_ICON); - } - - private static LookupElement createLookupElement(Object element, String name, Icon icon) { + private static LookupElement createLookupElement(@NotNull Object element, @NotNull String name, @Nullable Icon icon) { return LookupElementBuilder.create(element, name) .setIcon(icon) .setPresentableText(name); @@ -314,9 +359,8 @@ public class MavenPropertyPsiReference extends MavenPsiReference { Set recursionGuard) { for (XmlElementDescriptor each : descriptors) { if (isCollection(each)) continue; + if (!recursionGuard.add(each)) continue; - if (recursionGuard.contains(each)) continue; - recursionGuard.add(each); try { String name = each.getName(); if (prefix != null) name = prefix + "." + name; @@ -335,7 +379,7 @@ public class MavenPropertyPsiReference extends MavenPsiReference { return null; } - private static boolean isCollection(XmlElementDescriptor each) { + private static boolean isCollection(XmlElementDescriptor each) { XmlTag declaration = (XmlTag)each.getDeclaration(); if (declaration != null) { XmlTag complexType = declaration.findFirstSubTag("xs:complexType"); @@ -356,17 +400,4 @@ public class MavenPropertyPsiReference extends MavenPsiReference { T process(@NotNull String property, XmlElementDescriptor descriptor); } - private static class CollectingSchemaProcessor implements SchemaProcessor { - private final List myResult; - - public CollectingSchemaProcessor(List result) { - myResult = result; - } - - @Nullable - public Object process(@NotNull String property, XmlElementDescriptor descriptor) { - myResult.add(createLookupElement(descriptor, property, MavenIcons.MAVEN_ICON)); - return null; - } - } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java index ce1cb6907529..12f38490477e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java @@ -64,7 +64,7 @@ public class MavenProjectReader { new THashSet()); } - private File getBaseDir(VirtualFile file) { + private static File getBaseDir(VirtualFile file) { return new File(file.getParent().getPath()); } @@ -109,7 +109,7 @@ public class MavenProjectReader { return new RawModelReadResult(result, problems, alwaysOnProfiles); } - MavenParent parent = new MavenParent(new MavenId(UNKNOWN, UNKNOWN, UNKNOWN), "../pom.xml"); + MavenParent parent; if (MavenJDOMUtil.hasChildByPath(xmlProject, "parent")) { parent = new MavenParent(new MavenId(MavenJDOMUtil.findChildValueByPath(xmlProject, "parent.groupId", UNKNOWN), MavenJDOMUtil.findChildValueByPath(xmlProject, "parent.artifactId", UNKNOWN), @@ -117,6 +117,9 @@ public class MavenProjectReader { MavenJDOMUtil.findChildValueByPath(xmlProject, "parent.relativePath", "../pom.xml")); result.setParent(parent); } + else { + parent = new MavenParent(new MavenId(UNKNOWN, UNKNOWN, UNKNOWN), "../pom.xml"); + } result.setMavenId(new MavenId(MavenJDOMUtil.findChildValueByPath(xmlProject, "groupId", parent.getMavenId().getGroupId()), MavenJDOMUtil.findChildValueByPath(xmlProject, "artifactId", UNKNOWN), @@ -336,7 +339,7 @@ public class MavenProjectReader { return true; } - private void collectProperties(Element xmlProperties, MavenModelBase mavenModelBase) { + private static void collectProperties(Element xmlProperties, MavenModelBase mavenModelBase) { if (xmlProperties == null) return; Properties props = mavenModelBase.getProperties(); @@ -469,13 +472,14 @@ public class MavenProjectReader { } } - public MavenProjectReaderResult generateSources(MavenEmbedderWrapper embedder, - MavenImportingSettings importingSettings, - VirtualFile file, - Collection profiles, - MavenConsole console) throws MavenProcessCanceledException { + @Nullable + public static MavenProjectReaderResult generateSources(MavenEmbedderWrapper embedder, + MavenImportingSettings importingSettings, + VirtualFile file, + Collection profiles, + MavenConsole console) throws MavenProcessCanceledException { try { - List goals = Arrays.asList(importingSettings.getUpdateFoldersOnImportPhase()); + List goals = Collections.singletonList(importingSettings.getUpdateFoldersOnImportPhase()); MavenServerExecutionResult result = embedder.execute(file, profiles, goals); if (result.projectData == null) return null; diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenFilteredPropertiesCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenFilteredPropertiesCompletionAndResolutionTest.java index 8abc1192fb12..f3a1c49b1b41 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenFilteredPropertiesCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenFilteredPropertiesCompletionAndResolutionTest.java @@ -488,11 +488,11 @@ public class MavenFilteredPropertiesCompletionAndResolutionTest extends MavenDom VirtualFile f = createProjectSubFile("res/foo1.properties", "foo1=${basedir}\n" + - "foo2=|baseUri|\n" + + "foo2=|pom.baseUri|\n" + "foo3=a(ve|rsion]"); assertNotNull(resolveReference(f, "basedir")); - assertNotNull(resolveReference(f, "baseUri")); + assertNotNull(resolveReference(f, "pom.baseUri")); assertNotNull(getReference(f, "ve|rsion")); } @@ -526,10 +526,10 @@ public class MavenFilteredPropertiesCompletionAndResolutionTest extends MavenDom VirtualFile f = createProjectSubFile("res/foo1.properties", "foo1=${basedir}\n" + - "foo2=|baseUri|"); + "foo2=|pom.baseUri|"); assert !(getReference(f, "basedir") instanceof MavenPropertyPsiReference); - assertNotNull(resolveReference(f, "baseUri")); + assertNotNull(resolveReference(f, "pom.baseUri")); } } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java index 1049aca502e2..dedbb32e2952 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java @@ -36,16 +36,6 @@ public class MavenPropertyCompletionAndResolutionTest extends MavenDomTestCase { "1"); } - public void testBasicResolution() throws Exception { - createProjectPom("test" + - "project" + - "1" + - - "${foo}"); - - assertUnresolved(myProjectPom); - } - public void testResolutionToProject() throws Exception { createProjectPom("test" + "project" + @@ -101,24 +91,6 @@ public class MavenPropertyCompletionAndResolutionTest extends MavenDomTestCase { "${pom.basedir}"); assertResolved(myProjectPom, baseDir); - - createProjectPom("testproject" + - "1" + - - "${baseUri}"); - - assertResolved(myProjectPom, baseDir); - } - - public void testBuiltInTimestampProperty() throws Exception { - createProjectPom("testproject" + - "1" + - - "${maven.build.timestamp}"); - - assertResolved(myProjectPom, findTag("project.name")); } public void testResolutionWithSeveralProperties() throws Exception { @@ -186,16 +158,6 @@ public class MavenPropertyCompletionAndResolutionTest extends MavenDomTestCase { assertUnresolved(myProjectPom); } - public void testResolutionToUnknownExtraProjectProperty() throws Exception { - createProjectPom("test" + - "project" + - "1" + - - "${project.version.bar}"); - - assertUnresolved(myProjectPom); - } - public void testResolutionToAbsentProjectProperty() throws Exception { createProjectPom("test" + "project" + @@ -745,14 +707,31 @@ public class MavenPropertyCompletionAndResolutionTest extends MavenDomTestCase { } public void testHighlightUnresolvedProperties() throws Exception { - createProjectPom("test" + - "project" + - "1" + - "${xxx}" + + createProjectPom("test\n" + + "child\n" + + "1\n" + + "${xxx}\n" + - "" + - " ${zzz}" + - ""); + "\n" + + " test\n" + + " parent\n" + + " 1\n" + + "\n" + + + "\n" + + " \n" + + "${zzz}\n" + + "${pom.maven.build.timestamp}\n" + + "${project.maven.build.timestamp}\n" + + "${parent.maven.build.timestamp}\n" + + "${baseUri}\n" + + "${unknownProperty}\n" + + "${project.version.bar}\n" + + + "${maven.build.timestamp}\n" + + "\n" + + "" + ); checkHighlighting(); } @@ -841,8 +820,10 @@ public class MavenPropertyCompletionAndResolutionTest extends MavenDomTestCase { "parentPomProfilesProp", "parentProfilesXmlProp"); assertContain(variants, "artifactId", "project.artifactId", "pom.artifactId"); - assertContain(variants, "basedir", "project.basedir", "pom.basedir", "baseUri", "project.baseUri", "pom.basedir"); + assertContain(variants, "basedir", "project.basedir", "pom.basedir", "project.baseUri", "pom.basedir"); + assert !variants.contains("baseUri"); assertContain(variants, "maven.build.timestamp"); + assert !variants.contains("project.maven.build.timestamp"); assertContain(variants, "settingsXmlProp"); assertContain(variants, "settings.localRepository"); assertContain(variants, "user.home", "env." + getEnvVar()); From cfa4a44c729f681fde4fec8a8a516ab47a2a57bc Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 20 Feb 2012 11:38:49 +0100 Subject: [PATCH 04/79] IDEA-81458 (CVS annotate doesn't work ( using CVSNT )) --- .../intellij/cvsSupport2/annotate/CvsAnnotationProvider.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/annotate/CvsAnnotationProvider.java b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/annotate/CvsAnnotationProvider.java index ea66ed16116a..9a57ee13d916 100644 --- a/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/annotate/CvsAnnotationProvider.java +++ b/plugins/cvs/cvs-plugin/src/com/intellij/cvsSupport2/annotate/CvsAnnotationProvider.java @@ -37,6 +37,7 @@ import com.intellij.openapi.vcs.annotate.FileAnnotation; import com.intellij.openapi.vcs.history.VcsFileRevision; import com.intellij.openapi.vcs.history.VcsRevisionNumber; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -48,7 +49,7 @@ import java.util.*; public class CvsAnnotationProvider implements AnnotationProvider{ @NonNls private static final String INVALID_OPTION_F = "invalid option -- F"; - @NonNls private static final String USAGE_CVSNTSRV_SERVER = "Usage: cvsntsrv server"; + @NonNls private static final String USAGE_CVSNTSRV_SERVER = "Usage: cvs"; private final Project myProject; private final CvsHistoryProvider myCvsHistoryProvider; @@ -194,7 +195,7 @@ public class CvsAnnotationProvider implements AnnotationProvider{ } public byte[] getContent() throws IOException, VcsException { - return new byte[0]; + return ArrayUtil.EMPTY_BYTE_ARRAY; } } From 3882810dbb07644add5ec05035c822d3502bc254 Mon Sep 17 00:00:00 2001 From: Dmitry Boulytchev Date: Mon, 20 Feb 2012 15:07:25 +0400 Subject: [PATCH 05/79] Intermodule class delete test (compile server). --- .../compileServer/incremental/imports/classImport/.idea/.name | 1 + 1 file changed, 1 insertion(+) create mode 100644 java/java-tests/testData/compileServer/incremental/imports/classImport/.idea/.name diff --git a/java/java-tests/testData/compileServer/incremental/imports/classImport/.idea/.name b/java/java-tests/testData/compileServer/incremental/imports/classImport/.idea/.name new file mode 100644 index 000000000000..7cbbb5be57eb --- /dev/null +++ b/java/java-tests/testData/compileServer/incremental/imports/classImport/.idea/.name @@ -0,0 +1 @@ +classImport \ No newline at end of file From d4bb898c5cadb6a4fb80675d4ac125003674ed4d Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Mon, 20 Feb 2012 15:17:40 +0400 Subject: [PATCH 06/79] IDEA-57206 (Maven: resolve and complete with external/specified properties) --- .../references/MavenPropertyPsiReference.java | 37 ++++++++++++++++++- .../idea/maven/server/MavenServerManager.java | 9 +---- .../jetbrains/idea/maven/utils/MavenUtil.java | 23 ++++++++++++ ...enPropertyCompletionAndResolutionTest.java | 6 --- 4 files changed, 60 insertions(+), 15 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 25defa028289..fa99ea1c3644 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 @@ -43,9 +43,12 @@ import org.jetbrains.idea.maven.dom.MavenSchemaProvider; import org.jetbrains.idea.maven.dom.model.MavenDomProfile; import org.jetbrains.idea.maven.dom.model.MavenDomProjectModel; import org.jetbrains.idea.maven.dom.model.MavenDomSettingsModel; +import org.jetbrains.idea.maven.execution.MavenRunner; +import org.jetbrains.idea.maven.execution.MavenRunnerSettings; import org.jetbrains.idea.maven.model.MavenId; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.utils.MavenIcons; +import org.jetbrains.idea.maven.utils.MavenUtil; import org.jetbrains.idea.maven.vfs.MavenPropertiesVirtualFileSystem; import javax.swing.*; @@ -133,6 +136,13 @@ public class MavenPropertyPsiReference extends MavenPsiReference { } // todo resolve properties from config. + MavenRunnerSettings runnerSettings = MavenRunner.getInstance(myProject).getSettings(); + if (runnerSettings.getMavenProperties().containsKey(myText) || runnerSettings.getVmOptions().contains("-D" + myText + '=')) { + return myElement; + } + if (MavenUtil.getPropertiesFromMavenOpts().containsKey(myText)) { + return myElement; + } MavenDomProfile profile = DomUtil.findDomElement(myElement, MavenDomProfile.class); if (profile != null) { @@ -270,7 +280,7 @@ public class MavenPropertyPsiReference extends MavenPsiReference { if (prefix == null) { result.add(createLookupElement(baseDir, "project.baseUri", MavenIcons.MAVEN_ICON)); result.add(createLookupElement(baseDir, "pom.baseUri", MavenIcons.MAVEN_ICON)); - result.add(createLookupElement(myElement, TIMESTAMP_PROP, MavenIcons.MAVEN_ICON)); + result.add(LookupElementBuilder.create(TIMESTAMP_PROP).setIcon(MavenIcons.MAVEN_ICON)); } processSchema(MavenSchemaProvider.MAVEN_PROJECT_SCHEMA_URL, new SchemaProcessor() { @@ -284,7 +294,6 @@ public class MavenPropertyPsiReference extends MavenPsiReference { }); processSchema(MavenSchemaProvider.MAVEN_SETTINGS_SCHEMA_URL, new SchemaProcessor(){ - @Override public Object process(@NotNull String property, XmlElementDescriptor descriptor) { result.add(createLookupElement(descriptor, property, MavenIcons.MAVEN_ICON)); @@ -295,6 +304,30 @@ public class MavenPropertyPsiReference extends MavenPsiReference { collectPropertiesVariants(result); collectSystemEnvProperties(MavenPropertiesVirtualFileSystem.SYSTEM_PROPERTIES_FILE, null, result); collectSystemEnvProperties(MavenPropertiesVirtualFileSystem.ENV_PROPERTIES_FILE, "env.", result); + + MavenRunnerSettings runnerSettings = MavenRunner.getInstance(myProject).getSettings(); + for (String prop : runnerSettings.getMavenProperties().keySet()) { + if (!isResultAlreadyContains(result, prop)) { + result.add(LookupElementBuilder.create(prop).setIcon(PlatformIcons.PROPERTY_ICON)); + } + } + for (String prop : MavenUtil.getPropertiesFromMavenOpts().keySet()) { + if (!isResultAlreadyContains(result, prop)) { + result.add(LookupElementBuilder.create(prop).setIcon(PlatformIcons.PROPERTY_ICON)); + } + } + } + + private static boolean isResultAlreadyContains(List results, String propertyName) { + for (Object result : results) { + if (result instanceof LookupElement) { + if (((LookupElement)result).getLookupString().equals(propertyName)) { + return true; + } + } + } + + return false; } private static void addVariant(List result, String name, @NotNull Object element, @Nullable String prefix, @NotNull Icon icon) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java index cd96e0e3f10a..44a110f2f2bb 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java @@ -54,6 +54,7 @@ import org.jetbrains.idea.maven.project.MavenGeneralSettings; import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenLog; import org.jetbrains.idea.maven.utils.MavenProgressIndicator; +import org.jetbrains.idea.maven.utils.MavenUtil; import java.io.File; import java.nio.charset.Charset; @@ -178,13 +179,7 @@ public class MavenServerManager extends RemoteObjectWrapper { params.setMainClass(MAIN_CLASS); Map defs = new THashMap(); - - String mavenOpts = System.getenv("MAVEN_OPTS"); - if (mavenOpts != null) { - ParametersList mavenOptsList = new ParametersList(); - mavenOptsList.addParametersString(mavenOpts); - defs.putAll(mavenOptsList.getProperties()); - } + defs.putAll(MavenUtil.getPropertiesFromMavenOpts()); // pass ssl-related options for (Map.Entry each : System.getProperties().entrySet()) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java index ddcff2edc120..9f6faff1080e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenUtil.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.utils; import com.intellij.codeInsight.template.TemplateManager; import com.intellij.codeInsight.template.impl.TemplateImpl; +import com.intellij.execution.configurations.ParametersList; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.notification.Notification; @@ -80,6 +81,28 @@ public class MavenUtil { public static final String LIB_DIR = "lib"; public static final String SUPER_POM_PATH = "org/apache/maven/project/" + MavenConstants.SUPER_POM_XML; + private static volatile Map ourPropertiesFromMvnOpts; + + public static Map getPropertiesFromMavenOpts() { + Map res = ourPropertiesFromMvnOpts; + if (res == null) { + String mavenOpts = System.getenv("MAVEN_OPTS"); + if (mavenOpts != null) { + ParametersList mavenOptsList = new ParametersList(); + mavenOptsList.addParametersString(mavenOpts); + res = mavenOptsList.getProperties(); + } + else { + res = Collections.emptyMap(); + } + + ourPropertiesFromMvnOpts = res; + } + + return res; + } + + public static void invokeLater(Project p, Runnable r) { invokeLater(p, ModalityState.defaultModalityState(), r); } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java index dedbb32e2952..9dd98204eb75 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/dom/MavenPropertyCompletionAndResolutionTest.java @@ -712,12 +712,6 @@ public class MavenPropertyCompletionAndResolutionTest extends MavenDomTestCase { "1\n" + "${xxx}\n" + - "\n" + - " test\n" + - " parent\n" + - " 1\n" + - "\n" + - "\n" + " \n" + "${zzz}\n" + From 9a9afe131f3a4e66e8bf33be9786ca1cb22e2029 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Mon, 20 Feb 2012 11:52:26 +0100 Subject: [PATCH 07/79] Maven: profiles should not be inherited (it causes inheriting modules from profiles) (IDEA-81348) [refixed] --- .../maven/project/MavenProjectReader.java | 9 ++- .../idea/maven/server/MavenServerManager.java | 10 +-- .../importing/StructureImportingTest.java | 53 +++----------- .../maven/project/MavenProjectReaderTest.java | 71 ++++++++++++++----- 4 files changed, 75 insertions(+), 68 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java index 12f38490477e..870155863984 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/MavenProjectReader.java @@ -425,7 +425,14 @@ public class MavenProjectReader { MavenProjectProblem.ProblemType.PARENT)); } - return MavenServerManager.getInstance().assembleInheritance(model, parentModel); + model = MavenServerManager.getInstance().assembleInheritance(model, parentModel); + + // todo: it is a quick-hack here - we add inherited dummy profiles to correctly collect activated profiles in 'applyProfiles'. + List profiles = model.getProfiles(); + for (MavenProfile each : parentModel.getProfiles()) { + addProfileIfDoesNotExist(new MavenProfile(each.getId(), each.getSource()), profiles); + } + return model; } finally { recursionGuard.remove(file); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java index 44a110f2f2bb..8f1583e2e47e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/server/MavenServerManager.java @@ -35,16 +35,13 @@ import com.intellij.openapi.projectRoots.SimpleJavaSdkType; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.ShutDownTracker; import com.intellij.openapi.util.SystemInfo; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.Alarm; import com.intellij.util.PathUtil; import com.intellij.util.SmartList; import com.intellij.util.SystemProperties; import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashMap; -import gnu.trove.THashSet; import org.apache.lucene.search.Query; -import org.jdom.Element; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.model.MavenId; @@ -167,10 +164,7 @@ public class MavenServerManager extends RemoteObjectWrapper { params.setWorkingDirectory(PathManager.getBinPath()); final ArrayList classPath = new ArrayList(); - ContainerUtil.addIfNotNull(PathUtil.getJarPathForClass(NotNull.class), classPath); - ContainerUtil.addIfNotNull(PathUtil.getJarPathForClass(StringUtil.class), classPath); - ContainerUtil.addIfNotNull(PathUtil.getJarPathForClass(THashSet.class), classPath); - ContainerUtil.addIfNotNull(PathUtil.getJarPathForClass(Element.class), classPath); + classPath.addAll(PathManager.getUtilJars()); ContainerUtil.addIfNotNull(PathUtil.getJarPathForClass(Query.class), classPath); params.getClassPath().add(PathManager.getResourceRoot(getClass(), "/messages/CommonBundle.properties")); params.getClassPath().addAll(classPath); @@ -203,7 +197,7 @@ public class MavenServerManager extends RemoteObjectWrapper { } params.getVMParametersList().addParametersString("-Xmx512m"); - //params.getVMParametersList().addParametersString("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5009"); + //params.getVMParametersList().addParametersString("-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5009"); return params; } diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java index fb31c457f070..16f6fc4e89d6 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/importing/StructureImportingTest.java @@ -24,7 +24,6 @@ import com.intellij.openapi.roots.ModuleRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; import org.jetbrains.idea.maven.MavenImportingTestCase; -import org.jetbrains.idea.maven.model.MavenId; import org.jetbrains.idea.maven.project.MavenProject; import java.io.File; @@ -108,36 +107,6 @@ public class StructureImportingTest extends MavenImportingTestCase { assertModules("project", "m1", "m2"); } - public void testModulesAreNotInheritedFromParentsProfiles() throws Exception { - createProjectPom("test" + - "project" + - "1" + - "pom" + - - "\n" + - " \n" + - " one\n" + - " " + - " m" + - " " + - " " + - ""); - - createModulePom("m", "test" + - "m" + - "1" + - "" + - " test" + - " project" + - " 1" + - ""); - - importProjectWithProfiles("one"); - - assertSize(1, myProjectsManager.findProject(new MavenId("test", "project", "1")).getModulePaths()); - assertSize(0, myProjectsManager.findProject(new MavenId("test", "m", "1")).getModulePaths()); - } - public void testModulesWithSlashesAtTheEnds() throws Exception { createProjectPom("test" + "project" + @@ -375,18 +344,18 @@ public class StructureImportingTest extends MavenImportingTestCase { if (!hasMavenInstallation()) return; final VirtualFile parent = createModulePom("parent", - "test" + - "parent" + - "1" + - "pom" + + "test" + + "parent" + + "1" + + "pom" + - "" + - " " + - " junit" + - " junit" + - " 4.0" + - " " + - ""); + "" + + " " + + " junit" + + " junit" + + " 4.0" + + " " + + ""); executeGoal("parent", "install"); new WriteAction() { diff --git a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java index 912f8b9d1f5a..5f0b3ec4b79d 100644 --- a/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java +++ b/plugins/maven/src/test/java/org/jetbrains/idea/maven/project/MavenProjectReaderTest.java @@ -23,11 +23,10 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.ArrayUtil; +import com.intellij.util.Function; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.idea.maven.MavenTestCase; -import org.jetbrains.idea.maven.model.MavenId; -import org.jetbrains.idea.maven.model.MavenModel; -import org.jetbrains.idea.maven.model.MavenProjectProblem; -import org.jetbrains.idea.maven.model.MavenResource; +import org.jetbrains.idea.maven.model.*; import org.jetbrains.idea.maven.utils.MavenUtil; import java.io.File; @@ -494,7 +493,7 @@ public class MavenProjectReaderTest extends MavenTestCase { assertEquals("${prop2}", p.getPackaging()); } - public void testHandlingRecursionProperlyAndDoNotForgetCoClearRecursionGuard() throws Exception { + public void testHandlingRecursionProprielyAndDoNotForgetCoClearRecursionGuard() throws Exception { File repositoryPath = new File(myDir, "repository"); setRepositoryPath(repositoryPath.getPath()); @@ -1000,6 +999,44 @@ public class MavenProjectReaderTest extends MavenTestCase { assertEquals("xxx", p.getBuild().getFinalName()); } + + public void testInheritingParentProfiles() throws Exception { + createProjectPom("test" + + "parent" + + "1" + + + "" + + " " + + " profileFromParent" + + " " + + ""); + + VirtualFile module = createModulePom("module", + "test" + + "module" + + "1" + + + "" + + " test" + + " parent" + + " 1" + + "" + + + "" + + " " + + " profileFromChild" + + " " + + ""); + + MavenModel p = readProject(module); + assertOrderedElementsAreEqual(ContainerUtil.map(p.getProfiles(), new Function() { + @Override + public Object fun(MavenProfile profile) { + return profile.getId(); + } + }), "profileFromChild", "profileFromParent"); + } + public void testCorrectlyCollectProfilesFromDifferentSources() throws Exception { createProjectPom("test" + "parent" + @@ -1013,9 +1050,9 @@ public class MavenProjectReaderTest extends MavenTestCase { ""); final VirtualFile parentProfiles = createProfilesXml("" + - " profile" + - " parentProfiles" + - ""); + " profile" + + " parentProfiles" + + ""); VirtualFile module = createModulePom("module", "test" + @@ -1043,10 +1080,10 @@ public class MavenProjectReaderTest extends MavenTestCase { ""); final VirtualFile profiles = createProfilesXml("module", - "" + - " profile" + - " profiles" + - ""); + "" + + " profile" + + " profiles" + + ""); MavenModel p = readProject(module); assertEquals(1, p.getProfiles().size()); @@ -1079,8 +1116,8 @@ public class MavenProjectReaderTest extends MavenTestCase { p = readProject(module); assertEquals(1, p.getProfiles().size()); - assertEquals("settings", p.getProfiles().get(0).getModules().get(0)); - assertEquals("settings.xml", p.getProfiles().get(0).getSource()); + assertEmpty("parent", p.getProfiles().get(0).getModules()); + assertEquals("pom", p.getProfiles().get(0).getSource()); createProjectPom("test" + "parent" + @@ -1088,8 +1125,8 @@ public class MavenProjectReaderTest extends MavenTestCase { p = readProject(module); assertEquals(1, p.getProfiles().size()); - assertEquals("settings", p.getProfiles().get(0).getModules().get(0)); - assertEquals("settings.xml", p.getProfiles().get(0).getSource()); + assertEmpty("parentProfiles", p.getProfiles().get(0).getModules()); + assertEquals("profiles.xml", p.getProfiles().get(0).getSource()); new WriteCommandAction.Simple(myProject) { @Override @@ -1101,7 +1138,7 @@ public class MavenProjectReaderTest extends MavenTestCase { p = readProject(module); assertEquals(1, p.getProfiles().size()); - assertEquals("settings", p.getProfiles().get(0).getModules().get(0)); + assertEmpty("settings", p.getProfiles().get(0).getModules()); assertEquals("settings.xml", p.getProfiles().get(0).getSource()); } From b46ace0254ff178c76fb185dcd5cd118a2922d87 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 20 Feb 2012 12:25:08 +0100 Subject: [PATCH 08/79] allow to share editors options within a session --- .../TransferableFileEditorState.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 platform/platform-api/src/com/intellij/openapi/fileEditor/TransferableFileEditorState.java diff --git a/platform/platform-api/src/com/intellij/openapi/fileEditor/TransferableFileEditorState.java b/platform/platform-api/src/com/intellij/openapi/fileEditor/TransferableFileEditorState.java new file mode 100644 index 000000000000..3b4322fdfb1e --- /dev/null +++ b/platform/platform-api/src/com/intellij/openapi/fileEditor/TransferableFileEditorState.java @@ -0,0 +1,49 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.fileEditor; + +import java.util.Map; + +/** + * This interface extends FileEditorState interface to sync some editor's options + * Example: + * we have image editor and open image files, image by image. We'd like to set default zoom + * factor to 1:1, but this is not the default value for this option. So, we can use methods in this + * interface to store these options somewhere and apply them within the session (the time we need these options). + * + * @author Konstantin Bulenkov + */ +public interface TransferableFileEditorState extends FileEditorState { + /** + * Returns unique editor ID + * + * @return unique editor ID + */ + String getEditorId(); + + /** + * Options name-value string mapping. Example: {{"zoomFactor": "1:1"}, {"transparentBackground": "false"}} + * + * @return name-value string mapping + */ + Map getTransferableOptions(); + + /** + * Applies options to the editor + * @param options name-value string mapping + */ + void setTransferableOptions(Map options); +} From 90ace053d0de9cb88439e3b755d0a0207f3d17ea Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 20 Feb 2012 12:25:56 +0100 Subject: [PATCH 09/79] support TransferableFileEditorState in dir diff --- .../ide/diff/VirtualFileDiffElement.java | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/diff/VirtualFileDiffElement.java b/platform/platform-impl/src/com/intellij/ide/diff/VirtualFileDiffElement.java index c1aeecb5e5eb..422fb29338da 100644 --- a/platform/platform-impl/src/com/intellij/ide/diff/VirtualFileDiffElement.java +++ b/platform/platform-impl/src/com/intellij/ide/diff/VirtualFileDiffElement.java @@ -16,6 +16,7 @@ package com.intellij.ide.diff; import com.intellij.ide.presentation.VirtualFilePresentation; +import com.intellij.ide.util.PropertiesComponent; import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.application.AccessToken; @@ -26,9 +27,7 @@ import com.intellij.openapi.diff.DiffRequest; import com.intellij.openapi.editor.Document; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.fileChooser.FileChooserFactory; -import com.intellij.openapi.fileEditor.FileDocumentManager; -import com.intellij.openapi.fileEditor.FileEditor; -import com.intellij.openapi.fileEditor.FileEditorProvider; +import com.intellij.openapi.fileEditor.*; import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.project.Project; @@ -47,7 +46,9 @@ import javax.swing.*; import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.Callable; /** @@ -149,11 +150,47 @@ public class VirtualFileDiffElement extends DiffElement { if (providers.length > 0) { myFileEditor = providers[0].createEditor(project, getValue()); myEditorProvider = providers[0]; + setCustomState(myFileEditor); return myFileEditor.getComponent(); } return null; } + private static void setCustomState(FileEditor editor) { + final FileEditorState state = editor.getState(FileEditorStateLevel.FULL); + if (state instanceof TransferableFileEditorState) { + final TransferableFileEditorState editorState = (TransferableFileEditorState)state; + final String id = editorState.getEditorId(); + final HashMap options = new HashMap(); + final PropertiesComponent properties = PropertiesComponent.getInstance(); + for (String key : editorState.getTransferableOptions().keySet()) { + final String value = properties.getValue(getKey(id, key)); + if (value != null) { + options.put(key, value); + } + } + editorState.setTransferableOptions(options); + editor.setState(editorState); + } + } + + private static void saveCustomState(FileEditor editor) { + final FileEditorState state = editor.getState(FileEditorStateLevel.FULL); + if (state instanceof TransferableFileEditorState) { + final TransferableFileEditorState editorState = (TransferableFileEditorState)state; + final String id = editorState.getEditorId(); + final PropertiesComponent properties = PropertiesComponent.getInstance(); + final Map options = editorState.getTransferableOptions(); + for (String key : options.keySet()) { + properties.setValue(getKey(id, key), options.get(key)); + } + } + } + + private static String getKey(String editorId, String key) { + return "dir.diff.editor.options." + editorId + "." + key; + } + @Override protected DiffRequest createRequestForBinaries(Project project, @NotNull VirtualFile src, @NotNull VirtualFile trg) { if (FileEditorProviderManager.getInstance().getProviders(project, src).length > 0 @@ -168,6 +205,7 @@ public class VirtualFileDiffElement extends DiffElement { public void disposeViewComponent() { super.disposeViewComponent(); if (myFileEditor != null && myEditorProvider != null) { + saveCustomState(myFileEditor); myEditorProvider.disposeEditor(myFileEditor); myFileEditor = null; myEditorProvider = null; From ce96b023e27ed72b7f6ace3e19ecbd2d335cd5ea Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 20 Feb 2012 12:26:48 +0100 Subject: [PATCH 10/79] support TransferableFileEditorState in Image editor --- .../editor/impl/ImageFileEditorImpl.java | 25 +---- .../editor/impl/ImageFileEditorState.java | 93 +++++++++++++++++++ 2 files changed, 96 insertions(+), 22 deletions(-) create mode 100644 images/src/org/intellij/images/editor/impl/ImageFileEditorState.java diff --git a/images/src/org/intellij/images/editor/impl/ImageFileEditorImpl.java b/images/src/org/intellij/images/editor/impl/ImageFileEditorImpl.java index be3c13575781..1c2b6c45ffbd 100644 --- a/images/src/org/intellij/images/editor/impl/ImageFileEditorImpl.java +++ b/images/src/org/intellij/images/editor/impl/ImageFileEditorImpl.java @@ -33,7 +33,6 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.beans.PropertyChangeListener; -import java.io.Serializable; /** * Image Editor. @@ -87,9 +86,9 @@ final class ImageFileEditorImpl extends UserDataHolderBase implements ImageFileE if (state instanceof ImageFileEditorState) { ImageFileEditorState editorState = (ImageFileEditorState) state; ImageZoomModel zoomModel = imageEditor.getZoomModel(); - imageEditor.setTransparencyChessboardVisible(editorState.backgroundVisible); - imageEditor.setGridVisible(editorState.gridVisible); - zoomModel.setZoomFactor(editorState.zoomFactor); + imageEditor.setTransparencyChessboardVisible(editorState.isBackgroundVisible()); + imageEditor.setGridVisible(editorState.isGridVisible()); + zoomModel.setZoomFactor(editorState.getZoomFactor()); } } @@ -134,22 +133,4 @@ final class ImageFileEditorImpl extends UserDataHolderBase implements ImageFileE public ImageEditor getImageEditor() { return imageEditor; } - - private static class ImageFileEditorState implements FileEditorState, Serializable { - private static final long serialVersionUID = -4470317464706072486L; - - private final boolean backgroundVisible; - private final boolean gridVisible; - private final double zoomFactor; - - private ImageFileEditorState(boolean backgroundVisible, boolean gridVisible, double zoomFactor) { - this.backgroundVisible = backgroundVisible; - this.gridVisible = gridVisible; - this.zoomFactor = zoomFactor; - } - - public boolean canBeMergedWith(FileEditorState otherState, FileEditorStateLevel level) { - return otherState instanceof ImageFileEditorState; - } - } } diff --git a/images/src/org/intellij/images/editor/impl/ImageFileEditorState.java b/images/src/org/intellij/images/editor/impl/ImageFileEditorState.java new file mode 100644 index 000000000000..ba2afd4d0e95 --- /dev/null +++ b/images/src/org/intellij/images/editor/impl/ImageFileEditorState.java @@ -0,0 +1,93 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.intellij.images.editor.impl; + +import com.intellij.openapi.fileEditor.FileEditorState; +import com.intellij.openapi.fileEditor.FileEditorStateLevel; +import com.intellij.openapi.fileEditor.TransferableFileEditorState; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** + * @author Konstantin Bulenkov + */ +public class ImageFileEditorState implements TransferableFileEditorState, Serializable { + private static final long serialVersionUID = -4470317464706072486L; + public static final String IMAGE_EDITOR_ID = "ImageEditor"; + public static final String BACKGROUND_VISIBLE_OPTION = "backgroundVisible"; + public static final String GRID_VISIBLE_OPTION = "gridVisible"; + public static final String ZOOM_FACTOR_OPTION = "zoomFactor"; + + private boolean backgroundVisible; + private boolean gridVisible; + private double zoomFactor; + + ImageFileEditorState(boolean backgroundVisible, boolean gridVisible, double zoomFactor) { + this.backgroundVisible = backgroundVisible; + this.gridVisible = gridVisible; + this.zoomFactor = zoomFactor; + } + + public boolean canBeMergedWith(FileEditorState otherState, FileEditorStateLevel level) { + return otherState instanceof ImageFileEditorState; + } + + public boolean isBackgroundVisible() { + return backgroundVisible; + } + + public boolean isGridVisible() { + return gridVisible; + } + + public double getZoomFactor() { + return zoomFactor; + } + + @Override + public String getEditorId() { + return IMAGE_EDITOR_ID; + } + + @Override + public Map getTransferableOptions() { + final HashMap map = new HashMap(); + map.put(BACKGROUND_VISIBLE_OPTION, String.valueOf(backgroundVisible)); + map.put(GRID_VISIBLE_OPTION, String.valueOf(gridVisible)); + map.put(ZOOM_FACTOR_OPTION, String.valueOf(zoomFactor)); + return map; + } + + @Override + public void setTransferableOptions(Map options) { + String o = options.get(BACKGROUND_VISIBLE_OPTION); + if (o != null) { + backgroundVisible = Boolean.valueOf(o); + } + + o = options.get(GRID_VISIBLE_OPTION); + if (o != null) { + gridVisible = Boolean.valueOf(o); + } + + o = options.get(ZOOM_FACTOR_OPTION); + if (o != null) { + zoomFactor = Double.valueOf(o); + } + } +} From 5ee9a60ceec5bdf46c1bb0d7c78f591039594ecd Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Mon, 20 Feb 2012 15:50:13 +0400 Subject: [PATCH 11/79] Decoration --- .../designSurface/ComponentDecorator.java | 16 +++++++++++++--- .../designer/designSurface/DecorationLayer.java | 12 +++++------- .../selection/NonResizeSelectionDecorator.java | 4 ++-- .../designSurface/selection/ResizePoint.java | 4 ++-- .../selection/ResizeSelectionDecorator.java | 1 + .../designSurface/tools/SelectionTracker.java | 2 +- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/ComponentDecorator.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/ComponentDecorator.java index 82202b6b3fb9..1ac34f7f0643 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/ComponentDecorator.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/ComponentDecorator.java @@ -24,9 +24,19 @@ import java.awt.*; /** * @author Alexander Lobas */ -public interface ComponentDecorator { +public abstract class ComponentDecorator { @Nullable - InputTool findTargetTool(DecorationLayer layer, RadComponent component, int x, int y); + public abstract InputTool findTargetTool(DecorationLayer layer, RadComponent component, int x, int y); - void decorate(DecorationLayer layer, Graphics2D g, RadComponent component); + public void decorate(DecorationLayer layer, Graphics2D host, RadComponent component) { + Graphics2D child = (Graphics2D)host.create(); + try { + paint(layer, child, component); + } + finally { + child.dispose(); + } + } + + protected abstract void paint(DecorationLayer layer, Graphics2D g, RadComponent component); } \ No newline at end of file diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DecorationLayer.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DecorationLayer.java index db8e76a60681..3c23fa4cd134 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DecorationLayer.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DecorationLayer.java @@ -32,11 +32,6 @@ public class DecorationLayer extends JComponent { myArea = area; } - @Override - public void paint(Graphics g) { - painSelection((Graphics2D)g); - } - @Nullable public InputTool findTargetTool(int x, int y) { for (RadComponent component : myArea.getSelection()) { @@ -49,12 +44,15 @@ public class DecorationLayer extends JComponent { return null; } + @Override + public void paint(Graphics g) { + painSelection((Graphics2D)g); + } + private void painSelection(Graphics2D g) { for (RadComponent component : myArea.getSelection()) { ComponentDecorator decorator = getDecorator(component); - // TODO: set component clipping decorator.decorate(this, g, component); - // TODO: restore Graphics state: color, font, stroke etc. } } diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/NonResizeSelectionDecorator.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/NonResizeSelectionDecorator.java index 73cb484afab0..caa46f272517 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/NonResizeSelectionDecorator.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/NonResizeSelectionDecorator.java @@ -26,7 +26,7 @@ import java.awt.*; /** * @author Alexander Lobas */ -public class NonResizeSelectionDecorator implements ComponentDecorator { +public class NonResizeSelectionDecorator extends ComponentDecorator { private final Color myColor; private final int myLineWidth; @@ -53,7 +53,7 @@ public class NonResizeSelectionDecorator implements ComponentDecorator { } @Override - public void decorate(DecorationLayer layer, Graphics2D g, RadComponent component) { + protected void paint(DecorationLayer layer, Graphics2D g, RadComponent component) { g.setColor(myColor); if (myLineWidth > 1) { g.setStroke(new BasicStroke(myLineWidth)); diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizePoint.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizePoint.java index e71cb1b1d334..9bc50ad7a3cd 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizePoint.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizePoint.java @@ -25,7 +25,7 @@ import java.awt.*; /** * @author Alexander Lobas */ -public abstract class ResizePoint implements ComponentDecorator { +public abstract class ResizePoint extends ComponentDecorator { private static final int DEFAULT_SIZE = 5; private final Color myColor; private final Color myBorder; @@ -52,7 +52,7 @@ public abstract class ResizePoint implements ComponentDecorator { } @Override - public void decorate(DecorationLayer layer, Graphics2D g, RadComponent component) { + protected void paint(DecorationLayer layer, Graphics2D g, RadComponent component) { Point location = getLocation(layer, component); g.setColor(myColor); diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizeSelectionDecorator.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizeSelectionDecorator.java index 941e10279109..8de6308c973f 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizeSelectionDecorator.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/selection/ResizeSelectionDecorator.java @@ -15,6 +15,7 @@ */ package com.intellij.designer.designSurface.selection; +import com.intellij.designer.designSurface.ComponentDecorator; import com.intellij.designer.designSurface.DecorationLayer; import com.intellij.designer.designSurface.tools.InputTool; import com.intellij.designer.model.RadComponent; diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java index ba1d92b4b3fc..66583f680e88 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/tools/SelectionTracker.java @@ -75,7 +75,7 @@ public class SelectionTracker extends TargetingTool { } private void performSelection() { - if (mySelected) { + if (mySelected || myArea.isTree()) { return; } mySelected = true; From 33016c175cecea268f8454c5eb06fc6baa831849 Mon Sep 17 00:00:00 2001 From: Dmitry Boulytchev Date: Mon, 20 Feb 2012 15:59:48 +0400 Subject: [PATCH 12/79] Fixed bug in affecting subclasses (compile server). --- .idea/compiler.xml | 1 + .../changeExtends2/.idea/.name | 1 + .../changeExtends2/.idea/compiler.xml | 21 + .../.idea/copyright/profiles_settings.xml | 5 + .../changeExtends2/.idea/encodings.xml | 5 + .../changeExtends2/.idea/misc.xml | 23 + .../changeExtends2/.idea/modules.xml | 9 + .../.idea/scopes/scope_settings.xml | 5 + .../changeExtends2/.idea/uiDesigner.xml | 125 +++++ .../changeExtends2/.idea/vcs.xml | 7 + .../changeExtends2/.idea/workspace.xml | 331 +++++++++++ .../changeExtends2/ChangeExtends2.iml | 12 + .../changeExtends2/Victim.java.new | 12 + .../changeExtends2/src/Main.java | 20 + .../changeExtends2/src/Puper.java | 9 + .../changeExtends2/src/Super.java | 9 + .../changeExtends2/src/Victim.java | 12 + .../common/class2Interface1/.idea/.name | 1 + .../common/class2Interface2/.idea/.name | 1 + .../common/class2Interface3/.idea/.name | 1 + .../incremental/common/deleteClass3.log | 9 + .../common/deleteClass3/.idea/.name | 1 + .../common/deleteClass3/.idea/compiler.xml | 21 + .../.idea/copyright/profiles_settings.xml | 5 + .../common/deleteClass3/.idea/encodings.xml | 5 + .../common/deleteClass3/.idea/misc.xml | 10 + .../common/deleteClass3/.idea/modules.xml | 10 + .../.idea/scopes/scope_settings.xml | 5 + .../common/deleteClass3/.idea/uiDesigner.xml | 125 +++++ .../common/deleteClass3/.idea/vcs.xml | 7 + .../common/deleteClass3/.idea/workspace.xml | 520 ++++++++++++++++++ .../common/deleteClass3/M-src$A.java.new | 3 + .../incremental/common/deleteClass3/M/M.iml | 12 + .../common/deleteClass3/M/src/A.java | 9 + .../common/deleteClass3/N-src$C.java.remove | 1 + .../incremental/common/deleteClass3/N/N.iml | 13 + .../common/deleteClass3/N/src/C.java | 10 + .../imports/staticImport/.idea/.name | 1 + .../jetbrains/ether/ClassPropertyTest.java | 4 + .../org/jetbrains/ether/CommonTest.java | 4 + .../jetbrains/ether/IncrementalTestCase.java | 2 +- .../ether/dependencyView/Mappings.java | 3 +- 42 files changed, 1387 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/compiler.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/copyright/profiles_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/encodings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/misc.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/modules.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/scopes/scope_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/uiDesigner.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/vcs.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/.idea/workspace.xml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/ChangeExtends2.iml create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/Victim.java.new create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/src/Main.java create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/src/Puper.java create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/src/Super.java create mode 100644 java/java-tests/testData/compileServer/incremental/classProperties/changeExtends2/src/Victim.java create mode 100644 java/java-tests/testData/compileServer/incremental/common/class2Interface1/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/common/class2Interface2/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/common/class2Interface3/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3.log create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/.name create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/compiler.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/copyright/profiles_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/encodings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/misc.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/modules.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/scopes/scope_settings.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/uiDesigner.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/vcs.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/.idea/workspace.xml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/M-src$A.java.new create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/M/M.iml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/M/src/A.java create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/N-src$C.java.remove create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/N/N.iml create mode 100644 java/java-tests/testData/compileServer/incremental/common/deleteClass3/N/src/C.java create mode 100644 java/java-tests/testData/compileServer/incremental/imports/staticImport/.idea/.name diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 9631f0b16849..fa595e20de73 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,6 +6,7 @@