Author: jvanzyl Date: Sat May 24 12:02:45 2008 New Revision: 659862 URL: http://svn.apache.org/viewvc?rev=659862&view=rev Log: o separate the retriever into its own package
Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java (with props) maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java - copied, changed from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ArtifactResolver.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java - copied, changed from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultArtifactResolver.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java - copied, changed from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionRequest.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java - copied, changed from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionResult.java Removed: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ArtifactResolutionException.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ArtifactResolver.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultArtifactResolver.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionRequest.java maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionResult.java Modified: maven/artifact/branches/CAP/notes.txt maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultMetadataResolver.java Modified: maven/artifact/branches/CAP/notes.txt URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/notes.txt?rev=659862&r1=659861&r2=659862&view=diff ============================================================================== --- maven/artifact/branches/CAP/notes.txt (original) +++ maven/artifact/branches/CAP/notes.txt Sat May 24 12:02:45 2008 @@ -101,3 +101,7 @@ Once the representation has been processed and we have a graph, we fall back to the retrieval mechanism to place the desired artifacts in the storage system. Ultimately from this graph, according to the desired purpose we have set of artifacts that we can do something with. +Processing + +I have come to the conclusion that providing the necessary support for version ranges cannot be done without a SAT solver, as we are +approaching an NP complete problem and we're going to end up with an approximation and all the heavy lifting is being done already by SAT4J. Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java?rev=659862&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java Sat May 24 12:02:45 2008 @@ -0,0 +1,28 @@ +package org.apache.maven.mercury; + +/* + * 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 jdcasey */ +public interface ArtifactRepositoryLayout +{ + String ROLE = ArtifactRepositoryLayout.class.getName(); + + String pathOf( Artifact artifact ); +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/ArtifactRepositoryLayout.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java?rev=659862&view=auto ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java (added) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java Sat May 24 12:02:45 2008 @@ -0,0 +1,66 @@ +package org.apache.maven.mercury; + +/* + * 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 jdcasey + * @plexus.component role="org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout" role-hint="default" + */ +public class DefaultRepositoryLayout + implements ArtifactRepositoryLayout +{ + private static final char PATH_SEPARATOR = '/'; + + private static final char GROUP_SEPARATOR = '.'; + + private static final char ARTIFACT_SEPARATOR = '-'; + + public String pathOf( Artifact artifact ) + { + StringBuffer path = new StringBuffer(); + + path.append( formatAsDirectory( artifact.getGroupId() ) ).append( PATH_SEPARATOR ); + path.append( artifact.getArtifactId() ).append( PATH_SEPARATOR ); + path.append( artifact.getVersion() ).append( PATH_SEPARATOR ); + path.append( artifact.getArtifactId() ).append( ARTIFACT_SEPARATOR ).append( artifact.getVersion() ); + + if ( artifact.hasClassifier() ) + { + path.append( ARTIFACT_SEPARATOR ).append( artifact.getClassifier() ); + } + + path.append( GROUP_SEPARATOR ).append( "pom" ); + + /* + if ( artifactHandler.getExtension() != null && artifactHandler.getExtension().length() > 0 ) + { + path.append( GROUP_SEPARATOR ).append( artifactHandler.getExtension() ); + } + */ + + return path.toString(); + } + + private String formatAsDirectory( String directory ) + { + return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR ); + } + +} Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/DefaultRepositoryLayout.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultMetadataResolver.java URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultMetadataResolver.java?rev=659862&r1=659861&r2=659862&view=diff ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultMetadataResolver.java (original) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultMetadataResolver.java Sat May 24 12:02:45 2008 @@ -6,6 +6,9 @@ import org.apache.maven.mercury.Artifact; import org.apache.maven.mercury.ArtifactRepository; import org.apache.maven.mercury.DefaultArtifact; +import org.apache.maven.mercury.retrieve.ArtifactRetriever; +import org.apache.maven.mercury.retrieve.ResolutionRequest; +import org.apache.maven.mercury.retrieve.ResolutionResult; /* * default implementation of the metadata resolver @@ -20,7 +23,7 @@ //------------------------------------------------------------------------ /** @plexus.requirement */ - ArtifactResolver artifactResolver; + ArtifactRetriever artifactResolver; /** @plexus.requirement */ MetadataSource metadataSource; @@ -48,7 +51,7 @@ ResolutionRequest request = new ResolutionRequest().setArtifact( pomArtifact ).setLocalRepository( localRepository ).setRemoteRepostories( remoteRepositories ); - ResolutionResult result = artifactResolver.resolve( request ); + ResolutionResult result = artifactResolver.retrieve( request ); // Here we just need to deal with basic retrieval problems. if ( result.hasExceptions() ) Copied: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java (from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ArtifactResolver.java) URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java?p2=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java&p1=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ArtifactResolver.java&r1=659846&r2=659862&rev=659862&view=diff ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ArtifactResolver.java (original) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ArtifactRetriever.java Sat May 24 12:02:45 2008 @@ -1,4 +1,5 @@ -package org.apache.maven.mercury.resolver; +package org.apache.maven.mercury.retrieve; + /* * Licensed to the Apache Software Foundation (ASF) under one @@ -20,12 +21,14 @@ */ /** + * Responsible for retrieving a set of artifacts. + * * @author Jason van Zyl */ -public interface ArtifactResolver +public interface ArtifactRetriever { - String ROLE = ArtifactResolver.class.getName(); + String ROLE = ArtifactRetriever.class.getName(); /** @since 3.0 */ - ResolutionResult resolve( ResolutionRequest request ); + ResolutionResult retrieve( ResolutionRequest request ); } \ No newline at end of file Copied: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java (from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultArtifactResolver.java) URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java?p2=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java&p1=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultArtifactResolver.java&r1=659846&r2=659862&rev=659862&view=diff ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/DefaultArtifactResolver.java (original) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/DefaultArtifactRetriever.java Sat May 24 12:02:45 2008 @@ -1,4 +1,4 @@ -package org.apache.maven.mercury.resolver; +package org.apache.maven.mercury.retrieve; /* * Licensed to the Apache Software Foundation (ASF) under one @@ -36,12 +36,12 @@ * @author Jason van Zyl * @plexus.component */ -public class DefaultArtifactResolver - implements ArtifactResolver +public class DefaultArtifactRetriever + implements ArtifactRetriever { ArtifactRepositoryLayout layout = new DefaultRepositoryLayout(); - public ResolutionResult resolve( ResolutionRequest request ) + public ResolutionResult retrieve( ResolutionRequest request ) { ResolutionResult result = new ResolutionResult(); Copied: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java (from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionRequest.java) URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java?p2=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java&p1=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionRequest.java&r1=659846&r2=659862&rev=659862&view=diff ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionRequest.java (original) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionRequest.java Sat May 24 12:02:45 2008 @@ -1,4 +1,4 @@ -package org.apache.maven.mercury.resolver; +package org.apache.maven.mercury.retrieve; import java.util.ArrayList; import java.util.List; Copied: maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java (from r659846, maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionResult.java) URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java?p2=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java&p1=maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionResult.java&r1=659846&r2=659862&rev=659862&view=diff ============================================================================== --- maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/resolver/ResolutionResult.java (original) +++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/mercury/retrieve/ResolutionResult.java Sat May 24 12:02:45 2008 @@ -1,4 +1,4 @@ -package org.apache.maven.mercury.resolver; +package org.apache.maven.mercury.retrieve; /* * Licensed to the Apache Software Foundation (ASF) under one @@ -27,21 +27,8 @@ import org.apache.maven.mercury.Artifact; import org.apache.maven.mercury.ArtifactRepository; -/** - * 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 {