diff options
author | Igor Fedorenko | 2012-08-16 11:00:44 +0000 |
---|---|---|
committer | Igor Fedorenko | 2012-08-16 11:45:47 +0000 |
commit | 45af0ea6f9db6ca9f2211ece05e0172f0946df01 (patch) | |
tree | 5278a845cc539e4eac639f4f11b9bae9fa90b346 /org.eclipse.m2e.core | |
parent | d6a451ba0648958d3f786d5e0946d4921146c080 (diff) | |
download | m2e-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')
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); } } } |