diff options
author | Igor Fedorenko | 2011-02-10 20:11:48 +0000 |
---|---|---|
committer | Igor Fedorenko | 2011-02-10 20:49:14 +0000 |
commit | 8bac477d3aff06d5aaa668983f13e3f375267f63 (patch) | |
tree | 2ca9091b4bc66114720c76e85a3febc9f509e631 /org.eclipse.m2e.maven.runtime | |
parent | e63dc1b163926cfb6468d8c691cf6e2f0b5f6404 (diff) | |
download | m2e-core-8bac477d3aff06d5aaa668983f13e3f375267f63.tar.gz m2e-core-8bac477d3aff06d5aaa668983f13e3f375267f63.tar.xz m2e-core-8bac477d3aff06d5aaa668983f13e3f375267f63.zip |
reworked local maven patches
only include minimal required set of changed files.
added short README to list changes
introduced per-maven release directory structure so we know when to remove
local patches
Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Diffstat (limited to 'org.eclipse.m2e.maven.runtime')
16 files changed, 16 insertions, 857 deletions
diff --git a/org.eclipse.m2e.maven.runtime/.classpath b/org.eclipse.m2e.maven.runtime/.classpath index 368e8af3..464fd685 100644 --- a/org.eclipse.m2e.maven.runtime/.classpath +++ b/org.eclipse.m2e.maven.runtime/.classpath @@ -1,9 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry exported="true" kind="lib" path="local-patches.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> - <classpathentry kind="src" path="src/main/java/"/> + <classpathentry kind="src" path="src/maven-3.0.3"/> <classpathentry exported="true" kind="lib" path="jars/maven-embedder-3.0.2.jar"/> <classpathentry exported="true" kind="lib" path="jars/maven-settings-3.0.2.jar"/> <classpathentry exported="true" kind="lib" path="jars/maven-plugin-api-3.0.2.jar"/> @@ -35,7 +34,7 @@ <classpathentry exported="true" kind="lib" path="jars/guice-plexus-binders-2.0.0.jar"/> <classpathentry exported="true" kind="lib" path="jars/guice-plexus-scanners-2.0.0.jar"/> <classpathentry exported="true" kind="lib" path="jars/plexus-classworlds-2.4.jar"/> - <classpathentry exported="true" kind="lib" path="jars/plexus-utils-2.0.6-SNAPSHOT.jar"/> + <classpathentry exported="true" kind="lib" path="jars/plexus-utils-2.0.6.jar"/> <classpathentry exported="true" kind="lib" path="jars/sisu-guice-2.9.4-no_aop.jar"/> <classpathentry exported="true" kind="lib" path="jars/plexus-build-api-0.0.7-SNAPSHOT.jar"/> <classpathentry exported="true" kind="lib" path="jars/aether-connector-wagon-1.10.jar"/> diff --git a/org.eclipse.m2e.maven.runtime/META-INF/MANIFEST.MF b/org.eclipse.m2e.maven.runtime/META-INF/MANIFEST.MF index eebadbef..b78fe8dd 100644 --- a/org.eclipse.m2e.maven.runtime/META-INF/MANIFEST.MF +++ b/org.eclipse.m2e.maven.runtime/META-INF/MANIFEST.MF @@ -129,7 +129,7 @@ Bundle-ClassPath: local-patches.jar, jars/guice-plexus-binders-2.0.0.jar, jars/guice-plexus-scanners-2.0.0.jar, jars/plexus-classworlds-2.4.jar, - jars/plexus-utils-2.0.6-SNAPSHOT.jar, + jars/plexus-utils-2.0.6.jar, jars/sisu-guice-2.9.4-no_aop.jar, jars/plexus-build-api-0.0.7-SNAPSHOT.jar, jars/aether-connector-wagon-1.10.jar, @@ -145,4 +145,5 @@ Bundle-Name: Embedded Maven Runtime Bundle Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.m2e.maven.runtime;singleton:=true Bundle-RequiredExecutionEnvironment: J2SE-1.5, JavaSE-1.6 +Require-Bundle: com.ning.async-http-client;bundle-version="1.4.1" diff --git a/org.eclipse.m2e.maven.runtime/build.properties b/org.eclipse.m2e.maven.runtime/build.properties index f10d8cb0..f1df8928 100644 --- a/org.eclipse.m2e.maven.runtime/build.properties +++ b/org.eclipse.m2e.maven.runtime/build.properties @@ -15,4 +15,4 @@ bin.includes = META-INF/,\ jars.compile.order = local-patches.jar source.local-patches.jar = src/main/java/ output.local-patches.jar = target/classes -source.local-patches.jar = src/main/java/ +source.local-patches.jar = src/maven-3.0.3/ diff --git a/org.eclipse.m2e.maven.runtime/jars/plexus-utils-2.0.6-SNAPSHOT.jar b/org.eclipse.m2e.maven.runtime/jars/plexus-utils-2.0.6.jar Binary files differindex fb799b8d..25002a4b 100644 --- a/org.eclipse.m2e.maven.runtime/jars/plexus-utils-2.0.6-SNAPSHOT.jar +++ b/org.eclipse.m2e.maven.runtime/jars/plexus-utils-2.0.6.jar diff --git a/org.eclipse.m2e.maven.runtime/src/README b/org.eclipse.m2e.maven.runtime/src/README new file mode 100644 index 00000000..964d6db8 --- /dev/null +++ b/org.eclipse.m2e.maven.runtime/src/README @@ -0,0 +1,5 @@ +The following changes were cherry-picked + +maven-3.0.3 (SNAPSHOT) +MNG-4988 API to calculate execution plan without full mojo execution configuration +MNG-5003 populate mojo descriptor with cached plugin realm
\ No newline at end of file diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java b/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java deleted file mode 100644 index 89623674..00000000 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java +++ /dev/null @@ -1,200 +0,0 @@ -package org.apache.maven.plugin; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.model.Plugin; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.classworlds.realm.ClassRealm; -import org.codehaus.plexus.component.annotations.Component; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.graph.DependencyFilter; -import org.sonatype.aether.repository.LocalRepository; -import org.sonatype.aether.repository.RemoteRepository; -import org.sonatype.aether.repository.WorkspaceRepository; - -/** - * Default PluginCache implementation. Assumes cached data does not change. - */ -@Component( role = PluginRealmCache.class ) -public class DefaultPluginRealmCache - implements PluginRealmCache -{ - - protected static class CacheKey - implements Key - { - - private final Plugin plugin; - - private final WorkspaceRepository workspace; - - private final LocalRepository localRepo; - - private final List<RemoteRepository> repositories; - - private final ClassLoader parentRealm; - - private final Map<String, ClassLoader> foreignImports; - - private final DependencyFilter filter; - - private final int hashCode; - - public CacheKey( Plugin plugin, ClassLoader parentRealm, Map<String, ClassLoader> foreignImports, - DependencyFilter dependencyFilter, List<RemoteRepository> repositories, - RepositorySystemSession session ) - { - this.plugin = plugin.clone(); - this.workspace = CacheUtils.getWorkspace( session ); - this.localRepo = session.getLocalRepository(); - this.repositories = new ArrayList<RemoteRepository>( repositories.size() ); - for ( RemoteRepository repository : repositories ) - { - if ( repository.isRepositoryManager() ) - { - this.repositories.addAll( repository.getMirroredRepositories() ); - } - else - { - this.repositories.add( repository ); - } - } - this.parentRealm = parentRealm; - this.foreignImports = - ( foreignImports != null ) ? foreignImports : Collections.<String, ClassLoader> emptyMap(); - this.filter = dependencyFilter; - - int hash = 17; - hash = hash * 31 + CacheUtils.pluginHashCode( plugin ); - hash = hash * 31 + hash( workspace ); - hash = hash * 31 + hash( localRepo ); - hash = hash * 31 + CacheUtils.repositoriesHashCode( repositories ); - hash = hash * 31 + hash( parentRealm ); - hash = hash * 31 + this.foreignImports.hashCode(); - hash = hash * 31 + hash( dependencyFilter ); - this.hashCode = hash; - } - - @Override - public String toString() - { - return plugin.getId(); - } - - @Override - public int hashCode() - { - return hashCode; - } - - private static int hash( Object obj ) - { - return obj != null ? obj.hashCode() : 0; - } - - @Override - public boolean equals( Object o ) - { - if ( o == this ) - { - return true; - } - - if ( !( o instanceof CacheKey ) ) - { - return false; - } - - CacheKey that = (CacheKey) o; - - return parentRealm == that.parentRealm && CacheUtils.pluginEquals( plugin, that.plugin ) - && eq( workspace, that.workspace ) && eq( localRepo, that.localRepo ) - && CacheUtils.repositoriesEquals( this.repositories, that.repositories ) && eq( filter, that.filter ) - && eq( foreignImports, that.foreignImports ); - } - - private static <T> boolean eq( T s1, T s2 ) - { - return s1 != null ? s1.equals( s2 ) : s2 == null; - } - - } - - protected final Map<Key, CacheRecord> cache = new ConcurrentHashMap<Key, CacheRecord>(); - - public Key createKey( Plugin plugin, ClassLoader parentRealm, Map<String, ClassLoader> foreignImports, - DependencyFilter dependencyFilter, List<RemoteRepository> repositories, - RepositorySystemSession session ) - { - return new CacheKey( plugin, parentRealm, foreignImports, dependencyFilter, repositories, session ); - } - - public CacheRecord get( Key key ) - { - return cache.get( key ); - } - - public CacheRecord put( Key key, ClassRealm pluginRealm, List<Artifact> pluginArtifacts ) - { - if ( pluginRealm == null || pluginArtifacts == null ) - { - throw new IllegalArgumentException(); - } - - if ( cache.containsKey( key ) ) - { - throw new IllegalStateException( "Duplicate plugin realm for plugin " + key ); - } - - CacheRecord record = new CacheRecord( pluginRealm, pluginArtifacts ); - - cache.put( key, record ); - - return record; - } - - public void flush() - { - cache.clear(); - } - - protected static int pluginHashCode( Plugin plugin ) - { - return CacheUtils.pluginHashCode( plugin ); - } - - protected static boolean pluginEquals( Plugin a, Plugin b ) - { - return CacheUtils.pluginEquals( a, b ); - } - - public void register( MavenProject project, CacheRecord record ) - { - // default cache does not track plugin usage - } - -} diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/PluginRealmCache.java b/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/PluginRealmCache.java deleted file mode 100644 index 68420818..00000000 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/PluginRealmCache.java +++ /dev/null @@ -1,85 +0,0 @@ -package org.apache.maven.plugin; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - -import java.util.List; -import java.util.Map; - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.model.Plugin; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.classworlds.realm.ClassRealm; -import org.sonatype.aether.RepositorySystemSession; -import org.sonatype.aether.graph.DependencyFilter; -import org.sonatype.aether.repository.RemoteRepository; - -/** - * Caches plugin class realms. <strong>Warning:</strong> This is an internal utility interface that is only public for - * technical reasons, it is not part of the public API. In particular, this interface can be changed or deleted without - * prior notice. - * - * @author Igor Fedorenko - * @author Benjamin Bentmann - */ -public interface PluginRealmCache -{ - - public static class CacheRecord - { - public final ClassRealm realm; - - public final List<Artifact> artifacts; - - public CacheRecord( ClassRealm realm, List<Artifact> artifacts ) - { - this.realm = realm; - this.artifacts = artifacts; - } - } - - /** - * A cache key. - */ - interface Key - { - // marker interface for cache keys - } - - Key createKey( Plugin plugin, ClassLoader parentRealm, Map<String, ClassLoader> foreignImports, - DependencyFilter dependencyFilter, List<RemoteRepository> repositories, - RepositorySystemSession session ); - - CacheRecord get( Key key ); - - CacheRecord put( Key key, ClassRealm pluginRealm, List<Artifact> pluginArtifacts ); - - void flush(); - - /** - * Registers the specified cache record for usage with the given project. Integrators can use the information - * collected from this method in combination with a custom cache implementation to dispose unused records from the - * cache. - * - * @param project The project that employs the plugin realm, must not be {@code null}. - * @param record The cache record being used for the project, must not be {@code null}. - */ - void register( MavenProject project, CacheRecord record ); - -} diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java b/org.eclipse.m2e.maven.runtime/src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java deleted file mode 100644 index 40ce58ff..00000000 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java +++ /dev/null @@ -1,561 +0,0 @@ -package org.codehaus.plexus.util.xml; - -/* - * Copyright The Codehaus Foundation. - * - * 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. - */ - -import org.codehaus.plexus.util.xml.pull.XmlSerializer; - -import java.io.IOException; -import java.io.Serializable; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -/** - * @version $Id$ - * NOTE: remove all the util code in here when separated, this class should be pure data. - */ -public class Xpp3Dom implements Serializable -{ - private static final long serialVersionUID = 2567894443061173996L; - - protected String name; - - protected String value; - - protected Map attributes; - - protected final List childList; - - protected final Map childMap; - - protected Xpp3Dom parent; - - private static final String[] EMPTY_STRING_ARRAY = new String[0]; - - private static final Xpp3Dom[] EMPTY_DOM_ARRAY = new Xpp3Dom[0]; - - public static final String CHILDREN_COMBINATION_MODE_ATTRIBUTE = "combine.children"; - - public static final String CHILDREN_COMBINATION_MERGE = "merge"; - - public static final String CHILDREN_COMBINATION_APPEND = "append"; - - /** - * This default mode for combining children DOMs during merge means that where element names - * match, the process will try to merge the element data, rather than putting the dominant - * and recessive elements (which share the same element name) as siblings in the resulting - * DOM. - */ - public static final String DEFAULT_CHILDREN_COMBINATION_MODE = CHILDREN_COMBINATION_MERGE; - - public static final String SELF_COMBINATION_MODE_ATTRIBUTE = "combine.self"; - - public static final String SELF_COMBINATION_OVERRIDE = "override"; - - public static final String SELF_COMBINATION_MERGE = "merge"; - - /** - * This default mode for combining a DOM node during merge means that where element names - * match, the process will try to merge the element attributes and values, rather than - * overriding the recessive element completely with the dominant one. This means that - * wherever the dominant element doesn't provide the value or a particular attribute, that - * value or attribute will be set from the recessive DOM node. - */ - public static final String DEFAULT_SELF_COMBINATION_MODE = SELF_COMBINATION_MERGE; - - public Xpp3Dom( String name ) - { - this.name = name; - childList = new ArrayList(); - childMap = new HashMap(); - } - - /** - * Copy constructor. - */ - public Xpp3Dom( Xpp3Dom src ) - { - this( src, src.getName() ); - } - - /** - * Copy constructor with alternative name. - */ - public Xpp3Dom( Xpp3Dom src, String name ) - { - this.name = name; - - int childCount = src.getChildCount(); - - childList = new ArrayList( childCount ); - childMap = new HashMap( childCount << 1 ); - - setValue( src.getValue() ); - - String[] attributeNames = src.getAttributeNames(); - for ( int i = 0; i < attributeNames.length; i++ ) - { - String attributeName = attributeNames[i]; - setAttribute( attributeName, src.getAttribute( attributeName ) ); - } - - for ( int i = 0; i < childCount; i++ ) - { - addChild( new Xpp3Dom( src.getChild( i ) ) ); - } - } - - // ---------------------------------------------------------------------- - // Name handling - // ---------------------------------------------------------------------- - - public String getName() - { - return name; - } - - // ---------------------------------------------------------------------- - // Value handling - // ---------------------------------------------------------------------- - - public String getValue() - { - return value; - } - - public void setValue( String value ) - { - this.value = value; - } - - // ---------------------------------------------------------------------- - // Attribute handling - // ---------------------------------------------------------------------- - - public String[] getAttributeNames() - { - if ( null == attributes || attributes.isEmpty() ) - { - return EMPTY_STRING_ARRAY; - } - else - { - return (String[]) attributes.keySet().toArray( new String[attributes.size()] ); - } - } - - public String getAttribute( String name ) - { - return ( null != attributes ) ? (String) attributes.get( name ) : null; - } - - /** - * Set the attribute value - * @param name String not null - * @param value String not null - */ - public void setAttribute( String name, String value ) - { - if ( null == value ) { - throw new NullPointerException( "Attribute value can not be null" ); - } - if ( null == name ) { - throw new NullPointerException( "Attribute name can not be null" ); - } - if ( null == attributes ) - { - attributes = new HashMap(); - } - - attributes.put( name, value ); - } - - // ---------------------------------------------------------------------- - // Child handling - // ---------------------------------------------------------------------- - - public Xpp3Dom getChild( int i ) - { - return (Xpp3Dom) childList.get( i ); - } - - public Xpp3Dom getChild( String name ) - { - return (Xpp3Dom) childMap.get( name ); - } - - public void addChild( Xpp3Dom xpp3Dom ) - { - xpp3Dom.setParent( this ); - childList.add( xpp3Dom ); - childMap.put( xpp3Dom.getName(), xpp3Dom ); - } - - public Xpp3Dom[] getChildren() - { - if ( null == childList || childList.isEmpty() ) - { - return EMPTY_DOM_ARRAY; - } - else - { - return (Xpp3Dom[]) childList.toArray( new Xpp3Dom[childList.size()] ); - } - } - - public Xpp3Dom[] getChildren( String name ) - { - if ( null == childList ) - { - return EMPTY_DOM_ARRAY; - } - else - { - ArrayList children = new ArrayList(); - int size = childList.size(); - - for ( int i = 0; i < size; i++ ) - { - Xpp3Dom configuration = (Xpp3Dom) childList.get( i ); - if ( name.equals( configuration.getName() ) ) - { - children.add( configuration ); - } - } - - return (Xpp3Dom[]) children.toArray( new Xpp3Dom[children.size()] ); - } - } - - public int getChildCount() - { - if ( null == childList ) - { - return 0; - } - - return childList.size(); - } - - public void removeChild( int i ) - { - Xpp3Dom child = getChild( i ); - childMap.values().remove( child ); - childList.remove( i ); - // In case of any dangling references - child.setParent( null ); - } - - // ---------------------------------------------------------------------- - // Parent handling - // ---------------------------------------------------------------------- - - public Xpp3Dom getParent() - { - return parent; - } - - public void setParent( Xpp3Dom parent ) - { - this.parent = parent; - } - - // ---------------------------------------------------------------------- - // Helpers - // ---------------------------------------------------------------------- - - public void writeToSerializer( String namespace, XmlSerializer serializer ) - throws IOException - { - // TODO: WARNING! Later versions of plexus-utils psit out an <?xml ?> header due to thinking this is a new document - not the desired behaviour! - SerializerXMLWriter xmlWriter = new SerializerXMLWriter( namespace, serializer ); - Xpp3DomWriter.write( xmlWriter, this ); - if ( xmlWriter.getExceptions().size() > 0 ) - { - throw (IOException) xmlWriter.getExceptions().get( 0 ); - } - } - - /** - * Merges one DOM into another, given a specific algorithm and possible override points for that algorithm. - * The algorithm is as follows: - * - * 1. if the recessive DOM is null, there is nothing to do...return. - * - * 2. Determine whether the dominant node will suppress the recessive one (flag=mergeSelf). - * - * A. retrieve the 'combine.self' attribute on the dominant node, and try to match against 'override'... - * if it matches 'override', then set mergeSelf == false...the dominant node suppresses the recessive - * one completely. - * - * B. otherwise, use the default value for mergeSelf, which is true...this is the same as specifying - * 'combine.self' == 'merge' as an attribute of the dominant root node. - * - * 3. If mergeSelf == true - * - * A. if the dominant root node's value is empty, set it to the recessive root node's value - * - * B. For each attribute in the recessive root node which is not set in the dominant root node, set it. - * - * C. Determine whether children from the recessive DOM will be merged or appended to the dominant - * DOM as siblings (flag=mergeChildren). - * - * i. if childMergeOverride is set (non-null), use that value (true/false) - * - * ii. retrieve the 'combine.children' attribute on the dominant node, and try to match against - * 'append'...if it matches 'append', then set mergeChildren == false...the recessive children - * will be appended as siblings of the dominant children. - * - * iii. otherwise, use the default value for mergeChildren, which is true...this is the same as - * specifying 'combine.children' == 'merge' as an attribute on the dominant root node. - * - * D. Iterate through the recessive children, and: - * - * i. if mergeChildren == true and there is a corresponding dominant child (matched by element name), - * merge the two. - * - * ii. otherwise, add the recessive child as a new child on the dominant root node. - */ - private static void mergeIntoXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive, Boolean childMergeOverride ) - { - // TODO: share this as some sort of assembler, implement a walk interface? - if ( recessive == null ) - { - return; - } - - boolean mergeSelf = true; - - String selfMergeMode = dominant.getAttribute( SELF_COMBINATION_MODE_ATTRIBUTE ); - - if ( SELF_COMBINATION_OVERRIDE.equals( selfMergeMode ) ) - { - mergeSelf = false; - } - - if ( mergeSelf ) - { - if ( isEmpty( dominant.getValue() ) ) - { - dominant.setValue( recessive.getValue() ); - } - - String[] recessiveAttrs = recessive.getAttributeNames(); - for ( int i = 0; i < recessiveAttrs.length; i++ ) - { - String attr = recessiveAttrs[i]; - - if ( isEmpty( dominant.getAttribute( attr ) ) ) - { - dominant.setAttribute( attr, recessive.getAttribute( attr ) ); - } - } - - if ( recessive.getChildCount() > 0 ) - { - boolean mergeChildren = true; - - if ( childMergeOverride != null ) - { - mergeChildren = childMergeOverride.booleanValue(); - } - else - { - String childMergeMode = dominant.getAttribute( CHILDREN_COMBINATION_MODE_ATTRIBUTE ); - - if ( CHILDREN_COMBINATION_APPEND.equals( childMergeMode ) ) - { - mergeChildren = false; - } - } - - if ( !mergeChildren ) - { - Xpp3Dom[] dominantChildren = dominant.getChildren(); - // remove these now, so we can append them to the recessive list later. - dominant.childList.clear(); - - for ( int i = 0, recessiveChildCount = recessive.getChildCount(); i < recessiveChildCount; i++ ) - { - Xpp3Dom recessiveChild = recessive.getChild( i ); - dominant.addChild( new Xpp3Dom( recessiveChild ) ); - } - - // now, re-add these children so they'll be appended to the recessive list. - for ( int i = 0; i < dominantChildren.length; i++ ) - { - dominant.addChild( dominantChildren[i] ); - } - } - else - { - Map commonChildren = new HashMap(); - - for ( Iterator it = recessive.childMap.keySet().iterator(); it.hasNext(); ) - { - String childName = (String) it.next(); - Xpp3Dom[] dominantChildren = dominant.getChildren( childName ); - if ( dominantChildren.length > 0 ) - { - commonChildren.put( childName, Arrays.asList( dominantChildren ).iterator() ); - } - } - - for ( int i = 0, recessiveChildCount = recessive.getChildCount(); i < recessiveChildCount; i++ ) - { - Xpp3Dom recessiveChild = recessive.getChild( i ); - Iterator it = (Iterator) commonChildren.get( recessiveChild.getName() ); - if ( it == null ) - { - dominant.addChild( new Xpp3Dom( recessiveChild ) ); - } - else if ( it.hasNext() ) - { - Xpp3Dom dominantChild = (Xpp3Dom) it.next(); - mergeIntoXpp3Dom( dominantChild, recessiveChild, childMergeOverride ); - } - } - } - } - } - } - - /** - * Merge two DOMs, with one having dominance in the case of collision. - * - * @see #CHILDREN_COMBINATION_MODE_ATTRIBUTE - * @see #SELF_COMBINATION_MODE_ATTRIBUTE - * - * @param dominant The dominant DOM into which the recessive value/attributes/children will be merged - * @param recessive The recessive DOM, which will be merged into the dominant DOM - * @param childMergeOverride Overrides attribute flags to force merging or appending of child elements - * into the dominant DOM - */ - public static Xpp3Dom mergeXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive, Boolean childMergeOverride ) - { - if ( dominant != null ) - { - mergeIntoXpp3Dom( dominant, recessive, childMergeOverride ); - return dominant; - } - return recessive; - } - - /** - * Merge two DOMs, with one having dominance in the case of collision. - * Merge mechanisms (vs. override for nodes, or vs. append for children) is determined by - * attributes of the dominant root node. - * - * @see #CHILDREN_COMBINATION_MODE_ATTRIBUTE - * @see #SELF_COMBINATION_MODE_ATTRIBUTE - * - * @param dominant The dominant DOM into which the recessive value/attributes/children will be merged - * @param recessive The recessive DOM, which will be merged into the dominant DOM - */ - public static Xpp3Dom mergeXpp3Dom( Xpp3Dom dominant, Xpp3Dom recessive ) - { - if ( dominant != null ) - { - mergeIntoXpp3Dom( dominant, recessive, null ); - return dominant; - } - return recessive; - } - - // ---------------------------------------------------------------------- - // Standard object handling - // ---------------------------------------------------------------------- - - public boolean equals( Object obj ) - { - if ( obj == this ) - { - return true; - } - - if ( !( obj instanceof Xpp3Dom ) ) - { - return false; - } - - Xpp3Dom dom = (Xpp3Dom) obj; - - if ( name == null ? dom.name != null : !name.equals( dom.name ) ) - { - return false; - } - else if ( value == null ? dom.value != null : !value.equals( dom.value ) ) - { - return false; - } - else if ( attributes == null ? dom.attributes != null : !attributes.equals( dom.attributes ) ) - { - return false; - } - else if ( childList == null ? dom.childList != null : !childList.equals( dom.childList ) ) - { - return false; - } - else - { - return true; - } - } - - public int hashCode() - { - int result = 17; - result = 37 * result + ( name != null ? name.hashCode() : 0 ); - result = 37 * result + ( value != null ? value.hashCode() : 0 ); - result = 37 * result + ( attributes != null ? attributes.hashCode() : 0 ); - result = 37 * result + ( childList != null ? childList.hashCode() : 0 ); - return result; - } - - public String toString() - { - // TODO: WARNING! Later versions of plexus-utils psit out an <?xml ?> header due to thinking this is a new document - not the desired behaviour! - StringWriter writer = new StringWriter(); - XMLWriter xmlWriter = new PrettyPrintXMLWriter( writer, "UTF-8", null ); - Xpp3DomWriter.write( xmlWriter, this ); - return writer.toString(); - } - - public String toUnescapedString() - { - // TODO: WARNING! Later versions of plexus-utils psit out an <?xml ?> header due to thinking this is a new document - not the desired behaviour! - StringWriter writer = new StringWriter(); - XMLWriter xmlWriter = new PrettyPrintXMLWriter( writer, "UTF-8", null ); - Xpp3DomWriter.write( xmlWriter, this, false ); - return writer.toString(); - } - - public static boolean isNotEmpty( String str ) - { - return ( ( str != null ) && ( str.length() > 0 ) ); - } - - public static boolean isEmpty( String str ) - { - return ( ( str == null ) || ( str.trim().length() == 0 ) ); - } - -} diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java index a719a0c7..a719a0c7 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/DefaultSchedules.java index 4c1fe571..4c1fe571 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/DefaultSchedules.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/DefaultSchedules.java diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/LifecycleExecutor.java index 37b6e499..37b6e499 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/LifecycleExecutor.java diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java index b28e6c01..b28e6c01 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java index 7d35b102..7d35b102 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/internal/LifecycleExecutionPlanCalculator.java diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java index 113a5ab3..113a5ab3 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/lifecycle/internal/LifecycleTaskSegmentCalculator.java diff --git a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java index 603e6704..9c646b75 100644 --- a/org.eclipse.m2e.maven.runtime/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java +++ b/org.eclipse.m2e.maven.runtime/src/maven-3.0.3/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java @@ -299,10 +299,8 @@ public class DefaultMavenPluginManager MavenProject project = session.getCurrentProject(); - Map<String, ClassLoader> foreignImports = calcImports( project, parent, imports ); - PluginRealmCache.Key cacheKey = - pluginRealmCache.createKey( plugin, parent, foreignImports, filter, project.getRemotePluginRepositories(), + pluginRealmCache.createKey( plugin, parent, imports, filter, project.getRemotePluginRepositories(), session.getRepositorySession() ); PluginRealmCache.CacheRecord cacheRecord = pluginRealmCache.get( cacheKey ); @@ -318,7 +316,7 @@ public class DefaultMavenPluginManager } else { - createPluginRealm( pluginDescriptor, session, parent, foreignImports, filter ); + createPluginRealm( pluginDescriptor, session, parent, imports, filter ); cacheRecord = pluginRealmCache.put( cacheKey, pluginDescriptor.getClassRealm(), pluginDescriptor.getArtifacts() ); @@ -328,7 +326,7 @@ public class DefaultMavenPluginManager } private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent, - Map<String, ClassLoader> foreignImports, DependencyFilter filter ) + List<String> imports, DependencyFilter filter ) throws PluginResolutionException, PluginContainerException { Plugin plugin = pluginDescriptor.getPlugin(); @@ -371,6 +369,8 @@ public class DefaultMavenPluginManager List<org.sonatype.aether.artifact.Artifact> pluginArtifacts = nlg.getArtifacts( true ); + Map<String, ClassLoader> foreignImports = calcImports( project, parent, imports ); + ClassRealm pluginRealm = classRealmManager.createPluginRealm( plugin, parent, null, foreignImports, pluginArtifacts ); diff --git a/org.eclipse.m2e.maven.runtime/update-jars-pom.xml b/org.eclipse.m2e.maven.runtime/update-jars-pom.xml index 757ab1d9..e82aee30 100644 --- a/org.eclipse.m2e.maven.runtime/update-jars-pom.xml +++ b/org.eclipse.m2e.maven.runtime/update-jars-pom.xml @@ -36,7 +36,7 @@ <wagon-ahc.version>1.1.0</wagon-ahc.version> <!-- the following need to be reconciled with maven version used --> - <plexus-utils.version>2.0.6-SNAPSHOT</plexus-utils.version> + <plexus-utils.version>2.0.6</plexus-utils.version> </properties> <groupId>org.eclipse.m2e</groupId> |