Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Fedorenko2012-08-16 11:00:44 +0000
committerIgor Fedorenko2012-08-16 11:45:47 +0000
commit45af0ea6f9db6ca9f2211ece05e0172f0946df01 (patch)
tree5278a845cc539e4eac639f4f11b9bae9fa90b346 /org.eclipse.m2e.core
parentd6a451ba0648958d3f786d5e0946d4921146c080 (diff)
downloadm2e-core-45af0ea6f9db6ca9f2211ece05e0172f0946df01.tar.gz
m2e-core-45af0ea6f9db6ca9f2211ece05e0172f0946df01.tar.xz
m2e-core-45af0ea6f9db6ca9f2211ece05e0172f0946df01.zip
do not modify singleton PluginExecutionMetadata instances
The same shared PluginExecutionMetadata read from installed m2e extensions, including default m2e mapping metadata, are used for entire lifespan of m2e instance. Do not modify these instances, create a clone instead. Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Diffstat (limited to 'org.eclipse.m2e.core')
-rw-r--r--org.eclipse.m2e.core/mdo/lifecycle-mapping-metadata-model.xml4
-rw-r--r--org.eclipse.m2e.core/pom.xml1
-rw-r--r--org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/ProjectRegistryManager.java9
3 files changed, 9 insertions, 5 deletions
diff --git a/org.eclipse.m2e.core/mdo/lifecycle-mapping-metadata-model.xml b/org.eclipse.m2e.core/mdo/lifecycle-mapping-metadata-model.xml
index 7d324faf..17c051dc 100644
--- a/org.eclipse.m2e.core/mdo/lifecycle-mapping-metadata-model.xml
+++ b/org.eclipse.m2e.core/mdo/lifecycle-mapping-metadata-model.xml
@@ -99,7 +99,7 @@
</codeSegments>
</class>
- <class xml.tagName="pluginExecutionFilter" xml.standaloneRead="true">
+ <class xml.tagName="pluginExecutionFilter" xml.standaloneRead="true" java.clone="deep">
<name>PluginExecutionFilter</name>
<fields>
<field required="true">
@@ -194,7 +194,7 @@
</codeSegments>
</class>
- <class xml.tagName="pluginExecution" xml.standaloneRead="true">
+ <class xml.tagName="pluginExecution" xml.standaloneRead="true" java.clone="deep">
<name>PluginExecutionMetadata</name>
<interfaces>
<interface>org.eclipse.m2e.core.lifecyclemapping.model.IPluginExecutionMetadata</interface>
diff --git a/org.eclipse.m2e.core/pom.xml b/org.eclipse.m2e.core/pom.xml
index 4de4b2ed..afc3e133 100644
--- a/org.eclipse.m2e.core/pom.xml
+++ b/org.eclipse.m2e.core/pom.xml
@@ -37,7 +37,6 @@
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
- <version>${modello.version}</version>
<executions>
<execution>
<id>standard</id>
diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/ProjectRegistryManager.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/ProjectRegistryManager.java
index fb7f4100..11956797 100644
--- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/ProjectRegistryManager.java
+++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/project/registry/ProjectRegistryManager.java
@@ -21,6 +21,7 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
@@ -548,8 +549,12 @@ public class ProjectRegistryManager {
private void detachMappingSources(Map<MojoExecutionKey, List<IPluginExecutionMetadata>> mapping) {
for(List<IPluginExecutionMetadata> executions : mapping.values()) {
if(executions != null) {
- for(IPluginExecutionMetadata execution : executions) {
- ((PluginExecutionMetadata) execution).setSource(null);
+ ListIterator<IPluginExecutionMetadata> iterator = executions.listIterator();
+ while(iterator.hasNext()) {
+ PluginExecutionMetadata execution = (PluginExecutionMetadata) iterator.next();
+ execution = execution.clone();
+ execution.setSource(null);
+ iterator.set(execution);
}
}
}

Back to the top