fixed errors reported by Checkstyle

git-svn-id: https://svn.apache.org/repos/asf/maven/maven-3/trunk@958295 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Herve Boutemy 2010-06-26 23:16:18 +00:00
parent 4e202d7d01
commit 23f2095652
234 changed files with 3413 additions and 2645 deletions

View File

@ -107,9 +107,9 @@ public static String key( String groupId, String artifactId, String version )
return groupId + ":" + artifactId + ":" + version; return groupId + ":" + artifactId + ":" + version;
} }
public static Map<String,Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts ) public static Map<String, Artifact> artifactMapByVersionlessId( Collection<Artifact> artifacts )
{ {
Map<String,Artifact> artifactMap = new LinkedHashMap<String,Artifact>(); Map<String, Artifact> artifactMap = new LinkedHashMap<String, Artifact>();
if ( artifacts != null ) if ( artifacts != null )
{ {

View File

@ -77,21 +77,25 @@ public class DefaultArtifact
private List<ArtifactVersion> availableVersions; private List<ArtifactVersion> availableVersions;
private Map<Object,ArtifactMetadata> metadataMap; private Map<Object, ArtifactMetadata> metadataMap;
private boolean optional; private boolean optional;
public DefaultArtifact( String groupId, String artifactId, String version, String scope, String type, String classifier, ArtifactHandler artifactHandler ) public DefaultArtifact( String groupId, String artifactId, String version, String scope, String type,
String classifier, ArtifactHandler artifactHandler )
{ {
this( groupId, artifactId, VersionRange.createFromVersion( version ), scope, type, classifier, artifactHandler, false ); this( groupId, artifactId, VersionRange.createFromVersion( version ), scope, type, classifier, artifactHandler,
false );
} }
public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler ) public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type,
String classifier, ArtifactHandler artifactHandler )
{ {
this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false ); this( groupId, artifactId, versionRange, scope, type, classifier, artifactHandler, false );
} }
public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type, String classifier, ArtifactHandler artifactHandler, boolean optional ) public DefaultArtifact( String groupId, String artifactId, VersionRange versionRange, String scope, String type,
String classifier, ArtifactHandler artifactHandler, boolean optional )
{ {
this.groupId = groupId; this.groupId = groupId;
@ -247,7 +251,7 @@ public void addMetadata( ArtifactMetadata metadata )
{ {
if ( metadataMap == null ) if ( metadataMap == null )
{ {
metadataMap = new HashMap<Object,ArtifactMetadata>(); metadataMap = new HashMap<Object, ArtifactMetadata>();
} }
ArtifactMetadata m = metadataMap.get( metadata.getKey() ); ArtifactMetadata m = metadataMap.get( metadata.getKey() );

View File

@ -1,20 +1,25 @@
package org.apache.maven.artifact.repository; package org.apache.maven.artifact.repository;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.List;
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
@ -61,18 +66,18 @@ public interface ArtifactRepository
@Deprecated @Deprecated
boolean isBlacklisted(); boolean isBlacklisted();
@Deprecated @Deprecated
void setBlacklisted( boolean blackListed ); void setBlacklisted( boolean blackListed );
// //
// New interface methods for the repository system. // New interface methods for the repository system.
// //
Artifact find( Artifact artifact ); Artifact find( Artifact artifact );
/** /**
* Finds the versions of the specified artifact that are available in this repository. * Finds the versions of the specified artifact that are available in this repository.
* *
* @param artifact The artifact whose available versions should be determined, must not be {@code null}. * @param artifact The artifact whose available versions should be determined, must not be {@code null}.
* @return The available versions of the artifact or an empty list if none, never {@code null}. * @return The available versions of the artifact or an empty list if none, never {@code null}.
*/ */
@ -81,14 +86,14 @@ public interface ArtifactRepository
/** /**
* Indicates whether this repository is backed by actual projects. For instance, the build reactor or IDE workspace * Indicates whether this repository is backed by actual projects. For instance, the build reactor or IDE workspace
* are examples of such repositories. * are examples of such repositories.
* *
* @return {@code true} if the repository is backed by actual projects, {@code false} otherwise. * @return {@code true} if the repository is backed by actual projects, {@code false} otherwise.
*/ */
boolean isProjectAware(); boolean isProjectAware();
void setAuthentication( Authentication authentication ); void setAuthentication( Authentication authentication );
Authentication getAuthentication(); Authentication getAuthentication();
void setProxy( Proxy proxy ); void setProxy( Proxy proxy );
Proxy getProxy(); Proxy getProxy();
} }

View File

@ -61,9 +61,7 @@ public ArtifactRepositoryPolicy( ArtifactRepositoryPolicy policy )
this( policy.isEnabled(), policy.getUpdatePolicy(), policy.getChecksumPolicy() ); this( policy.isEnabled(), policy.getUpdatePolicy(), policy.getChecksumPolicy() );
} }
public ArtifactRepositoryPolicy( boolean enabled, public ArtifactRepositoryPolicy( boolean enabled, String updatePolicy, String checksumPolicy )
String updatePolicy,
String checksumPolicy )
{ {
this.enabled = enabled; this.enabled = enabled;

View File

@ -1,8 +1,5 @@
package org.apache.maven.artifact.repository.layout; package org.apache.maven.artifact.repository.layout;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file * or more contributor license agreements. See the NOTICE file
@ -22,6 +19,9 @@
* under the License. * under the License.
*/ */
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
public interface ArtifactRepositoryLayout2 public interface ArtifactRepositoryLayout2
extends ArtifactRepositoryLayout extends ArtifactRepositoryLayout
{ {

View File

@ -1,20 +1,25 @@
package org.apache.maven.artifact.resolver; package org.apache.maven.artifact.resolver;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.List;
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
@ -35,30 +40,36 @@ protected ArtifactNotFoundException( String message, Artifact artifact, List<Art
public ArtifactNotFoundException( String message, Artifact artifact ) public ArtifactNotFoundException( String message, Artifact artifact )
{ {
this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
.getDependencyTrail() ); artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact.getDependencyTrail() );
} }
protected ArtifactNotFoundException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories, Throwable cause ) protected ArtifactNotFoundException( String message, Artifact artifact,
List<ArtifactRepository> remoteRepositories, Throwable cause )
{ {
this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(), remoteRepositories, artifact.getDownloadUrl(), artifact this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
.getDependencyTrail(), cause ); artifact.getClassifier(), remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(),
cause );
} }
public ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type, String classifier, List<ArtifactRepository> remoteRepositories, public ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type,
String classifier, List<ArtifactRepository> remoteRepositories,
String downloadUrl, List<String> path, Throwable cause ) String downloadUrl, List<String> path, Throwable cause )
{ {
super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier, downloadUrl, path ), groupId, artifactId, version, type, classifier, remoteRepositories, super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
null, cause ); downloadUrl, path ), groupId, artifactId, version, type, classifier,
remoteRepositories, null, cause );
this.downloadUrl = downloadUrl; this.downloadUrl = downloadUrl;
} }
private ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type, String classifier, List<ArtifactRepository> remoteRepositories, private ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type,
String classifier, List<ArtifactRepository> remoteRepositories,
String downloadUrl, List<String> path ) String downloadUrl, List<String> path )
{ {
super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier, downloadUrl, path ), groupId, artifactId, version, type, classifier, remoteRepositories, super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
null ); downloadUrl, path ), groupId, artifactId, version, type, classifier,
remoteRepositories, null );
this.downloadUrl = downloadUrl; this.downloadUrl = downloadUrl;
} }

View File

@ -1,18 +1,22 @@
package org.apache.maven.artifact.resolver; package org.apache.maven.artifact.resolver;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.List;
@ -34,7 +38,8 @@ public ArtifactResolutionException( String message, String groupId, String artif
super( message, groupId, artifactId, version, type, classifier, remoteRepositories, path, t ); super( message, groupId, artifactId, version, type, classifier, remoteRepositories, path, t );
} }
public ArtifactResolutionException( String message, String groupId, String artifactId, String version, String type, String classifier, Throwable t ) public ArtifactResolutionException( String message, String groupId, String artifactId, String version, String type,
String classifier, Throwable t )
{ {
super( message, groupId, artifactId, version, type, classifier, null, null, t ); super( message, groupId, artifactId, version, type, classifier, null, null, t );
} }
@ -54,7 +59,8 @@ public ArtifactResolutionException( String message, Artifact artifact, Throwable
super( message, artifact, null, cause ); super( message, artifact, null, cause );
} }
public ArtifactResolutionException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories, Throwable cause ) public ArtifactResolutionException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories,
Throwable cause )
{ {
super( message, artifact, remoteRepositories, cause ); super( message, artifact, remoteRepositories, cause );
} }

View File

@ -67,15 +67,15 @@ public class ComparableVersion
private interface Item private interface Item
{ {
public static final int INTEGER_ITEM = 0; final int INTEGER_ITEM = 0;
public static final int STRING_ITEM = 1; final int STRING_ITEM = 1;
public static final int LIST_ITEM = 2; final int LIST_ITEM = 2;
public int compareTo( Item item ); int compareTo( Item item );
public int getType(); int getType();
public boolean isNull(); boolean isNull();
} }
/** /**
@ -92,7 +92,7 @@ private static class IntegerItem
private IntegerItem() private IntegerItem()
{ {
this.value = BigInteger_ZERO; this.value = BigInteger_ZERO;
} }
public IntegerItem( String str ) public IntegerItem( String str )
@ -145,21 +145,23 @@ public String toString()
private static class StringItem private static class StringItem
implements Item implements Item
{ {
private final static String[] QUALIFIERS = { "alpha", "beta", "milestone", "rc", "snapshot", "", "sp" }; private static final String[] QUALIFIERS = { "alpha", "beta", "milestone", "rc", "snapshot", "", "sp" };
private final static List<String> _QUALIFIERS = Arrays.asList( QUALIFIERS ); private static final List<String> _QUALIFIERS = Arrays.asList( QUALIFIERS );
private final static Properties ALIASES = new Properties(); private static final Properties ALIASES = new Properties();
static { static
{
ALIASES.put( "ga", "" ); ALIASES.put( "ga", "" );
ALIASES.put( "final", "" ); ALIASES.put( "final", "" );
ALIASES.put( "cr", "rc" ); ALIASES.put( "cr", "rc" );
} }
/** /**
* A comparable value for the empty-string qualifier. This one is used to determine if a given qualifier makes the * A comparable value for the empty-string qualifier. This one is used to determine if a given qualifier makes
* version older than one without a qualifier, or more recent. * the version older than one without a qualifier, or more recent.
*/ */
private static String RELEASE_VERSION_INDEX = String.valueOf( _QUALIFIERS.indexOf( "" ) ); private static final String RELEASE_VERSION_INDEX = String.valueOf( _QUALIFIERS.indexOf( "" ) );
private String value; private String value;
@ -285,7 +287,7 @@ public int compareTo( Item item )
{ {
return 0; // 1-0 = 1- (normalize) = 1 return 0; // 1-0 = 1- (normalize) = 1
} }
Item first = (Item) get(0); Item first = get( 0 );
return first.compareTo( null ); return first.compareTo( null );
} }
switch ( item.getType() ) switch ( item.getType() )
@ -302,8 +304,8 @@ public int compareTo( Item item )
while ( left.hasNext() || right.hasNext() ) while ( left.hasNext() || right.hasNext() )
{ {
Item l = left.hasNext() ? (Item) left.next() : null; Item l = left.hasNext() ? left.next() : null;
Item r = right.hasNext() ? (Item) right.next() : null; Item r = right.hasNext() ? right.next() : null;
// if this is shorter, then invert the compare and mul with -1 // if this is shorter, then invert the compare and mul with -1
int result = l == null ? -1 * r.compareTo( l ) : l.compareTo( r ); int result = l == null ? -1 * r.compareTo( l ) : l.compareTo( r );
@ -454,7 +456,7 @@ public String toString()
public boolean equals( Object o ) public boolean equals( Object o )
{ {
return ( o instanceof ComparableVersion ) && canonical.equals( ( ( ComparableVersion )o ).canonical ); return ( o instanceof ComparableVersion ) && canonical.equals( ( (ComparableVersion) o ).canonical );
} }
public int hashCode() public int hashCode()

View File

@ -39,9 +39,7 @@ public class Restriction
public static final Restriction EVERYTHING = new Restriction( null, false, null, false ); public static final Restriction EVERYTHING = new Restriction( null, false, null, false );
public Restriction( ArtifactVersion lowerBound, public Restriction( ArtifactVersion lowerBound, boolean lowerBoundInclusive, ArtifactVersion upperBound,
boolean lowerBoundInclusive,
ArtifactVersion upperBound,
boolean upperBoundInclusive ) boolean upperBoundInclusive )
{ {
this.lowerBound = lowerBound; this.lowerBound = lowerBound;
@ -162,7 +160,7 @@ public boolean equals( Object other )
return true; return true;
} }
if ( !(other instanceof Restriction ) ) if ( !( other instanceof Restriction ) )
{ {
return false; return false;
} }

View File

@ -21,11 +21,11 @@
public class Proxy public class Proxy
{ {
public final static String PROXY_SOCKS5 = "SOCKS_5"; public static final String PROXY_SOCKS5 = "SOCKS_5";
public final static String PROXY_SOCKS4 = "SOCKS4"; public static final String PROXY_SOCKS4 = "SOCKS4";
public final static String PROXY_HTTP = "HTTP"; public static final String PROXY_HTTP = "HTTP";
/** /**
* Proxy server host * Proxy server host
@ -69,7 +69,7 @@ public class Proxy
/** /**
* Return proxy server host name. * Return proxy server host name.
* *
* @return proxy server host name * @return proxy server host name
*/ */
public String getHost() public String getHost()
@ -79,7 +79,7 @@ public String getHost()
/** /**
* Set proxy host name. * Set proxy host name.
* *
* @param host proxy server host name * @param host proxy server host name
*/ */
public void setHost( String host ) public void setHost( String host )
@ -89,7 +89,7 @@ public void setHost( String host )
/** /**
* Get user's password used to login to proxy server. * Get user's password used to login to proxy server.
* *
* @return user's password at proxy host * @return user's password at proxy host
*/ */
public String getPassword() public String getPassword()
@ -99,7 +99,7 @@ public String getPassword()
/** /**
* Set the user's password for the proxy server. * Set the user's password for the proxy server.
* *
* @param password password to use to login to a proxy server * @param password password to use to login to a proxy server
*/ */
public void setPassword( String password ) public void setPassword( String password )
@ -109,7 +109,7 @@ public void setPassword( String password )
/** /**
* Get the proxy port. * Get the proxy port.
* *
* @return proxy server port * @return proxy server port
*/ */
public int getPort() public int getPort()
@ -119,7 +119,7 @@ public int getPort()
/** /**
* Set the proxy port. * Set the proxy port.
* *
* @param port proxy server port * @param port proxy server port
*/ */
public void setPort( int port ) public void setPort( int port )
@ -129,7 +129,7 @@ public void setPort( int port )
/** /**
* Get the proxy username. * Get the proxy username.
* *
* @return username for the proxy server * @return username for the proxy server
*/ */
public String getUserName() public String getUserName()
@ -139,7 +139,7 @@ public String getUserName()
/** /**
* Set the proxy username. * Set the proxy username.
* *
* @param userName username for the proxy server * @param userName username for the proxy server
*/ */
public void setUserName( String userName ) public void setUserName( String userName )
@ -149,7 +149,7 @@ public void setUserName( String userName )
/** /**
* Get the type of the proxy server. * Get the type of the proxy server.
* *
* @return the type of the proxy server * @return the type of the proxy server
*/ */
public String getProtocol() public String getProtocol()

View File

@ -22,7 +22,7 @@
/** /**
* Type safe reincarnation of Artifact scope. Also supplies the <code>DEFAULT_SCOPE<code> as well * Type safe reincarnation of Artifact scope. Also supplies the <code>DEFAULT_SCOPE<code> as well
* as convenience method to deal with scope relationships. * as convenience method to deal with scope relationships.
* *
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
@ -40,7 +40,7 @@ public enum ArtifactScopeEnum
{ {
this.id = id; this.id = id;
} }
int getId() int getId()
{ {
return id; return id;
@ -49,16 +49,16 @@ int getId()
/** /**
* Helper method to simplify null processing * Helper method to simplify null processing
* *
* @return * @return
*/ */
public static final ArtifactScopeEnum checkScope( ArtifactScopeEnum scope ) public static final ArtifactScopeEnum checkScope( ArtifactScopeEnum scope )
{ {
return scope == null ? DEFAULT_SCOPE : scope; return scope == null ? DEFAULT_SCOPE : scope;
} }
/** /**
* *
* @return unsafe String representation of this scope. * @return unsafe String representation of this scope.
*/ */
public String getScope() public String getScope()
@ -90,40 +90,44 @@ else if ( id == 5 )
return Artifact.SCOPE_RUNTIME_PLUS_SYSTEM; return Artifact.SCOPE_RUNTIME_PLUS_SYSTEM;
} }
} }
private static final ArtifactScopeEnum [][][] _compliancySets = { private static final ArtifactScopeEnum [][][] _compliancySets = {
{ { compile }, { compile, provided, system } } { { compile }, { compile, provided, system } }
, { { test }, { compile, test, provided, system } } , { { test }, { compile, test, provided, system } }
, { { runtime }, { compile, runtime, system } } , { { runtime }, { compile, runtime, system } }
, { { provided }, { compile, test, provided } } , { { provided }, { compile, test, provided } }
}; };
/** /**
* scope relationship function. Used by the graph conflict resolution policies * scope relationship function. Used by the graph conflict resolution policies
* *
* @param scope * @param scope
* @return true is supplied scope is an inclusive sub-scope of current one. * @return true is supplied scope is an inclusive sub-scope of current one.
*/ */
public boolean encloses( ArtifactScopeEnum scope ) public boolean encloses( ArtifactScopeEnum scope )
{ {
final ArtifactScopeEnum s = checkScope(scope); final ArtifactScopeEnum s = checkScope( scope );
// system scope is historic only - and simple
if( id == system.id )
return scope.id == system.id;
for( ArtifactScopeEnum[][] set : _compliancySets ) // system scope is historic only - and simple
{ if ( id == system.id )
if( id == set[0][0].id ) {
{ return scope.id == system.id;
for( ArtifactScopeEnum ase : set[1] ) }
{
if( s.id == ase.id ) for ( ArtifactScopeEnum[][] set : _compliancySets )
return true; {
} if ( id == set[0][0].id )
break; {
} for ( ArtifactScopeEnum ase : set[1] )
} {
return false; if ( s.id == ase.id )
{
return true;
}
}
break;
}
}
return false;
} }
} }

View File

@ -19,7 +19,6 @@
* under the License. * under the License.
*/ */
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
/** /**
@ -35,16 +34,13 @@ public class UnknownRepositoryLayoutException
private final String layoutId; private final String layoutId;
public UnknownRepositoryLayoutException( String repositoryId, public UnknownRepositoryLayoutException( String repositoryId, String layoutId )
String layoutId )
{ {
super( "Cannot find ArtifactRepositoryLayout instance for: " + layoutId, repositoryId ); super( "Cannot find ArtifactRepositoryLayout instance for: " + layoutId, repositoryId );
this.layoutId = layoutId; this.layoutId = layoutId;
} }
public UnknownRepositoryLayoutException( String repositoryId, public UnknownRepositoryLayoutException( String repositoryId, String layoutId, ComponentLookupException e )
String layoutId,
ComponentLookupException e )
{ {
super( "Cannot find ArtifactRepositoryLayout instance for: " + layoutId, repositoryId, e ); super( "Cannot find ArtifactRepositoryLayout instance for: " + layoutId, repositoryId, e );
this.layoutId = layoutId; this.layoutId = layoutId;

View File

@ -1,18 +1,22 @@
package org.apache.maven.artifact.deployer; package org.apache.maven.artifact.deployer;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -27,29 +31,31 @@ public interface ArtifactDeployer
/** /**
* Deploy an artifact from a particular directory. The artifact handler is used to determine the * Deploy an artifact from a particular directory. The artifact handler is used to determine the
* filename of the source file. * filename of the source file.
* *
* @param basedir the directory where the artifact is stored * @param basedir the directory where the artifact is stored
* @param finalName the name of the artifact sans extension * @param finalName the name of the artifact without extension
* @param artifact the artifact definition * @param artifact the artifact definition
* @param deploymentRepository the repository to deploy to * @param deploymentRepository the repository to deploy to
* @param localRepository the local repository to install into * @param localRepository the local repository to install into
* @throws ArtifactDeploymentException if an error occurred deploying the artifact * @throws ArtifactDeploymentException if an error occurred deploying the artifact
* @deprecated to be removed before 2.0 after the instlal/deploy plugins use the alternate * @deprecated to be removed before 2.0 after the install/deploy plugins use the alternate
* method * method
*/ */
@Deprecated @Deprecated
void deploy( String basedir, String finalName, Artifact artifact, ArtifactRepository deploymentRepository, ArtifactRepository localRepository ) void deploy( String basedir, String finalName, Artifact artifact, ArtifactRepository deploymentRepository,
ArtifactRepository localRepository )
throws ArtifactDeploymentException; throws ArtifactDeploymentException;
/** /**
* Deploy an artifact from a particular file. * Deploy an artifact from a particular file.
* *
* @param source the file to deploy * @param source the file to deploy
* @param artifact the artifact definition * @param artifact the artifact definition
* @param deploymentRepository the repository to deploy to * @param deploymentRepository the repository to deploy to
* @param localRepository the local repository to install into * @param localRepository the local repository to install into
* @throws ArtifactDeploymentException if an error occurred deploying the artifact * @throws ArtifactDeploymentException if an error occurred deploying the artifact
*/ */
void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository, ArtifactRepository localRepository ) void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository,
ArtifactRepository localRepository )
throws ArtifactDeploymentException; throws ArtifactDeploymentException;
} }

View File

@ -1,18 +1,22 @@
package org.apache.maven.artifact.deployer; package org.apache.maven.artifact.deployer;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -40,7 +44,7 @@
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.FileUtils;
@Component (role=ArtifactDeployer.class) @Component( role = ArtifactDeployer.class )
public class DefaultArtifactDeployer public class DefaultArtifactDeployer
extends AbstractLogEnabled extends AbstractLogEnabled
implements ArtifactDeployer implements ArtifactDeployer
@ -65,7 +69,8 @@ public class DefaultArtifactDeployer
* correctly. * correctly.
*/ */
@Deprecated @Deprecated
public void deploy( String basedir, String finalName, Artifact artifact, ArtifactRepository deploymentRepository, ArtifactRepository localRepository ) public void deploy( String basedir, String finalName, Artifact artifact, ArtifactRepository deploymentRepository,
ArtifactRepository localRepository )
throws ArtifactDeploymentException throws ArtifactDeploymentException
{ {
String extension = artifact.getArtifactHandler().getExtension(); String extension = artifact.getArtifactHandler().getExtension();
@ -73,7 +78,8 @@ public void deploy( String basedir, String finalName, Artifact artifact, Artifac
deploy( source, artifact, deploymentRepository, localRepository ); deploy( source, artifact, deploymentRepository, localRepository );
} }
public void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository, ArtifactRepository localRepository ) public void deploy( File source, Artifact artifact, ArtifactRepository deploymentRepository,
ArtifactRepository localRepository )
throws ArtifactDeploymentException throws ArtifactDeploymentException
{ {
deploymentRepository = injectSession( deploymentRepository ); deploymentRepository = injectSession( deploymentRepository );

View File

@ -1,18 +1,22 @@
package org.apache.maven.artifact.installer; package org.apache.maven.artifact.installer;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -31,7 +35,7 @@ public interface ArtifactInstaller
/** /**
* Install an artifact from a particular directory. The artifact handler is used to determine * Install an artifact from a particular directory. The artifact handler is used to determine
* the filename of the source file. * the filename of the source file.
* *
* @param basedir the directory where the artifact is stored * @param basedir the directory where the artifact is stored
* @param finalName the name of the artifact sans extension * @param finalName the name of the artifact sans extension
* @param artifact the artifact definition * @param artifact the artifact definition
@ -46,7 +50,7 @@ void install( String basedir, String finalName, Artifact artifact, ArtifactRepos
/** /**
* Install an artifact from a particular file. * Install an artifact from a particular file.
* *
* @param source the file to install * @param source the file to install
* @param artifact the artifact definition * @param artifact the artifact definition
* @param localRepository the local repository to install into * @param localRepository the local repository to install into

View File

@ -39,7 +39,7 @@
/** /**
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role=ArtifactInstaller.class) @Component( role = ArtifactInstaller.class )
public class DefaultArtifactInstaller public class DefaultArtifactInstaller
extends AbstractLogEnabled extends AbstractLogEnabled
implements ArtifactInstaller implements ArtifactInstaller

View File

@ -42,27 +42,27 @@
import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.Logger;
@Component(role=WagonManager.class) @Component( role = WagonManager.class )
public class DefaultWagonManager public class DefaultWagonManager
extends org.apache.maven.repository.legacy.DefaultWagonManager extends org.apache.maven.repository.legacy.DefaultWagonManager
implements WagonManager implements WagonManager
{ {
@Requirement @Requirement
private Logger logger; private Logger logger;
@Requirement @Requirement
private LegacySupport legacySupport; private LegacySupport legacySupport;
@Requirement @Requirement
private SettingsDecrypter settingsDecrypter; private SettingsDecrypter settingsDecrypter;
@Requirement @Requirement
private MirrorSelector mirrorSelector; private MirrorSelector mirrorSelector;
@Requirement @Requirement
private ArtifactRepositoryFactory artifactRepositoryFactory; private ArtifactRepositoryFactory artifactRepositoryFactory;
public AuthenticationInfo getAuthenticationInfo( String id ) public AuthenticationInfo getAuthenticationInfo( String id )
{ {
MavenSession session = legacySupport.getSession(); MavenSession session = legacySupport.getSession();
@ -153,13 +153,13 @@ public void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepos
{ {
getArtifact( artifact, remoteRepositories, null, false ); getArtifact( artifact, remoteRepositories, null, false );
} }
@Deprecated @Deprecated
public ArtifactRepository getMirrorRepository( ArtifactRepository repository ) public ArtifactRepository getMirrorRepository( ArtifactRepository repository )
{ {
Mirror mirror = mirrorSelector.getMirror( repository, legacySupport.getSession().getSettings().getMirrors() ); Mirror mirror = mirrorSelector.getMirror( repository, legacySupport.getSession().getSettings().getMirrors() );
if ( mirror != null ) if ( mirror != null )
{ {
String id = mirror.getId(); String id = mirror.getId();
@ -170,12 +170,12 @@ public ArtifactRepository getMirrorRepository( ArtifactRepository repository )
} }
logger.debug( "Using mirror: " + mirror.getUrl() + " (id: " + id + ")" ); logger.debug( "Using mirror: " + mirror.getUrl() + " (id: " + id + ")" );
repository = artifactRepositoryFactory.createArtifactRepository( id, mirror.getUrl(), repository = artifactRepositoryFactory.createArtifactRepository( id, mirror.getUrl(),
repository.getLayout(), repository.getSnapshots(), repository.getLayout(), repository.getSnapshots(),
repository.getReleases() ); repository.getReleases() );
} }
return repository; return repository;
} }
} }

View File

@ -1,14 +1,5 @@
package org.apache.maven.artifact.manager; package org.apache.maven.artifact.manager;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.proxy.ProxyInfo;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file * or more contributor license agreements. See the NOTICE file
@ -28,6 +19,14 @@
* under the License. * under the License.
*/ */
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
import org.apache.maven.wagon.proxy.ProxyInfo;
/** /**
* Manages <a href="http://maven.apache.org/wagon">Wagon</a> related operations in Maven. * Manages <a href="http://maven.apache.org/wagon">Wagon</a> related operations in Maven.
@ -40,7 +39,7 @@ public interface WagonManager
extends org.apache.maven.repository.legacy.WagonManager extends org.apache.maven.repository.legacy.WagonManager
{ {
/** /**
* this method is only here for backward compat (project-info-reports:dependencies) * this method is only here for backward compat (project-info-reports:dependencies)
* the default implementation will return an empty AuthenticationInfo * the default implementation will return an empty AuthenticationInfo
*/ */
AuthenticationInfo getAuthenticationInfo( String id ); AuthenticationInfo getAuthenticationInfo( String id );
@ -52,7 +51,7 @@ void getArtifact( Artifact artifact, ArtifactRepository repository )
void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepositories ) void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepositories )
throws TransferFailedException, ResourceDoesNotExistException; throws TransferFailedException, ResourceDoesNotExistException;
ArtifactRepository getMirrorRepository( ArtifactRepository repository ); ArtifactRepository getMirrorRepository( ArtifactRepository repository );
} }

View File

@ -1,18 +1,22 @@
package org.apache.maven.artifact.repository; package org.apache.maven.artifact.repository;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.apache.maven.artifact.UnknownRepositoryLayoutException; import org.apache.maven.artifact.UnknownRepositoryLayoutException;
@ -35,12 +39,15 @@ ArtifactRepositoryLayout getLayout( String layoutId )
ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId, boolean uniqueVersion ) ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId, boolean uniqueVersion )
throws UnknownRepositoryLayoutException; throws UnknownRepositoryLayoutException;
ArtifactRepository createDeploymentArtifactRepository( String id, String url, ArtifactRepositoryLayout layout, boolean uniqueVersion ); ArtifactRepository createDeploymentArtifactRepository( String id, String url, ArtifactRepositoryLayout layout,
boolean uniqueVersion );
ArtifactRepository createArtifactRepository( String id, String url, String layoutId, ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases ) ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases )
throws UnknownRepositoryLayoutException; throws UnknownRepositoryLayoutException;
ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases ); ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases );
void setGlobalUpdatePolicy( String snapshotPolicy ); void setGlobalUpdatePolicy( String snapshotPolicy );

View File

@ -52,7 +52,7 @@ public class DefaultArtifactRepository
private Authentication authentication; private Authentication authentication;
private Proxy proxy; private Proxy proxy;
/** /**
* Create a local repository or a test repository. * Create a local repository or a test repository.
* *
@ -88,7 +88,8 @@ public DefaultArtifactRepository( String id, String url, ArtifactRepositoryLayou
* @param snapshots the policies to use for snapshots * @param snapshots the policies to use for snapshots
* @param releases the policies to use for releases * @param releases the policies to use for releases
*/ */
public DefaultArtifactRepository( String id, String url, ArtifactRepositoryLayout layout, ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases ) public DefaultArtifactRepository( String id, String url, ArtifactRepositoryLayout layout,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases )
{ {
super( id, url ); super( id, url );
@ -121,8 +122,7 @@ public String pathOfRemoteRepositoryMetadata( ArtifactMetadata artifactMetadata
return layout.pathOfRemoteRepositoryMetadata( artifactMetadata ); return layout.pathOfRemoteRepositoryMetadata( artifactMetadata );
} }
public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
ArtifactRepository repository )
{ {
return layout.pathOfLocalRepositoryMetadata( metadata, repository ); return layout.pathOfLocalRepositoryMetadata( metadata, repository );
} }
@ -131,7 +131,7 @@ public void setLayout( ArtifactRepositoryLayout layout )
{ {
this.layout = layout; this.layout = layout;
} }
public ArtifactRepositoryLayout getLayout() public ArtifactRepositoryLayout getLayout()
{ {
return layout; return layout;
@ -141,7 +141,7 @@ public void setSnapshotUpdatePolicy( ArtifactRepositoryPolicy snapshots )
{ {
this.snapshots = snapshots; this.snapshots = snapshots;
} }
public ArtifactRepositoryPolicy getSnapshots() public ArtifactRepositoryPolicy getSnapshots()
{ {
return snapshots; return snapshots;
@ -171,7 +171,7 @@ public void setBlacklisted( boolean blacklisted )
{ {
this.blacklisted = blacklisted; this.blacklisted = blacklisted;
} }
public String toString() public String toString()
{ {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@ -179,13 +179,13 @@ public String toString()
sb.append( " id: " ).append( getId() ).append( "\n" ); sb.append( " id: " ).append( getId() ).append( "\n" );
sb.append( " url: " ).append( getUrl() ).append( "\n" ); sb.append( " url: " ).append( getUrl() ).append( "\n" );
sb.append( " layout: " ).append( layout != null ? layout.getId() : "none" ).append( "\n" ); sb.append( " layout: " ).append( layout != null ? layout.getId() : "none" ).append( "\n" );
if ( snapshots != null ) if ( snapshots != null )
{ {
sb.append( "snapshots: [enabled => " ).append( snapshots.isEnabled() ); sb.append( "snapshots: [enabled => " ).append( snapshots.isEnabled() );
sb.append( ", update => " ).append( snapshots.getUpdatePolicy() ).append( "]\n" ); sb.append( ", update => " ).append( snapshots.getUpdatePolicy() ).append( "]\n" );
} }
if ( releases != null ) if ( releases != null )
{ {
sb.append( " releases: [enabled => " ).append( releases.isEnabled() ); sb.append( " releases: [enabled => " ).append( releases.isEnabled() );
@ -198,16 +198,16 @@ public String toString()
public Artifact find( Artifact artifact ) public Artifact find( Artifact artifact )
{ {
File artifactFile = new File( getBasedir(), pathOf( artifact ) ); File artifactFile = new File( getBasedir(), pathOf( artifact ) );
// We need to set the file here or the resolver will fail with an NPE, not fully equipped to deal // We need to set the file here or the resolver will fail with an NPE, not fully equipped to deal
// with multiple local repository implementations yet. // with multiple local repository implementations yet.
artifact.setFile( artifactFile ); artifact.setFile( artifactFile );
if( artifactFile.exists() ) if ( artifactFile.exists() )
{ {
artifact.setResolved( true ); artifact.setResolved( true );
} }
return artifact; return artifact;
} }

View File

@ -34,11 +34,11 @@
/** /**
* @author jdcasey * @author jdcasey
*/ */
@Component(role=ArtifactRepositoryFactory.class) @Component( role = ArtifactRepositoryFactory.class )
public class DefaultArtifactRepositoryFactory public class DefaultArtifactRepositoryFactory
implements ArtifactRepositoryFactory implements ArtifactRepositoryFactory
{ {
@Requirement @Requirement
private org.apache.maven.repository.legacy.repository.ArtifactRepositoryFactory factory; private org.apache.maven.repository.legacy.repository.ArtifactRepositoryFactory factory;
@ -54,26 +54,22 @@ public ArtifactRepositoryLayout getLayout( String layoutId )
return factory.getLayout( layoutId ); return factory.getLayout( layoutId );
} }
public ArtifactRepository createDeploymentArtifactRepository( String id, public ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId,
String url,
String layoutId,
boolean uniqueVersion ) boolean uniqueVersion )
throws UnknownRepositoryLayoutException throws UnknownRepositoryLayoutException
{ {
return injectSession( factory.createDeploymentArtifactRepository( id, url, layoutId, uniqueVersion ), false ); return injectSession( factory.createDeploymentArtifactRepository( id, url, layoutId, uniqueVersion ), false );
} }
public ArtifactRepository createDeploymentArtifactRepository( String id, public ArtifactRepository createDeploymentArtifactRepository( String id, String url,
String url,
ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryLayout repositoryLayout,
boolean uniqueVersion ) boolean uniqueVersion )
{ {
return injectSession( factory.createDeploymentArtifactRepository( id, url, repositoryLayout, uniqueVersion ), false); return injectSession( factory.createDeploymentArtifactRepository( id, url, repositoryLayout, uniqueVersion ),
false );
} }
public ArtifactRepository createArtifactRepository( String id, public ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
String url,
String layoutId,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy snapshots,
ArtifactRepositoryPolicy releases ) ArtifactRepositoryPolicy releases )
throws UnknownRepositoryLayoutException throws UnknownRepositoryLayoutException
@ -81,8 +77,7 @@ public ArtifactRepository createArtifactRepository( String id,
return injectSession( factory.createArtifactRepository( layoutId, url, layoutId, snapshots, releases ), true ); return injectSession( factory.createArtifactRepository( layoutId, url, layoutId, snapshots, releases ), true );
} }
public ArtifactRepository createArtifactRepository( String id, public ArtifactRepository createArtifactRepository( String id, String url,
String url,
ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryLayout repositoryLayout,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy snapshots,
ArtifactRepositoryPolicy releases ) ArtifactRepositoryPolicy releases )

View File

@ -31,7 +31,7 @@
* *
* @version $Id$ * @version $Id$
*/ */
@Component(role=ArtifactRepositoryLayout.class, hint="flat") @Component( role = ArtifactRepositoryLayout.class, hint = "flat" )
public class FlatRepositoryLayout public class FlatRepositoryLayout
implements ArtifactRepositoryLayout implements ArtifactRepositoryLayout
{ {
@ -43,7 +43,7 @@ public String getId()
{ {
return "flat"; return "flat";
} }
public String pathOf( Artifact artifact ) public String pathOf( Artifact artifact )
{ {
ArtifactHandler artifactHandler = artifact.getArtifactHandler(); ArtifactHandler artifactHandler = artifact.getArtifactHandler();
@ -65,8 +65,7 @@ public String pathOf( Artifact artifact )
return path.toString(); return path.toString();
} }
public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
ArtifactRepository repository )
{ {
return pathOfRepositoryMetadata( metadata.getLocalFilename( repository ) ); return pathOfRepositoryMetadata( metadata.getLocalFilename( repository ) );
} }

View File

@ -6,9 +6,9 @@
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * 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 * "License"); you may not use this file except in compliance with the License. You may obtain a
* copy of the License at * copy of the License at
* *
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * 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 * 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 * or implied. See the License for the specific language governing permissions and limitations under
@ -49,7 +49,7 @@
/** /**
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role=RepositoryMetadataManager.class) @Component( role = RepositoryMetadataManager.class )
public class DefaultRepositoryMetadataManager public class DefaultRepositoryMetadataManager
extends AbstractLogEnabled extends AbstractLogEnabled
implements RepositoryMetadataManager implements RepositoryMetadataManager
@ -60,7 +60,8 @@ public class DefaultRepositoryMetadataManager
@Requirement @Requirement
private UpdateCheckManager updateCheckManager; private UpdateCheckManager updateCheckManager;
public void resolve( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) public void resolve( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws RepositoryMetadataResolutionException throws RepositoryMetadataResolutionException
{ {
RepositoryRequest request = new DefaultRepositoryRequest(); RepositoryRequest request = new DefaultRepositoryRequest();
@ -204,7 +205,8 @@ else if ( updateCheckManager.isUpdateRequired( metadata, repository, file ) )
} }
catch ( RepositoryMetadataStoreException e ) catch ( RepositoryMetadataStoreException e )
{ {
throw new RepositoryMetadataResolutionException( "Unable to store local copy of metadata: " + e.getMessage(), e ); throw new RepositoryMetadataResolutionException( "Unable to store local copy of metadata: "
+ e.getMessage(), e );
} }
if ( cache != null ) if ( cache != null )
@ -342,7 +344,8 @@ private static final class CacheRecord
} }
private void mergeMetadata( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) private void mergeMetadata( RepositoryMetadata metadata, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws RepositoryMetadataStoreException throws RepositoryMetadataStoreException
{ {
// TODO: currently this is first wins, but really we should take the latest by comparing either the // TODO: currently this is first wins, but really we should take the latest by comparing either the
@ -371,7 +374,9 @@ private void mergeMetadata( RepositoryMetadata metadata, List<ArtifactRepository
updateSnapshotMetadata( metadata, previousMetadata, selected, localRepository ); updateSnapshotMetadata( metadata, previousMetadata, selected, localRepository );
} }
private void updateSnapshotMetadata( RepositoryMetadata metadata, Map<ArtifactRepository, Metadata> previousMetadata, ArtifactRepository selected, ArtifactRepository localRepository ) private void updateSnapshotMetadata( RepositoryMetadata metadata,
Map<ArtifactRepository, Metadata> previousMetadata,
ArtifactRepository selected, ArtifactRepository localRepository )
throws RepositoryMetadataStoreException throws RepositoryMetadataStoreException
{ {
// TODO: this could be a lot nicer... should really be in the snapshot transformation? // TODO: this could be a lot nicer... should really be in the snapshot transformation?
@ -396,7 +401,8 @@ private void updateSnapshotMetadata( RepositoryMetadata metadata, Map<ArtifactRe
} }
else else
{ {
if ( ( m.getVersioning() != null ) && ( m.getVersioning().getSnapshot() != null ) && m.getVersioning().getSnapshot().isLocalCopy() ) if ( ( m.getVersioning() != null ) && ( m.getVersioning().getSnapshot() != null )
&& m.getVersioning().getSnapshot().isLocalCopy() )
{ {
m.getVersioning().getSnapshot().setLocalCopy( false ); m.getVersioning().getSnapshot().setLocalCopy( false );
metadata.setMetadata( m ); metadata.setMetadata( m );
@ -409,11 +415,14 @@ private void updateSnapshotMetadata( RepositoryMetadata metadata, Map<ArtifactRe
} }
} }
private boolean loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository, ArtifactRepository localRepository, Map<ArtifactRepository, Metadata> previousMetadata ) private boolean loadMetadata( RepositoryMetadata repoMetadata, ArtifactRepository remoteRepository,
ArtifactRepository localRepository, Map<ArtifactRepository, Metadata> previousMetadata )
{ {
boolean setRepository = false; boolean setRepository = false;
File metadataFile = new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( repoMetadata, remoteRepository ) ); File metadataFile =
new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( repoMetadata,
remoteRepository ) );
if ( metadataFile.exists() ) if ( metadataFile.exists() )
{ {
@ -475,11 +484,13 @@ protected Metadata readMetadata( File mappingFile )
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': " + e.getMessage(), e ); throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': "
+ e.getMessage(), e );
} }
catch ( XmlPullParserException e ) catch ( XmlPullParserException e )
{ {
throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': " + e.getMessage(), e ); throw new RepositoryMetadataReadException( "Cannot read metadata from '" + mappingFile + "': "
+ e.getMessage(), e );
} }
finally finally
{ {
@ -490,8 +501,8 @@ protected Metadata readMetadata( File mappingFile )
} }
/** /**
* Ensures the last updated timestamp of the specified metadata does not refer to the future and fixes the local metadata if necessary to allow * Ensures the last updated timestamp of the specified metadata does not refer to the future and fixes the local
* proper merging/updating of metadata during deployment. * metadata if necessary to allow proper merging/updating of metadata during deployment.
*/ */
private void fixTimestamp( File metadataFile, Metadata metadata, Metadata reference ) private void fixTimestamp( File metadataFile, Metadata metadata, Metadata reference )
{ {
@ -547,7 +558,8 @@ private void fixTimestamp( File metadataFile, Metadata metadata, Metadata refere
} }
} }
public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository localRepository, ArtifactRepository remoteRepository ) public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository localRepository,
ArtifactRepository remoteRepository )
throws RepositoryMetadataResolutionException throws RepositoryMetadataResolutionException
{ {
File file; File file;
@ -557,7 +569,8 @@ public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository local
} }
catch ( TransferFailedException e ) catch ( TransferFailedException e )
{ {
throw new RepositoryMetadataResolutionException( metadata + " could not be retrieved from repository: " + remoteRepository.getId() + " due to an error: " + e.getMessage(), e ); throw new RepositoryMetadataResolutionException( metadata + " could not be retrieved from repository: "
+ remoteRepository.getId() + " due to an error: " + e.getMessage(), e );
} }
try try
@ -574,18 +587,24 @@ public void resolveAlways( RepositoryMetadata metadata, ArtifactRepository local
} }
} }
private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository localRepository, ArtifactRepository remoteRepository ) private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata,
ArtifactRepository localRepository,
ArtifactRepository remoteRepository )
throws TransferFailedException throws TransferFailedException
{ {
File file = new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata, remoteRepository ) ); File file =
new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata,
remoteRepository ) );
try try
{ {
wagonManager.getArtifactMetadataFromDeploymentRepository( metadata, remoteRepository, file, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN ); wagonManager.getArtifactMetadataFromDeploymentRepository( metadata, remoteRepository, file,
ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
} }
catch ( ResourceDoesNotExistException e ) catch ( ResourceDoesNotExistException e )
{ {
getLogger().info( metadata + " could not be found on repository: " + remoteRepository.getId() + ", so will be created" ); getLogger().info( metadata + " could not be found on repository: " + remoteRepository.getId()
+ ", so will be created" );
// delete the local copy so the old details aren't used. // delete the local copy so the old details aren't used.
if ( file.exists() ) if ( file.exists() )
@ -603,7 +622,8 @@ private File getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metad
return file; return file;
} }
public void deploy( ArtifactMetadata metadata, ArtifactRepository localRepository, ArtifactRepository deploymentRepository ) public void deploy( ArtifactMetadata metadata, ArtifactRepository localRepository,
ArtifactRepository deploymentRepository )
throws RepositoryMetadataDeploymentException throws RepositoryMetadataDeploymentException
{ {
File file; File file;
@ -616,7 +636,8 @@ public void deploy( ArtifactMetadata metadata, ArtifactRepository localRepositor
} }
catch ( TransferFailedException e ) catch ( TransferFailedException e )
{ {
throw new RepositoryMetadataDeploymentException( metadata + " could not be retrieved from repository: " + deploymentRepository.getId() + " due to an error: " + e.getMessage(), e ); throw new RepositoryMetadataDeploymentException( metadata + " could not be retrieved from repository: "
+ deploymentRepository.getId() + " due to an error: " + e.getMessage(), e );
} }
if ( file.isFile() ) if ( file.isFile() )
@ -634,7 +655,9 @@ public void deploy( ArtifactMetadata metadata, ArtifactRepository localRepositor
else else
{ {
// It's a POM - we don't need to retrieve it first // It's a POM - we don't need to retrieve it first
file = new File( localRepository.getBasedir(), localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) ); file =
new File( localRepository.getBasedir(),
localRepository.pathOfLocalRepositoryMetadata( metadata, deploymentRepository ) );
} }
try try

View File

@ -40,51 +40,53 @@ public interface ArtifactResolver
// The rest is deprecated // The rest is deprecated
// USED BY MAVEN ASSEMBLY PLUGIN 2.2-beta-2 // USED BY MAVEN ASSEMBLY PLUGIN 2.2-beta-2
@Deprecated @Deprecated
String ROLE = ArtifactResolver.class.getName(); String ROLE = ArtifactResolver.class.getName();
// USED BY SUREFIRE // USED BY SUREFIRE
@Deprecated @Deprecated
ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories, ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter ) ArtifactMetadataSource source, ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
// USED BY MAVEN ASSEMBLY PLUGIN // USED BY MAVEN ASSEMBLY PLUGIN
@Deprecated @Deprecated
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
Map managedVersions, ArtifactRepository localRepository, Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories, List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source ) ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
// USED BY MAVEN ASSEMBLY PLUGIN // USED BY MAVEN ASSEMBLY PLUGIN
@Deprecated @Deprecated
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository, ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter ) Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
@Deprecated @Deprecated
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository, ArtifactRepository localRepository, ArtifactMetadataSource source )
ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
@Deprecated @Deprecated
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
Map managedVersions, ArtifactRepository localRepository, Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories, List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter, ArtifactMetadataSource source, ArtifactFilter filter,
List<ResolutionListener> listeners ) List<ResolutionListener> listeners )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
@Deprecated @Deprecated
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository, ArtifactRepository localRepository, ArtifactMetadataSource source,
ArtifactMetadataSource source, List<ResolutionListener> listeners )
List<ResolutionListener> listeners )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
// USED BY REMOTE RESOURCES PLUGIN // USED BY REMOTE RESOURCES PLUGIN
@ -94,11 +96,13 @@ void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, Ar
// USED BY REMOTE RESOURCES PLUGIN // USED BY REMOTE RESOURCES PLUGIN
@Deprecated @Deprecated
void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, TransferListener downloadMonitor ) void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository,
TransferListener downloadMonitor )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
// USED BY ARCHETYPE DOWNLOADER // USED BY ARCHETYPE DOWNLOADER
@Deprecated @Deprecated
void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
} }

View File

@ -65,8 +65,7 @@ public void includeArtifact( Artifact artifact )
logger.debug( indent + artifact + " (selected for " + artifact.getScope() + ")" ); logger.debug( indent + artifact + " (selected for " + artifact.getScope() + ")" );
} }
public void omitForNearer( Artifact omitted, public void omitForNearer( Artifact omitted, Artifact kept )
Artifact kept )
{ {
String omittedVersion = omitted.getVersion(); String omittedVersion = omitted.getVersion();
String keptVersion = kept.getVersion(); String keptVersion = kept.getVersion();
@ -82,12 +81,10 @@ public void omitForCycle( Artifact omitted )
logger.debug( indent + omitted + " (removed - causes a cycle in the graph)" ); logger.debug( indent + omitted + " (removed - causes a cycle in the graph)" );
} }
public void updateScopeCurrentPom( Artifact artifact, public void updateScopeCurrentPom( Artifact artifact, String ignoredScope )
String ignoredScope )
{ {
logger.debug( logger.debug( indent + artifact + " (not setting artifactScope to: " + ignoredScope + "; local artifactScope "
indent + artifact + " (not setting artifactScope to: " + ignoredScope + "; local artifactScope " + artifact.getScope() + artifact.getScope() + " wins)" );
+ " wins)" );
// TODO: better way than static? this might hide messages in a reactor // TODO: better way than static? this might hide messages in a reactor
if ( !ignoredArtifacts.contains( artifact ) ) if ( !ignoredArtifacts.contains( artifact ) )
@ -99,8 +96,7 @@ public void updateScopeCurrentPom( Artifact artifact,
} }
} }
public void updateScope( Artifact artifact, public void updateScope( Artifact artifact, String scope )
String scope )
{ {
logger.debug( indent + artifact + " (setting artifactScope to: " + scope + ")" ); logger.debug( indent + artifact + " (setting artifactScope to: " + scope + ")" );
} }
@ -111,9 +107,7 @@ public void selectVersionFromRange( Artifact artifact )
+ artifact.getVersionRange() + ")" ); + artifact.getVersionRange() + ")" );
} }
public void restrictRange( Artifact artifact, public void restrictRange( Artifact artifact, Artifact replacement, VersionRange newRange )
Artifact replacement,
VersionRange newRange )
{ {
logger.debug( indent + artifact + " (range restricted from: " + artifact.getVersionRange() + " and: " logger.debug( indent + artifact + " (range restricted from: " + artifact.getVersionRange() + " and: "
+ replacement.getVersionRange() + " to: " + newRange + " )" ); + replacement.getVersionRange() + " to: " + newRange + " )" );
@ -125,8 +119,7 @@ public void restrictRange( Artifact artifact,
* more information) is needed to be able to determine when and if the version and/or artifactScope changes. See the two * more information) is needed to be able to determine when and if the version and/or artifactScope changes. See the two
* added methods, manageArtifactVersion and manageArtifactScope. * added methods, manageArtifactVersion and manageArtifactScope.
*/ */
public void manageArtifact( Artifact artifact, public void manageArtifact( Artifact artifact, Artifact replacement )
Artifact replacement )
{ {
String msg = indent + artifact; String msg = indent + artifact;
msg += " ("; msg += " (";
@ -142,8 +135,7 @@ public void manageArtifact( Artifact artifact,
logger.debug( msg ); logger.debug( msg );
} }
public void manageArtifactVersion( Artifact artifact, public void manageArtifactVersion( Artifact artifact, Artifact replacement )
Artifact replacement )
{ {
// only show msg if a change is actually taking place // only show msg if a change is actually taking place
if ( !replacement.getVersion().equals( artifact.getVersion() ) ) if ( !replacement.getVersion().equals( artifact.getVersion() ) )
@ -153,8 +145,7 @@ public void manageArtifactVersion( Artifact artifact,
} }
} }
public void manageArtifactScope( Artifact artifact, public void manageArtifactScope( Artifact artifact, Artifact replacement )
Artifact replacement )
{ {
// only show msg if a change is actually taking place // only show msg if a change is actually taking place
if ( !replacement.getScope().equals( artifact.getScope() ) ) if ( !replacement.getScope().equals( artifact.getScope() ) )
@ -164,8 +155,7 @@ public void manageArtifactScope( Artifact artifact,
} }
} }
public void manageArtifactSystemPath( Artifact artifact, public void manageArtifactSystemPath( Artifact artifact, Artifact replacement )
Artifact replacement )
{ {
// only show msg if a change is actually taking place // only show msg if a change is actually taking place
if ( !replacement.getScope().equals( artifact.getScope() ) ) if ( !replacement.getScope().equals( artifact.getScope() ) )

View File

@ -22,7 +22,7 @@
import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Component;
@Deprecated @Deprecated
@Component(role=ArtifactCollector.class) @Component( role = ArtifactCollector.class )
public class DefaultArtifactCollector public class DefaultArtifactCollector
extends org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector extends org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector
implements ArtifactCollector implements ArtifactCollector

View File

@ -1,18 +1,22 @@
package org.apache.maven.artifact.resolver; package org.apache.maven.artifact.resolver;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -69,13 +73,13 @@
/** /**
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role = ArtifactResolver.class) @Component( role = ArtifactResolver.class )
public class DefaultArtifactResolver public class DefaultArtifactResolver
implements ArtifactResolver implements ArtifactResolver
{ {
@Requirement @Requirement
private Logger logger; private Logger logger;
@Requirement @Requirement
private WagonManager wagonManager; private WagonManager wagonManager;
@ -93,7 +97,7 @@ public class DefaultArtifactResolver
@Requirement @Requirement
private ArtifactMetadataSource source; private ArtifactMetadataSource source;
@Requirement @Requirement
private PlexusContainer container; private PlexusContainer container;
@ -157,7 +161,8 @@ private void injectSession2( ArtifactResolutionRequest request, MavenSession ses
} }
} }
public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, TransferListener resolutionListener ) public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository, TransferListener resolutionListener )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
RepositoryRequest request = new DefaultRepositoryRequest(); RepositoryRequest request = new DefaultRepositoryRequest();
@ -167,7 +172,8 @@ public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositor
resolve( artifact, request, resolutionListener, false ); resolve( artifact, request, resolutionListener, false );
} }
public void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) public void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
RepositoryRequest request = new DefaultRepositoryRequest(); RepositoryRequest request = new DefaultRepositoryRequest();
@ -177,7 +183,8 @@ public void resolveAlways( Artifact artifact, List<ArtifactRepository> remoteRep
resolve( artifact, request, null, true ); resolve( artifact, request, null, true );
} }
private void resolve( Artifact artifact, RepositoryRequest request, TransferListener downloadMonitor, boolean force ) private void resolve( Artifact artifact, RepositoryRequest request, TransferListener downloadMonitor,
boolean force )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
if ( artifact == null ) if ( artifact == null )
@ -186,28 +193,31 @@ private void resolve( Artifact artifact, RepositoryRequest request, TransferList
} }
File destination; File destination;
if ( Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) ) if ( Artifact.SCOPE_SYSTEM.equals( artifact.getScope() ) )
{ {
File systemFile = artifact.getFile(); File systemFile = artifact.getFile();
if ( systemFile == null ) if ( systemFile == null )
{ {
throw new ArtifactNotFoundException( "System artifact: " + artifact + " has no file attached", artifact ); throw new ArtifactNotFoundException( "System artifact: " + artifact + " has no file attached",
artifact );
} }
if ( !systemFile.exists() ) if ( !systemFile.exists() )
{ {
throw new ArtifactNotFoundException( "System artifact: " + artifact + " not found in path: " + systemFile, artifact ); throw new ArtifactNotFoundException( "System artifact: " + artifact + " not found in path: "
+ systemFile, artifact );
} }
if ( !systemFile.isFile() ) if ( !systemFile.isFile() )
{ {
throw new ArtifactNotFoundException( "System artifact: " + artifact + " is not a file: " + systemFile, artifact ); throw new ArtifactNotFoundException( "System artifact: " + artifact + " is not a file: " + systemFile,
artifact );
} }
artifact.setResolved( true ); artifact.setResolved( true );
return; return;
} }
@ -224,7 +234,7 @@ private void resolve( Artifact artifact, RepositoryRequest request, TransferList
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
artifact = localRepository.find( artifact ); artifact = localRepository.find( artifact );
if ( artifact.isResolved() ) if ( artifact.isResolved() )
{ {
return; return;
@ -241,11 +251,13 @@ private void resolve( Artifact artifact, RepositoryRequest request, TransferList
if ( artifact.getRepository() != null ) if ( artifact.getRepository() != null )
{ {
// the transformations discovered the artifact - so use it exclusively // the transformations discovered the artifact - so use it exclusively
wagonManager.getArtifact( artifact, artifact.getRepository(), downloadMonitor, request.isForceUpdate() ); wagonManager.getArtifact( artifact, artifact.getRepository(), downloadMonitor,
request.isForceUpdate() );
} }
else else
{ {
wagonManager.getArtifact( artifact, remoteRepositories, downloadMonitor, request.isForceUpdate() ); wagonManager.getArtifact( artifact, remoteRepositories, downloadMonitor,
request.isForceUpdate() );
} }
if ( localRepositoryMaintainer != null ) if ( localRepositoryMaintainer != null )
@ -285,7 +297,7 @@ private void resolve( Artifact artifact, RepositoryRequest request, TransferList
remoteRepositories ); remoteRepositories );
} }
} }
// 1.0-SNAPSHOT // 1.0-SNAPSHOT
// //
// 1) pom = 1.0-SNAPSHOT // 1) pom = 1.0-SNAPSHOT
@ -300,7 +312,7 @@ private void resolve( Artifact artifact, RepositoryRequest request, TransferList
// Make a file with a 1.0-SNAPSHOT format // Make a file with a 1.0-SNAPSHOT format
File copy = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) ); File copy = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
// if the timestamped version was resolved or the copy doesn't exist then copy a version // if the timestamped version was resolved or the copy doesn't exist then copy a version
// of the file like 1.0-SNAPSHOT. Even if there is a timestamped version the non-timestamped // of the file like 1.0-SNAPSHOT. Even if there is a timestamped version the non-timestamped
// version will be created. // version will be created.
@ -316,7 +328,8 @@ private void resolve( Artifact artifact, RepositoryRequest request, TransferList
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new ArtifactResolutionException( "Unable to copy resolved artifact for local use: " + e.getMessage(), artifact, remoteRepositories, e ); throw new ArtifactResolutionException( "Unable to copy resolved artifact for local use: "
+ e.getMessage(), artifact, remoteRepositories, e );
} }
} }
@ -372,52 +385,73 @@ private boolean isLocalCopy( Artifact artifact )
return localCopy; return localCopy;
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter ) ArtifactMetadataSource source, ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository, remoteRepositories, source, filter ); return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository,
remoteRepositories, source, filter );
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source ) Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, null ); return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
remoteRepositories, source, null );
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter ) Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, filter, null ); return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
remoteRepositories, source, filter, null );
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository,
ArtifactMetadataSource source ) ArtifactMetadataSource source )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
return resolveTransitively( artifacts, originatingArtifact, localRepository, remoteRepositories, source, null ); return resolveTransitively( artifacts, originatingArtifact, localRepository, remoteRepositories, source, null );
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
ArtifactMetadataSource source, List<ResolutionListener> listeners ) List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository,
ArtifactMetadataSource source,
List<ResolutionListener> listeners )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository, return resolveTransitively( artifacts, originatingArtifact, Collections.EMPTY_MAP, localRepository,
remoteRepositories, source, null, listeners ); remoteRepositories, source, null, listeners );
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List<ResolutionListener> listeners ) Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter,
List<ResolutionListener> listeners )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository, remoteRepositories, source, filter, listeners, null ); return resolveTransitively( artifacts, originatingArtifact, managedVersions, localRepository,
remoteRepositories, source, filter, listeners, null );
} }
public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository, public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Artifact originatingArtifact,
List<ArtifactRepository> remoteRepositories, ArtifactMetadataSource source, ArtifactFilter filter, List<ResolutionListener> listeners, Map managedVersions, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactFilter filter,
List<ResolutionListener> listeners,
List<ConflictResolver> conflictResolvers ) List<ConflictResolver> conflictResolvers )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
@ -425,7 +459,7 @@ public ArtifactResolutionResult resolveTransitively( Set<Artifact> artifacts, Ar
.setArtifact( originatingArtifact ) .setArtifact( originatingArtifact )
.setResolveRoot( false ) .setResolveRoot( false )
// This is required by the surefire plugin // This is required by the surefire plugin
.setArtifactDependencies( artifacts ) .setArtifactDependencies( artifacts )
.setManagedVersionMap( managedVersions ) .setManagedVersionMap( managedVersions )
.setLocalRepository( localRepository ) .setLocalRepository( localRepository )
.setRemoteRepositories( remoteRepositories ) .setRemoteRepositories( remoteRepositories )
@ -461,10 +495,10 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
Set<Artifact> artifacts = request.getArtifactDependencies(); Set<Artifact> artifacts = request.getArtifactDependencies();
Map managedVersions = request.getManagedVersionMap(); Map managedVersions = request.getManagedVersionMap();
List<ResolutionListener> listeners = request.getListeners(); List<ResolutionListener> listeners = request.getListeners();
ArtifactFilter collectionFilter = request.getCollectionFilter(); ArtifactFilter collectionFilter = request.getCollectionFilter();
ArtifactFilter resolutionFilter = request.getResolutionFilter(); ArtifactFilter resolutionFilter = request.getResolutionFilter();
TransferListener transferListener = TransferListenerAdapter.newAdapter( request.getTransferListener() ); TransferListener transferListener = TransferListenerAdapter.newAdapter( request.getTransferListener() );
//TODO: hack because metadata isn't generated in m2e correctly and i want to run the maven i have in the workspace //TODO: hack because metadata isn't generated in m2e correctly and i want to run the maven i have in the workspace
if ( source == null ) if ( source == null )
{ {
@ -496,9 +530,9 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
// This is often an artifact like a POM that is taken from disk and we already have hold of the // This is often an artifact like a POM that is taken from disk and we already have hold of the
// file reference. But this may be a Maven Plugin that we need to resolve from a remote repository // file reference. But this may be a Maven Plugin that we need to resolve from a remote repository
// as well as its dependencies. // as well as its dependencies.
if ( request.isResolveRoot() /* && rootArtifact.getFile() == null */ ) if ( request.isResolveRoot() /* && rootArtifact.getFile() == null */ )
{ {
try try
{ {
resolve( rootArtifact, request, transferListener, false ); resolve( rootArtifact, request, transferListener, false );
@ -573,7 +607,7 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
return result; return result;
} }
} }
if ( artifacts == null || artifacts.isEmpty() ) if ( artifacts == null || artifacts.isEmpty() )
{ {
if ( request.isResolveRoot() ) if ( request.isResolveRoot() )
@ -581,18 +615,19 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
result.addArtifact( rootArtifact ); result.addArtifact( rootArtifact );
} }
return result; return result;
} }
// After the collection we will have the artifact object in the result but they will not be resolved yet. // After the collection we will have the artifact object in the result but they will not be resolved yet.
result = result =
artifactCollector.collect( artifacts, rootArtifact, managedVersions, collectionRequest, source, artifactCollector.collect( artifacts, rootArtifact, managedVersions, collectionRequest, source,
collectionFilter, listeners, null ); collectionFilter, listeners, null );
// We have metadata retrieval problems, or there are cycles that have been detected // We have metadata retrieval problems, or there are cycles that have been detected
// so we give this back to the calling code and let them deal with this information // so we give this back to the calling code and let them deal with this information
// appropriately. // appropriately.
if ( result.hasMetadataResolutionExceptions() || result.hasVersionRangeViolations() || result.hasCircularDependencyExceptions() ) if ( result.hasMetadataResolutionExceptions() || result.hasVersionRangeViolations()
|| result.hasCircularDependencyExceptions() )
{ {
return result; return result;
} }
@ -634,18 +669,19 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
// We want to send the root artifact back in the result but we need to do this after the other dependencies // We want to send the root artifact back in the result but we need to do this after the other dependencies
// have been resolved. // have been resolved.
if ( request.isResolveRoot() ) if ( request.isResolveRoot() )
{ {
// Add the root artifact (as the first artifact to retain logical order of class path!) // Add the root artifact (as the first artifact to retain logical order of class path!)
Set<Artifact> allArtifacts = new LinkedHashSet<Artifact>(); Set<Artifact> allArtifacts = new LinkedHashSet<Artifact>();
allArtifacts.add( rootArtifact ); allArtifacts.add( rootArtifact );
allArtifacts.addAll( result.getArtifacts() ); allArtifacts.addAll( result.getArtifacts() );
result.setArtifacts( allArtifacts ); result.setArtifacts( allArtifacts );
} }
return result; return result;
} }
public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) public void resolve( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
resolve( artifact, remoteRepositories, localRepository, null ); resolve( artifact, remoteRepositories, localRepository, null );
@ -667,8 +703,9 @@ private class ResolveTask
private final ArtifactResolutionResult result; private final ArtifactResolutionResult result;
public ResolveTask( ClassLoader classLoader, CountDownLatch latch, Artifact artifact, TransferListener transferListener, public ResolveTask( ClassLoader classLoader, CountDownLatch latch, Artifact artifact,
ArtifactResolutionRequest request, ArtifactResolutionResult result ) TransferListener transferListener, ArtifactResolutionRequest request,
ArtifactResolutionResult result )
{ {
this.classLoader = classLoader; this.classLoader = classLoader;
this.latch = latch; this.latch = latch;

View File

@ -37,12 +37,12 @@
* @version $Id$ * @version $Id$
*/ */
@Deprecated @Deprecated
@Component(role=RuntimeInformation.class) @Component( role = RuntimeInformation.class )
public class DefaultRuntimeInformation public class DefaultRuntimeInformation
implements RuntimeInformation, Initializable implements RuntimeInformation, Initializable
{ {
private static final String MAVEN_GROUPID = "org.apache.maven"; private static final String MAVEN_GROUPID = "org.apache.maven";
private static final String MAVEN_PROPERTIES = "META-INF/maven/" + MAVEN_GROUPID + "/maven-core/pom.properties"; private static final String MAVEN_PROPERTIES = "META-INF/maven/" + MAVEN_GROUPID + "/maven-core/pom.properties";
private ArtifactVersion applicationVersion; private ArtifactVersion applicationVersion;
@ -60,7 +60,7 @@ public void initialize()
{ {
Properties properties = new Properties(); Properties properties = new Properties();
resourceAsStream = getClass().getClassLoader().getResourceAsStream( MAVEN_PROPERTIES ); resourceAsStream = getClass().getClassLoader().getResourceAsStream( MAVEN_PROPERTIES );
if ( resourceAsStream == null ) if ( resourceAsStream == null )
{ {
throw new IllegalStateException( "Unable to find Maven properties in classpath: " + MAVEN_PROPERTIES ); throw new IllegalStateException( "Unable to find Maven properties in classpath: " + MAVEN_PROPERTIES );

View File

@ -72,7 +72,8 @@ public ProfilesRoot buildProfiles( File basedir )
} }
catch ( Exception e ) catch ( Exception e )
{ {
getLogger().warn( "Failed to initialize environment variable resolver. Skipping environment substitution in " + PROFILES_XML_FILE + "." ); getLogger().warn( "Failed to initialize environment variable resolver. Skipping environment "
+ "substitution in " + PROFILES_XML_FILE + "." );
getLogger().debug( "Failed to initialize envar resolver. Skipping resolution.", e ); getLogger().debug( "Failed to initialize envar resolver. Skipping resolution.", e );
} }

View File

@ -64,8 +64,8 @@ public class DefaultProfileManager
private Properties requestProperties; private Properties requestProperties;
/** /**
* @deprecated without passing in the system properties, the SystemPropertiesProfileActivator will not work correctly * @deprecated without passing in the system properties, the SystemPropertiesProfileActivator will not work
* in embedded envirnments. * correctly in embedded envirnments.
*/ */
public DefaultProfileManager( PlexusContainer container ) public DefaultProfileManager( PlexusContainer container )
{ {

View File

@ -88,11 +88,13 @@ public boolean isActive( Profile profile )
{ {
if ( logger.isDebugEnabled() ) if ( logger.isDebugEnabled() )
{ {
logger.debug( "Failed to interpolate missing file location for profile activator: " + fileString, e ); logger.debug( "Failed to interpolate missing file location for profile activator: " + fileString,
e );
} }
else else
{ {
logger.warn( "Failed to interpolate missing file location for profile activator: " + fileString + ". Run in debug mode (-X) for more information." ); logger.warn( "Failed to interpolate missing file location for profile activator: " + fileString
+ ". Run in debug mode (-X) for more information." );
} }
} }
} }

View File

@ -44,14 +44,7 @@ public boolean isActive( Profile profile )
{ {
try try
{ {
if ( matchJdkVersionRange( jdk ) ) return matchJdkVersionRange( jdk );
{
return true;
}
else
{
return false;
}
} }
catch ( InvalidVersionSpecificationException e ) catch ( InvalidVersionSpecificationException e )
{ {

View File

@ -24,9 +24,9 @@ public class ProfileActivationException
extends Exception extends Exception
{ {
private static final long serialVersionUID = -90820222109103638L; private static final long serialVersionUID = -90820222109103638L;
public ProfileActivationException( String message, Throwable cause ) public ProfileActivationException( String message, Throwable cause )
{ {
super( message, cause ); super( message, cause );
} }

View File

@ -24,7 +24,7 @@
@Deprecated @Deprecated
public interface ProfileActivator public interface ProfileActivator
{ {
static final String ROLE = ProfileActivator.class.getName(); final String ROLE = ProfileActivator.class.getName();
boolean canDetermineActivation( Profile profile ); boolean canDetermineActivation( Profile profile );

View File

@ -33,12 +33,13 @@ public class SystemPropertyProfileActivator
extends DetectedProfileActivator implements Contextualizable extends DetectedProfileActivator implements Contextualizable
{ {
private Properties properties; private Properties properties;
public void contextualize(Context context) throws ContextException public void contextualize( Context context )
throws ContextException
{ {
properties = (Properties)context.get("SystemProperties"); properties = (Properties) context.get( "SystemProperties" );
} }
protected boolean canDetectActivation( Profile profile ) protected boolean canDetectActivation( Profile profile )
{ {
return profile.getActivation() != null && profile.getActivation().getProperty() != null; return profile.getActivation() != null && profile.getActivation().getProperty() != null;
@ -55,19 +56,19 @@ public boolean isActive( Profile profile )
{ {
String name = property.getName(); String name = property.getName();
boolean reverseName = false; boolean reverseName = false;
if ( name == null ) if ( name == null )
{ {
throw new ProfileActivationException( "The property name is required to activate the profile '" throw new ProfileActivationException( "The property name is required to activate the profile '"
+ profile.getId() + "'" ); + profile.getId() + "'" );
} }
if ( name.startsWith("!") ) if ( name.startsWith("!") )
{ {
reverseName = true; reverseName = true;
name = name.substring( 1 ); name = name.substring( 1 );
} }
String sysValue = properties.getProperty( name ); String sysValue = properties.getProperty( name );
String propValue = property.getValue(); String propValue = property.getValue();
@ -79,10 +80,10 @@ public boolean isActive( Profile profile )
reverseValue = true; reverseValue = true;
propValue = propValue.substring( 1 ); propValue = propValue.substring( 1 );
} }
// we have a value, so it has to match the system value... // we have a value, so it has to match the system value...
boolean result = propValue.equals( sysValue ); boolean result = propValue.equals( sysValue );
if ( reverseValue ) if ( reverseValue )
{ {
return !result; return !result;
@ -95,7 +96,7 @@ public boolean isActive( Profile profile )
else else
{ {
boolean result = StringUtils.isNotEmpty( sysValue ); boolean result = StringUtils.isNotEmpty( sysValue );
if ( reverseName ) if ( reverseName )
{ {
return !result; return !result;

View File

@ -1,18 +1,22 @@
package org.apache.maven.project; package org.apache.maven.project;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -41,7 +45,7 @@
/** /**
* @version $Id$ * @version $Id$
*/ */
@Component(role = MavenProjectBuilder.class) @Component( role = MavenProjectBuilder.class )
@Deprecated @Deprecated
public class DefaultMavenProjectBuilder public class DefaultMavenProjectBuilder
implements MavenProjectBuilder implements MavenProjectBuilder
@ -176,7 +180,7 @@ public MavenProject buildFromRepository( Artifact artifact, List<ArtifactReposit
/** /**
* This is used for pom-less execution like running archetype:generate. * This is used for pom-less execution like running archetype:generate.
* *
* I am taking out the profile handling and the interpolation of the base directory until we * I am taking out the profile handling and the interpolation of the base directory until we
* spec this out properly. * spec this out properly.
*/ */

View File

@ -1,18 +1,22 @@
package org.apache.maven.project; package org.apache.maven.project;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -37,11 +41,13 @@ MavenProject build( File project, ArtifactRepository localRepository, ProfileMan
throws ProjectBuildingException; throws ProjectBuildingException;
//TODO remote-resources-plugin //TODO remote-resources-plugin
MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ProjectBuildingException; throws ProjectBuildingException;
//TODO remote-resources-plugin //TODO remote-resources-plugin
MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository, boolean allowStubModel ) MavenProject buildFromRepository( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository, boolean allowStubModel )
throws ProjectBuildingException; throws ProjectBuildingException;
// TODO: this is only to provide a project for plugins that don't need a project to execute but need some // TODO: this is only to provide a project for plugins that don't need a project to execute but need some

View File

@ -40,17 +40,19 @@
@Deprecated @Deprecated
public final class ProjectUtils public final class ProjectUtils
{ {
private ProjectUtils() private ProjectUtils()
{ {
} }
public static List<ArtifactRepository> buildArtifactRepositories( List<Repository> repositories, ArtifactRepositoryFactory artifactRepositoryFactory, PlexusContainer c ) public static List<ArtifactRepository> buildArtifactRepositories( List<Repository> repositories,
ArtifactRepositoryFactory artifactRepositoryFactory,
PlexusContainer c )
throws InvalidRepositoryException throws InvalidRepositoryException
{ {
List<ArtifactRepository> remoteRepositories = new ArrayList<ArtifactRepository>(); List<ArtifactRepository> remoteRepositories = new ArrayList<ArtifactRepository>();
for ( Repository r : repositories ) for ( Repository r : repositories )
{ {
remoteRepositories.add( buildArtifactRepository( r, artifactRepositoryFactory, c ) ); remoteRepositories.add( buildArtifactRepository( r, artifactRepositoryFactory, c ) );
@ -59,13 +61,17 @@ public static List<ArtifactRepository> buildArtifactRepositories( List<Repositor
return remoteRepositories; return remoteRepositories;
} }
public static ArtifactRepository buildDeploymentArtifactRepository( DeploymentRepository repo, ArtifactRepositoryFactory artifactRepositoryFactory, PlexusContainer c ) public static ArtifactRepository buildDeploymentArtifactRepository( DeploymentRepository repo,
ArtifactRepositoryFactory artifactRepositoryFactory,
PlexusContainer c )
throws InvalidRepositoryException throws InvalidRepositoryException
{ {
return buildArtifactRepository( repo, artifactRepositoryFactory, c ); return buildArtifactRepository( repo, artifactRepositoryFactory, c );
} }
public static ArtifactRepository buildArtifactRepository( Repository repo, ArtifactRepositoryFactory artifactRepositoryFactory, PlexusContainer c ) public static ArtifactRepository buildArtifactRepository( Repository repo,
ArtifactRepositoryFactory artifactRepositoryFactory,
PlexusContainer c )
throws InvalidRepositoryException throws InvalidRepositoryException
{ {
RepositorySystem repositorySystem = rs( c ); RepositorySystem repositorySystem = rs( c );

View File

@ -48,12 +48,12 @@
import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom; import org.codehaus.plexus.util.xml.Xpp3Dom;
@Component(role = ModelInheritanceAssembler.class) @Component( role = ModelInheritanceAssembler.class )
public class DefaultModelInheritanceAssembler public class DefaultModelInheritanceAssembler
implements ModelInheritanceAssembler implements ModelInheritanceAssembler
{ {
// TODO: Remove this! // TODO: Remove this!
@SuppressWarnings("unchecked") @SuppressWarnings( "unchecked" )
public void assembleBuildInheritance( Build childBuild, Build parentBuild, boolean handleAsInheritance ) public void assembleBuildInheritance( Build childBuild, Build parentBuild, boolean handleAsInheritance )
{ {
// The build has been set but we want to step in here and fill in // The build has been set but we want to step in here and fill in
@ -84,7 +84,7 @@ public void assembleBuildInheritance( Build childBuild, Build parentBuild, boole
childBuild.setTestOutputDirectory( parentBuild.getTestOutputDirectory() ); childBuild.setTestOutputDirectory( parentBuild.getTestOutputDirectory() );
} }
// Extensions are accumlated // Extensions are accumulated
mergeExtensionLists( childBuild, parentBuild ); mergeExtensionLists( childBuild, parentBuild );
if ( childBuild.getDirectory() == null ) if ( childBuild.getDirectory() == null )
@ -305,7 +305,7 @@ private void assembleModelInheritance( Model child, Model parent, String childPa
} }
// TODO: Remove this! // TODO: Remove this!
@SuppressWarnings("unchecked") @SuppressWarnings( "unchecked" )
private void assembleDependencyManagementInheritance( Model child, Model parent ) private void assembleDependencyManagementInheritance( Model child, Model parent )
{ {
DependencyManagement parentDepMgmt = parent.getDependencyManagement(); DependencyManagement parentDepMgmt = parent.getDependencyManagement();
@ -536,7 +536,7 @@ else if ( handleAsInheritance && ( parentInherited == null ) )
} }
// TODO: Remove this! // TODO: Remove this!
@SuppressWarnings("unchecked") @SuppressWarnings( "unchecked" )
private void assembleDependencyInheritance( Model child, Model parent ) private void assembleDependencyInheritance( Model child, Model parent )
{ {
Map<String, Dependency> depsMap = new LinkedHashMap<String, Dependency>(); Map<String, Dependency> depsMap = new LinkedHashMap<String, Dependency>();

View File

@ -90,9 +90,9 @@ public abstract class AbstractStringBasedModelInterpolator
} }
private PathTranslator pathTranslator; private PathTranslator pathTranslator;
private Interpolator interpolator; private Interpolator interpolator;
private RecursionInterceptor recursionInterceptor; private RecursionInterceptor recursionInterceptor;
// for testing. // for testing.
@ -206,7 +206,7 @@ public String interpolate( String src,
{ {
List<ValueSource> valueSources = createValueSources( model, projectDir, config ); List<ValueSource> valueSources = createValueSources( model, projectDir, config );
List<InterpolationPostProcessor> postProcessors = createPostProcessors( model, projectDir, config ); List<InterpolationPostProcessor> postProcessors = createPostProcessors( model, projectDir, config );
return interpolateInternal( src, valueSources, postProcessors, debug ); return interpolateInternal( src, valueSources, postProcessors, debug );
} }
finally finally
@ -214,8 +214,9 @@ public String interpolate( String src,
interpolator.clearAnswers(); interpolator.clearAnswers();
} }
} }
protected List<ValueSource> createValueSources( final Model model, final File projectDir, final ProjectBuilderConfiguration config ) protected List<ValueSource> createValueSources( final Model model, final File projectDir,
final ProjectBuilderConfiguration config )
{ {
String timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT; String timestampFormat = DEFAULT_BUILD_TIMESTAMP_FORMAT;
@ -228,7 +229,8 @@ protected List<ValueSource> createValueSources( final Model model, final File pr
ValueSource modelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false ); ValueSource modelValueSource1 = new PrefixedObjectValueSource( PROJECT_PREFIXES, model, false );
ValueSource modelValueSource2 = new ObjectBasedValueSource( model ); ValueSource modelValueSource2 = new ObjectBasedValueSource( model );
ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new AbstractValueSource( false ){ ValueSource basedirValueSource = new PrefixedValueSourceWrapper( new AbstractValueSource( false )
{
public Object getValue( String expression ) public Object getValue( String expression )
{ {
if ( projectDir != null && "basedir".equals( expression ) ) if ( projectDir != null && "basedir".equals( expression ) )
@ -237,9 +239,9 @@ public Object getValue( String expression )
} }
return null; return null;
} }
}, }, PROJECT_PREFIXES, true );
PROJECT_PREFIXES, true ); ValueSource baseUriValueSource = new PrefixedValueSourceWrapper( new AbstractValueSource( false )
ValueSource baseUriValueSource = new PrefixedValueSourceWrapper( new AbstractValueSource( false ){ {
public Object getValue( String expression ) public Object getValue( String expression )
{ {
if ( projectDir != null && "baseUri".equals( expression ) ) if ( projectDir != null && "baseUri".equals( expression ) )
@ -248,11 +250,10 @@ public Object getValue( String expression )
} }
return null; return null;
} }
}, }, PROJECT_PREFIXES, false );
PROJECT_PREFIXES, false );
List<ValueSource> valueSources = new ArrayList<ValueSource>( 9 ); List<ValueSource> valueSources = new ArrayList<ValueSource>( 9 );
// NOTE: Order counts here! // NOTE: Order counts here!
valueSources.add( basedirValueSource ); valueSources.add( basedirValueSource );
valueSources.add( baseUriValueSource ); valueSources.add( baseUriValueSource );
@ -269,10 +270,10 @@ public Object getValue( String expression )
} }
} ); } );
valueSources.add( modelValueSource2 ); valueSources.add( modelValueSource2 );
return valueSources; return valueSources;
} }
protected List<InterpolationPostProcessor> createPostProcessors( final Model model, final File projectDir, protected List<InterpolationPostProcessor> createPostProcessors( final Model model, final File projectDir,
final ProjectBuilderConfiguration config ) final ProjectBuilderConfiguration config )
{ {
@ -282,7 +283,7 @@ protected List<InterpolationPostProcessor> createPostProcessors( final Model mod
projectDir, projectDir,
pathTranslator ) ); pathTranslator ) );
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
protected String interpolateInternal( String src, List<ValueSource> valueSources, protected String interpolateInternal( String src, List<ValueSource> valueSources,
List<InterpolationPostProcessor> postProcessors, boolean debug ) List<InterpolationPostProcessor> postProcessors, boolean debug )
@ -292,18 +293,18 @@ protected String interpolateInternal( String src, List<ValueSource> valueSources
{ {
return src; return src;
} }
Logger logger = getLogger(); Logger logger = getLogger();
String result = src; String result = src;
synchronized( this ) synchronized( this )
{ {
for ( ValueSource vs : valueSources ) for ( ValueSource vs : valueSources )
{ {
interpolator.addValueSource( vs ); interpolator.addValueSource( vs );
} }
for ( InterpolationPostProcessor postProcessor : postProcessors ) for ( InterpolationPostProcessor postProcessor : postProcessors )
{ {
interpolator.addPostProcessor( postProcessor ); interpolator.addPostProcessor( postProcessor );
@ -367,7 +368,7 @@ protected String interpolateInternal( String src, List<ValueSource> valueSources
{ {
interpolator.removeValuesSource( vs ); interpolator.removeValuesSource( vs );
} }
for ( InterpolationPostProcessor postProcessor : postProcessors ) for ( InterpolationPostProcessor postProcessor : postProcessors )
{ {
interpolator.removePostProcessor( postProcessor ); interpolator.removePostProcessor( postProcessor );
@ -377,7 +378,7 @@ protected String interpolateInternal( String src, List<ValueSource> valueSources
return result; return result;
} }
protected RecursionInterceptor getRecursionInterceptor() protected RecursionInterceptor getRecursionInterceptor()
{ {
return recursionInterceptor; return recursionInterceptor;
@ -396,7 +397,7 @@ public void initialize()
interpolator = createInterpolator(); interpolator = createInterpolator();
recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES ); recursionInterceptor = new PrefixAwareRecursionInterceptor( PROJECT_PREFIXES );
} }
protected final Interpolator getInterpolator() protected final Interpolator getInterpolator()
{ {
return interpolator; return interpolator;

View File

@ -24,7 +24,7 @@
* <p/> * <p/>
* Created on Feb 2, 2005 * Created on Feb 2, 2005
*/ */
@SuppressWarnings("serial") @SuppressWarnings( "serial" )
@Deprecated @Deprecated
public class ModelInterpolationException public class ModelInterpolationException
extends Exception extends Exception

View File

@ -27,7 +27,7 @@
import java.util.List; import java.util.List;
/** /**
* *
* @version $Id$ * @version $Id$
*/ */
@Deprecated @Deprecated
@ -40,7 +40,8 @@ public class PathTranslatingPostProcessor
private final PathTranslator pathTranslator; private final PathTranslator pathTranslator;
private final List<String> expressionPrefixes; private final List<String> expressionPrefixes;
public PathTranslatingPostProcessor( List<String> expressionPrefixes, List<String> unprefixedPathKeys, File projectDir, PathTranslator pathTranslator ) public PathTranslatingPostProcessor( List<String> expressionPrefixes, List<String> unprefixedPathKeys,
File projectDir, PathTranslator pathTranslator )
{ {
this.expressionPrefixes = expressionPrefixes; this.expressionPrefixes = expressionPrefixes;
this.unprefixedPathKeys = unprefixedPathKeys; this.unprefixedPathKeys = unprefixedPathKeys;
@ -52,7 +53,7 @@ public Object execute( String expression,
Object value ) Object value )
{ {
expression = ValueSourceUtils.trimPrefix( expression, expressionPrefixes, true ); expression = ValueSourceUtils.trimPrefix( expression, expressionPrefixes, true );
if ( projectDir != null && value != null && unprefixedPathKeys.contains( expression ) ) if ( projectDir != null && value != null && unprefixedPathKeys.contains( expression ) )
{ {
return pathTranslator.alignToBaseDirectory( String.valueOf( value ), projectDir ); return pathTranslator.alignToBaseDirectory( String.valueOf( value ), projectDir );

View File

@ -63,10 +63,10 @@ public Model interpolate( Model model, File projectDir, ProjectBuilderConfigurat
throws ModelInterpolationException throws ModelInterpolationException
{ {
interpolateObject( model, model, projectDir, config, debugEnabled ); interpolateObject( model, model, projectDir, config, debugEnabled );
return model; return model;
} }
protected void interpolateObject( Object obj, Model model, File projectDir, ProjectBuilderConfiguration config, protected void interpolateObject( Object obj, Model model, File projectDir, ProjectBuilderConfiguration config,
boolean debugEnabled ) boolean debugEnabled )
throws ModelInterpolationException throws ModelInterpolationException
@ -75,13 +75,13 @@ protected void interpolateObject( Object obj, Model model, File projectDir, Proj
{ {
List<ValueSource> valueSources = createValueSources( model, projectDir, config ); List<ValueSource> valueSources = createValueSources( model, projectDir, config );
List<InterpolationPostProcessor> postProcessors = createPostProcessors( model, projectDir, config ); List<InterpolationPostProcessor> postProcessors = createPostProcessors( model, projectDir, config );
InterpolateObjectAction action = InterpolateObjectAction action =
new InterpolateObjectAction( obj, valueSources, postProcessors, debugEnabled, new InterpolateObjectAction( obj, valueSources, postProcessors, debugEnabled,
this, getLogger() ); this, getLogger() );
ModelInterpolationException error = AccessController.doPrivileged( action ); ModelInterpolationException error = AccessController.doPrivileged( action );
if ( error != null ) if ( error != null )
{ {
throw error; throw error;
@ -97,10 +97,10 @@ protected Interpolator createInterpolator()
{ {
StringSearchInterpolator interpolator = new StringSearchInterpolator(); StringSearchInterpolator interpolator = new StringSearchInterpolator();
interpolator.setCacheAnswers( true ); interpolator.setCacheAnswers( true );
return interpolator; return interpolator;
} }
private static final class InterpolateObjectAction implements PrivilegedAction<ModelInterpolationException> private static final class InterpolateObjectAction implements PrivilegedAction<ModelInterpolationException>
{ {
@ -110,7 +110,7 @@ private static final class InterpolateObjectAction implements PrivilegedAction<M
private final Logger logger; private final Logger logger;
private final List<ValueSource> valueSources; private final List<ValueSource> valueSources;
private final List<InterpolationPostProcessor> postProcessors; private final List<InterpolationPostProcessor> postProcessors;
public InterpolateObjectAction( Object target, List<ValueSource> valueSources, public InterpolateObjectAction( Object target, List<ValueSource> valueSources,
List<InterpolationPostProcessor> postProcessors, boolean debugEnabled, List<InterpolationPostProcessor> postProcessors, boolean debugEnabled,
StringSearchModelInterpolator modelInterpolator, Logger logger ) StringSearchModelInterpolator modelInterpolator, Logger logger )
@ -118,20 +118,20 @@ public InterpolateObjectAction( Object target, List<ValueSource> valueSources,
this.valueSources = valueSources; this.valueSources = valueSources;
this.postProcessors = postProcessors; this.postProcessors = postProcessors;
this.debugEnabled = debugEnabled; this.debugEnabled = debugEnabled;
this.interpolationTargets = new LinkedList<Object>(); this.interpolationTargets = new LinkedList<Object>();
interpolationTargets.add( target ); interpolationTargets.add( target );
this.modelInterpolator = modelInterpolator; this.modelInterpolator = modelInterpolator;
this.logger = logger; this.logger = logger;
} }
public ModelInterpolationException run() public ModelInterpolationException run()
{ {
while( !interpolationTargets.isEmpty() ) while ( !interpolationTargets.isEmpty() )
{ {
Object obj = interpolationTargets.removeFirst(); Object obj = interpolationTargets.removeFirst();
try try
{ {
traverseObjectWithParents( obj.getClass(), obj ); traverseObjectWithParents( obj.getClass(), obj );
@ -141,11 +141,11 @@ public ModelInterpolationException run()
return e; return e;
} }
} }
return null; return null;
} }
@SuppressWarnings("unchecked") @SuppressWarnings( "unchecked" )
private void traverseObjectWithParents( Class<?> cls, Object target ) private void traverseObjectWithParents( Class<?> cls, Object target )
throws ModelInterpolationException throws ModelInterpolationException
{ {
@ -153,8 +153,8 @@ private void traverseObjectWithParents( Class<?> cls, Object target )
{ {
return; return;
} }
if ( cls.isArray() ) if ( cls.isArray() )
{ {
evaluateArray( target ); evaluateArray( target );
@ -167,7 +167,7 @@ else if ( isQualifiedForInterpolation( cls ) )
fields = cls.getDeclaredFields(); fields = cls.getDeclaredFields();
fieldsByClass.put( cls, fields ); fieldsByClass.put( cls, fields );
} }
for ( int i = 0; i < fields.length; i++ ) for ( int i = 0; i < fields.length; i++ )
{ {
Class<?> type = fields[i].getType(); Class<?> type = fields[i].getType();
@ -185,7 +185,7 @@ else if ( isQualifiedForInterpolation( cls ) )
if ( value != null ) if ( value != null )
{ {
String interpolated = modelInterpolator.interpolateInternal( value, valueSources, postProcessors, debugEnabled ); String interpolated = modelInterpolator.interpolateInternal( value, valueSources, postProcessors, debugEnabled );
if ( !interpolated.equals( value ) ) if ( !interpolated.equals( value ) )
{ {
fields[i].set( target, interpolated ); fields[i].set( target, interpolated );
@ -202,23 +202,28 @@ else if ( Collection.class.isAssignableFrom( type ) )
{ {
c.clear(); c.clear();
} }
catch( UnsupportedOperationException e ) catch ( UnsupportedOperationException e )
{ {
if ( debugEnabled && logger != null ) if ( debugEnabled && logger != null )
{ {
logger.debug( "Skipping interpolation of field: " + fields[i] + " in: " + cls.getName() + "; it is an unmodifiable collection." ); logger.debug( "Skipping interpolation of field: " + fields[i] + " in: "
+ cls.getName() + "; it is an unmodifiable collection." );
} }
continue; continue;
} }
for ( Object value : originalValues ) for ( Object value : originalValues )
{ {
if ( value != null ) if ( value != null )
{ {
if( String.class == value.getClass() ) if ( String.class == value.getClass() )
{ {
String interpolated = modelInterpolator.interpolateInternal( (String) value, valueSources, postProcessors, debugEnabled ); String interpolated =
modelInterpolator.interpolateInternal( (String) value,
valueSources,
postProcessors,
debugEnabled );
if ( !interpolated.equals( value ) ) if ( !interpolated.equals( value ) )
{ {
c.add( interpolated ); c.add( interpolated );
@ -257,24 +262,31 @@ else if ( Map.class.isAssignableFrom( type ) )
for ( Map.Entry<Object, Object> entry : m.entrySet() ) for ( Map.Entry<Object, Object> entry : m.entrySet() )
{ {
Object value = entry.getValue(); Object value = entry.getValue();
if ( value != null ) if ( value != null )
{ {
if( String.class == value.getClass() ) if ( String.class == value.getClass() )
{ {
String interpolated = modelInterpolator.interpolateInternal( (String) value, valueSources, postProcessors, debugEnabled ); String interpolated =
modelInterpolator.interpolateInternal( (String) value,
valueSources,
postProcessors,
debugEnabled );
if ( !interpolated.equals( value ) ) if ( !interpolated.equals( value ) )
{ {
try try
{ {
entry.setValue( interpolated ); entry.setValue( interpolated );
} }
catch( UnsupportedOperationException e ) catch ( UnsupportedOperationException e )
{ {
if ( debugEnabled && logger != null ) if ( debugEnabled && logger != null )
{ {
logger.debug( "Skipping interpolation of field: " + fields[i] + " (key: " + entry.getKey() + ") in: " + cls.getName() + "; it is an unmodifiable collection." ); logger.debug( "Skipping interpolation of field: "
+ fields[i] + " (key: " + entry.getKey() + ") in: "
+ cls.getName()
+ "; it is an unmodifiable collection." );
} }
continue; continue;
} }
@ -313,11 +325,13 @@ else if ( Map.class.isAssignableFrom( type ) )
} }
catch ( IllegalArgumentException e ) catch ( IllegalArgumentException e )
{ {
throw new ModelInterpolationException( "Failed to interpolate field: " + fields[i] + " on class: " + cls.getName(), e ); throw new ModelInterpolationException( "Failed to interpolate field: " + fields[i]
+ " on class: " + cls.getName(), e );
} }
catch ( IllegalAccessException e ) catch ( IllegalAccessException e )
{ {
throw new ModelInterpolationException( "Failed to interpolate field: " + fields[i] + " on class: " + cls.getName(), e ); throw new ModelInterpolationException( "Failed to interpolate field: " + fields[i]
+ " on class: " + cls.getName(), e );
} }
} }
finally finally
@ -326,7 +340,7 @@ else if ( Map.class.isAssignableFrom( type ) )
} }
} }
} }
traverseObjectWithParents( cls.getSuperclass(), target ); traverseObjectWithParents( cls.getSuperclass(), target );
} }
} }
@ -342,22 +356,22 @@ private boolean isQualifiedForInterpolation( Field field, Class<?> fieldType )
{ {
fieldIsPrimitiveByClass.put( fieldType, Boolean.valueOf( fieldType.isPrimitive() ) ); fieldIsPrimitiveByClass.put( fieldType, Boolean.valueOf( fieldType.isPrimitive() ) );
} }
if ( fieldIsPrimitiveByClass.get( fieldType ).booleanValue() ) if ( fieldIsPrimitiveByClass.get( fieldType ).booleanValue() )
{ {
return false; return false;
} }
// if ( fieldType.isPrimitive() ) // if ( fieldType.isPrimitive() )
// { // {
// return false; // return false;
// } // }
if ( "parent".equals( field.getName() ) ) if ( "parent".equals( field.getName() ) )
{ {
return false; return false;
} }
return true; return true;
} }
@ -365,15 +379,17 @@ private void evaluateArray( Object target )
throws ModelInterpolationException throws ModelInterpolationException
{ {
int len = Array.getLength( target ); int len = Array.getLength( target );
for( int i = 0; i < len; i++ ) for ( int i = 0; i < len; i++ )
{ {
Object value = Array.get( target, i ); Object value = Array.get( target, i );
if ( value != null ) if ( value != null )
{ {
if ( String.class == value.getClass() ) if ( String.class == value.getClass() )
{ {
String interpolated = modelInterpolator.interpolateInternal( (String) value, valueSources, postProcessors, debugEnabled ); String interpolated =
modelInterpolator.interpolateInternal( (String) value, valueSources, postProcessors,
debugEnabled );
if ( !interpolated.equals( value ) ) if ( !interpolated.equals( value ) )
{ {
Array.set( target, i, interpolated ); Array.set( target, i, interpolated );

View File

@ -21,7 +21,6 @@
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import org.apache.maven.model.Build; import org.apache.maven.model.Build;
@ -31,7 +30,7 @@
import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Component;
@Deprecated @Deprecated
@Component(role = PathTranslator.class) @Component( role = PathTranslator.class )
public class DefaultPathTranslator public class DefaultPathTranslator
implements PathTranslator implements PathTranslator
{ {
@ -49,27 +48,21 @@ public void alignToBaseDirectory( Model model, File basedir )
build.setTestSourceDirectory( alignToBaseDirectory( build.getTestSourceDirectory(), basedir ) ); build.setTestSourceDirectory( alignToBaseDirectory( build.getTestSourceDirectory(), basedir ) );
for ( Iterator i = build.getResources().iterator(); i.hasNext(); ) for ( Resource resource : build.getResources() )
{ {
Resource resource = (Resource) i.next();
resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) ); resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) );
} }
for ( Iterator i = build.getTestResources().iterator(); i.hasNext(); ) for ( Resource resource : build.getTestResources() )
{ {
Resource resource = (Resource) i.next();
resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) ); resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) );
} }
if ( build.getFilters() != null ) if ( build.getFilters() != null )
{ {
List filters = new ArrayList(); List<String> filters = new ArrayList<String>();
for ( Iterator i = build.getFilters().iterator(); i.hasNext(); ) for ( String filter : build.getFilters() )
{ {
String filter = (String) i.next();
filters.add( alignToBaseDirectory( filter, basedir ) ); filters.add( alignToBaseDirectory( filter, basedir ) );
} }
build.setFilters( filters ); build.setFilters( filters );
@ -183,27 +176,21 @@ public void unalignFromBaseDirectory( Model model, File basedir )
build.setTestSourceDirectory( unalignFromBaseDirectory( build.getTestSourceDirectory(), basedir ) ); build.setTestSourceDirectory( unalignFromBaseDirectory( build.getTestSourceDirectory(), basedir ) );
for ( Iterator i = build.getResources().iterator(); i.hasNext(); ) for ( Resource resource : build.getResources() )
{ {
Resource resource = (Resource) i.next();
resource.setDirectory( unalignFromBaseDirectory( resource.getDirectory(), basedir ) ); resource.setDirectory( unalignFromBaseDirectory( resource.getDirectory(), basedir ) );
} }
for ( Iterator i = build.getTestResources().iterator(); i.hasNext(); ) for ( Resource resource : build.getTestResources() )
{ {
Resource resource = (Resource) i.next();
resource.setDirectory( unalignFromBaseDirectory( resource.getDirectory(), basedir ) ); resource.setDirectory( unalignFromBaseDirectory( resource.getDirectory(), basedir ) );
} }
if ( build.getFilters() != null ) if ( build.getFilters() != null )
{ {
List filters = new ArrayList(); List<String> filters = new ArrayList<String>();
for ( Iterator i = build.getFilters().iterator(); i.hasNext(); ) for ( String filter : build.getFilters() )
{ {
String filter = (String) i.next();
filters.add( unalignFromBaseDirectory( filter, basedir ) ); filters.add( unalignFromBaseDirectory( filter, basedir ) );
} }
build.setFilters( filters ); build.setFilters( filters );

View File

@ -33,7 +33,7 @@
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a> * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
* @version $Id$ * @version $Id$
*/ */
@Component(role = ModelValidator.class ) @Component( role = ModelValidator.class )
@Deprecated @Deprecated
public class DefaultModelValidator public class DefaultModelValidator
implements ModelValidator implements ModelValidator

View File

@ -31,7 +31,7 @@ public class ModelValidationResult
{ {
/** */ /** */
private final static String NEWLINE = System.getProperty( "line.separator" ); private static final String NEWLINE = System.getProperty( "line.separator" );
/** */ /** */
private List<String> messages; private List<String> messages;

View File

@ -31,7 +31,7 @@
@Component( role = MirrorSelector.class ) @Component( role = MirrorSelector.class )
public class DefaultMirrorSelector public class DefaultMirrorSelector
implements MirrorSelector implements MirrorSelector
{ {
private static final String WILDCARD = "*"; private static final String WILDCARD = "*";
@ -67,7 +67,7 @@ public Mirror getMirror( ArtifactRepository repository, List<Mirror> mirrors )
* This method checks if the pattern matches the originalRepository. Valid patterns: * = * This method checks if the pattern matches the originalRepository. Valid patterns: * =
* everything external:* = everything not on the localhost and not file based. repo,repo1 = repo * everything external:* = everything not on the localhost and not file based. repo,repo1 = repo
* or repo1 *,!repo1 = everything except repo1 * or repo1 *,!repo1 = everything except repo1
* *
* @param originalRepository to compare for a match. * @param originalRepository to compare for a match.
* @param pattern used for match. Currently only '*' is supported. * @param pattern used for match. Currently only '*' is supported.
* @return true if the repository is a match to this pattern. * @return true if the repository is a match to this pattern.
@ -122,7 +122,7 @@ else if ( WILDCARD.equals( repo ) )
/** /**
* Checks the URL to see if this repository refers to an external repository * Checks the URL to see if this repository refers to an external repository
* *
* @param originalRepository * @param originalRepository
* @return true if external. * @return true if external.
*/ */
@ -131,7 +131,8 @@ static boolean isExternalRepo( ArtifactRepository originalRepository )
try try
{ {
URL url = new URL( originalRepository.getUrl() ); URL url = new URL( originalRepository.getUrl() );
return !( url.getHost().equals( "localhost" ) || url.getHost().equals( "127.0.0.1" ) || url.getProtocol().equals( "file" ) ); return !( url.getHost().equals( "localhost" ) || url.getHost().equals( "127.0.0.1" )
|| url.getProtocol().equals( "file" ) );
} }
catch ( MalformedURLException e ) catch ( MalformedURLException e )
{ {
@ -147,7 +148,7 @@ static boolean matchesLayout( ArtifactRepository repository, Mirror mirror )
/** /**
* Checks whether the layouts configured for a mirror match with the layout of the repository. * Checks whether the layouts configured for a mirror match with the layout of the repository.
* *
* @param repoLayout The layout of the repository, may be {@code null}. * @param repoLayout The layout of the repository, may be {@code null}.
* @param mirrorLayout The layouts supported by the mirror, may be {@code null}. * @param mirrorLayout The layouts supported by the mirror, may be {@code null}.
* @return {@code true} if the layouts associated with the mirror match the layout of the original repository, * @return {@code true} if the layouts associated with the mirror match the layout of the original repository,

View File

@ -19,7 +19,6 @@
* under the License. * under the License.
*/ */
/** /**
* *
* *
@ -37,7 +36,7 @@ public class MavenArtifactMetadata
String classifier; String classifier;
String type; String type;
String scope; String scope;
transient Object datum; transient Object datum;
public String getGroupId() public String getGroupId()
@ -109,14 +108,13 @@ public void setScope( String scope )
{ {
this.scope = scope; this.scope = scope;
} }
@Override @Override
public String toString() public String toString()
{ {
return getGroupId()+":"+getArtifactId()+":"+getVersion() return getGroupId() + ":" + getArtifactId() + ":" + getVersion() + ":"
+":" + (getClassifier() == null ? "" : getClassifier() ) + ( getClassifier() == null ? "" : getClassifier() ) + ":"
+":" + (getType() == null ? DEFAULT_TYPE : getType() ) + ( getType() == null ? DEFAULT_TYPE : getType() );
;
} }
} }

View File

@ -23,7 +23,7 @@
import java.util.Collection; import java.util.Collection;
/** /**
* This is the main graph data structure used by the RepositorySystem to present tree and graph objects. * This is the main graph data structure used by the RepositorySystem to present tree and graph objects.
* *
* @author Oleg Gusakov * @author Oleg Gusakov
* @version $Id$ * @version $Id$
@ -36,14 +36,14 @@ public class MetadataGraph
/** entry point for tree-like structures */ /** entry point for tree-like structures */
MetadataGraphNode entry; MetadataGraphNode entry;
public MetadataGraph( MetadataGraphNode entry ) public MetadataGraph( MetadataGraphNode entry )
{ {
this(); this();
this.entry = entry; this.entry = entry;
} }
public MetadataGraph() public MetadataGraph()
{ {
nodes = new ArrayList<MetadataGraphNode>( 64 ); nodes = new ArrayList<MetadataGraphNode>( 64 );
@ -56,38 +56,38 @@ public void addNode( MetadataGraphNode node )
/** /**
* find a node by the GAV (metadata) * find a node by the GAV (metadata)
* *
* @param md * @param md
* @return * @return
*/ */
public MetadataGraphNode findNode( MavenArtifactMetadata md ) public MetadataGraphNode findNode( MavenArtifactMetadata md )
{ {
for( MetadataGraphNode mgn : nodes ) for ( MetadataGraphNode mgn : nodes )
{ {
if( mgn.metadata.equals( md ) ) if ( mgn.metadata.equals( md ) )
{ {
return mgn; return mgn;
} }
} }
MetadataGraphNode node = new MetadataGraphNode( md ); MetadataGraphNode node = new MetadataGraphNode( md );
addNode( node ); addNode( node );
return node; return node;
} }
/** /**
* getter * getter
* *
* @return * @return
*/ */
public MetadataGraphNode getEntry() public MetadataGraphNode getEntry()
{ {
return entry; return entry;
} }
/** /**
* getter * getter
* *
* @return * @return
*/ */
public Collection<MetadataGraphNode> getNodes() public Collection<MetadataGraphNode> getNodes()

View File

@ -32,32 +32,32 @@
public class MetadataGraphNode public class MetadataGraphNode
{ {
/** node payload */ /** node payload */
MavenArtifactMetadata metadata; MavenArtifactMetadata metadata;
/** nodes, incident to this (depend on me) */ /** nodes, incident to this (depend on me) */
List<MetadataGraphNode> inNodes; List<MetadataGraphNode> inNodes;
/** nodes, exident to this (I depend on) */ /** nodes, exident to this (I depend on) */
List<MetadataGraphNode> exNodes; List<MetadataGraphNode> exNodes;
public MetadataGraphNode() public MetadataGraphNode()
{ {
inNodes = new ArrayList<MetadataGraphNode>(4); inNodes = new ArrayList<MetadataGraphNode>(4);
exNodes = new ArrayList<MetadataGraphNode>(8); exNodes = new ArrayList<MetadataGraphNode>(8);
} }
public MetadataGraphNode( MavenArtifactMetadata metadata ) public MetadataGraphNode( MavenArtifactMetadata metadata )
{ {
this(); this();
this.metadata = metadata; this.metadata = metadata;
} }
public MetadataGraphNode addIncident( MetadataGraphNode node ) public MetadataGraphNode addIncident( MetadataGraphNode node )
{ {
inNodes.add( node ); inNodes.add( node );
return this; return this;
} }
public MetadataGraphNode addExident( MetadataGraphNode node ) public MetadataGraphNode addExident( MetadataGraphNode node )
{ {
exNodes.add( node ); exNodes.add( node );
@ -67,28 +67,36 @@ public MetadataGraphNode addExident( MetadataGraphNode node )
@Override @Override
public boolean equals( Object obj ) public boolean equals( Object obj )
{ {
if( obj == null ) if ( obj == null )
{
return false; return false;
}
if( MetadataGraphNode.class.isAssignableFrom( obj.getClass() ) ) if ( MetadataGraphNode.class.isAssignableFrom( obj.getClass() ) )
{ {
MetadataGraphNode node2 = (MetadataGraphNode) obj; MetadataGraphNode node2 = (MetadataGraphNode) obj;
if( node2.metadata == null ) if ( node2.metadata == null )
{
return metadata == null; return metadata == null;
}
return metadata == null ? false: metadata.toString().equals( node2.metadata.toString() );
return metadata == null ? false : metadata.toString().equals( node2.metadata.toString() );
} }
else else
{
return super.equals( obj ); return super.equals( obj );
}
} }
@Override @Override
public int hashCode() public int hashCode()
{ {
if( metadata == null ) if ( metadata == null )
{
return super.hashCode(); return super.hashCode();
}
return metadata.toString().hashCode(); return metadata.toString().hashCode();
} }
} }

View File

@ -46,32 +46,33 @@ public class MetadataResolutionRequest
private List<ArtifactRepository> remoteRepositories; private List<ArtifactRepository> remoteRepositories;
// This is like a filter but overrides all transitive versions // This is like a filter but overrides all transitive versions
private Map managedVersionMap; private Map managedVersionMap;
/** result type - flat list; the default */ /** result type - flat list; the default */
private boolean asList = true; private boolean asList = true;
/** result type - dirty tree */ /** result type - dirty tree */
private boolean asDirtyTree = false; private boolean asDirtyTree = false;
/** result type - resolved tree */ /** result type - resolved tree */
private boolean asResolvedTree = false; private boolean asResolvedTree = false;
/** result type - graph */ /** result type - graph */
private boolean asGraph = false; private boolean asGraph = false;
public MetadataResolutionRequest() public MetadataResolutionRequest()
{ {
} }
public MetadataResolutionRequest( MavenArtifactMetadata md, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) public MetadataResolutionRequest( MavenArtifactMetadata md, ArtifactRepository localRepository,
{ List<ArtifactRepository> remoteRepositories )
{
this.mad = md; this.mad = md;
this.localRepository = localRepository; this.localRepository = localRepository;
this.remoteRepositories = remoteRepositories; this.remoteRepositories = remoteRepositories;
} }
public MavenArtifactMetadata getArtifactMetadata() public MavenArtifactMetadata getArtifactMetadata()
{ {
return mad; return mad;
@ -141,7 +142,7 @@ public String toString()
.append( "localRepository: " ).append( localRepository ).append( "\n" ) .append( "localRepository: " ).append( localRepository ).append( "\n" )
.append( "remoteRepositories: " ).append( remoteRepositories ).append( "\n" ) .append( "remoteRepositories: " ).append( remoteRepositories ).append( "\n" )
; ;
return sb.toString(); return sb.toString();
} }

View File

@ -30,8 +30,6 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.artifact.resolver.CyclicDependencyException; import org.apache.maven.artifact.resolver.CyclicDependencyException;
import org.apache.maven.artifact.versioning.OverConstrainedVersionException; import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
import org.apache.maven.repository.legacy.resolver.DefaultLegacyArtifactCollector;
/** /**
* *
@ -65,11 +63,11 @@ public class MetadataResolutionResult
private Set<Artifact> requestedArtifacts; private Set<Artifact> requestedArtifacts;
private Set<Artifact> artifacts; private Set<Artifact> artifacts;
private MetadataGraph dirtyTree; private MetadataGraph dirtyTree;
private MetadataGraph resolvedTree; private MetadataGraph resolvedTree;
private MetadataGraph resolvedGraph; private MetadataGraph resolvedGraph;
public Artifact getOriginatingArtifact() public Artifact getOriginatingArtifact()
@ -235,8 +233,10 @@ public boolean hasErrorArtifactExceptions()
public MetadataResolutionResult addError( Exception e ) public MetadataResolutionResult addError( Exception e )
{ {
if( exceptions == null ) if ( exceptions == null )
{
initList( exceptions ); initList( exceptions );
}
exceptions.add( e ); exceptions.add( e );
@ -353,5 +353,5 @@ public void setResolvedTree( MetadataGraph resolvedTree )
{ {
this.resolvedTree = resolvedTree; this.resolvedTree = resolvedTree;
} }
} }

View File

@ -35,25 +35,23 @@ public class VersionNotFoundException
extends Exception extends Exception
{ {
private Dependency dependency; private Dependency dependency;
private String projectId; private String projectId;
private File pomFile; private File pomFile;
private InvalidVersionSpecificationException cause; private InvalidVersionSpecificationException cause;
public VersionNotFoundException( String projectId public VersionNotFoundException( String projectId, Dependency dependency, File pomFile,
, Dependency dependency InvalidVersionSpecificationException cause )
, File pomFile
, InvalidVersionSpecificationException cause
)
{ {
super( projectId+", "+formatLocationInPom( dependency )+ " " +dependency.getVersion()+", pom file "+pomFile, cause ); super( projectId + ", " + formatLocationInPom( dependency ) + " " + dependency.getVersion() + ", pom file "
+ pomFile, cause );
this.projectId = projectId; this.projectId = projectId;
this.pomFile = pomFile; this.pomFile = pomFile;
this.cause = cause; this.cause = cause;
this.dependency = dependency; this.dependency = dependency;
} }
@ -81,6 +79,6 @@ public InvalidVersionSpecificationException getCauseException()
{ {
return cause; return cause;
} }
} }

View File

@ -41,7 +41,7 @@
import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.Logger;
@Component(role=UpdateCheckManager.class) @Component( role = UpdateCheckManager.class )
public class DefaultUpdateCheckManager public class DefaultUpdateCheckManager
extends AbstractLogEnabled extends AbstractLogEnabled
implements UpdateCheckManager implements UpdateCheckManager
@ -390,7 +390,8 @@ private Properties read( File touchfile )
} }
catch ( IOException e ) catch ( IOException e )
{ {
getLogger().debug( "Error releasing shared lock for resolution tracking file: " + touchfile, e ); getLogger().debug( "Error releasing shared lock for resolution tracking file: " + touchfile,
e );
} }
} }

View File

@ -53,8 +53,8 @@
//TODO: remove the update check manager //TODO: remove the update check manager
//TODO: separate into retriever and publisher //TODO: separate into retriever and publisher
//TODO: rmeove hardcoding of checksum logic //TODO: remove hardcoding of checksum logic
@Component(role = WagonManager.class) @Component( role = WagonManager.class )
public class DefaultWagonManager public class DefaultWagonManager
implements WagonManager implements WagonManager
{ {
@ -74,8 +74,9 @@ public class DefaultWagonManager
// //
// Retriever // Retriever
// //
public void getArtifact( Artifact artifact, ArtifactRepository repository, TransferListener downloadMonitor, boolean force ) public void getArtifact( Artifact artifact, ArtifactRepository repository, TransferListener downloadMonitor,
boolean force )
throws TransferFailedException, ResourceDoesNotExistException throws TransferFailedException, ResourceDoesNotExistException
{ {
String remotePath = repository.pathOf( artifact ); String remotePath = repository.pathOf( artifact );
@ -138,7 +139,8 @@ else if ( !artifact.getFile().exists() )
} }
} }
public void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepositories, TransferListener downloadMonitor, boolean force ) public void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepositories,
TransferListener downloadMonitor, boolean force )
throws TransferFailedException, ResourceDoesNotExistException throws TransferFailedException, ResourceDoesNotExistException
{ {
TransferFailedException tfe = null; TransferFailedException tfe = null;
@ -195,7 +197,8 @@ public void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepos
} }
} }
public void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository repository, File destination, String checksumPolicy ) public void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository repository, File destination,
String checksumPolicy )
throws TransferFailedException, ResourceDoesNotExistException throws TransferFailedException, ResourceDoesNotExistException
{ {
String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata ); String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata );
@ -203,7 +206,8 @@ public void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository r
getRemoteFile( repository, destination, remotePath, null, checksumPolicy, true ); getRemoteFile( repository, destination, remotePath, null, checksumPolicy, true );
} }
public void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository repository, File destination, String checksumPolicy ) public void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository repository,
File destination, String checksumPolicy )
throws TransferFailedException, ResourceDoesNotExistException throws TransferFailedException, ResourceDoesNotExistException
{ {
String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata ); String remotePath = repository.pathOfRemoteRepositoryMetadata( metadata );
@ -213,13 +217,13 @@ public void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metada
/** /**
* Deal with connecting to a wagon repository taking into account authentication and proxies. * Deal with connecting to a wagon repository taking into account authentication and proxies.
* *
* @param wagon * @param wagon
* @param repository * @param repository
* @throws ConnectionException * @throws ConnectionException
* @throws AuthenticationException * @throws AuthenticationException
*/ */
private void connectWagon( Wagon wagon, ArtifactRepository repository ) private void connectWagon( Wagon wagon, ArtifactRepository repository )
throws ConnectionException, AuthenticationException throws ConnectionException, AuthenticationException
{ {
if ( repository.getProxy() != null && logger.isDebugEnabled() ) if ( repository.getProxy() != null && logger.isDebugEnabled() )
@ -235,7 +239,8 @@ private void connectWagon( Wagon wagon, ArtifactRepository repository )
} }
else if ( repository.getAuthentication() != null ) else if ( repository.getAuthentication() != null )
{ {
wagon.connect( new Repository( repository.getId(), repository.getUrl() ), authenticationInfo( repository ) ); wagon.connect( new Repository( repository.getId(), repository.getUrl() ),
authenticationInfo( repository ) );
} }
else if ( repository.getProxy() != null ) else if ( repository.getProxy() != null )
{ {
@ -245,16 +250,16 @@ else if ( repository.getProxy() != null )
{ {
wagon.connect( new Repository( repository.getId(), repository.getUrl() ) ); wagon.connect( new Repository( repository.getId(), repository.getUrl() ) );
} }
} }
private AuthenticationInfo authenticationInfo( ArtifactRepository repository ) private AuthenticationInfo authenticationInfo( ArtifactRepository repository )
{ {
AuthenticationInfo ai = new AuthenticationInfo(); AuthenticationInfo ai = new AuthenticationInfo();
ai.setUserName( repository.getAuthentication().getUsername() ); ai.setUserName( repository.getAuthentication().getUsername() );
ai.setPassword( repository.getAuthentication().getPassword() ); ai.setPassword( repository.getAuthentication().getPassword() );
return ai; return ai;
} }
private ProxyInfo proxyInfo( ArtifactRepository repository ) private ProxyInfo proxyInfo( ArtifactRepository repository )
{ {
ProxyInfo proxyInfo = new ProxyInfo(); ProxyInfo proxyInfo = new ProxyInfo();
@ -263,11 +268,12 @@ private ProxyInfo proxyInfo( ArtifactRepository repository )
proxyInfo.setPort( repository.getProxy().getPort() ); proxyInfo.setPort( repository.getProxy().getPort() );
proxyInfo.setNonProxyHosts( repository.getProxy().getNonProxyHosts() ); proxyInfo.setNonProxyHosts( repository.getProxy().getNonProxyHosts() );
proxyInfo.setUserName( repository.getProxy().getUserName() ); proxyInfo.setUserName( repository.getProxy().getUserName() );
proxyInfo.setPassword( repository.getProxy().getPassword() ); proxyInfo.setPassword( repository.getProxy().getPassword() );
return proxyInfo; return proxyInfo;
} }
public void getRemoteFile( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor, String checksumPolicy, boolean force ) public void getRemoteFile( ArtifactRepository repository, File destination, String remotePath,
TransferListener downloadMonitor, String checksumPolicy, boolean force )
throws TransferFailedException, ResourceDoesNotExistException throws TransferFailedException, ResourceDoesNotExistException
{ {
String protocol = repository.getProtocol(); String protocol = repository.getProtocol();
@ -297,7 +303,7 @@ public void getRemoteFile( ArtifactRepository repository, File destination, Stri
try try
{ {
connectWagon( wagon, repository ); connectWagon( wagon, repository );
boolean firstRun = true; boolean firstRun = true;
boolean retry = true; boolean retry = true;
@ -407,7 +413,8 @@ public void getRemoteFile( ArtifactRepository repository, File destination, Stri
catch ( ResourceDoesNotExistException md5TryException ) catch ( ResourceDoesNotExistException md5TryException )
{ {
// this was a failed transfer, and we don't want to retry. // this was a failed transfer, and we don't want to retry.
handleChecksumFailure( checksumPolicy, "Error retrieving checksum file for " + remotePath, md5TryException ); handleChecksumFailure( checksumPolicy, "Error retrieving checksum file for " + remotePath,
md5TryException );
} }
} }
@ -470,7 +477,8 @@ public void getRemoteFile( ArtifactRepository repository, File destination, Stri
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new TransferFailedException( "Error copying temporary file to the final destination: " + e.getMessage(), e ); throw new TransferFailedException( "Error copying temporary file to the final destination: "
+ e.getMessage(), e );
} }
} }
} }
@ -478,8 +486,9 @@ public void getRemoteFile( ArtifactRepository repository, File destination, Stri
// //
// Publisher // Publisher
// //
public void putArtifact( File source, Artifact artifact, ArtifactRepository deploymentRepository, TransferListener downloadMonitor ) public void putArtifact( File source, Artifact artifact, ArtifactRepository deploymentRepository,
TransferListener downloadMonitor )
throws TransferFailedException throws TransferFailedException
{ {
putRemoteFile( deploymentRepository, source, deploymentRepository.pathOf( artifact ), downloadMonitor ); putRemoteFile( deploymentRepository, source, deploymentRepository.pathOf( artifact ), downloadMonitor );
@ -492,7 +501,8 @@ public void putArtifactMetadata( File source, ArtifactMetadata artifactMetadata,
putRemoteFile( repository, source, repository.pathOfRemoteRepositoryMetadata( artifactMetadata ), null ); putRemoteFile( repository, source, repository.pathOfRemoteRepositoryMetadata( artifactMetadata ), null );
} }
public void putRemoteFile( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor ) public void putRemoteFile( ArtifactRepository repository, File source, String remotePath,
TransferListener downloadMonitor )
throws TransferFailedException throws TransferFailedException
{ {
String protocol = repository.getProtocol(); String protocol = repository.getProtocol();
@ -521,7 +531,7 @@ public void putRemoteFile( ArtifactRepository repository, File source, String re
{ {
checksums.put( CHECKSUM_IDS[i], addChecksumObserver( wagon, CHECKSUM_ALGORITHMS[i] ) ); checksums.put( CHECKSUM_IDS[i], addChecksumObserver( wagon, CHECKSUM_ALGORITHMS[i] ) );
} }
List<File> temporaryFiles = new ArrayList<File>(); List<File> temporaryFiles = new ArrayList<File>();
try try
@ -583,7 +593,7 @@ public void putRemoteFile( ArtifactRepository repository, File source, String re
{ {
// MNG-4543 // MNG-4543
cleanupTemporaryFiles( temporaryFiles ); cleanupTemporaryFiles( temporaryFiles );
// Remove every checksum listener // Remove every checksum listener
for ( String aCHECKSUM_IDS : CHECKSUM_IDS ) for ( String aCHECKSUM_IDS : CHECKSUM_IDS )
{ {
@ -600,7 +610,7 @@ public void putRemoteFile( ArtifactRepository repository, File source, String re
} }
} }
private void cleanupTemporaryFiles(List<File> files) private void cleanupTemporaryFiles( List<File> files )
{ {
for ( File file : files ) for ( File file : files )
{ {
@ -615,9 +625,9 @@ private void cleanupTemporaryFiles(List<File> files)
+ e.getMessage() ); + e.getMessage() );
} }
} }
} }
private ChecksumObserver addChecksumObserver( Wagon wagon, String algorithm ) private ChecksumObserver addChecksumObserver( Wagon wagon, String algorithm )
throws TransferFailedException throws TransferFailedException
{ {
@ -648,7 +658,8 @@ else if ( !ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE.equals( checksumPolic
// otherwise it is ignore // otherwise it is ignore
} }
private void verifyChecksum( ChecksumObserver checksumObserver, File destination, File tempDestination, String remotePath, String checksumFileExtension, Wagon wagon ) private void verifyChecksum( ChecksumObserver checksumObserver, File destination, File tempDestination,
String remotePath, String checksumFileExtension, Wagon wagon )
throws ResourceDoesNotExistException, TransferFailedException, AuthorizationException throws ResourceDoesNotExistException, TransferFailedException, AuthorizationException
{ {
try try
@ -666,7 +677,8 @@ private void verifyChecksum( ChecksumObserver checksumObserver, File destination
expectedChecksum = expectedChecksum.trim(); expectedChecksum = expectedChecksum.trim();
// check for 'ALGO (name) = CHECKSUM' like used by openssl // check for 'ALGO (name) = CHECKSUM' like used by openssl
if ( expectedChecksum.regionMatches( true, 0, "MD", 0, 2 ) || expectedChecksum.regionMatches( true, 0, "SHA", 0, 3 ) ) if ( expectedChecksum.regionMatches( true, 0, "MD", 0, 2 )
|| expectedChecksum.regionMatches( true, 0, "SHA", 0, 3 ) )
{ {
int lastSpacePos = expectedChecksum.lastIndexOf( ' ' ); int lastSpacePos = expectedChecksum.lastIndexOf( ' ' );
expectedChecksum = expectedChecksum.substring( lastSpacePos + 1 ); expectedChecksum = expectedChecksum.substring( lastSpacePos + 1 );
@ -693,7 +705,8 @@ private void verifyChecksum( ChecksumObserver checksumObserver, File destination
} }
else else
{ {
throw new ChecksumFailedException( "Checksum failed on download: local = '" + actualChecksum + "'; remote = '" + expectedChecksum + "'" ); throw new ChecksumFailedException( "Checksum failed on download: local = '" + actualChecksum
+ "'; remote = '" + expectedChecksum + "'" );
} }
} }
catch ( IOException e ) catch ( IOException e )
@ -732,8 +745,8 @@ public Wagon getWagon( Repository repository )
throws UnsupportedProtocolException throws UnsupportedProtocolException
{ {
return getWagon( repository.getProtocol() ); return getWagon( repository.getProtocol() );
} }
@Deprecated @Deprecated
public Wagon getWagon( String protocol ) public Wagon getWagon( String protocol )
throws UnsupportedProtocolException throws UnsupportedProtocolException
@ -758,5 +771,5 @@ public Wagon getWagon( String protocol )
return wagon; return wagon;
} }
} }

View File

@ -1,18 +1,22 @@
package org.apache.maven.repository.legacy; package org.apache.maven.repository.legacy;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -70,7 +74,7 @@
/** /**
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role = RepositorySystem.class, hint = "default") @Component( role = RepositorySystem.class, hint = "default" )
public class LegacyRepositorySystem public class LegacyRepositorySystem
implements RepositorySystem implements RepositorySystem
{ {
@ -112,7 +116,8 @@ public Artifact createArtifact( String groupId, String artifactId, String versio
return artifactFactory.createBuildArtifact( groupId, artifactId, version, packaging ); return artifactFactory.createBuildArtifact( groupId, artifactId, version, packaging );
} }
public Artifact createArtifactWithClassifier( String groupId, String artifactId, String version, String type, String classifier ) public Artifact createArtifactWithClassifier( String groupId, String artifactId, String version, String type,
String classifier )
{ {
return artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier ); return artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier );
} }
@ -134,7 +139,9 @@ public Artifact createDependencyArtifact( Dependency d )
return null; return null;
} }
Artifact artifact = artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(), versionRange, d.getType(), d.getClassifier(), d.getScope(), d.isOptional() ); Artifact artifact =
artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(), versionRange, d.getType(),
d.getClassifier(), d.getScope(), d.isOptional() );
if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && d.getSystemPath() != null ) if ( Artifact.SCOPE_SYSTEM.equals( d.getScope() ) && d.getSystemPath() != null )
{ {
@ -225,8 +232,11 @@ public ArtifactRepository createDefaultLocalRepository()
public ArtifactRepository createLocalRepository( File localRepository ) public ArtifactRepository createLocalRepository( File localRepository )
throws InvalidRepositoryException throws InvalidRepositoryException
{ {
return createRepository( "file://" + localRepository.toURI().getRawPath(), RepositorySystem.DEFAULT_LOCAL_REPO_ID, true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, true, return createRepository( "file://" + localRepository.toURI().getRawPath(),
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE ); RepositorySystem.DEFAULT_LOCAL_REPO_ID, true,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, true,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
} }
public ArtifactRepository createDefaultRemoteRepository() public ArtifactRepository createDefaultRemoteRepository()
@ -241,7 +251,9 @@ public ArtifactRepository createDefaultRemoteRepository()
public ArtifactRepository createLocalRepository( String url, String repositoryId ) public ArtifactRepository createLocalRepository( String url, String repositoryId )
throws IOException throws IOException
{ {
return createRepository( canonicalFileUrl( url ), repositoryId, true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, true, ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, return createRepository( canonicalFileUrl( url ), repositoryId, true,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS, true,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE ); ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
} }
@ -278,15 +290,17 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
{ {
/* /*
* Probably is not worth it, but here I make sure I restore request * Probably is not worth it, but here I make sure I restore request
* to its original state. * to its original state.
*/ */
try try
{ {
LocalArtifactRepository ideWorkspace = plexus.lookup( LocalArtifactRepository.class, LocalArtifactRepository.IDE_WORKSPACE ); LocalArtifactRepository ideWorkspace =
plexus.lookup( LocalArtifactRepository.class, LocalArtifactRepository.IDE_WORKSPACE );
if ( request.getLocalRepository() instanceof DelegatingLocalArtifactRepository ) if ( request.getLocalRepository() instanceof DelegatingLocalArtifactRepository )
{ {
DelegatingLocalArtifactRepository delegatingLocalRepository = (DelegatingLocalArtifactRepository) request.getLocalRepository(); DelegatingLocalArtifactRepository delegatingLocalRepository =
(DelegatingLocalArtifactRepository) request.getLocalRepository();
LocalArtifactRepository orig = delegatingLocalRepository.getIdeWorspace(); LocalArtifactRepository orig = delegatingLocalRepository.getIdeWorspace();
@ -304,7 +318,8 @@ public ArtifactResolutionResult resolve( ArtifactResolutionRequest request )
else else
{ {
ArtifactRepository localRepository = request.getLocalRepository(); ArtifactRepository localRepository = request.getLocalRepository();
DelegatingLocalArtifactRepository delegatingLocalRepository = new DelegatingLocalArtifactRepository( localRepository ); DelegatingLocalArtifactRepository delegatingLocalRepository =
new DelegatingLocalArtifactRepository( localRepository );
delegatingLocalRepository.setIdeWorkspace( ideWorkspace ); delegatingLocalRepository.setIdeWorkspace( ideWorkspace );
request.setLocalRepository( delegatingLocalRepository ); request.setLocalRepository( delegatingLocalRepository );
try try
@ -370,7 +385,8 @@ public List<ArtifactRepository> getEffectiveRepositories( List<ArtifactRepositor
for ( List<ArtifactRepository> aliasedRepos : reposByKey.values() ) for ( List<ArtifactRepository> aliasedRepos : reposByKey.values() )
{ {
List<ArtifactRepositoryPolicy> releasePolicies = new ArrayList<ArtifactRepositoryPolicy>( aliasedRepos.size() ); List<ArtifactRepositoryPolicy> releasePolicies =
new ArrayList<ArtifactRepositoryPolicy>( aliasedRepos.size() );
for ( ArtifactRepository aliasedRepo : aliasedRepos ) for ( ArtifactRepository aliasedRepo : aliasedRepos )
{ {
@ -379,7 +395,8 @@ public List<ArtifactRepository> getEffectiveRepositories( List<ArtifactRepositor
ArtifactRepositoryPolicy releasePolicy = getEffectivePolicy( releasePolicies ); ArtifactRepositoryPolicy releasePolicy = getEffectivePolicy( releasePolicies );
List<ArtifactRepositoryPolicy> snapshotPolicies = new ArrayList<ArtifactRepositoryPolicy>( aliasedRepos.size() ); List<ArtifactRepositoryPolicy> snapshotPolicies =
new ArrayList<ArtifactRepositoryPolicy>( aliasedRepos.size() );
for ( ArtifactRepository aliasedRepo : aliasedRepos ) for ( ArtifactRepository aliasedRepo : aliasedRepos )
{ {
@ -390,8 +407,9 @@ public List<ArtifactRepository> getEffectiveRepositories( List<ArtifactRepositor
ArtifactRepository aliasedRepo = aliasedRepos.get( 0 ); ArtifactRepository aliasedRepo = aliasedRepos.get( 0 );
ArtifactRepository effectiveRepository = ArtifactRepository effectiveRepository =
createArtifactRepository( aliasedRepo.getId(), aliasedRepo.getUrl(), aliasedRepo.getLayout(), snapshotPolicy, releasePolicy ); createArtifactRepository( aliasedRepo.getId(), aliasedRepo.getUrl(), aliasedRepo.getLayout(),
snapshotPolicy, releasePolicy );
effectiveRepository.setAuthentication( aliasedRepo.getAuthentication() ); effectiveRepository.setAuthentication( aliasedRepo.getAuthentication() );
@ -567,11 +585,12 @@ public MetadataResolutionResult resolveMetadata( MetadataResolutionRequest reque
// List<ResolutionListener> listeners, // List<ResolutionListener> listeners,
// List<ConflictResolver> conflictResolvers ) // List<ConflictResolver> conflictResolvers )
// ArtifactResolutionResult result = artifactCollector. // ArtifactResolutionResult result = artifactCollector.
return null; return null;
} }
public void retrieve( ArtifactRepository repository, File destination, String remotePath, ArtifactTransferListener transferListener ) public void retrieve( ArtifactRepository repository, File destination, String remotePath,
ArtifactTransferListener transferListener )
throws ArtifactTransferFailedException, ArtifactDoesNotExistException throws ArtifactTransferFailedException, ArtifactDoesNotExistException
{ {
try try
@ -590,7 +609,8 @@ public void retrieve( ArtifactRepository repository, File destination, String re
} }
} }
public void publish( ArtifactRepository repository, File source, String remotePath, ArtifactTransferListener transferListener ) public void publish( ArtifactRepository repository, File source, String remotePath,
ArtifactTransferListener transferListener )
throws ArtifactTransferFailedException throws ArtifactTransferFailedException
{ {
try try
@ -609,7 +629,7 @@ public void publish( ArtifactRepository repository, File source, String remotePa
// //
public ArtifactRepository buildArtifactRepository( Repository repo ) public ArtifactRepository buildArtifactRepository( Repository repo )
throws InvalidRepositoryException throws InvalidRepositoryException
{ {
if ( repo != null ) if ( repo != null )
{ {
String id = repo.getId(); String id = repo.getId();
@ -629,7 +649,7 @@ public ArtifactRepository buildArtifactRepository( Repository repo )
ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repo.getSnapshots() ); ArtifactRepositoryPolicy snapshots = buildArtifactRepositoryPolicy( repo.getSnapshots() );
ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() ); ArtifactRepositoryPolicy releases = buildArtifactRepositoryPolicy( repo.getReleases() );
return createArtifactRepository( id, url, layouts.get( repo.getLayout() ), snapshots, releases ); return createArtifactRepository( id, url, layouts.get( repo.getLayout() ), snapshots, releases );
} }
else else
@ -637,24 +657,33 @@ public ArtifactRepository buildArtifactRepository( Repository repo )
return null; return null;
} }
} }
private ArtifactRepository createRepository( String url, String repositoryId, boolean releases, String releaseUpdates, boolean snapshots, String snapshotUpdates, String checksumPolicy )
{
ArtifactRepositoryPolicy snapshotsPolicy = new ArtifactRepositoryPolicy( snapshots, snapshotUpdates, checksumPolicy );
ArtifactRepositoryPolicy releasesPolicy = new ArtifactRepositoryPolicy( releases, releaseUpdates, checksumPolicy ); private ArtifactRepository createRepository( String url, String repositoryId, boolean releases,
String releaseUpdates, boolean snapshots, String snapshotUpdates,
String checksumPolicy )
{
ArtifactRepositoryPolicy snapshotsPolicy =
new ArtifactRepositoryPolicy( snapshots, snapshotUpdates, checksumPolicy );
ArtifactRepositoryPolicy releasesPolicy =
new ArtifactRepositoryPolicy( releases, releaseUpdates, checksumPolicy );
return createArtifactRepository( repositoryId, url, null, snapshotsPolicy, releasesPolicy ); return createArtifactRepository( repositoryId, url, null, snapshotsPolicy, releasesPolicy );
} }
public ArtifactRepository createArtifactRepository( String repositoryId, String url, ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases ) public ArtifactRepository createArtifactRepository( String repositoryId, String url,
ArtifactRepositoryLayout repositoryLayout,
ArtifactRepositoryPolicy snapshots,
ArtifactRepositoryPolicy releases )
{ {
if ( repositoryLayout == null ) if ( repositoryLayout == null )
{ {
repositoryLayout = layouts.get( "default" ); repositoryLayout = layouts.get( "default" );
} }
ArtifactRepository artifactRepository = artifactRepositoryFactory.createArtifactRepository( repositoryId, url, repositoryLayout, snapshots, releases ); ArtifactRepository artifactRepository =
artifactRepositoryFactory.createArtifactRepository( repositoryId, url, repositoryLayout, snapshots,
releases );
return artifactRepository; return artifactRepository;
} }

View File

@ -1,18 +1,22 @@
package org.apache.maven.repository.legacy; package org.apache.maven.repository.legacy;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -21,7 +25,6 @@
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.metadata.ArtifactMetadata;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.repository.ArtifactTransferListener;
import org.apache.maven.wagon.ResourceDoesNotExistException; import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException; import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.UnsupportedProtocolException; import org.apache.maven.wagon.UnsupportedProtocolException;
@ -41,26 +44,31 @@ Wagon getWagon( Repository repository )
// //
// Retriever // Retriever
// //
void getArtifact( Artifact artifact, ArtifactRepository repository, TransferListener transferListener, boolean force ) void getArtifact( Artifact artifact, ArtifactRepository repository, TransferListener transferListener, boolean force )
throws TransferFailedException, ResourceDoesNotExistException; throws TransferFailedException, ResourceDoesNotExistException;
void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepositories, TransferListener transferListener, boolean force ) void getArtifact( Artifact artifact, List<ArtifactRepository> remoteRepositories,
TransferListener transferListener, boolean force )
throws TransferFailedException, ResourceDoesNotExistException; throws TransferFailedException, ResourceDoesNotExistException;
void getRemoteFile( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor, String checksumPolicy, boolean force ) void getRemoteFile( ArtifactRepository repository, File destination, String remotePath,
TransferListener downloadMonitor, String checksumPolicy, boolean force )
throws TransferFailedException, ResourceDoesNotExistException; throws TransferFailedException, ResourceDoesNotExistException;
void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination, String checksumPolicy ) void getArtifactMetadata( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File destination,
String checksumPolicy )
throws TransferFailedException, ResourceDoesNotExistException; throws TransferFailedException, ResourceDoesNotExistException;
void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository remoteRepository, File file, String checksumPolicyWarn ) void getArtifactMetadataFromDeploymentRepository( ArtifactMetadata metadata, ArtifactRepository remoteRepository,
File file, String checksumPolicyWarn )
throws TransferFailedException, ResourceDoesNotExistException; throws TransferFailedException, ResourceDoesNotExistException;
// //
// Deployer // Deployer
// //
void putArtifact( File source, Artifact artifact, ArtifactRepository deploymentRepository, TransferListener downloadMonitor ) void putArtifact( File source, Artifact artifact, ArtifactRepository deploymentRepository,
TransferListener downloadMonitor )
throws TransferFailedException; throws TransferFailedException;
void putRemoteFile( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor ) void putRemoteFile( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor )

View File

@ -1,18 +1,22 @@
package org.apache.maven.repository.legacy.repository; package org.apache.maven.repository.legacy.repository;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.apache.maven.artifact.UnknownRepositoryLayoutException; import org.apache.maven.artifact.UnknownRepositoryLayoutException;
@ -36,12 +40,15 @@ ArtifactRepositoryLayout getLayout( String layoutId )
ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId, boolean uniqueVersion ) ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId, boolean uniqueVersion )
throws UnknownRepositoryLayoutException; throws UnknownRepositoryLayoutException;
ArtifactRepository createDeploymentArtifactRepository( String id, String url, ArtifactRepositoryLayout layout, boolean uniqueVersion ); ArtifactRepository createDeploymentArtifactRepository( String id, String url, ArtifactRepositoryLayout layout,
boolean uniqueVersion );
ArtifactRepository createArtifactRepository( String id, String url, String layoutId, ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases ) ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases )
throws UnknownRepositoryLayoutException; throws UnknownRepositoryLayoutException;
ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases ); ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy releases );
void setGlobalUpdatePolicy( String snapshotPolicy ); void setGlobalUpdatePolicy( String snapshotPolicy );

View File

@ -33,7 +33,7 @@
/** /**
* @author jdcasey * @author jdcasey
*/ */
@Component(role=ArtifactRepositoryFactory.class) @Component( role = ArtifactRepositoryFactory.class )
public class DefaultArtifactRepositoryFactory public class DefaultArtifactRepositoryFactory
implements ArtifactRepositoryFactory implements ArtifactRepositoryFactory
{ {
@ -42,7 +42,7 @@ public class DefaultArtifactRepositoryFactory
private String globalChecksumPolicy; private String globalChecksumPolicy;
@Requirement(role=ArtifactRepositoryLayout.class) @Requirement( role = ArtifactRepositoryLayout.class )
private Map<String,ArtifactRepositoryLayout> repositoryLayouts; private Map<String,ArtifactRepositoryLayout> repositoryLayouts;
public ArtifactRepositoryLayout getLayout( String layoutId ) public ArtifactRepositoryLayout getLayout( String layoutId )
@ -51,9 +51,7 @@ public ArtifactRepositoryLayout getLayout( String layoutId )
return repositoryLayouts.get( layoutId ); return repositoryLayouts.get( layoutId );
} }
public ArtifactRepository createDeploymentArtifactRepository( String id, public ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId,
String url,
String layoutId,
boolean uniqueVersion ) boolean uniqueVersion )
throws UnknownRepositoryLayoutException throws UnknownRepositoryLayoutException
{ {
@ -64,9 +62,7 @@ public ArtifactRepository createDeploymentArtifactRepository( String id,
return createDeploymentArtifactRepository( id, url, layout, uniqueVersion ); return createDeploymentArtifactRepository( id, url, layout, uniqueVersion );
} }
private void checkLayout( String repositoryId, private void checkLayout( String repositoryId, String layoutId, ArtifactRepositoryLayout layout )
String layoutId,
ArtifactRepositoryLayout layout )
throws UnknownRepositoryLayoutException throws UnknownRepositoryLayoutException
{ {
if ( layout == null ) if ( layout == null )
@ -75,17 +71,14 @@ private void checkLayout( String repositoryId,
} }
} }
public ArtifactRepository createDeploymentArtifactRepository( String id, public ArtifactRepository createDeploymentArtifactRepository( String id, String url,
String url,
ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryLayout repositoryLayout,
boolean uniqueVersion ) boolean uniqueVersion )
{ {
return createArtifactRepository( id, url, repositoryLayout, null, null ); return createArtifactRepository( id, url, repositoryLayout, null, null );
} }
public ArtifactRepository createArtifactRepository( String id, public ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
String url,
String layoutId,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy snapshots,
ArtifactRepositoryPolicy releases ) ArtifactRepositoryPolicy releases )
throws UnknownRepositoryLayoutException throws UnknownRepositoryLayoutException
@ -97,8 +90,7 @@ public ArtifactRepository createArtifactRepository( String id,
return createArtifactRepository( id, url, layout, snapshots, releases ); return createArtifactRepository( id, url, layout, snapshots, releases );
} }
public ArtifactRepository createArtifactRepository( String id, public ArtifactRepository createArtifactRepository( String id, String url,
String url,
ArtifactRepositoryLayout repositoryLayout, ArtifactRepositoryLayout repositoryLayout,
ArtifactRepositoryPolicy snapshots, ArtifactRepositoryPolicy snapshots,
ArtifactRepositoryPolicy releases ) ArtifactRepositoryPolicy releases )

View File

@ -59,7 +59,7 @@
* @author <a href="mailto:brett@apache.org">Brett Porter</a> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role=LegacyArtifactCollector.class) @Component( role = LegacyArtifactCollector.class )
public class DefaultLegacyArtifactCollector public class DefaultLegacyArtifactCollector
implements LegacyArtifactCollector implements LegacyArtifactCollector
{ {
@ -87,13 +87,10 @@ private void injectSession( ArtifactResolutionRequest request )
} }
} }
public ArtifactResolutionResult collect( Set<Artifact> artifacts, public ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact,
Artifact originatingArtifact, Map managedVersions, ArtifactRepository localRepository,
Map managedVersions,
ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories, List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source, ArtifactMetadataSource source, ArtifactFilter filter,
ArtifactFilter filter,
List<ResolutionListener> listeners, List<ResolutionListener> listeners,
List<ConflictResolver> conflictResolvers ) List<ConflictResolver> conflictResolvers )
{ {
@ -105,12 +102,9 @@ public ArtifactResolutionResult collect( Set<Artifact> artifacts,
conflictResolvers ); conflictResolvers );
} }
public ArtifactResolutionResult collect( Set<Artifact> artifacts, public ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact,
Artifact originatingArtifact, Map managedVersions, ArtifactResolutionRequest repositoryRequest,
Map managedVersions, ArtifactMetadataSource source, ArtifactFilter filter,
ArtifactResolutionRequest repositoryRequest,
ArtifactMetadataSource source,
ArtifactFilter filter,
List<ResolutionListener> listeners, List<ResolutionListener> listeners,
List<ConflictResolver> conflictResolvers ) List<ConflictResolver> conflictResolvers )
{ {
@ -148,7 +142,8 @@ public ArtifactResolutionResult collect( Set<Artifact> artifacts,
try try
{ {
recurse( result, root, resolvedArtifacts, versionMap, repositoryRequest, source, filter, listeners, conflictResolvers ); recurse( result, root, resolvedArtifacts, versionMap, repositoryRequest, source, filter, listeners,
conflictResolvers );
} }
catch ( CyclicDependencyException e ) catch ( CyclicDependencyException e )
{ {
@ -187,7 +182,7 @@ public ArtifactResolutionResult collect( Set<Artifact> artifacts,
artifact.setDependencyTrail( node.getDependencyTrail() ); artifact.setDependencyTrail( node.getDependencyTrail() );
set.add( node ); set.add( node );
// This is required right now. // This is required right now.
result.addArtifact( artifact ); result.addArtifact( artifact );
} }
@ -242,15 +237,10 @@ private ManagedVersionMap getManagedVersionsMap( Artifact originatingArtifact, M
return versionMap; return versionMap;
} }
private void recurse( ArtifactResolutionResult result, private void recurse( ArtifactResolutionResult result, ResolutionNode node,
ResolutionNode node, Map<Object, List<ResolutionNode>> resolvedArtifacts, ManagedVersionMap managedVersions,
Map<Object, List<ResolutionNode>> resolvedArtifacts, ArtifactResolutionRequest request, ArtifactMetadataSource source, ArtifactFilter filter,
ManagedVersionMap managedVersions, List<ResolutionListener> listeners, List<ConflictResolver> conflictResolvers )
ArtifactResolutionRequest request,
ArtifactMetadataSource source,
ArtifactFilter filter,
List<ResolutionListener> listeners,
List<ConflictResolver> conflictResolvers )
throws ArtifactResolutionException throws ArtifactResolutionException
{ {
fireEvent( ResolutionListener.TEST_ARTIFACT, listeners, node ); fireEvent( ResolutionListener.TEST_ARTIFACT, listeners, node );
@ -324,13 +314,17 @@ private void recurse( ArtifactResolutionResult result,
catch ( ArtifactMetadataRetrievalException e ) catch ( ArtifactMetadataRetrievalException e )
{ {
resetArtifact.setDependencyTrail( node.getDependencyTrail() ); resetArtifact.setDependencyTrail( node.getDependencyTrail() );
throw new ArtifactResolutionException( "Unable to get dependency information: " + e.getMessage(), resetArtifact, request.getRemoteRepositories(), e ); throw new ArtifactResolutionException(
"Unable to get dependency information: "
+ e.getMessage(), resetArtifact,
request.getRemoteRepositories(), e );
} }
} }
// end hack // end hack
// MNG-2861: match version can return null // MNG-2861: match version can return null
ArtifactVersion selectedVersion = resetArtifact.getVersionRange().matchVersion( resetArtifact.getAvailableVersions() ); ArtifactVersion selectedVersion =
resetArtifact.getVersionRange().matchVersion( resetArtifact.getAvailableVersions() );
if ( selectedVersion != null ) if ( selectedVersion != null )
{ {
resetArtifact.selectVersion( selectedVersion.toString() ); resetArtifact.selectVersion( selectedVersion.toString() );
@ -359,15 +353,19 @@ private void recurse( ArtifactResolutionResult result,
if ( resolved == null ) if ( resolved == null )
{ {
// TODO: add better exception that can detail the two conflicting artifacts // TODO: add better exception that can detail the two conflicting artifacts
ArtifactResolutionException are = new ArtifactResolutionException( "Cannot resolve artifact version conflict between " + previous.getArtifact().getVersion() ArtifactResolutionException are =
+ " and " + node.getArtifact().getVersion(), previous.getArtifact() ); new ArtifactResolutionException( "Cannot resolve artifact version conflict between "
+ previous.getArtifact().getVersion() + " and " + node.getArtifact().getVersion(),
previous.getArtifact() );
result.addVersionRangeViolation( are ); result.addVersionRangeViolation( are );
} }
if ( ( resolved != previous ) && ( resolved != node ) ) if ( ( resolved != previous ) && ( resolved != node ) )
{ {
// TODO: add better exception // TODO: add better exception
result.addVersionRangeViolation( new ArtifactResolutionException( "Conflict resolver returned unknown resolution node: ", resolved.getArtifact() ) ); result.addVersionRangeViolation( new ArtifactResolutionException(
"Conflict resolver returned unknown resolution node: ",
resolved.getArtifact() ) );
} }
// TODO: should this be part of mediation? // TODO: should this be part of mediation?
@ -513,8 +511,9 @@ private void recurse( ArtifactResolutionResult result,
{ {
throw new OverConstrainedVersionException( throw new OverConstrainedVersionException(
"No versions are present in the repository for the artifact with a range " "No versions are present in the repository for the artifact with a range "
+ versionRange, artifact, + versionRange,
childRemoteRepositories ); artifact,
childRemoteRepositories );
} }
throw new OverConstrainedVersionException( "Couldn't find a version in " throw new OverConstrainedVersionException( "Couldn't find a version in "
@ -543,7 +542,7 @@ private void recurse( ArtifactResolutionResult result,
if ( parentArtifact != null && parentArtifact.getDependencyFilter() != null if ( parentArtifact != null && parentArtifact.getDependencyFilter() != null
&& !parentArtifact.getDependencyFilter().include( artifact ) ) && !parentArtifact.getDependencyFilter().include( artifact ) )
{ {
// MNG-3769: the [probably relocated] artifact is excluded. // MNG-3769: the [probably relocated] artifact is excluded.
// We could process exclusions on relocated artifact details in the // We could process exclusions on relocated artifact details in the
// MavenMetadataSource.createArtifacts(..) step, BUT that would // MavenMetadataSource.createArtifacts(..) step, BUT that would
// require resolving the POM from the repository very early on in // require resolving the POM from the repository very early on in
@ -601,7 +600,8 @@ private void recurse( ArtifactResolutionResult result,
} }
} }
private void manageArtifact( ResolutionNode node, ManagedVersionMap managedVersions, List<ResolutionListener> listeners ) private void manageArtifact( ResolutionNode node, ManagedVersionMap managedVersions,
List<ResolutionListener> listeners )
{ {
Artifact artifact = (Artifact) managedVersions.get( node.getKey() ); Artifact artifact = (Artifact) managedVersions.get( node.getKey() );
@ -649,7 +649,8 @@ boolean checkScopeUpdate( ResolutionNode farthest, ResolutionNode nearest, List<
/* farthest is runtime and nearest has lower priority, change to runtime */ /* farthest is runtime and nearest has lower priority, change to runtime */
if ( Artifact.SCOPE_RUNTIME.equals( farthestArtifact.getScope() ) if ( Artifact.SCOPE_RUNTIME.equals( farthestArtifact.getScope() )
&& ( Artifact.SCOPE_TEST.equals( nearestArtifact.getScope() ) || Artifact.SCOPE_PROVIDED.equals( nearestArtifact.getScope() ) ) ) && ( Artifact.SCOPE_TEST.equals( nearestArtifact.getScope() )
|| Artifact.SCOPE_PROVIDED.equals( nearestArtifact.getScope() ) ) )
{ {
updateScope = true; updateScope = true;
} }

View File

@ -26,7 +26,6 @@
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.RepositoryRequest;
import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
import org.apache.maven.artifact.resolver.ArtifactResolutionResult; import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
import org.apache.maven.artifact.resolver.ResolutionListener; import org.apache.maven.artifact.resolver.ResolutionListener;
@ -44,24 +43,15 @@
public interface LegacyArtifactCollector public interface LegacyArtifactCollector
{ {
ArtifactResolutionResult collect( Set<Artifact> artifacts, ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions,
Artifact originatingArtifact, ArtifactResolutionRequest repositoryRequest, ArtifactMetadataSource source,
Map managedVersions, ArtifactFilter filter, List<ResolutionListener> listeners,
ArtifactResolutionRequest repositoryRequest,
ArtifactMetadataSource source,
ArtifactFilter filter,
List<ResolutionListener> listeners,
List<ConflictResolver> conflictResolvers ); List<ConflictResolver> conflictResolvers );
ArtifactResolutionResult collect( Set<Artifact> artifacts, ArtifactResolutionResult collect( Set<Artifact> artifacts, Artifact originatingArtifact, Map managedVersions,
Artifact originatingArtifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
Map managedVersions, ArtifactMetadataSource source, ArtifactFilter filter,
ArtifactRepository localRepository, List<ResolutionListener> listeners, List<ConflictResolver> conflictResolvers );
List<ArtifactRepository> remoteRepositories,
ArtifactMetadataSource source,
ArtifactFilter filter,
List<ResolutionListener> listeners,
List<ConflictResolver> conflictResolvers );
// used by maven-dependency-tree and maven-dependency-plugin // used by maven-dependency-tree and maven-dependency-plugin
@Deprecated @Deprecated

View File

@ -30,7 +30,7 @@
*/ */
public interface ConflictResolver public interface ConflictResolver
{ {
static String ROLE = ConflictResolver.class.getName(); String ROLE = ConflictResolver.class.getName();
/** /**
* Determines which of the specified versions of an artifact to use when there are conflicting declarations. * Determines which of the specified versions of an artifact to use when there are conflicting declarations.
@ -41,6 +41,5 @@ public interface ConflictResolver
* this conflict cannot be resolved * this conflict cannot be resolved
* @since 3.0 * @since 3.0
*/ */
ResolutionNode resolveConflict( ResolutionNode node1, ResolutionNode resolveConflict( ResolutionNode node1, ResolutionNode node2 );
ResolutionNode node2 );
} }

View File

@ -1,7 +1,5 @@
package org.apache.maven.repository.legacy.resolver.conflict; package org.apache.maven.repository.legacy.resolver.conflict;
import org.codehaus.plexus.component.annotations.Component;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file * or more contributor license agreements. See the NOTICE file
@ -21,6 +19,8 @@
* under the License. * under the License.
*/ */
import org.codehaus.plexus.component.annotations.Component;
/** /**
* The default conflict resolver that delegates to the nearest strategy. * The default conflict resolver that delegates to the nearest strategy.
* *
@ -30,7 +30,7 @@
* @deprecated As of 3.0, use a specific implementation instead, e.g. {@link NearestConflictResolver} * @deprecated As of 3.0, use a specific implementation instead, e.g. {@link NearestConflictResolver}
*/ */
@Deprecated @Deprecated
@Component(role=ConflictResolver.class) @Component( role = ConflictResolver.class )
public class DefaultConflictResolver public class DefaultConflictResolver
extends NearestConflictResolver extends NearestConflictResolver
{ {

View File

@ -36,17 +36,16 @@
* @todo you don't need the container in here with the active maps (jvz). * @todo you don't need the container in here with the active maps (jvz).
* @since 3.0 * @since 3.0
*/ */
@Component(role=ConflictResolverFactory.class) @Component( role = ConflictResolverFactory.class )
public class DefaultConflictResolverFactory public class DefaultConflictResolverFactory
implements ConflictResolverFactory, implements ConflictResolverFactory, Contextualizable
Contextualizable
{ {
// fields ----------------------------------------------------------------- // fields -----------------------------------------------------------------
/** /**
* The plexus container used to obtain instances from. * The plexus container used to obtain instances from.
*/ */
@Requirement @Requirement
private PlexusContainer container; private PlexusContainer container;
// ConflictResolverFactory methods ---------------------------------------- // ConflictResolverFactory methods ----------------------------------------

View File

@ -30,7 +30,7 @@
* @version $Id$ * @version $Id$
* @since 3.0 * @since 3.0
*/ */
@Component(role=ConflictResolver.class, hint="farthest") @Component( role = ConflictResolver.class, hint = "farthest" )
public class FarthestConflictResolver public class FarthestConflictResolver
implements ConflictResolver implements ConflictResolver
{ {
@ -41,8 +41,7 @@ public class FarthestConflictResolver
* org.apache.maven.artifact.resolver.ResolutionNode) * org.apache.maven.artifact.resolver.ResolutionNode)
*/ */
public ResolutionNode resolveConflict( ResolutionNode node1, public ResolutionNode resolveConflict( ResolutionNode node1, ResolutionNode node2 )
ResolutionNode node2 )
{ {
return node1.getDepth() >= node2.getDepth() ? node1 : node2; return node1.getDepth() >= node2.getDepth() ? node1 : node2;
} }

View File

@ -31,7 +31,7 @@
* @version $Id$ * @version $Id$
* @since 3.0 * @since 3.0
*/ */
@Component(role=ConflictResolver.class, hint="nearest") @Component( role = ConflictResolver.class, hint = "nearest" )
public class NearestConflictResolver public class NearestConflictResolver
implements ConflictResolver implements ConflictResolver
{ {
@ -42,8 +42,7 @@ public class NearestConflictResolver
* org.apache.maven.artifact.resolver.ResolutionNode) * org.apache.maven.artifact.resolver.ResolutionNode)
*/ */
public ResolutionNode resolveConflict( ResolutionNode node1, public ResolutionNode resolveConflict( ResolutionNode node1, ResolutionNode node2 )
ResolutionNode node2 )
{ {
return node1.getDepth() <= node2.getDepth() ? node1 : node2; return node1.getDepth() <= node2.getDepth() ? node1 : node2;
} }

View File

@ -33,7 +33,7 @@
* @see ArtifactVersion#compareTo(Object) * @see ArtifactVersion#compareTo(Object)
* @since 3.0 * @since 3.0
*/ */
@Component(role=ConflictResolver.class, hint="newest") @Component( role = ConflictResolver.class, hint = "newest" )
public class NewestConflictResolver public class NewestConflictResolver
implements ConflictResolver implements ConflictResolver
{ {
@ -44,8 +44,7 @@ public class NewestConflictResolver
* org.apache.maven.artifact.resolver.ResolutionNode) * org.apache.maven.artifact.resolver.ResolutionNode)
*/ */
public ResolutionNode resolveConflict( ResolutionNode node1, public ResolutionNode resolveConflict( ResolutionNode node1, ResolutionNode node2 )
ResolutionNode node2 )
{ {
try try
{ {

View File

@ -33,7 +33,7 @@
* @see ArtifactVersion#compareTo(Object) * @see ArtifactVersion#compareTo(Object)
* @since 3.0 * @since 3.0
*/ */
@Component(role=ConflictResolver.class, hint="oldest") @Component( role = ConflictResolver.class, hint = "oldest" )
public class OldestConflictResolver public class OldestConflictResolver
implements ConflictResolver implements ConflictResolver
{ {
@ -44,8 +44,7 @@ public class OldestConflictResolver
* org.apache.maven.artifact.resolver.ResolutionNode) * org.apache.maven.artifact.resolver.ResolutionNode)
*/ */
public ResolutionNode resolveConflict( ResolutionNode node1, public ResolutionNode resolveConflict( ResolutionNode node1, ResolutionNode node2 )
ResolutionNode node2 )
{ {
try try
{ {

View File

@ -36,7 +36,7 @@ public interface ArtifactTransformationManager
/** /**
* Take in a artifact and return the transformed artifact for locating in the remote repository. If no * Take in a artifact and return the transformed artifact for locating in the remote repository. If no
* transformation has occured the original artifact is returned. * transformation has occurred the original artifact is returned.
* *
* @param artifact Artifact to be transformed. * @param artifact Artifact to be transformed.
* @param request the repositories to check * @param request the repositories to check
@ -47,18 +47,19 @@ void transformForResolve( Artifact artifact, RepositoryRequest request )
/** /**
* Take in a artifact and return the transformed artifact for locating in the remote repository. If no * Take in a artifact and return the transformed artifact for locating in the remote repository. If no
* transformation has occured the original artifact is returned. * transformation has occurred the original artifact is returned.
* *
* @param artifact Artifact to be transformed. * @param artifact Artifact to be transformed.
* @param remoteRepositories the repositories to check * @param remoteRepositories the repositories to check
* @param localRepository the local repository * @param localRepository the local repository
*/ */
void transformForResolve( Artifact artifact, List<ArtifactRepository> remoteRepositories, ArtifactRepository localRepository ) void transformForResolve( Artifact artifact, List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException; throws ArtifactResolutionException, ArtifactNotFoundException;
/** /**
* Take in a artifact and return the transformed artifact for locating in the local repository. If no * Take in a artifact and return the transformed artifact for locating in the local repository. If no
* transformation has occured the original artifact is returned. * transformation has occurred the original artifact is returned.
* *
* @param artifact Artifact to be transformed. * @param artifact Artifact to be transformed.
* @param localRepository the local repository it will be stored in * @param localRepository the local repository it will be stored in
@ -67,14 +68,15 @@ void transformForInstall( Artifact artifact, ArtifactRepository localRepository
throws ArtifactInstallationException; throws ArtifactInstallationException;
/** /**
* Take in a artifact and return the transformed artifact for distributing toa remote repository. If no * Take in a artifact and return the transformed artifact for distributing to a remote repository. If no
* transformation has occured the original artifact is returned. * transformation has occurred the original artifact is returned.
* *
* @param artifact Artifact to be transformed. * @param artifact Artifact to be transformed.
* @param remoteRepository the repository to deploy to * @param remoteRepository the repository to deploy to
* @param localRepository the local repository the metadata is stored in * @param localRepository the local repository the metadata is stored in
*/ */
void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository, ArtifactRepository localRepository ) void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
ArtifactRepository localRepository )
throws ArtifactDeploymentException; throws ArtifactDeploymentException;
List getArtifactTransformations(); List getArtifactTransformations();

View File

@ -34,11 +34,11 @@
/** /**
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role=ArtifactTransformationManager.class) @Component( role = ArtifactTransformationManager.class )
public class DefaultArtifactTransformationManager public class DefaultArtifactTransformationManager
implements ArtifactTransformationManager implements ArtifactTransformationManager
{ {
@Requirement(role=ArtifactTransformation.class, hints={"release", "latest", "snapshot"}) @Requirement( role = ArtifactTransformation.class, hints = { "release", "latest", "snapshot" } )
private List<ArtifactTransformation> artifactTransformations; private List<ArtifactTransformation> artifactTransformations;
public void transformForResolve( Artifact artifact, RepositoryRequest request ) public void transformForResolve( Artifact artifact, RepositoryRequest request )
@ -50,8 +50,7 @@ public void transformForResolve( Artifact artifact, RepositoryRequest request )
} }
} }
public void transformForResolve( Artifact artifact, public void transformForResolve( Artifact artifact, List<ArtifactRepository> remoteRepositories,
List<ArtifactRepository> remoteRepositories,
ArtifactRepository localRepository ) ArtifactRepository localRepository )
throws ArtifactResolutionException, ArtifactNotFoundException throws ArtifactResolutionException, ArtifactNotFoundException
{ {
@ -61,8 +60,7 @@ public void transformForResolve( Artifact artifact,
} }
} }
public void transformForInstall( Artifact artifact, public void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
ArtifactRepository localRepository )
throws ArtifactInstallationException throws ArtifactInstallationException
{ {
for ( ArtifactTransformation transform : artifactTransformations ) for ( ArtifactTransformation transform : artifactTransformations )
@ -71,8 +69,7 @@ public void transformForInstall( Artifact artifact,
} }
} }
public void transformForDeployment( Artifact artifact, public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
ArtifactRepository remoteRepository,
ArtifactRepository localRepository ) ArtifactRepository localRepository )
throws ArtifactDeploymentException throws ArtifactDeploymentException
{ {

View File

@ -28,7 +28,7 @@
import org.apache.maven.artifact.resolver.ArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Component;
@Component(role=ArtifactTransformation.class, hint="latest") @Component( role = ArtifactTransformation.class, hint = "latest" )
public class LatestArtifactTransformation public class LatestArtifactTransformation
extends AbstractVersionTransformation extends AbstractVersionTransformation
{ {
@ -56,21 +56,18 @@ public void transformForResolve( Artifact artifact, RepositoryRequest request )
} }
} }
public void transformForInstall( Artifact artifact, public void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
ArtifactRepository localRepository )
{ {
// metadata is added via addPluginArtifactMetadata // metadata is added via addPluginArtifactMetadata
} }
public void transformForDeployment( Artifact artifact, public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
ArtifactRepository remoteRepository,
ArtifactRepository localRepository ) ArtifactRepository localRepository )
{ {
// metadata is added via addPluginArtifactMetadata // metadata is added via addPluginArtifactMetadata
} }
protected String constructVersion( Versioning versioning, protected String constructVersion( Versioning versioning, String baseVersion )
String baseVersion )
{ {
return versioning.getLatest(); return versioning.getLatest();
} }

View File

@ -36,7 +36,7 @@
* @author <a href="mailto:brett@apache.org">Brett Porter</a> * @author <a href="mailto:brett@apache.org">Brett Porter</a>
* @version $Id$ * @version $Id$
*/ */
@Component(role=ArtifactTransformation.class, hint="release") @Component( role = ArtifactTransformation.class, hint = "release" )
public class ReleaseArtifactTransformation public class ReleaseArtifactTransformation
extends AbstractVersionTransformation extends AbstractVersionTransformation
{ {
@ -65,16 +65,14 @@ public void transformForResolve( Artifact artifact, RepositoryRequest request )
} }
} }
public void transformForInstall( Artifact artifact, public void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
ArtifactRepository localRepository )
{ {
ArtifactMetadata metadata = createMetadata( artifact ); ArtifactMetadata metadata = createMetadata( artifact );
artifact.addMetadata( metadata ); artifact.addMetadata( metadata );
} }
public void transformForDeployment( Artifact artifact, public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
ArtifactRepository remoteRepository,
ArtifactRepository localRepository ) ArtifactRepository localRepository )
{ {
ArtifactMetadata metadata = createMetadata( artifact ); ArtifactMetadata metadata = createMetadata( artifact );
@ -96,8 +94,7 @@ private ArtifactMetadata createMetadata( Artifact artifact )
return new ArtifactRepositoryMetadata( artifact, versioning ); return new ArtifactRepositoryMetadata( artifact, versioning );
} }
protected String constructVersion( Versioning versioning, protected String constructVersion( Versioning versioning, String baseVersion )
String baseVersion )
{ {
return versioning.getRelease(); return versioning.getRelease();
} }

View File

@ -43,7 +43,7 @@
* @author <a href="mailto:mmaczka@interia.pl">Michal Maczka</a> * @author <a href="mailto:mmaczka@interia.pl">Michal Maczka</a>
* @version $Id$ * @version $Id$
*/ */
@Component(role=ArtifactTransformation.class, hint="snapshot") @Component( role = ArtifactTransformation.class, hint = "snapshot" )
public class SnapshotTransformation public class SnapshotTransformation
extends AbstractVersionTransformation extends AbstractVersionTransformation
{ {
@ -71,8 +71,7 @@ public void transformForResolve( Artifact artifact, RepositoryRequest request )
} }
} }
public void transformForInstall( Artifact artifact, public void transformForInstall( Artifact artifact, ArtifactRepository localRepository )
ArtifactRepository localRepository )
{ {
if ( artifact.isSnapshot() ) if ( artifact.isSnapshot() )
{ {
@ -84,8 +83,7 @@ public void transformForInstall( Artifact artifact,
} }
} }
public void transformForDeployment( Artifact artifact, public void transformForDeployment( Artifact artifact, ArtifactRepository remoteRepository,
ArtifactRepository remoteRepository,
ArtifactRepository localRepository ) ArtifactRepository localRepository )
throws ArtifactDeploymentException throws ArtifactDeploymentException
{ {
@ -126,8 +124,7 @@ public String getDeploymentTimestamp()
return deploymentTimestamp; return deploymentTimestamp;
} }
protected String constructVersion( Versioning versioning, protected String constructVersion( Versioning versioning, String baseVersion )
String baseVersion )
{ {
String version = null; String version = null;
Snapshot snapshot = versioning.getSnapshot(); Snapshot snapshot = versioning.getSnapshot();
@ -146,8 +143,7 @@ protected String constructVersion( Versioning versioning,
return version; return version;
} }
private int resolveLatestSnapshotBuildNumber( Artifact artifact, private int resolveLatestSnapshotBuildNumber( Artifact artifact, ArtifactRepository localRepository,
ArtifactRepository localRepository,
ArtifactRepository remoteRepository ) ArtifactRepository remoteRepository )
throws RepositoryMetadataResolutionException throws RepositoryMetadataResolutionException
{ {

View File

@ -1,5 +1,24 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.Collection; import java.util.Collection;
import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
@ -7,15 +26,15 @@
/** /**
* Artifact Metadata that is resolved independent of Artifact itself. * Artifact Metadata that is resolved independent of Artifact itself.
* *
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
public class ArtifactMetadata public class ArtifactMetadata
{ {
/** /**
* standard glorified artifact coordinates * standard glorified artifact coordinates
*/ */
protected String groupId; protected String groupId;
protected String artifactId; protected String artifactId;
protected String version; protected String version;
@ -23,12 +42,12 @@ public class ArtifactMetadata
protected ArtifactScopeEnum artifactScope; protected ArtifactScopeEnum artifactScope;
protected String classifier; protected String classifier;
/** /**
* explanation: why this MD was chosen over it's siblings * explanation: why this MD was chosen over it's siblings
* in the resulting structure (classpath for now) * in the resulting structure (classpath for now)
*/ */
protected String why; protected String why;
/** dependencies of the artifact behind this metadata */ /** dependencies of the artifact behind this metadata */
protected Collection<ArtifactMetadata> dependencies; protected Collection<ArtifactMetadata> dependencies;
@ -37,7 +56,7 @@ public class ArtifactMetadata
/** is metadata found anywhere */ /** is metadata found anywhere */
protected boolean resolved = false; protected boolean resolved = false;
/** does the actual artifact for this metadata exists */ /** does the actual artifact for this metadata exists */
protected boolean artifactExists = false; protected boolean artifactExists = false;
/** artifact URI */ /** artifact URI */
@ -45,93 +64,69 @@ public class ArtifactMetadata
/** error message */ /** error message */
private String error; private String error;
//------------------------------------------------------------------ //------------------------------------------------------------------
/** /**
* *
*/ */
public ArtifactMetadata( String name ) public ArtifactMetadata( String name )
{ {
if( name == null ) if ( name == null )
return; {
int ind1 = name.indexOf(':'); return;
int ind2 = name.lastIndexOf(':'); }
int ind1 = name.indexOf( ':' );
if( ind1 == -1 || ind2 == -1 ) int ind2 = name.lastIndexOf( ':' );
return;
if ( ind1 == -1 || ind2 == -1 )
this.groupId = name.substring(0, ind1); {
if( ind1 == ind2 ) return;
{ }
this.artifactId = name.substring(ind1+1);
} this.groupId = name.substring( 0, ind1 );
else if ( ind1 == ind2 )
{ {
this.artifactId = name.substring( ind1+1, ind2 ); this.artifactId = name.substring( ind1 + 1 );
this.version = name.substring( ind2+1 ); }
} else
{
this.artifactId = name.substring( ind1 + 1, ind2 );
this.version = name.substring( ind2 + 1 );
}
} }
//------------------------------------------------------------------ // ------------------------------------------------------------------
public ArtifactMetadata( String groupId, public ArtifactMetadata( String groupId, String name, String version )
String name,
String version )
{ {
this( groupId, name, version, null ); this( groupId, name, version, null );
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public ArtifactMetadata( String groupId, public ArtifactMetadata( String groupId, String name, String version, String type )
String name,
String version,
String type )
{ {
this( groupId, name, version, type, null ); this( groupId, name, version, type, null );
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public ArtifactMetadata( String groupId, public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope )
String name,
String version,
String type,
ArtifactScopeEnum artifactScope )
{ {
this( groupId, name, version, type, artifactScope, null ); this( groupId, name, version, type, artifactScope, null );
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public ArtifactMetadata( String groupId, public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope,
String name,
String version,
String type,
ArtifactScopeEnum artifactScope,
String classifier ) String classifier )
{ {
this( groupId, name, version, type, artifactScope, classifier, null ); this( groupId, name, version, type, artifactScope, classifier, null );
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public ArtifactMetadata( String groupId, public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope,
String name, String classifier, String artifactUri )
String version,
String type,
ArtifactScopeEnum artifactScope,
String classifier
, String artifactUri
)
{ {
this( groupId, name, version, type, artifactScope, classifier, artifactUri, null, true, null ); this( groupId, name, version, type, artifactScope, classifier, artifactUri, null, true, null );
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public ArtifactMetadata( String groupId public ArtifactMetadata( String groupId, String name, String version, String type, ArtifactScopeEnum artifactScope,
, String name String classifier, String artifactUri, String why, boolean resolved, String error )
, String version
, String type
, ArtifactScopeEnum artifactScope
, String classifier
, String artifactUri
, String why
, boolean resolved
, String error
)
{ {
this.groupId = groupId; this.groupId = groupId;
this.artifactId = name; this.artifactId = name;
@ -145,29 +140,12 @@ public ArtifactMetadata( String groupId
this.error = error; this.error = error;
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public ArtifactMetadata( String groupId public ArtifactMetadata( String groupId, String name, String version, String type, String scopeString,
, String name String classifier, String artifactUri, String why, boolean resolved, String error )
, String version
, String type
, String scopeString
, String classifier
, String artifactUri
, String why
, boolean resolved
, String error
)
{ {
this( groupId this( groupId, name, version, type,
, name scopeString == null ? ArtifactScopeEnum.DEFAULT_SCOPE : ArtifactScopeEnum.valueOf( scopeString ),
, version classifier, artifactUri, why, resolved, error );
, type
, scopeString == null ? ArtifactScopeEnum.DEFAULT_SCOPE : ArtifactScopeEnum.valueOf(scopeString)
, classifier
, artifactUri
, why
, resolved
, error
);
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
@ -265,10 +243,7 @@ public void setArtifactScope( ArtifactScopeEnum artifactScope )
public void setScope( String scope ) public void setScope( String scope )
{ {
this.artifactScope = scope == null this.artifactScope = scope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : ArtifactScopeEnum.valueOf( scope );
? ArtifactScopeEnum.DEFAULT_SCOPE
: ArtifactScopeEnum.valueOf( scope )
;
} }
public String getClassifier() public String getClassifier()
@ -310,62 +285,62 @@ public ArtifactScopeEnum getScopeAsEnum()
{ {
return artifactScope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : artifactScope; return artifactScope == null ? ArtifactScopeEnum.DEFAULT_SCOPE : artifactScope;
} }
public boolean isArtifactExists() public boolean isArtifactExists()
{ {
return artifactExists; return artifactExists;
} }
public void setArtifactExists(boolean artifactExists)
{
this.artifactExists = artifactExists;
}
public void setArtifactExists(boolean artifactExists)
{
this.artifactExists = artifactExists;
}
public Collection<ArtifactMetadata> getDependencies() public Collection<ArtifactMetadata> getDependencies()
{ {
return dependencies; return dependencies;
} }
public void setDependencies(Collection<ArtifactMetadata> dependencies) public void setDependencies(Collection<ArtifactMetadata> dependencies)
{ {
this.dependencies = dependencies; this.dependencies = dependencies;
} }
public String getArtifactUri() public String getArtifactUri()
{ {
return artifactUri; return artifactUri;
} }
public void setArtifactUri(String artifactUri)
{
this.artifactUri = artifactUri;
}
public void setArtifactUri(String artifactUri)
{
this.artifactUri = artifactUri;
}
public String getWhy() public String getWhy()
{ {
return why; return why;
} }
public void setWhy(String why) public void setWhy(String why)
{ {
this.why = why; this.why = why;
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
public String getError() public String getError()
{ {
return error; return error;
} }
public void setError(String error) public void setError(String error)
{ {
this.error = error; this.error = error;
} }
public boolean isError() public boolean isError()
{ {
return error == null; return error == null;
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public String getDependencyConflictId() public String getDependencyConflictId()
{ {
return groupId + ":" + artifactId; return groupId + ":" + artifactId;
} }

View File

@ -34,7 +34,7 @@
public class ClasspathContainer public class ClasspathContainer
implements Iterable<ArtifactMetadata> implements Iterable<ArtifactMetadata>
{ {
private List<ArtifactMetadata> classpath; private List<ArtifactMetadata> classpath;
private ArtifactScopeEnum scope; private ArtifactScopeEnum scope;

View File

@ -1,11 +1,29 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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 org.apache.maven.artifact.ArtifactScopeEnum; import org.apache.maven.artifact.ArtifactScopeEnum;
/** /**
* Helper class to conver an Md Graph into some form of a classpath * Helper class to conver an Md Graph into some form of a classpath
* *
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
@ -16,15 +34,13 @@ public interface ClasspathTransformation
/** /**
* Transform Graph into a Collection of metadata objects that * Transform Graph into a Collection of metadata objects that
* could serve as a classpath for a particular scope * could serve as a classpath for a particular scope
* *
* @param dirtyGraph - dependency graph * @param dirtyGraph - dependency graph
* @param scope - which classpath to extract * @param scope - which classpath to extract
* @param resolve - whether to resolve artifacts. * @param resolve - whether to resolve artifacts.
* @return Collection of metadata objects in the linked subgraph of the graph which * @return Collection of metadata objects in the linked subgraph of the graph which
* contains the graph.getEntry() vertice * contains the graph.getEntry() vertice
*/ */
ClasspathContainer transform( MetadataGraph dirtyGraph, ClasspathContainer transform( MetadataGraph dirtyGraph, ArtifactScopeEnum scope, boolean resolve )
ArtifactScopeEnum scope, throws MetadataGraphTransformationException;
boolean resolve)
throws MetadataGraphTransformationException;
} }

View File

@ -34,9 +34,9 @@
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
@Component(role=ClasspathTransformation.class) @Component( role = ClasspathTransformation.class )
public class DefaultClasspathTransformation public class DefaultClasspathTransformation
implements ClasspathTransformation implements ClasspathTransformation
{ {
@Requirement @Requirement
GraphConflictResolver conflictResolver; GraphConflictResolver conflictResolver;
@ -136,7 +136,7 @@ protected void visit( MetadataGraphVertex node ) // , String version, String art
// } // }
// ); // );
List<MetadataGraphEdge> exits = graph.getExcidentEdges(node); List<MetadataGraphEdge> exits = graph.getExcidentEdges( node );
if ( exits != null && exits.size() > 0 ) if ( exits != null && exits.size() > 0 )
{ {

View File

@ -29,20 +29,20 @@
* *
* @version $Id$ * @version $Id$
*/ */
@Component(role=GraphConflictResolutionPolicy.class) @Component( role = GraphConflictResolutionPolicy.class )
public class DefaultGraphConflictResolutionPolicy public class DefaultGraphConflictResolutionPolicy
implements GraphConflictResolutionPolicy implements GraphConflictResolutionPolicy
{ {
/** /**
* artifact, closer to the entry point, is selected * artifact, closer to the entry point, is selected
*/ */
@Configuration(name="closer-first", value="true") @Configuration( name = "closer-first", value = "true" )
private boolean closerFirst = true; private boolean closerFirst = true;
/** /**
* newer artifact is selected * newer artifact is selected
*/ */
@Configuration(name="newer-first", value="true") @Configuration( name = "newer-first", value = "true" )
private boolean newerFirst = true; private boolean newerFirst = true;
public MetadataGraphEdge apply( MetadataGraphEdge e1, MetadataGraphEdge e2 ) public MetadataGraphEdge apply( MetadataGraphEdge e1, MetadataGraphEdge e2 )

View File

@ -29,18 +29,18 @@
/** /**
* Default conflict resolver.Implements closer newer first policy by default, but could be configured via plexus * Default conflict resolver.Implements closer newer first policy by default, but could be configured via plexus
* *
* @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
* @version $Id$ * @version $Id$
*/ */
@Component(role=GraphConflictResolver.class) @Component( role = GraphConflictResolver.class )
public class DefaultGraphConflictResolver public class DefaultGraphConflictResolver
implements GraphConflictResolver implements GraphConflictResolver
{ {
/** /**
* artifact, closer to the entry point, is selected * artifact, closer to the entry point, is selected
*/ */
@Requirement(role=GraphConflictResolutionPolicy.class) @Requirement( role = GraphConflictResolutionPolicy.class )
protected GraphConflictResolutionPolicy policy; protected GraphConflictResolutionPolicy policy;
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
@ -49,20 +49,30 @@ public MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum sc
throws GraphConflictResolutionException throws GraphConflictResolutionException
{ {
if ( policy == null ) if ( policy == null )
{
throw new GraphConflictResolutionException( "no GraphConflictResolutionPolicy injected" ); throw new GraphConflictResolutionException( "no GraphConflictResolutionPolicy injected" );
}
if ( graph == null ) if ( graph == null )
{
return null; return null;
}
final MetadataGraphVertex entry = graph.getEntry(); final MetadataGraphVertex entry = graph.getEntry();
if ( entry == null ) if ( entry == null )
{
return null; return null;
}
if ( graph.isEmpty() ) if ( graph.isEmpty() )
{
throw new GraphConflictResolutionException( "graph with an entry, but not vertices do not exist" ); throw new GraphConflictResolutionException( "graph with an entry, but not vertices do not exist" );
}
if ( graph.isEmptyEdges() ) if ( graph.isEmptyEdges() )
{
return null; // no edges - nothing to worry about return null; // no edges - nothing to worry about
}
final TreeSet<MetadataGraphVertex> vertices = graph.getVertices(); final TreeSet<MetadataGraphVertex> vertices = graph.getVertices();
@ -70,7 +80,9 @@ public MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum sc
{ {
// edge case - single vertex graph // edge case - single vertex graph
if ( vertices.size() == 1 ) if ( vertices.size() == 1 )
{
return new MetadataGraph( entry ); return new MetadataGraph( entry );
}
final ArtifactScopeEnum requestedScope = ArtifactScopeEnum.checkScope( scope ); final ArtifactScopeEnum requestedScope = ArtifactScopeEnum.checkScope( scope );
@ -138,7 +150,9 @@ public MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum sc
private MetadataGraph findLinkedSubgraph( MetadataGraph g ) private MetadataGraph findLinkedSubgraph( MetadataGraph g )
{ {
if ( g.getVertices().size() == 1 ) if ( g.getVertices().size() == 1 )
{
return g; return g;
}
List<MetadataGraphVertex> visited = new ArrayList<MetadataGraphVertex>( g.getVertices().size() ); List<MetadataGraphVertex> visited = new ArrayList<MetadataGraphVertex>( g.getVertices().size() );
visit( g.getEntry(), visited, g ); visit( g.getEntry(), visited, g );
@ -149,11 +163,15 @@ private MetadataGraph findLinkedSubgraph( MetadataGraph g )
for ( MetadataGraphVertex v : g.getVertices() ) for ( MetadataGraphVertex v : g.getVertices() )
{ {
if ( !visited.contains( v ) ) if ( !visited.contains( v ) )
{
dropList.add( v ); dropList.add( v );
}
} }
if ( dropList.size() < 1 ) if ( dropList.size() < 1 )
{
return g; return g;
}
// now - drop vertices // now - drop vertices
TreeSet<MetadataGraphVertex> vertices = g.getVertices(); TreeSet<MetadataGraphVertex> vertices = g.getVertices();
@ -169,7 +187,9 @@ private MetadataGraph findLinkedSubgraph( MetadataGraph g )
private void visit( MetadataGraphVertex from, List<MetadataGraphVertex> visited, MetadataGraph graph ) private void visit( MetadataGraphVertex from, List<MetadataGraphVertex> visited, MetadataGraph graph )
{ {
if ( visited.contains( from ) ) if ( visited.contains( from ) )
{
return; return;
}
visited.add( from ); visited.add( from );
@ -185,16 +205,21 @@ private void visit( MetadataGraphVertex from, List<MetadataGraphVertex> visited,
} }
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
private MetadataGraphEdge cleanEdges( MetadataGraphVertex v, List<MetadataGraphEdge> edges, ArtifactScopeEnum scope ) private MetadataGraphEdge cleanEdges( MetadataGraphVertex v, List<MetadataGraphEdge> edges,
ArtifactScopeEnum scope )
{ {
if ( edges == null || edges.isEmpty() ) if ( edges == null || edges.isEmpty() )
{
return null; return null;
}
if ( edges.size() == 1 ) if ( edges.size() == 1 )
{ {
MetadataGraphEdge e = edges.get( 0 ); MetadataGraphEdge e = edges.get( 0 );
if ( scope.encloses( e.getScope() ) ) if ( scope.encloses( e.getScope() ) )
{
return e; return e;
}
return null; return null;
} }
@ -204,12 +229,18 @@ private MetadataGraphEdge cleanEdges( MetadataGraphVertex v, List<MetadataGraphE
for ( MetadataGraphEdge e : edges ) for ( MetadataGraphEdge e : edges )
{ {
if ( !scope.encloses( e.getScope() ) ) if ( !scope.encloses( e.getScope() ) )
{
continue; continue;
}
if ( res == null ) if ( res == null )
{
res = e; res = e;
}
else else
{
res = policy.apply( e, res ); res = policy.apply( e, res );
}
} }
return res; return res;

View File

@ -1,34 +1,52 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/** /*
* * Licensed to the Apache Software Foundation (ASF) under one
* @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a> * or more contributor license agreements. See the NOTICE file
* * distributed with this work for additional information
* @version $Id$ * 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.
*/ */
/**
*
* @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
*
* @version $Id$
*/
public class GraphConflictResolutionException public class GraphConflictResolutionException
extends Exception extends Exception
{ {
private static final long serialVersionUID = 2677613140287940255L; private static final long serialVersionUID = 2677613140287940255L;
public GraphConflictResolutionException() public GraphConflictResolutionException()
{ {
} }
public GraphConflictResolutionException(String message) public GraphConflictResolutionException( String message )
{ {
super(message); super( message );
} }
public GraphConflictResolutionException(Throwable cause) public GraphConflictResolutionException( Throwable cause )
{ {
super(cause); super( cause );
} }
public GraphConflictResolutionException(String message, Throwable cause) public GraphConflictResolutionException( String message, Throwable cause )
{ {
super(message, cause); super( message, cause );
} }
} }

View File

@ -1,21 +1,36 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.
*/
/** /**
* MetadataGraph edge selection policy. Complements * MetadataGraph edge selection policy. Complements
* GraphConflictResolver by being injected into it * GraphConflictResolver by being injected into it
* *
* @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
* *
* @version $Id$ * @version $Id$
*/ */
public interface GraphConflictResolutionPolicy public interface GraphConflictResolutionPolicy
{ {
static String ROLE = GraphConflictResolutionPolicy.class.getName(); String ROLE = GraphConflictResolutionPolicy.class.getName();
public MetadataGraphEdge apply( MetadataGraphEdge apply( MetadataGraphEdge e1, MetadataGraphEdge e2 );
MetadataGraphEdge e1
, MetadataGraphEdge e2
);
} }

View File

@ -22,7 +22,7 @@
import org.apache.maven.artifact.ArtifactScopeEnum; import org.apache.maven.artifact.ArtifactScopeEnum;
/** /**
* Resolves conflicts in the supplied dependency graph. * Resolves conflicts in the supplied dependency graph.
* Different implementations will implement different conflict resolution policies. * Different implementations will implement different conflict resolution policies.
* *
* @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="mailto:oleg@codehaus.org">Oleg Gusakov</a>
@ -30,20 +30,20 @@
*/ */
public interface GraphConflictResolver public interface GraphConflictResolver
{ {
static String ROLE = GraphConflictResolver.class.getName(); String ROLE = GraphConflictResolver.class.getName();
/** /**
* Cleanses the supplied graph by leaving only one directed versioned edge\ * Cleanses the supplied graph by leaving only one directed versioned edge\
* between any two nodes, if multiple exists. Uses scope relationships, defined * between any two nodes, if multiple exists. Uses scope relationships, defined
* in <code>ArtifactScopeEnum</code> * in <code>ArtifactScopeEnum</code>
* *
* @param graph the "dirty" graph to be simplified via conflict resolution * @param graph the "dirty" graph to be simplified via conflict resolution
* @param scope scope for which the graph should be resolved * @param scope scope for which the graph should be resolved
* *
* @return resulting "clean" graph for the specified scope * @return resulting "clean" graph for the specified scope
* *
* @since 3.0 * @since 3.0
*/ */
MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum scope ) MetadataGraph resolveConflicts( MetadataGraph graph, ArtifactScopeEnum scope )
throws GraphConflictResolutionException; throws GraphConflictResolutionException;
} }

View File

@ -33,7 +33,6 @@
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
public class MetadataGraph public class MetadataGraph
{ {
public static final int DEFAULT_VERTICES = 32; public static final int DEFAULT_VERTICES = 32;
@ -79,7 +78,7 @@ public MetadataGraph( int nVertices, int nEdges )
* construct a single vertex * construct a single vertex
*/ */
public MetadataGraph( MetadataGraphVertex entry ) public MetadataGraph( MetadataGraphVertex entry )
throws MetadataResolutionException throws MetadataResolutionException
{ {
checkVertex( entry ); checkVertex( entry );
checkVertices( 1 ); checkVertices( 1 );
@ -95,7 +94,7 @@ public MetadataGraph( MetadataGraphVertex entry )
* construct graph from a "dirty" tree * construct graph from a "dirty" tree
*/ */
public MetadataGraph( MetadataTreeNode tree ) public MetadataGraph( MetadataTreeNode tree )
throws MetadataResolutionException throws MetadataResolutionException
{ {
this( tree, false, false ); this( tree, false, false );
} }
@ -109,7 +108,7 @@ public MetadataGraph( MetadataTreeNode tree )
* *
*/ */
public MetadataGraph( MetadataTreeNode tree, boolean versionedVertices, boolean scopedVertices ) public MetadataGraph( MetadataTreeNode tree, boolean versionedVertices, boolean scopedVertices )
throws MetadataResolutionException throws MetadataResolutionException
{ {
if ( tree == null ) if ( tree == null )
{ {
@ -129,12 +128,8 @@ public MetadataGraph( MetadataTreeNode tree, boolean versionedVertices, boolean
processTreeNodes( null, tree, 0, 0 ); processTreeNodes( null, tree, 0, 0 );
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
private void processTreeNodes( MetadataGraphVertex parentVertex private void processTreeNodes( MetadataGraphVertex parentVertex, MetadataTreeNode node, int depth, int pomOrder )
, MetadataTreeNode node throws MetadataResolutionException
, int depth
, int pomOrder
)
throws MetadataResolutionException
{ {
if ( node == null ) if ( node == null )
{ {
@ -150,7 +145,8 @@ private void processTreeNodes( MetadataGraphVertex parentVertex
if ( parentVertex != null ) // then create the edge if ( parentVertex != null ) // then create the edge
{ {
ArtifactMetadata md = node.getMd(); ArtifactMetadata md = node.getMd();
MetadataGraphEdge e = new MetadataGraphEdge( md.version, md.resolved, md.artifactScope, md.artifactUri, depth, pomOrder ); MetadataGraphEdge e =
new MetadataGraphEdge( md.version, md.resolved, md.artifactScope, md.artifactUri, depth, pomOrder );
addEdge( parentVertex, vertex, e ); addEdge( parentVertex, vertex, e );
} }
else else
@ -275,7 +271,7 @@ private void checkEdges( int nEdges )
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
private static void checkVertex( MetadataGraphVertex v ) private static void checkVertex( MetadataGraphVertex v )
throws MetadataResolutionException throws MetadataResolutionException
{ {
if ( v == null ) if ( v == null )
{ {
@ -288,7 +284,7 @@ private static void checkVertex( MetadataGraphVertex v )
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
private static void checkEdge( MetadataGraphEdge e ) private static void checkEdge( MetadataGraphEdge e )
throws MetadataResolutionException throws MetadataResolutionException
{ {
if ( e == null ) if ( e == null )
{ {
@ -318,7 +314,7 @@ public List<MetadataGraphEdge> getEdgesBetween( MetadataGraphVertex vFrom, Metad
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
public MetadataGraph addEdge( MetadataGraphVertex vFrom, MetadataGraphVertex vTo, MetadataGraphEdge e ) public MetadataGraph addEdge( MetadataGraphVertex vFrom, MetadataGraphVertex vTo, MetadataGraphEdge e )
throws MetadataResolutionException throws MetadataResolutionException
{ {
checkVertex( vFrom ); checkVertex( vFrom );
checkVertex( vTo ); checkVertex( vTo );

View File

@ -1,12 +1,30 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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 org.apache.maven.artifact.ArtifactScopeEnum; import org.apache.maven.artifact.ArtifactScopeEnum;
/** /**
* metadata graph edge - combination of version, scope and depth define * metadata graph edge - combination of version, scope and depth define
* an edge in the graph * an edge in the graph
* *
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
@ -19,24 +37,19 @@ public class MetadataGraphEdge
int pomOrder = -1; int pomOrder = -1;
boolean resolved = true; boolean resolved = true;
String artifactUri; String artifactUri;
/** /**
* capturing where this link came from * capturing where this link came from
* and where it is linked to. * and where it is linked to.
* *
* In the first implementation only source used for explanatory function * In the first implementation only source used for explanatory function
*/ */
MetadataGraphVertex source; MetadataGraphVertex source;
MetadataGraphVertex target; MetadataGraphVertex target;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
public MetadataGraphEdge( String version public MetadataGraphEdge( String version, boolean resolved, ArtifactScopeEnum scope, String artifactUri, int depth,
, boolean resolved int pomOrder )
, ArtifactScopeEnum scope
, String artifactUri
, int depth
, int pomOrder
)
{ {
super(); super();
this.version = version; this.version = version;
@ -50,16 +63,13 @@ public MetadataGraphEdge( String version
/** /**
* helper for equals * helper for equals
*/ */
private static boolean objectsEqual( Object o1, private static boolean objectsEqual( Object o1, Object o2 )
Object o2 )
{ {
if ( o1 == null && o2 == null ) if ( o1 == null && o2 == null )
{ {
return true; return true;
} }
if ( ( o1 == null && o2 != null ) if ( ( o1 == null && o2 != null ) || ( o1 != null && o2 == null ) )
|| ( o1 != null && o2 == null )
)
{ {
return false; return false;
} }
@ -76,14 +86,10 @@ public boolean equals( Object o )
if ( o instanceof MetadataGraphEdge ) if ( o instanceof MetadataGraphEdge )
{ {
MetadataGraphEdge e = (MetadataGraphEdge) o; MetadataGraphEdge e = (MetadataGraphEdge) o;
return return objectsEqual( version, e.version )
objectsEqual( version, e.version ) && ArtifactScopeEnum.checkScope( scope ).getScope().equals( ArtifactScopeEnum.checkScope( e.scope ).getScope() )
&& ArtifactScopeEnum.checkScope(scope).getScope().equals( && depth == e.depth;
ArtifactScopeEnum.checkScope(e.scope).getScope()
)
&& depth == e.depth
;
} }
return false; return false;
} }
@ -124,57 +130,60 @@ public boolean isResolved()
return resolved; return resolved;
} }
public void setResolved(boolean resolved) public void setResolved( boolean resolved )
{ {
this.resolved = resolved; this.resolved = resolved;
} }
public int getPomOrder() public int getPomOrder()
{ {
return pomOrder; return pomOrder;
} }
public void setPomOrder(int pomOrder) public void setPomOrder( int pomOrder )
{ {
this.pomOrder = pomOrder; this.pomOrder = pomOrder;
} }
public String getArtifactUri()
{
return artifactUri;
}
public void setArtifactUri( String artifactUri )
{
this.artifactUri = artifactUri;
}
public MetadataGraphVertex getSource()
{
return source;
}
public void setSource( MetadataGraphVertex source )
{
this.source = source;
}
public MetadataGraphVertex getTarget()
{
return target;
}
public void setTarget( MetadataGraphVertex target )
{
this.target = target;
}
public String getArtifactUri()
{
return artifactUri;
}
public void setArtifactUri(String artifactUri)
{
this.artifactUri = artifactUri;
}
public MetadataGraphVertex getSource()
{
return source;
}
public void setSource(MetadataGraphVertex source)
{
this.source = source;
}
public MetadataGraphVertex getTarget()
{
return target;
}
public void setTarget(MetadataGraphVertex target)
{
this.target = target;
}
@Override @Override
public String toString() public String toString()
{ {
return "[ " return "[ " + "FROM:("
+ "FROM:("+( source==null?"no source":(source.md==null?"no source MD":source.md.toString()) )+") " + ( source == null ? "no source" : ( source.md == null ? "no source MD" : source.md.toString() ) ) + ") "
+ "TO:("+( target==null?"no target":(target.md==null?"no target MD":target.md.toString()) )+") " + "TO:(" + ( target == null ? "no target" : ( target.md == null ? "no target MD" : target.md.toString() ) )
+"version="+version + ") " + "version=" + version + ", scope=" + ( scope == null ? "null" : scope.getScope() ) + ", depth="
+", scope="+(scope == null ? "null" : scope.getScope()) + depth + "]";
+", depth="+depth+"]" }
;
}
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
} }

View File

@ -1,5 +1,24 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.
*/
/** /**
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
@ -9,23 +28,23 @@ public class MetadataGraphTransformationException
{ {
private static final long serialVersionUID = -4029897098314019152L; private static final long serialVersionUID = -4029897098314019152L;
public MetadataGraphTransformationException() public MetadataGraphTransformationException()
{ {
} }
public MetadataGraphTransformationException(String message) public MetadataGraphTransformationException( String message )
{ {
super(message); super( message );
} }
public MetadataGraphTransformationException(Throwable cause) public MetadataGraphTransformationException( Throwable cause )
{ {
super(cause); super( cause );
} }
public MetadataGraphTransformationException(String message, Throwable cause) public MetadataGraphTransformationException( String message, Throwable cause )
{ {
super(message, cause); super( message, cause );
} }
} }

View File

@ -1,13 +1,32 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.Collection; import java.util.Collection;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
/** /**
* *
* @author Jason van Zyl * @author Jason van Zyl
* *
*/ */
public class MetadataResolution public class MetadataResolution
{ {
@ -22,33 +41,31 @@ public MetadataResolution( ArtifactMetadata artifactMetadata )
this.artifactMetadata = artifactMetadata; this.artifactMetadata = artifactMetadata;
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
public MetadataResolution( ArtifactMetadata artifactMetadata, public MetadataResolution( ArtifactMetadata artifactMetadata, Collection<ArtifactRepository> metadataRepositories )
Collection<ArtifactRepository> metadataRepositories )
{ {
this( artifactMetadata ); this( artifactMetadata );
this.metadataRepositories = metadataRepositories; this.metadataRepositories = metadataRepositories;
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
public Collection<ArtifactRepository> getMetadataRepositories() public Collection<ArtifactRepository> getMetadataRepositories()
{ {
return metadataRepositories; return metadataRepositories;
} }
public void setMetadataRepositories( public void setMetadataRepositories( Collection<ArtifactRepository> metadataRepositories )
Collection<ArtifactRepository> metadataRepositories) {
{ this.metadataRepositories = metadataRepositories;
this.metadataRepositories = metadataRepositories; }
}
//------------------------------------------------------------------- //-------------------------------------------------------------------
public ArtifactMetadata getArtifactMetadata() public ArtifactMetadata getArtifactMetadata()
{ {
return artifactMetadata; return artifactMetadata;
} }
public void setArtifactMetadata(ArtifactMetadata artifactMetadata) public void setArtifactMetadata(ArtifactMetadata artifactMetadata)
{ {
this.artifactMetadata = artifactMetadata; this.artifactMetadata = artifactMetadata;
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
//------------------------------------------------------------------- //-------------------------------------------------------------------
} }

View File

@ -1,5 +1,24 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.
*/
public class MetadataResolutionException public class MetadataResolutionException
extends Exception extends Exception
{ {
@ -21,8 +40,7 @@ public MetadataResolutionException( Throwable cause )
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
public MetadataResolutionException( String message, public MetadataResolutionException( String message, Throwable cause )
Throwable cause )
{ {
super( message, cause ); super( message, cause );
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub

View File

@ -1,10 +1,28 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.List;
import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepository;
/** @author Oleg Gusakov */ /** @author Oleg Gusakov */
public class MetadataResolutionRequest public class MetadataResolutionRequest
{ {
@ -18,8 +36,7 @@ public MetadataResolutionRequest()
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
public MetadataResolutionRequest( ArtifactMetadata query, public MetadataResolutionRequest( ArtifactMetadata query, ArtifactRepository localRepository,
ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories ) List<ArtifactRepository> remoteRepositories )
{ {
this.query = query; this.query = query;

View File

@ -1,5 +1,24 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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.
*/
public enum MetadataResolutionRequestTypeEnum public enum MetadataResolutionRequestTypeEnum
{ {
tree( 1 ) tree( 1 )

View File

@ -61,20 +61,20 @@ public void setTree( MetadataTreeNode root )
} }
public void initTreeProcessing( PlexusContainer plexus ) public void initTreeProcessing( PlexusContainer plexus )
throws ComponentLookupException throws ComponentLookupException
{ {
classpathTransformation = (ClasspathTransformation) plexus.lookup( ClasspathTransformation.class ); classpathTransformation = (ClasspathTransformation) plexus.lookup( ClasspathTransformation.class );
conflictResolver = (GraphConflictResolver) plexus.lookup( GraphConflictResolver.class ); conflictResolver = (GraphConflictResolver) plexus.lookup( GraphConflictResolver.class );
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
public MetadataGraph getGraph() public MetadataGraph getGraph()
throws MetadataResolutionException throws MetadataResolutionException
{ {
return treeRoot == null ? null : new MetadataGraph( treeRoot ); return treeRoot == null ? null : new MetadataGraph( treeRoot );
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
public MetadataGraph getGraph( ArtifactScopeEnum scope ) public MetadataGraph getGraph( ArtifactScopeEnum scope )
throws MetadataResolutionException, GraphConflictResolutionException throws MetadataResolutionException, GraphConflictResolutionException
{ {
if ( treeRoot == null ) if ( treeRoot == null )
{ {
@ -90,7 +90,7 @@ public MetadataGraph getGraph( ArtifactScopeEnum scope )
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
public MetadataGraph getGraph( MetadataResolutionRequestTypeEnum requestType ) public MetadataGraph getGraph( MetadataResolutionRequestTypeEnum requestType )
throws MetadataResolutionException, GraphConflictResolutionException throws MetadataResolutionException, GraphConflictResolutionException
{ {
if ( requestType == null ) if ( requestType == null )
{ {
@ -139,7 +139,7 @@ else if ( requestType.equals( MetadataResolutionRequestTypeEnum.scopedGraph ) )
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
public ClasspathContainer getClasspath( ArtifactScopeEnum scope ) public ClasspathContainer getClasspath( ArtifactScopeEnum scope )
throws MetadataGraphTransformationException, MetadataResolutionException throws MetadataGraphTransformationException, MetadataResolutionException
{ {
if ( classpathTransformation == null ) if ( classpathTransformation == null )
{ {
@ -157,7 +157,7 @@ public ClasspathContainer getClasspath( ArtifactScopeEnum scope )
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
public MetadataTreeNode getClasspathTree( ArtifactScopeEnum scope ) public MetadataTreeNode getClasspathTree( ArtifactScopeEnum scope )
throws MetadataGraphTransformationException, MetadataResolutionException throws MetadataGraphTransformationException, MetadataResolutionException
{ {
ClasspathContainer cpc = getClasspath( scope ); ClasspathContainer cpc = getClasspath( scope );
if ( cpc == null ) if ( cpc == null )

View File

@ -41,15 +41,12 @@ public MetadataRetrievalException( Throwable cause )
this( null, cause, null ); this( null, cause, null );
} }
public MetadataRetrievalException( String message, public MetadataRetrievalException( String message, Throwable cause )
Throwable cause )
{ {
this( message, cause, null ); this( message, cause, null );
} }
public MetadataRetrievalException( String message, public MetadataRetrievalException( String message, Throwable cause, ArtifactMetadata artifact )
Throwable cause,
ArtifactMetadata artifact )
{ {
super( message, cause ); super( message, cause );

View File

@ -34,6 +34,7 @@ public interface MetadataSource
{ {
String ROLE = MetadataSource.class.getName(); String ROLE = MetadataSource.class.getName();
MetadataResolution retrieve( ArtifactMetadata artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) MetadataResolution retrieve( ArtifactMetadata artifact, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories )
throws MetadataRetrievalException; throws MetadataRetrievalException;
} }

View File

@ -1,14 +1,33 @@
package org.apache.maven.repository.metadata; package org.apache.maven.repository.metadata;
/*
* 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 org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactScopeEnum; import org.apache.maven.artifact.ArtifactScopeEnum;
/** /**
* metadata [dirty] Tree * metadata [dirty] Tree
* *
* @author <a href="oleg@codehaus.org">Oleg Gusakov</a> * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
* *
*/ */
public class MetadataTreeNode public class MetadataTreeNode
{ {
ArtifactMetadata md; // this node ArtifactMetadata md; // this node
@ -21,44 +40,38 @@ public class MetadataTreeNode
MetadataTreeNode[] children; // of cause MetadataTreeNode[] children; // of cause
public int getNChildren() public int getNChildren()
{ {
return nChildren; return nChildren;
} }
public void setNChildren(int children) public void setNChildren( int children )
{ {
nChildren = children; nChildren = children;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
public MetadataTreeNode() public MetadataTreeNode()
{ {
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
public MetadataTreeNode( ArtifactMetadata md, public MetadataTreeNode( ArtifactMetadata md, MetadataTreeNode parent, boolean resolved, ArtifactScopeEnum scope )
MetadataTreeNode parent,
boolean resolved,
ArtifactScopeEnum scope )
{ {
if ( md != null ) if ( md != null )
{ {
md.setArtifactScope( ArtifactScopeEnum.checkScope(scope) ); md.setArtifactScope( ArtifactScopeEnum.checkScope( scope ) );
md.setResolved(resolved); md.setResolved( resolved );
} }
this.md = md; this.md = md;
this.parent = parent; this.parent = parent;
} }
//------------------------------------------------------------------------ //------------------------------------------------------------------------
public MetadataTreeNode( Artifact af, public MetadataTreeNode( Artifact af, MetadataTreeNode parent, boolean resolved, ArtifactScopeEnum scope )
MetadataTreeNode parent,
boolean resolved,
ArtifactScopeEnum scope
)
{ {
this( new ArtifactMetadata( af ), parent, resolved, scope ); this( new ArtifactMetadata( af ), parent, resolved, scope );
} }
//------------------------------------------------------------------------
// ------------------------------------------------------------------------
public void addChild( int index, MetadataTreeNode kid ) public void addChild( int index, MetadataTreeNode kid )
{ {
if ( kid == null ) if ( kid == null )
@ -66,17 +79,21 @@ public void addChild( int index, MetadataTreeNode kid )
return; return;
} }
if( children == null ) if ( children == null )
children = new MetadataTreeNode[nChildren]; {
children = new MetadataTreeNode[nChildren];
}
children[index % nChildren] = kid; children[index % nChildren] = kid;
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
@Override @Override
public String toString() public String toString()
{ {
return md == null ? "no metadata" : md.toString(); return md == null ? "no metadata" : md.toString();
} }
//------------------------------------------------------------------ //------------------------------------------------------------------
public String graphHash() public String graphHash()
throws MetadataResolutionException throws MetadataResolutionException
@ -84,8 +101,7 @@ public String graphHash()
if ( md == null ) if ( md == null )
{ {
throw new MetadataResolutionException( "treenode without metadata, parent: " throw new MetadataResolutionException( "treenode without metadata, parent: "
+ ( parent == null ? "null" : parent.toString() ) + ( parent == null ? "null" : parent.toString() ) );
);
} }
return md.groupId + ":" + md.artifactId; return md.groupId + ":" + md.artifactId;

View File

@ -72,11 +72,13 @@ public static Map load()
} }
catch ( IOException e ) catch ( IOException e )
{ {
throw new ExpressionDocumentationException( "Failed to read documentation for expression root: " + EXPRESSION_ROOTS[i], e ); throw new ExpressionDocumentationException( "Failed to read documentation for expression root: "
+ EXPRESSION_ROOTS[i], e );
} }
catch ( XmlPullParserException e ) catch ( XmlPullParserException e )
{ {
throw new ExpressionDocumentationException( "Failed to parse documentation for expression root: " + EXPRESSION_ROOTS[i], e ); throw new ExpressionDocumentationException( "Failed to parse documentation for expression root: "
+ EXPRESSION_ROOTS[i], e );
} }
finally finally
{ {
@ -110,8 +112,8 @@ public static Map load()
* ]]></usage> * ]]></usage>
* </expression> * </expression>
* <expressions> * <expressions>
* @throws IOException * @throws IOException
* @throws XmlPullParserException * @throws XmlPullParserException
*/ */
private static Map parseExpressionDocumentation( InputStream docStream ) private static Map parseExpressionDocumentation( InputStream docStream )
throws IOException, XmlPullParserException throws IOException, XmlPullParserException

View File

@ -1,53 +1,58 @@
package org.apache.maven; package org.apache.maven;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.apache.maven.execution.MavenSession; import org.apache.maven.execution.MavenSession;
/** /**
* Allows core extensions to participate in build lifecycle. * Allows core extensions to participate in build lifecycle.
* *
* All callback methods (will) follow beforeXXX/afterXXX naming pattern to * All callback methods (will) follow beforeXXX/afterXXX naming pattern to
* indicate at what lifecycle point it is being called. * indicate at what lifecycle point it is being called.
* *
*/ */
public abstract class AbstractMavenLifecycleParticipant public abstract class AbstractMavenLifecycleParticipant
{ {
/** /**
* Invoked after all MavenProject instances have been created. * Invoked after all MavenProject instances have been created.
* *
* This callback is intended to allow extensions to manipulate MavenProjects * This callback is intended to allow extensions to manipulate MavenProjects
* before they are sorted and actual build execution starts. * before they are sorted and actual build execution starts.
*/ */
public void afterProjectsRead( MavenSession session ) throws MavenExecutionException public void afterProjectsRead( MavenSession session )
throws MavenExecutionException
{ {
// do nothing // do nothing
} }
/** /**
* Invoked after MavenSession instance has been created. * Invoked after MavenSession instance has been created.
* *
* This callback is intended to allow extensions to inject execution properties, * This callback is intended to allow extensions to inject execution properties,
* activate profiles and perform similar tasks that affect MavenProject * activate profiles and perform similar tasks that affect MavenProject
* instance construction. * instance construction.
*/ */
// TODO: This is too early for build extensions, so maybe just remove it? // TODO: This is too early for build extensions, so maybe just remove it?
public void afterSessionStart( MavenSession session ) throws MavenExecutionException public void afterSessionStart( MavenSession session )
throws MavenExecutionException
{ {
// do nothing // do nothing
} }

View File

@ -1,5 +1,24 @@
package org.apache.maven; package org.apache.maven;
/*
* 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.Set; import java.util.Set;
public interface ArtifactFilterManagerDelegate public interface ArtifactFilterManagerDelegate

View File

@ -1,6 +1,5 @@
package org.apache.maven; package org.apache.maven;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one * Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file * or more contributor license agreements. See the NOTICE file

View File

@ -1,18 +1,22 @@
package org.apache.maven; package org.apache.maven;
/* /*
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license * Licensed to the Apache Software Foundation (ASF) under one
* agreements. See the NOTICE file distributed with this work for additional information regarding * or more contributor license agreements. See the NOTICE file
* copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the * distributed with this work for additional information
* "License"); you may not use this file except in compliance with the License. You may obtain a * regarding copyright ownership. The ASF licenses this file
* copy of the License at * to you under the Apache License, Version 2.0 (the
* * "License"); you may not use this file except in compliance
* http://www.apache.org/licenses/LICENSE-2.0 * with the License. You may obtain a copy of the License at
* *
* Unless required by applicable law or agreed to in writing, software distributed under the License * http://www.apache.org/licenses/LICENSE-2.0
* 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 * Unless required by applicable law or agreed to in writing,
* the License. * 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.io.File; import java.io.File;
@ -37,7 +41,6 @@
import org.apache.maven.execution.MavenExecutionResult; import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.MavenSession;
import org.apache.maven.execution.ProjectDependencyGraph; import org.apache.maven.execution.ProjectDependencyGraph;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.lifecycle.internal.ExecutionEventCatapult; import org.apache.maven.lifecycle.internal.ExecutionEventCatapult;
import org.apache.maven.lifecycle.internal.LifecycleStarter; import org.apache.maven.lifecycle.internal.LifecycleStarter;
import org.apache.maven.model.building.ModelProblem; import org.apache.maven.model.building.ModelProblem;
@ -64,7 +67,7 @@
/** /**
* @author Jason van Zyl * @author Jason van Zyl
*/ */
@Component(role = Maven.class) @Component( role = Maven.class )
public class DefaultMaven public class DefaultMaven
implements Maven implements Maven
{ {
@ -114,17 +117,18 @@ public MavenExecutionResult execute( MavenExecutionRequest request )
return result; return result;
} }
@SuppressWarnings({"ThrowableInstanceNeverThrown", "ThrowableResultOfMethodCallIgnored"}) @SuppressWarnings( { "ThrowableInstanceNeverThrown", "ThrowableResultOfMethodCallIgnored" } )
private MavenExecutionResult doExecute( MavenExecutionRequest request ) private MavenExecutionResult doExecute( MavenExecutionRequest request )
{ {
//TODO: Need a general way to inject standard properties //TODO: Need a general way to inject standard properties
if ( request.getStartTime() != null ) if ( request.getStartTime() != null )
{ {
request.getSystemProperties().put( "${build.timestamp}", new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( request.getStartTime() ) ); request.getSystemProperties().put( "${build.timestamp}",
} new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( request.getStartTime() ) );
}
request.setStartTime( new Date() ); request.setStartTime( new Date() );
MavenExecutionResult result = new DefaultMavenExecutionResult(); MavenExecutionResult result = new DefaultMavenExecutionResult();
try try
@ -138,11 +142,11 @@ private MavenExecutionResult doExecute( MavenExecutionRequest request )
DelegatingLocalArtifactRepository delegatingLocalArtifactRepository = DelegatingLocalArtifactRepository delegatingLocalArtifactRepository =
new DelegatingLocalArtifactRepository( request.getLocalRepository() ); new DelegatingLocalArtifactRepository( request.getLocalRepository() );
request.setLocalRepository( delegatingLocalArtifactRepository );
MavenSession session = new MavenSession( container, request, result); request.setLocalRepository( delegatingLocalArtifactRepository );
MavenSession session = new MavenSession( container, request, result );
try try
{ {
for ( AbstractMavenLifecycleParticipant listener : getLifecycleParticipants( Collections.<MavenProject> emptyList() ) ) for ( AbstractMavenLifecycleParticipant listener : getLifecycleParticipants( Collections.<MavenProject> emptyList() ) )
@ -158,11 +162,11 @@ private MavenExecutionResult doExecute( MavenExecutionRequest request )
eventCatapult.fire( ExecutionEvent.Type.ProjectDiscoveryStarted, session, null ); eventCatapult.fire( ExecutionEvent.Type.ProjectDiscoveryStarted, session, null );
//TODO: optimize for the single project or no project //TODO: optimize for the single project or no project
List<MavenProject> projects; List<MavenProject> projects;
try try
{ {
projects = getProjectsForMavenReactor( request ); projects = getProjectsForMavenReactor( request );
} }
catch ( ProjectBuildingException e ) catch ( ProjectBuildingException e )
{ {
@ -172,14 +176,14 @@ private MavenExecutionResult doExecute( MavenExecutionRequest request )
session.setProjects( projects ); session.setProjects( projects );
result.setTopologicallySortedProjects( session.getProjects() ); result.setTopologicallySortedProjects( session.getProjects() );
result.setProject( session.getTopLevelProject() ); result.setProject( session.getTopLevelProject() );
try try
{ {
Map<String, MavenProject> projectMap; Map<String, MavenProject> projectMap;
projectMap = getProjectMap( session.getProjects() ); projectMap = getProjectMap( session.getProjects() );
// Desired order of precedence for local artifact repositories // Desired order of precedence for local artifact repositories
// //
// Reactor // Reactor
@ -222,7 +226,7 @@ private MavenExecutionResult doExecute( MavenExecutionRequest request )
session.setProjectDependencyGraph( projectDependencyGraph ); session.setProjectDependencyGraph( projectDependencyGraph );
} }
catch ( CycleDetectedException e ) catch ( CycleDetectedException e )
{ {
String message = "The projects in the reactor contain a cyclic reference: " + e.getMessage(); String message = "The projects in the reactor contain a cyclic reference: " + e.getMessage();
ProjectCycleException error = new ProjectCycleException( message, e ); ProjectCycleException error = new ProjectCycleException( message, e );
@ -257,7 +261,7 @@ private MavenExecutionResult doExecute( MavenExecutionRequest request )
return result; return result;
} }
@SuppressWarnings({"ResultOfMethodCallIgnored"}) @SuppressWarnings( { "ResultOfMethodCallIgnored" } )
private void validateLocalRepository( MavenExecutionRequest request ) private void validateLocalRepository( MavenExecutionRequest request )
throws LocalRepositoryNotAccessibleException throws LocalRepositoryNotAccessibleException
{ {
@ -330,7 +334,7 @@ private MavenExecutionResult processResult( MavenExecutionResult result, Throwab
return result; return result;
} }
private List<MavenProject> getProjectsForMavenReactor( MavenExecutionRequest request ) private List<MavenProject> getProjectsForMavenReactor( MavenExecutionRequest request )
throws ProjectBuildingException throws ProjectBuildingException
{ {
@ -348,8 +352,8 @@ private List<MavenProject> getProjectsForMavenReactor( MavenExecutionRequest req
request.setProjectPresent( false ); request.setProjectPresent( false );
return projects; return projects;
} }
List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() ); List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
collectProjects( projects, files, request ); collectProjects( projects, files, request );
return projects; return projects;
} }
@ -401,7 +405,8 @@ private void collectProjects( List<MavenProject> projects, List<File> files, Mav
{ {
ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest(); ProjectBuildingRequest projectBuildingRequest = request.getProjectBuildingRequest();
List<ProjectBuildingResult> results = projectBuilder.build( files, request.isRecursive(), projectBuildingRequest ); List<ProjectBuildingResult> results =
projectBuilder.build( files, request.isRecursive(), projectBuildingRequest );
boolean problems = false; boolean problems = false;
@ -418,7 +423,8 @@ private void collectProjects( List<MavenProject> projects, List<File> files, Mav
for ( ModelProblem problem : result.getProblems() ) for ( ModelProblem problem : result.getProblems() )
{ {
String location = ModelProblemUtils.formatLocation( problem, result.getProjectId() ); String location = ModelProblemUtils.formatLocation( problem, result.getProjectId() );
logger.warn( problem.getMessage() + ( StringUtils.isNotEmpty( location ) ? " @ " + location : "" ) ); logger.warn( problem.getMessage()
+ ( StringUtils.isNotEmpty( location ) ? " @ " + location : "" ) );
} }
problems = true; problems = true;

View File

@ -42,7 +42,7 @@
import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.component.annotations.Requirement;
@Component(role = ProjectDependenciesResolver.class) @Component( role = ProjectDependenciesResolver.class )
public class DefaultProjectDependenciesResolver public class DefaultProjectDependenciesResolver
implements ProjectDependenciesResolver implements ProjectDependenciesResolver
{ {
@ -97,15 +97,15 @@ private Set<Artifact> resolveImpl( Collection<? extends MavenProject> projects,
return resolved; return resolved;
} }
if ( ( scopesToCollect == null || scopesToCollect.isEmpty() ) && if ( ( scopesToCollect == null || scopesToCollect.isEmpty() )
( scopesToResolve == null || scopesToResolve.isEmpty() ) ) && ( scopesToResolve == null || scopesToResolve.isEmpty() ) )
{ {
return resolved; return resolved;
} }
/* /*
Logic for transitve global exclusions Logic for transitive global exclusions
List<String> exclusions = new ArrayList<String>(); List<String> exclusions = new ArrayList<String>();
@ -126,7 +126,8 @@ private Set<Artifact> resolveImpl( Collection<? extends MavenProject> projects,
if ( ! exclusions.isEmpty() ) if ( ! exclusions.isEmpty() )
{ {
filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ), scopeFilter } ) ); filter = new AndArtifactFilter( Arrays.asList( new ArtifactFilter[]{ new ExcludesArtifactFilter( exclusions ),
scopeFilter } ) );
} }
else else
{ {
@ -140,10 +141,10 @@ private Set<Artifact> resolveImpl( Collection<? extends MavenProject> projects,
collectionScopeFilter = new CumulativeScopeArtifactFilter( collectionScopeFilter, resolutionScopeFilter ); collectionScopeFilter = new CumulativeScopeArtifactFilter( collectionScopeFilter, resolutionScopeFilter );
ArtifactResolutionRequest request = ArtifactResolutionRequest request =
new ArtifactResolutionRequest().setResolveRoot( false ).setResolveTransitively( true ).setCollectionFilter( new ArtifactResolutionRequest().setResolveRoot( false ).setResolveTransitively( true )
collectionScopeFilter ).setResolutionFilter( resolutionScopeFilter ).setLocalRepository( .setCollectionFilter( collectionScopeFilter ).setResolutionFilter( resolutionScopeFilter )
session.getLocalRepository() ).setOffline( session.isOffline() ).setForceUpdate( .setLocalRepository( session.getLocalRepository() ).setOffline( session.isOffline() )
session.getRequest().isUpdateSnapshots() ).setCache( session.getRepositoryCache() ); .setForceUpdate( session.getRequest().isUpdateSnapshots() ).setCache( session.getRepositoryCache() );
request.setTransferListener( session.getRequest().getTransferListener() ); request.setTransferListener( session.getRequest().getTransferListener() );
request.setServers( session.getRequest().getServers() ); request.setServers( session.getRequest().getServers() );
request.setMirrors( session.getRequest().getMirrors() ); request.setMirrors( session.getRequest().getMirrors() );

View File

@ -1,5 +1,23 @@
package org.apache.maven; package org.apache.maven;
/*
* 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.io.File; import java.io.File;

Some files were not shown because too many files have changed in this diff Show More