Merge branch 'master' of git.labs.intellij.net:idea/community
authornik <Nikolay.Chashnikov@jetbrains.com>
Wed, 29 Dec 2010 07:27:15 +0000 (10:27 +0300)
committernik <Nikolay.Chashnikov@jetbrains.com>
Wed, 29 Dec 2010 12:26:54 +0000 (15:26 +0300)
java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactUtil.java
java/compiler/impl/src/com/intellij/packaging/impl/elements/ModuleOutputElementType.java
java/compiler/impl/src/com/intellij/packaging/impl/elements/ModuleOutputPackagingElement.java
java/compiler/impl/src/com/intellij/packaging/impl/elements/ModuleOutputPackagingElementImpl.java [new file with mode: 0644]
java/compiler/impl/src/com/intellij/packaging/impl/elements/PackagingElementFactoryImpl.java
java/compiler/openapi/src/com/intellij/openapi/compiler/make/BuildParticipant.java
java/compiler/openapi/src/com/intellij/openapi/compiler/make/BuildParticipantProvider.java
java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/sourceItems/ModuleOutputSourceItem.java

index e666636192ea5013eb3e92e29292973a6671dfc2..c8bcf0192b3f2edb378cf8208738505dff71f758 100644 (file)
@@ -540,10 +540,12 @@ public class ArtifactUtil {
     final Set<Module> modules = new HashSet<Module>();
     final PackagingElementResolvingContext resolvingContext = ArtifactManager.getInstance(project).getResolvingContext();
     for (Artifact artifact : artifacts) {
-      processPackagingElements(artifact, ModuleOutputElementType.MODULE_OUTPUT_ELEMENT_TYPE, new Processor<ModuleOutputPackagingElement>() {
+      processPackagingElements(artifact, null, new Processor<PackagingElement<?>>() {
         @Override
-        public boolean process(ModuleOutputPackagingElement moduleOutputPackagingElement) {
-          ContainerUtil.addIfNotNull(modules, moduleOutputPackagingElement.findModule(resolvingContext));
+        public boolean process(PackagingElement<?> element) {
+          if (element instanceof ModuleOutputPackagingElement) {
+            ContainerUtil.addIfNotNull(modules, ((ModuleOutputPackagingElement)element).findModule(resolvingContext));
+          }
           return true;
         }
       }, resolvingContext, true);
index e51e96abd13284c5007574793551717879d4643e..83c3c0a444d009d56e36785168edbf6a8a692445 100644 (file)
@@ -23,6 +23,7 @@ import com.intellij.openapi.project.ProjectBundle;
 import com.intellij.openapi.util.IconLoader;
 import com.intellij.packaging.artifacts.Artifact;
 import com.intellij.packaging.elements.CompositePackagingElement;
+import com.intellij.packaging.elements.PackagingElement;
 import com.intellij.packaging.elements.PackagingElementType;
 import com.intellij.packaging.ui.ArtifactEditorContext;
 import org.jetbrains.annotations.NotNull;
@@ -35,7 +36,7 @@ import java.util.List;
 /**
 * @author nik
 */
-public class ModuleOutputElementType extends PackagingElementType<ModuleOutputPackagingElement> {
+public class ModuleOutputElementType extends PackagingElementType<ModuleOutputPackagingElementImpl> {
   public static final ModuleOutputElementType MODULE_OUTPUT_ELEMENT_TYPE = new ModuleOutputElementType();
 
   ModuleOutputElementType() {
@@ -53,13 +54,13 @@ public class ModuleOutputElementType extends PackagingElementType<ModuleOutputPa
   }
 
   @NotNull
-  public List<? extends ModuleOutputPackagingElement> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
+  public List<? extends PackagingElement<?>> chooseAndCreate(@NotNull ArtifactEditorContext context, @NotNull Artifact artifact,
                                                                        @NotNull CompositePackagingElement<?> parent) {
     List<Module> modules = chooseModules(context);
-    final List<ModuleOutputPackagingElement> elements = new ArrayList<ModuleOutputPackagingElement>();
+    final List<PackagingElement<?>> elements = new ArrayList<PackagingElement<?>>();
     final ModulePointerManager pointerManager = ModulePointerManager.getInstance(context.getProject());
     for (Module module : modules) {
-      elements.add(new ModuleOutputPackagingElement(context.getProject(), pointerManager.create(module)));
+      elements.add(new ModuleOutputPackagingElementImpl(context.getProject(), pointerManager.create(module)));
     }
     return elements;
   }
@@ -69,7 +70,7 @@ public class ModuleOutputElementType extends PackagingElementType<ModuleOutputPa
   }
 
   @NotNull
-  public ModuleOutputPackagingElement createEmpty(@NotNull Project project) {
-    return new ModuleOutputPackagingElement(project);
+  public ModuleOutputPackagingElementImpl createEmpty(@NotNull Project project) {
+    return new ModuleOutputPackagingElementImpl(project);
   }
 }
index 29d5c9d709b9721d8fa5ec027da2372fabb5a938..d2e0bb9da32ff624c390d72518b5a89d13eeab54 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2010 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.
  */
 package com.intellij.packaging.impl.elements;
 
-import com.intellij.compiler.ant.BuildProperties;
-import com.intellij.compiler.ant.Generator;
 import com.intellij.openapi.module.Module;
-import com.intellij.openapi.module.ModulePointer;
-import com.intellij.openapi.module.ModulePointerManager;
-import com.intellij.openapi.project.Project;
-import com.intellij.openapi.roots.CompilerModuleExtension;
-import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider;
-import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
-import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.packaging.artifacts.ArtifactType;
-import com.intellij.packaging.elements.*;
-import com.intellij.packaging.impl.ui.DelegatedPackagingElementPresentation;
-import com.intellij.packaging.impl.ui.ModuleElementPresentation;
-import com.intellij.packaging.ui.ArtifactEditorContext;
-import com.intellij.packaging.ui.PackagingElementPresentation;
-import com.intellij.util.ArrayUtil;
-import com.intellij.util.xmlb.annotations.Attribute;
-import org.jetbrains.annotations.NonNls;
-import org.jetbrains.annotations.NotNull;
+import com.intellij.packaging.elements.PackagingElementResolvingContext;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Collections;
-import java.util.List;
-
 /**
  * @author nik
  */
-public class ModuleOutputPackagingElement extends PackagingElement<ModuleOutputPackagingElement.ModuleOutputPackagingElementState> {
-  @NonNls public static final String MODULE_NAME_ATTRIBUTE = "name";
-  private ModulePointer myModulePointer;
-  private final Project myProject;
-
-  public ModuleOutputPackagingElement(@NotNull Project project) {
-    super(ModuleOutputElementType.MODULE_OUTPUT_ELEMENT_TYPE);
-    myProject = project;
-  }
-
-  public ModuleOutputPackagingElement(@NotNull Project project, @NotNull ModulePointer modulePointer) {
-    super(ModuleOutputElementType.MODULE_OUTPUT_ELEMENT_TYPE);
-    myProject = project;
-    myModulePointer = modulePointer;
-  }
-
-  public PackagingElementPresentation createPresentation(@NotNull ArtifactEditorContext context) {
-    return new DelegatedPackagingElementPresentation(new ModuleElementPresentation(myModulePointer, context));
-  }
-
-  @Override
-  public List<? extends Generator> computeAntInstructions(@NotNull PackagingElementResolvingContext resolvingContext, @NotNull AntCopyInstructionCreator creator,
-                                                          @NotNull ArtifactAntGenerationContext generationContext,
-                                                          @NotNull ArtifactType artifactType) {
-    if (myModulePointer != null) {
-      final String moduleOutput = BuildProperties.propertyRef(generationContext.getModuleOutputPath(myModulePointer.getModuleName()));
-      return Collections.singletonList(creator.createDirectoryContentCopyInstruction(moduleOutput));
-    }
-    return Collections.emptyList();
-  }
-
-  @Override
-  public void computeIncrementalCompilerInstructions(@NotNull IncrementalCompilerInstructionCreator creator,
-                                                     @NotNull PackagingElementResolvingContext resolvingContext,
-                                                     @NotNull ArtifactIncrementalCompilerContext compilerContext, @NotNull ArtifactType artifactType) {
-    final Module module = findModule(resolvingContext);
-    if (module != null) {
-      final CompilerModuleExtension extension = CompilerModuleExtension.getInstance(module);
-      if (extension != null) {
-        final VirtualFile output = extension.getCompilerOutputPath();
-        if (output != null) {
-          creator.addDirectoryCopyInstructions(output, null);
-        }
-      }
-    }
-  }
-
-  @NotNull
-  @Override
-  public PackagingElementOutputKind getFilesKind(PackagingElementResolvingContext context) {
-    return PackagingElementOutputKind.DIRECTORIES_WITH_CLASSES;
-  }
-
-  @Override
-  public boolean isEqualTo(@NotNull PackagingElement<?> element) {
-    return element instanceof ModuleOutputPackagingElement && myModulePointer != null
-           && myModulePointer.equals(((ModuleOutputPackagingElement)element).myModulePointer);
-  }
-
-  public ModuleOutputPackagingElementState getState() {
-    final ModuleOutputPackagingElementState state = new ModuleOutputPackagingElementState();
-    if (myModulePointer != null) {
-      state.setModuleName(myModulePointer.getModuleName());
-    }
-    return state;
-  }
-
-  public void loadState(ModuleOutputPackagingElementState state) {
-    final String moduleName = state.getModuleName();
-    myModulePointer = moduleName != null ? ModulePointerManager.getInstance(myProject).create(moduleName) : null;
-  }
-
-  @NonNls @Override
-  public String toString() {
-    return "module:" + getModuleName();
-  }
-
+public interface ModuleOutputPackagingElement {
   @Nullable
-  public String getModuleName() {
-    return myModulePointer != null ? myModulePointer.getModuleName() : null;
-  }
+  String getModuleName();
 
   @Nullable
-  public Module findModule(PackagingElementResolvingContext context) {
-    if (myModulePointer != null) {
-      final Module module = myModulePointer.getModule();
-      final ModulesProvider modulesProvider = context.getModulesProvider();
-      if (module != null) {
-        if (modulesProvider instanceof DefaultModulesProvider//optimization
-           || ArrayUtil.contains(module, modulesProvider.getModules())) {
-          return module;
-        }
-      }
-      return modulesProvider.getModule(myModulePointer.getModuleName());
-    }
-    return null;
-  }
-
-  public static class ModuleOutputPackagingElementState {
-    private String myModuleName;
-
-    @Attribute(MODULE_NAME_ATTRIBUTE)
-    public String getModuleName() {
-      return myModuleName;
-    }
-
-    public void setModuleName(String moduleName) {
-      myModuleName = moduleName;
-    }
-  }
+  Module findModule(PackagingElementResolvingContext context);
 }
diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/elements/ModuleOutputPackagingElementImpl.java b/java/compiler/impl/src/com/intellij/packaging/impl/elements/ModuleOutputPackagingElementImpl.java
new file mode 100644 (file)
index 0000000..3d6d71c
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * Copyright 2000-2009 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.packaging.impl.elements;
+
+import com.intellij.compiler.ant.BuildProperties;
+import com.intellij.compiler.ant.Generator;
+import com.intellij.openapi.module.Module;
+import com.intellij.openapi.module.ModulePointer;
+import com.intellij.openapi.module.ModulePointerManager;
+import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.CompilerModuleExtension;
+import com.intellij.openapi.roots.ui.configuration.DefaultModulesProvider;
+import com.intellij.openapi.roots.ui.configuration.ModulesProvider;
+import com.intellij.openapi.vfs.VirtualFile;
+import com.intellij.packaging.artifacts.ArtifactType;
+import com.intellij.packaging.elements.*;
+import com.intellij.packaging.impl.ui.DelegatedPackagingElementPresentation;
+import com.intellij.packaging.impl.ui.ModuleElementPresentation;
+import com.intellij.packaging.ui.ArtifactEditorContext;
+import com.intellij.packaging.ui.PackagingElementPresentation;
+import com.intellij.util.ArrayUtil;
+import com.intellij.util.xmlb.annotations.Attribute;
+import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author nik
+ */
+public class ModuleOutputPackagingElementImpl extends PackagingElement<ModuleOutputPackagingElementImpl.ModuleOutputPackagingElementState>
+  implements ModuleOutputPackagingElement {
+  @NonNls public static final String MODULE_NAME_ATTRIBUTE = "name";
+  private ModulePointer myModulePointer;
+  private final Project myProject;
+
+  public ModuleOutputPackagingElementImpl(@NotNull Project project) {
+    super(ModuleOutputElementType.MODULE_OUTPUT_ELEMENT_TYPE);
+    myProject = project;
+  }
+
+  public ModuleOutputPackagingElementImpl(@NotNull Project project, @NotNull ModulePointer modulePointer) {
+    super(ModuleOutputElementType.MODULE_OUTPUT_ELEMENT_TYPE);
+    myProject = project;
+    myModulePointer = modulePointer;
+  }
+
+  public PackagingElementPresentation createPresentation(@NotNull ArtifactEditorContext context) {
+    return new DelegatedPackagingElementPresentation(new ModuleElementPresentation(myModulePointer, context));
+  }
+
+  @Override
+  public List<? extends Generator> computeAntInstructions(@NotNull PackagingElementResolvingContext resolvingContext, @NotNull AntCopyInstructionCreator creator,
+                                                          @NotNull ArtifactAntGenerationContext generationContext,
+                                                          @NotNull ArtifactType artifactType) {
+    if (myModulePointer != null) {
+      final String moduleOutput = BuildProperties.propertyRef(generationContext.getModuleOutputPath(myModulePointer.getModuleName()));
+      return Collections.singletonList(creator.createDirectoryContentCopyInstruction(moduleOutput));
+    }
+    return Collections.emptyList();
+  }
+
+  @Override
+  public void computeIncrementalCompilerInstructions(@NotNull IncrementalCompilerInstructionCreator creator,
+                                                     @NotNull PackagingElementResolvingContext resolvingContext,
+                                                     @NotNull ArtifactIncrementalCompilerContext compilerContext, @NotNull ArtifactType artifactType) {
+    final Module module = findModule(resolvingContext);
+    if (module != null) {
+      final CompilerModuleExtension extension = CompilerModuleExtension.getInstance(module);
+      if (extension != null) {
+        final VirtualFile output = extension.getCompilerOutputPath();
+        if (output != null) {
+          creator.addDirectoryCopyInstructions(output, null);
+        }
+      }
+    }
+  }
+
+  @NotNull
+  @Override
+  public PackagingElementOutputKind getFilesKind(PackagingElementResolvingContext context) {
+    return PackagingElementOutputKind.DIRECTORIES_WITH_CLASSES;
+  }
+
+  @Override
+  public boolean isEqualTo(@NotNull PackagingElement<?> element) {
+    return element instanceof ModuleOutputPackagingElementImpl && myModulePointer != null
+           && myModulePointer.equals(((ModuleOutputPackagingElementImpl)element).myModulePointer);
+  }
+
+  public ModuleOutputPackagingElementState getState() {
+    final ModuleOutputPackagingElementState state = new ModuleOutputPackagingElementState();
+    if (myModulePointer != null) {
+      state.setModuleName(myModulePointer.getModuleName());
+    }
+    return state;
+  }
+
+  public void loadState(ModuleOutputPackagingElementState state) {
+    final String moduleName = state.getModuleName();
+    myModulePointer = moduleName != null ? ModulePointerManager.getInstance(myProject).create(moduleName) : null;
+  }
+
+  @NonNls @Override
+  public String toString() {
+    return "module:" + getModuleName();
+  }
+
+  @Override
+  @Nullable
+  public String getModuleName() {
+    return myModulePointer != null ? myModulePointer.getModuleName() : null;
+  }
+
+  @Override
+  @Nullable
+  public Module findModule(PackagingElementResolvingContext context) {
+    if (myModulePointer != null) {
+      final Module module = myModulePointer.getModule();
+      final ModulesProvider modulesProvider = context.getModulesProvider();
+      if (module != null) {
+        if (modulesProvider instanceof DefaultModulesProvider//optimization
+           || ArrayUtil.contains(module, modulesProvider.getModules())) {
+          return module;
+        }
+      }
+      return modulesProvider.getModule(myModulePointer.getModuleName());
+    }
+    return null;
+  }
+
+  public static class ModuleOutputPackagingElementState {
+    private String myModuleName;
+
+    @Attribute(MODULE_NAME_ATTRIBUTE)
+    public String getModuleName() {
+      return myModuleName;
+    }
+
+    public void setModuleName(String moduleName) {
+      myModuleName = moduleName;
+    }
+  }
+}
index 1fadf9c7b11b97f770b00b0420f0f0feb870bede..ff98a1cb3b4487c816205ac961e0adbe01d0f35a 100644 (file)
@@ -181,14 +181,14 @@ public class PackagingElementFactoryImpl extends PackagingElementFactory {
   @NotNull
   public PackagingElement<?> createModuleOutput(@NotNull String moduleName, @NotNull Project project) {
     final ModulePointer pointer = ModulePointerManager.getInstance(project).create(moduleName);
-    return new ModuleOutputPackagingElement(project, pointer);
+    return new ModuleOutputPackagingElementImpl(project, pointer);
   }
 
   @NotNull
   @Override
   public PackagingElement<?> createModuleOutput(@NotNull Module module) {
     final ModulePointer modulePointer = ModulePointerManager.getInstance(module.getProject()).create(module);
-    return new ModuleOutputPackagingElement(module.getProject(), modulePointer);
+    return new ModuleOutputPackagingElementImpl(module.getProject(), modulePointer);
   }
 
   @NotNull
index 5f14ca5d0efdabacb4e4b6d31404a902cac77e9e..48022b6bf272c538a6bf407621b19ebd8ca748a5 100644 (file)
@@ -19,6 +19,9 @@ import com.intellij.openapi.compiler.CompileContext;
 import com.intellij.packaging.artifacts.Artifact;
 import org.jetbrains.annotations.Nullable;
 
+/**
+ * @deprecated use interfaces from {@link com.intellij.openapi.compiler.Compiler}'s hierarchy instead
+ */
 public abstract class BuildParticipant {
   public static final BuildParticipant[] EMPTY_ARRAY = new BuildParticipant[0];
 
index 70fb116fc29275027b40b8a9a1221327bf706602..a0f46da792903a780b5cf6ba94c0a426e6a1a180 100644 (file)
@@ -23,6 +23,8 @@ import java.util.Collection;
 
 /**
  * @author nik
+ *
+ * @deprecated use interfaces from {@link com.intellij.openapi.compiler.Compiler}'s hierarchy instead
  */
 public abstract class BuildParticipantProvider {
   public static final ExtensionPointName<BuildParticipantProvider> EXTENSION_POINT_NAME = ExtensionPointName.create("com.intellij.compiler.buildParticipantProvider");
index ed52b2293431e16b04b148bbb9634e43d00f9d1a..9feefd1a5fb034be7a86789d3ebf06802a1cb282 100644 (file)
@@ -20,7 +20,7 @@ import com.intellij.openapi.module.ModulePointer;
 import com.intellij.openapi.module.ModulePointerManager;
 import com.intellij.packaging.elements.PackagingElement;
 import com.intellij.packaging.elements.PackagingElementOutputKind;
-import com.intellij.packaging.impl.elements.ModuleOutputPackagingElement;
+import com.intellij.packaging.impl.elements.ModuleOutputPackagingElementImpl;
 import com.intellij.packaging.impl.ui.ModuleElementPresentation;
 import com.intellij.packaging.ui.*;
 import org.jetbrains.annotations.NotNull;
@@ -60,7 +60,7 @@ public class ModuleOutputSourceItem extends PackagingSourceItem {
   @NotNull
   public List<? extends PackagingElement<?>> createElements(@NotNull ArtifactEditorContext context) {
     final ModulePointer modulePointer = ModulePointerManager.getInstance(context.getProject()).create(myModule);
-    return Collections.singletonList(new ModuleOutputPackagingElement(context.getProject(), modulePointer));
+    return Collections.singletonList(new ModuleOutputPackagingElementImpl(context.getProject(), modulePointer));
   }
 
   @NotNull