Author: jvanzyl Date: Wed Feb 13 22:06:36 2008 New Revision: 627669 URL: http://svn.apache.org/viewvc?rev=627669&view=rev Log: pulling everything required into single package
Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java (with props) Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/MetadataResolver.java Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,323 @@ +package org.apache.maven.artifact.resolver.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.repository.ArtifactRepository; + +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; + +/** + * Base class for artifact resolution exceptions. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a> + * @version $Id$ + */ +public class AbstractArtifactResolutionException + extends Exception +{ + private String groupId; + + private String artifactId; + + private String version; + + private String type; + + private String classifier; + + private List remoteRepositories; + + private final String originalMessage; + + private final String path; + + static final String LS = System.getProperty( "line.separator" ); + + protected AbstractArtifactResolutionException( String message, + String groupId, + String artifactId, + String version, + String type, + String classifier, + List remoteRepositories, + List path ) + { + super( constructMessageBase( message, groupId, artifactId, version, type, remoteRepositories, path ) ); + + this.originalMessage = message; + this.groupId = groupId; + this.artifactId = artifactId; + this.type = type; + this.classifier = classifier; + this.version = version; + this.remoteRepositories = remoteRepositories; + this.path = constructArtifactPath( path, "" ); + } + + protected AbstractArtifactResolutionException( String message, + String groupId, + String artifactId, + String version, + String type, + String classifier, + List remoteRepositories, + List path, + Throwable t ) + { + super( constructMessageBase( message, groupId, artifactId, version, type, remoteRepositories, path ), t ); + + this.originalMessage = message; + this.groupId = groupId; + this.artifactId = artifactId; + this.type = type; + this.classifier = classifier; + this.version = version; + this.remoteRepositories = remoteRepositories; + this.path = constructArtifactPath( path, "" ); + } + + protected AbstractArtifactResolutionException( String message, + Artifact artifact ) + { + this( message, artifact, null ); + } + + protected AbstractArtifactResolutionException( String message, + Artifact artifact, + List remoteRepositories ) + { + this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), + artifact.getClassifier(), remoteRepositories, artifact.getDependencyTrail() ); + } + + protected AbstractArtifactResolutionException( String message, + Artifact artifact, + List remoteRepositories, + Throwable t ) + { + this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), + artifact.getClassifier(), remoteRepositories, artifact.getDependencyTrail(), t ); + } + + public String getGroupId() + { + return groupId; + } + + public String getArtifactId() + { + return artifactId; + } + + public String getVersion() + { + return version; + } + + public String getType() + { + return type; + } + + /** @return the classifier */ + public String getClassifier() + { + return this.classifier; + } + + /** @return the path */ + public String getPath() + { + return this.path; + } + + public List getRemoteRepositories() + { + return remoteRepositories; + } + + public String getOriginalMessage() + { + return originalMessage; + } + + protected static String constructArtifactPath( List path, + String indentation ) + { + StringBuffer sb = new StringBuffer(); + + if ( path != null ) + { + sb.append( LS ); + sb.append( indentation ); + sb.append( "Path to dependency: " ); + sb.append( LS ); + int num = 1; + for ( Iterator i = path.iterator(); i.hasNext(); num++ ) + { + sb.append( indentation ); + sb.append( "\t" ); + sb.append( num ); + sb.append( ") " ); + sb.append( i.next() ); + sb.append( LS ); + } + } + + return sb.toString(); + } + + private static String constructMessageBase( String message, + String groupId, + String artifactId, + String version, + String type, + List remoteRepositories, + List path ) + { + StringBuffer sb = new StringBuffer(); + + sb.append( message ); + sb.append( LS ); + sb.append( " " + groupId + ":" + artifactId + ":" + type + ":" + version ); + sb.append( LS ); + if ( remoteRepositories != null && !remoteRepositories.isEmpty() ) + { + sb.append( LS ); + sb.append( "from the specified remote repositories:" ); + sb.append( LS + " " ); + + for ( Iterator i = new HashSet( remoteRepositories ).iterator(); i.hasNext(); ) + { + ArtifactRepository remoteRepository = (ArtifactRepository) i.next(); + + sb.append( remoteRepository.getId() ); + sb.append( " (" ); + sb.append( remoteRepository.getUrl() ); + sb.append( ")" ); + if ( i.hasNext() ) + { + sb.append( ",\n " ); + } + } + } + + sb.append( constructArtifactPath( path, "" ) ); + sb.append( LS ); + return sb.toString(); + } + + protected static String constructMissingArtifactMessage( String message, + String indentation, + String groupId, + String artifactId, + String version, + String type, + String classifier, + String downloadUrl, + List path ) + { + StringBuffer sb = new StringBuffer( message ); + + if ( !"pom".equals( type ) ) + { + if ( downloadUrl != null ) + { + sb.append( LS ); + sb.append( LS ); + sb.append( indentation ); + sb.append( "Try downloading the file manually from: " ); + sb.append( LS ); + sb.append( indentation ); + sb.append( " " ); + sb.append( downloadUrl ); + } + else + { + sb.append( LS ); + sb.append( LS ); + sb.append( indentation ); + sb.append( "Try downloading the file manually from the project website." ); + } + + sb.append( LS ); + sb.append( LS ); + sb.append( indentation ); + sb.append( "Then, install it using the command: " ); + sb.append( LS ); + sb.append( indentation ); + sb.append( " mvn install:install-file -DgroupId=" ); + sb.append( groupId ); + sb.append( " -DartifactId=" ); + sb.append( artifactId ); + sb.append( " -Dversion=" ); + sb.append( version ); + + //insert classifier only if it was used in the artifact + if ( classifier != null && !classifier.equals( "" ) ) + { + sb.append( " -Dclassifier=" ); + sb.append( classifier ); + } + sb.append( " -Dpackaging=" ); + sb.append( type ); + sb.append( " -Dfile=/path/to/file" ); + sb.append( LS ); + + // If people want to deploy it + sb.append( LS ); + sb.append( indentation ); + sb.append( "Alternatively, if you host your own repository you can deploy the file there: " ); + sb.append( LS ); + sb.append( indentation ); + sb.append( " mvn deploy:deploy-file -DgroupId=" ); + sb.append( groupId ); + sb.append( " -DartifactId=" ); + sb.append( artifactId ); + sb.append( " -Dversion=" ); + sb.append( version ); + + //insert classifier only if it was used in the artifact + if ( classifier != null && !classifier.equals( "" ) ) + { + sb.append( " -Dclassifier=" ); + sb.append( classifier ); + } + sb.append( " -Dpackaging=" ); + sb.append( type ); + sb.append( " -Dfile=/path/to/file" ); + sb.append( " -Durl=[url] -DrepositoryId=[id]" ); + sb.append( LS ); + } + + sb.append( constructArtifactPath( path, indentation ) ); + sb.append( LS ); + + return sb.toString(); + } + + public String getArtifactPath() + { + return path; + } +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/AbstractArtifactResolutionException.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,100 @@ +package org.apache.maven.artifact.resolver.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.wagon.ResourceDoesNotExistException; + +import java.util.List; + +/** + * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> + * @version $Id$ + */ +public class ArtifactNotFoundException + extends AbstractArtifactResolutionException +{ + private String downloadUrl; + + protected ArtifactNotFoundException( String message, + Artifact artifact, + List remoteRepositories ) + { + super( message, artifact, remoteRepositories ); + } + + public ArtifactNotFoundException( String message, + Artifact artifact ) + { + this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), + artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact.getDependencyTrail() ); + } + + protected ArtifactNotFoundException( String message, + Artifact artifact, + List remoteRepositories, + ResourceDoesNotExistException cause ) + { + this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), + artifact.getClassifier(), + remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(), cause ); + } + + public ArtifactNotFoundException( String message, + String groupId, + String artifactId, + String version, + String type, + String classifier, + List remoteRepositories, + String downloadUrl, + List path, + ResourceDoesNotExistException cause ) + { + super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier, + downloadUrl, path ), groupId, artifactId, + version, type, classifier, remoteRepositories, null, cause ); + + this.downloadUrl = downloadUrl; + } + + private ArtifactNotFoundException( String message, + String groupId, + String artifactId, + String version, + String type, + String classifier, + List remoteRepositories, + String downloadUrl, + List path ) + { + super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier, + downloadUrl, path ), groupId, artifactId, + version, type, classifier, remoteRepositories, null ); + + this.downloadUrl = downloadUrl; + } + + public String getDownloadUrl() + { + return downloadUrl; + } + +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactNotFoundException.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,111 @@ +package org.apache.maven.artifact.resolver.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.metadata.ArtifactMetadataRetrievalException; +import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException; +import org.apache.maven.wagon.TransferFailedException; + +import java.io.IOException; +import java.util.List; + +/** + * @author Jason van Zyl + * @version $Id$ + */ +public class ArtifactResolutionException + extends AbstractArtifactResolutionException +{ + public ArtifactResolutionException( String message, + String groupId, + String artifactId, + String version, + String type, + String classifier, + List remoteRepositories, + List path, + Throwable 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 ) + { + super( message, groupId, artifactId, version, type, classifier, null, null, t ); + } + + public ArtifactResolutionException( String message, + Artifact artifact ) + { + super( message, artifact ); + } + + public ArtifactResolutionException( String message, + Artifact artifact, + List remoteRepositories ) + { + super( message, artifact, remoteRepositories ); + } + + public ArtifactResolutionException( String message, + Artifact artifact, + ArtifactMetadataRetrievalException cause ) + { + super( message, artifact, null, cause ); + } + + protected ArtifactResolutionException( String message, + Artifact artifact, + List remoteRepositories, + ArtifactMetadataRetrievalException cause ) + { + super( message, artifact, remoteRepositories, cause ); + } + + protected ArtifactResolutionException( String message, + Artifact artifact, + List remoteRepositories, + TransferFailedException cause ) + { + super( message, artifact, remoteRepositories, cause ); + } + + protected ArtifactResolutionException( String message, + Artifact artifact, + List remoteRepositories, + IOException cause ) + { + super( message, artifact, remoteRepositories, cause ); + } + + public ArtifactResolutionException( String message, + Artifact artifact, + RepositoryMetadataResolutionException cause ) + { + super( message, artifact, null, cause ); + } +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolutionException.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,36 @@ +package org.apache.maven.artifact.resolver.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. + */ + +/** + * I want to use it for hidding the fact that sometime artifact must be + * downloaded. I am just asking LocalRepository for given artifact and I don't + * care if it is alredy there or how it will get there. + * + * @author Jason van Zyl + * @version $Id$ + */ +public interface ArtifactResolver +{ + String ROLE = ArtifactResolver.class.getName(); + + /** @since 3.0 */ + ResolutionResult resolve( ResolutionRequest request ); +} \ No newline at end of file Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ArtifactResolver.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,54 @@ +package org.apache.maven.artifact.resolver.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 org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.manager.WagonManager; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.codehaus.plexus.logging.AbstractLogEnabled; + +/** + * @author Jason van Zyl + * @plexus.component + */ +public class DefaultArtifactResolver + extends AbstractLogEnabled + implements ArtifactResolver +{ + /** @plexus.requirement */ + private WagonManager wagonManager; + + public ResolutionResult resolve( ResolutionRequest request ) + { + ResolutionResult result = new ResolutionResult(); + + Artifact originatingArtifact = request.getArtifact(); + + ArtifactRepository localRepository = request.getLocalRepository(); + + List remoteRepositories = request.getRemoteRepostories(); + + result.setRepositories( remoteRepositories ); + + return result; + } +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/DefaultArtifactResolver.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/MetadataResolver.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/MetadataResolver.java?rev=627669&r1=627668&r2=627669&view=diff ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/MetadataResolver.java (original) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/MetadataResolver.java Wed Feb 13 22:06:36 2008 @@ -7,7 +7,6 @@ import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolutionException; - /** * entry point into metadata resolution component * @@ -37,10 +36,7 @@ * @return collection of resolved artifacts * @throws ArtifactResolutionException */ - public List<Artifact> resolveArtifact( - List<ArtifactMetadata> mdCollection - , ArtifactRepository localRepository - , List<ArtifactRepository> remoteRepositories - ) - throws ArtifactResolutionException; + public List<Artifact> resolveArtifact( List<ArtifactMetadata> mdCollection, ArtifactRepository localRepository, + List<ArtifactRepository> remoteRepositories ) + throws ArtifactResolutionException; } Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,140 @@ +package org.apache.maven.artifact.resolver.metadata; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.metadata.ArtifactMetadataSource; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.resolver.filter.ArtifactFilter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * A resolution request allows you to either use an existing MavenProject, or a coordinate (gid:aid:version) + * to process a POMs dependencies. + * + * @author Jason van Zyl + */ +public class ResolutionRequest +{ + private Artifact artifact; + + private String groupId; + + private String artifactId; + + private String version; + + private ArtifactRepository localRepository; + + private List remoteRepostories; + + private List listeners = new ArrayList(); + + public Artifact getArtifact() + { + return artifact; + } + + public ResolutionRequest setArtifact( Artifact artifact ) + { + this.artifact = artifact; + + return this; + } + + public boolean hasArtifact() + { + return artifact != null; + } + + public String getGroupId() + { + if ( artifact != null ) + { + return artifact.getGroupId(); + } + + return groupId; + } + + public ResolutionRequest setGroupId( String groupId ) + { + this.groupId = groupId; + + return this; + } + + public String getArtifactId() + { + if ( artifact != null ) + { + return artifact.getArtifactId(); + } + + return artifactId; + } + + public ResolutionRequest setArtifactId( String artifactId ) + { + this.artifactId = artifactId; + + return this; + } + + public String getVersion() + { + if ( artifact != null ) + { + return artifact.getVersion(); + } + + return version; + } + + public ResolutionRequest setVersion( String version ) + { + this.version = version; + + return this; + } + + public ArtifactRepository getLocalRepository() + { + return localRepository; + } + + public ResolutionRequest setLocalRepository( ArtifactRepository localRepository ) + { + this.localRepository = localRepository; + + return this; + } + + public List getRemoteRepostories() + { + return remoteRepostories; + } + + public ResolutionRequest setRemoteRepostories( List remoteRepostories ) + { + this.remoteRepostories = remoteRepostories; + + return this; + } + + // ------------------------------------------------------------------------ + // + // ------------------------------------------------------------------------ + + public String toString() + { + StringBuffer sb = new StringBuffer() + .append( "groupId = " + getGroupId() ) + .append( "artifactId = " + getArtifactId() ) + .append( "version = " + getVersion() ); + + return sb.toString(); + } +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionRequest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java?rev=627669&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java Wed Feb 13 22:06:36 2008 @@ -0,0 +1,221 @@ +package org.apache.maven.artifact.resolver.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.versioning.OverConstrainedVersionException; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + +/** + * Specific problems during resolution that we want to account for: + * <p/> + * - missing metadata + * - version range violations + * - version circular dependencies + * - missing artifacts + * - network/transfer errors + * - file system errors: permissions + * + * @author Jason van Zyl + * @version $Id$ + * @TODO carlos: all these possible has*Exceptions and get*Exceptions methods make the clients too + * complex requiring a long list of checks, need to create a parent/interfact/encapsulation + * for the types of exceptions + */ +public class ResolutionResult +{ + private Artifact originatingArtifact; + + private List versionRangeViolations; + + private List metadataResolutionExceptions; + + private List missingArtifacts; + + private List errorArtifactExceptions; + + // file system errors + + private List repositories; + + private Set artifacts; + + // + + public Artifact getOriginatingArtifact() + { + return originatingArtifact; + } + + public ResolutionResult ListOriginatingArtifact( Artifact originatingArtifact ) + { + this.originatingArtifact = originatingArtifact; + + return this; + } + + /** + * + * @return set of Artifact instances + */ + + public Set getArtifacts() + { + return artifacts; + } + + public List getMissingArtifacts() + { + return missingArtifacts == null ? Collections.EMPTY_LIST : missingArtifacts; + } + + public ResolutionResult addMissingArtifact( Artifact artifact ) + { + missingArtifacts = initList( missingArtifacts ); + + missingArtifacts.add( artifact ); + + return this; + } + + public ResolutionResult setUnresolvedArtifacts( List unresolvedArtifacts ) + { + this.missingArtifacts = unresolvedArtifacts; + + return this; + } + + // ------------------------------------------------------------------------ + // Version Range Violations + // ------------------------------------------------------------------------ + + public boolean hasVersionRangeViolations() + { + return versionRangeViolations != null; + } + + /** + * @TODO this needs to accept a [EMAIL PROTECTED] OverConstrainedVersionException} as returned by + * [EMAIL PROTECTED] #getVersionRangeViolation(int)} but it's not used like that in + * [EMAIL PROTECTED] DefaultArtifactCollector} + */ + public ResolutionResult addVersionRangeViolation( Exception e ) + { + versionRangeViolations = initList( versionRangeViolations ); + + versionRangeViolations.add( e ); + + return this; + } + + public OverConstrainedVersionException getVersionRangeViolation( int i ) + { + return (OverConstrainedVersionException) versionRangeViolations.get( i ); + } + + public List getVersionRangeViolations() + { + return versionRangeViolations == null ? Collections.EMPTY_LIST : versionRangeViolations; + } + + // ------------------------------------------------------------------------ + // Metadata Resolution Exceptions: ArtifactResolutionExceptions + // ------------------------------------------------------------------------ + + public boolean hasMetadataResolutionExceptions() + { + return metadataResolutionExceptions != null; + } + + public ResolutionResult addMetadataResolutionException( ArtifactResolutionException e ) + { + metadataResolutionExceptions = initList( metadataResolutionExceptions ); + + metadataResolutionExceptions.add( e ); + + return this; + } + + public ArtifactResolutionException getMetadataResolutionException( int i ) + { + return (ArtifactResolutionException) metadataResolutionExceptions.get( i ); + } + + public List getMetadataResolutionExceptions() + { + return metadataResolutionExceptions == null ? Collections.EMPTY_LIST : metadataResolutionExceptions; + } + + // ------------------------------------------------------------------------ + // ErrorArtifactExceptions: ArtifactResolutionExceptions + // ------------------------------------------------------------------------ + + public boolean hasErrorArtifactExceptions() + { + return errorArtifactExceptions != null; + } + + public ResolutionResult addErrorArtifactException( ArtifactResolutionException e ) + { + errorArtifactExceptions = initList( errorArtifactExceptions ); + + errorArtifactExceptions.add( e ); + + return this; + } + + public List getErrorArtifactExceptions() + { + return errorArtifactExceptions == null ? Collections.EMPTY_LIST : errorArtifactExceptions; + } + + // ------------------------------------------------------------------------ + // + // ------------------------------------------------------------------------ + + // Repositories + + public List getRepositories() + { + return repositories == null ? Collections.EMPTY_LIST : repositories; + } + + public ResolutionResult setRepositories( List repositories ) + { + this.repositories = repositories; + + return this; + } + + private List initList( List l ) + { + if ( l == null ) + { + return new ArrayList(); + } + return l; + } +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/metadata/ResolutionResult.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"