Author: epunzalan
Date: Mon Jan 30 18:13:38 2006
New Revision: 373670
URL: http://svn.apache.org/viewcvs?rev=373670&view=rev
Log:
Added proxy module
Added:
maven/repository-manager/trunk/maven-repository-proxy/
maven/repository-manager/trunk/maven-repository-proxy/pom.xml
maven/repository-manager/trunk/maven-repository-proxy/src/
maven/repository-manager/trunk/maven-repository-proxy/src/main/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyException.java
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/configuration/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/configuration/ProxyConfiguration.java
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/Checksum.java
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/DefaultRepositoryFileManager.java
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/repository/
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/repository/ProxyRepository.java
Modified:
maven/repository-manager/trunk/pom.xml
Added: maven/repository-manager/trunk/maven-repository-proxy/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/pom.xml?rev=373670&view=auto
==============================================================================
--- maven/repository-manager/trunk/maven-repository-proxy/pom.xml (added)
+++ maven/repository-manager/trunk/maven-repository-proxy/pom.xml Mon Jan 30
18:13:38 2006
@@ -0,0 +1,37 @@
+<!--
+ ~ Copyright 2005-2006 The Apache Software Foundation.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.apache.maven.repository</groupId>
+ <artifactId>maven-repository-manager</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>maven-repository-proxy</artifactId>
+ <name>Maven Repository Proxy</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact-manager</artifactId>
+ </dependency>
+ </dependencies>
+</project>
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,338 @@
+package org.apache.maven.repository.proxy;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.manager.ChecksumFailedException;
+import org.apache.maven.artifact.manager.WagonManager;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.repository.proxy.configuration.ProxyConfiguration;
+import org.apache.maven.repository.proxy.files.DefaultRepositoryFileManager;
+import org.apache.maven.repository.proxy.files.Checksum;
+import org.apache.maven.repository.proxy.repository.ProxyRepository;
+import org.apache.maven.wagon.ConnectionException;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.UnsupportedProtocolException;
+import org.apache.maven.wagon.Wagon;
+import org.apache.maven.wagon.authentication.AuthenticationException;
+import org.apache.maven.wagon.authorization.AuthorizationException;
+import org.apache.maven.wagon.observers.ChecksumObserver;
+import org.codehaus.plexus.util.FileUtils;
+
+import java.io.File;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Iterator;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class DefaultProxyManager
+ //implements ProxyManager
+{
+ /* @plexus.requirement */
+ private WagonManager wagon;
+
+ private ProxyConfiguration config;
+
+ public DefaultProxyManager( ProxyConfiguration configuration )
+ {
+ config = configuration;
+ }
+
+ public File get( String path )
+ throws ProxyException
+ {
+ String cachePath = config.getRepositoryCachePath();
+ File cachedFile = new File( cachePath, path );
+ if ( !cachedFile.exists() )
+ {
+ getRemoteFile( path );
+ }
+ return cachedFile;
+ }
+
+ public File getRemoteFile( String path )
+ throws ProxyException
+ {
+ try
+ {
+ if ( path.indexOf( "/jars/" ) >= 0 )
+ {
+ //@todo maven 1 repo request
+ throw new ProxyException( "Maven 1 repository requests not yet
supported." );
+ }
+ else if ( path.indexOf( "/poms/" ) >= 0 )
+ {
+ //@todo maven 1 repo request
+ throw new ProxyException( "Maven 1 repository requests not yet
supported." );
+ }
+ else
+ {
+ //maven 2 repo request
+ Object obj = new
DefaultRepositoryFileManager().getRequestedObjectFromPath( path );
+
+ if ( obj == null )
+ {
+ //right now, only metadata is known to fit here
+ return getRepositoryFile( path );
+ }
+ else if ( obj instanceof Checksum )
+ {
+ return getRepositoryFile( path, false );
+ }
+ else if ( obj instanceof Artifact )
+ {
+ Artifact artifact = (Artifact) obj;
+ return getArtifactFile( artifact );
+ }
+ else
+ {
+ throw new ProxyException( "Could not hande repository
object: " + obj.getClass() );
+ }
+ }
+ }
+ catch( TransferFailedException e )
+ {
+ throw new ProxyException( e.getMessage(), e );
+ }
+ catch( ResourceDoesNotExistException e)
+ {
+ throw new ProxyException( e.getMessage(), e );
+ }
+ }
+
+ private File getArtifactFile( Artifact artifact )
+ throws TransferFailedException, ResourceDoesNotExistException
+ {
+ ArtifactRepository repoCache = config.getRepositoryCache();
+
+ File artifactFile = new File( repoCache.getBasedir(),
repoCache.pathOf( artifact ) );
+
+ if ( !artifactFile.exists() )
+ {
+ wagon.getArtifact( artifact, config.getRepositories() );
+ artifactFile = artifact.getFile();
+ }
+
+ return artifactFile;
+ }
+
+ private File getRepositoryFile( String path )
+ throws ProxyException
+ {
+ return getRepositoryFile( path, true );
+ }
+
+ private File getRepositoryFile( String path, boolean useChecksum )
+ throws ProxyException
+ {
+ ArtifactRepository cache = config.getRepositoryCache();
+ File target = new File( cache.getBasedir(), path );
+
+ for( Iterator repositories = config.getRepositories().iterator();
repositories.hasNext(); )
+ {
+ ProxyRepository repository = (ProxyRepository) repositories.next();
+
+ try
+ {
+ Wagon wagon = this.wagon.getWagon( repository.getProtocol() );
+
+ //@todo configure wagon
+
+ ChecksumObserver listener = null;
+ try
+ {
+ listener = repository.getChecksumObserver();
+
+ if ( listener != null )
+ {
+ wagon.addTransferListener( listener );
+ }
+ }
+ catch ( NoSuchAlgorithmException e )
+ {
+ System.out.println( "Skipping checksum validation for
unsupported algorithm: "
+ + repository.getChecksum() );
+ }
+
+ if ( connectToRepository( wagon, repository ) )
+ {
+ File temp = new File( target.getAbsolutePath() + ".tmp" );
+ temp.deleteOnExit();
+
+ int tries = 0;
+ boolean success = false;
+
+ while( !success )
+ {
+ tries++;
+
+ wagon.get( path, temp );
+
+ if ( useChecksum )
+ {
+ success = doChecksumCheck( listener, repository,
path, wagon );
+ }
+ else
+ {
+ success = true;
+ }
+
+ if ( tries > 1 && !success )
+ {
+ throw new ProxyException( "Checksum failures
occurred while downloading " + path );
+ }
+ }
+ disconnectWagon( wagon );
+
+ return target;
+ }
+ //try next repository
+ }
+ catch ( TransferFailedException e )
+ {
+ System.out.println( "Skipping repository " +
repository.getUrl() +
+ ": " + e.getMessage() );
+ }
+ catch ( ResourceDoesNotExistException e )
+ {
+ //do nothing, file not found in this repository
+ }
+ catch ( AuthorizationException e )
+ {
+ System.out.println( "Skipping repository " +
repository.getUrl() +
+ ": " + e.getMessage() );
+ }
+ catch ( UnsupportedProtocolException e )
+ {
+ System.out.println( "Skipping repository " +
repository.getUrl() +
+ ": no wagon configured for protocol " +
repository.getProtocol() );
+ }
+ }
+
+ throw new ProxyException( "Could not find " + path + " in any of the
repositories." );
+ }
+
+ private boolean connectToRepository( Wagon wagon, ProxyRepository
repository )
+ {
+ boolean connected = false;
+ try
+ {
+ wagon.connect( repository );
+ connected = true;
+ }
+ catch ( ConnectionException e )
+ {
+ System.out.println( "Could not connect to " + repository.getId() +
": " + e.getMessage() );
+ }
+ catch ( AuthenticationException e )
+ {
+ System.out.println( "Could not connect to " + repository.getId() +
": " + e.getMessage() );
+ }
+
+ return connected;
+ }
+
+ private boolean doChecksumCheck( ChecksumObserver listener,
ProxyRepository repository, String path, Wagon wagon )
+ //throws ChecksumFailedException
+ {
+ boolean success = false;
+
+ try
+ {
+ String checksumExt = repository.getChecksum().getFileExtension();
+ String remotePath = path + "." + checksumExt;
+ File checksumFile = new File(
config.getRepositoryCache().getBasedir(), remotePath );
+
+ verifyChecksum( listener.getActualChecksum(), checksumFile,
remotePath, checksumExt, wagon );
+
+ wagon.removeTransferListener( listener );
+
+ success = true;
+ }
+ catch ( ChecksumFailedException e )
+ {
+ System.out.println( "*** CHECKSUM FAILED - " + e.getMessage() + "
- RETRYING" );
+ }
+
+ return success;
+ }
+
+ private void verifyChecksum( String actualChecksum, File destination,
String remotePath,
+ String checksumFileExtension, Wagon wagon )
+ throws ChecksumFailedException
+ {
+ try
+ {
+ File tempDestination = new File( destination.getAbsolutePath() +
".tmp" );
+ tempDestination.deleteOnExit();
+
+ File tempChecksumFile = new File( tempDestination +
checksumFileExtension + ".tmp" );
+ tempChecksumFile.deleteOnExit();
+
+ wagon.get( remotePath + checksumFileExtension, tempChecksumFile );
+
+ String expectedChecksum = FileUtils.fileRead( tempChecksumFile );
+
+ // remove whitespaces at the end
+ expectedChecksum = expectedChecksum.trim();
+
+ // check for 'MD5 (name) = CHECKSUM'
+ if ( expectedChecksum.startsWith( "MD5" ) )
+ {
+ int lastSpacePos = expectedChecksum.lastIndexOf( ' ' );
+ expectedChecksum = expectedChecksum.substring( lastSpacePos +
1 );
+ }
+ else
+ {
+ // remove everything after the first space (if available)
+ int spacePos = expectedChecksum.indexOf( ' ' );
+
+ if ( spacePos != -1 )
+ {
+ expectedChecksum = expectedChecksum.substring( 0, spacePos
);
+ }
+ }
+
+ if ( expectedChecksum.equals( actualChecksum ) )
+ {
+ File checksumFile = new File( destination +
checksumFileExtension );
+ if ( checksumFile.exists() ) checksumFile.delete();
+ FileUtils.copyFile( tempChecksumFile, checksumFile );
+ }
+ else
+ {
+ throw new ChecksumFailedException( "Checksum failed on
download: local = '" + actualChecksum +
+ "'; remote = '" + expectedChecksum + "'" );
+ }
+ }
+ catch ( TransferFailedException e )
+ {
+ System.out.println( "Skipping checksum validation for " +
remotePath + ": " + e.getMessage() );
+ }
+ catch ( ResourceDoesNotExistException e )
+ {
+ System.out.println( "Skipping checksum validation for " +
remotePath + ": " + e.getMessage() );
+ }
+ catch ( AuthorizationException e )
+ {
+ System.out.println( "Skipping checksum validation for " +
remotePath + ": " + e.getMessage() );
+ }
+ catch ( IOException e )
+ {
+ throw new ChecksumFailedException( "Invalid checksum file", e );
+ }
+ }
+
+ private void disconnectWagon( Wagon wagon )
+ {
+ try
+ {
+ wagon.disconnect();
+ }
+ catch ( ConnectionException e )
+ {
+ System.err.println( "Problem disconnecting from wagon - ignoring:
" + e.getMessage() );
+ }
+ }
+}
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyException.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyException.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyException.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyException.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,18 @@
+package org.apache.maven.repository.proxy;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class ProxyException
+ extends Exception
+{
+ public ProxyException( String message )
+ {
+ super( message );
+ }
+
+ public ProxyException( String message, Throwable t )
+ {
+ super( message, t );
+ }
+}
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,20 @@
+package org.apache.maven.repository.proxy;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.File;
+
+/**
+ * @author Edwin Punzalan
+ */
+public interface ProxyManager
+{
+ File getArtifactFile( Artifact artifact )
+ throws TransferFailedException, ResourceDoesNotExistException,
IOException;
+ InputStream getArtifactAsStream( Artifact artifact )
+ throws TransferFailedException, ResourceDoesNotExistException,
IOException;
+}
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/configuration/ProxyConfiguration.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/configuration/ProxyConfiguration.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/configuration/ProxyConfiguration.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/configuration/ProxyConfiguration.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,76 @@
+package org.apache.maven.repository.proxy.configuration;
+
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.repository.proxy.repository.ProxyRepository;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Collections;
+
+/**
+ * @plexus.component
role="org.apache.maven.repository.proxy.configuration.ProxyConfiguration"
+ *
+ * @author Edwin Punzalan
+ */
+public class ProxyConfiguration
+{
+ public static final String ROLE = ProxyConfiguration.class.getName();
+
+ /** @plexus.requirement */
+ private ArtifactRepositoryFactory artifactRepositoryFactory;
+
+ private boolean browsable;
+ private ArtifactRepository repoCache;
+ private ArrayList repositories = new ArrayList();
+
+ public void setBrowsable( boolean browsable )
+ {
+ this.browsable = browsable;
+ }
+
+ public boolean isBrowsable()
+ {
+ return browsable;
+ }
+
+ public void setRepositoryCachePath( String repoCachePath )
+ {
+ ArtifactRepositoryPolicy standardPolicy;
+ standardPolicy = new ArtifactRepositoryPolicy( true,
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS,
+
ArtifactRepositoryPolicy.CHECKSUM_POLICY_IGNORE );
+
+ ArtifactRepositoryLayout layout = new DefaultRepositoryLayout();
+
+ repoCache = artifactRepositoryFactory.createArtifactRepository(
"localCache", repoCachePath, layout,
+
standardPolicy, standardPolicy );
+ }
+
+ public ArtifactRepository getRepositoryCache( )
+ {
+ return repoCache;
+ }
+
+ public String getRepositoryCachePath()
+ {
+ return repoCache.getBasedir();
+ }
+
+ public void addRepository( ProxyRepository repository )
+ {
+ repositories.add( repository );
+ }
+
+ public List getRepositories()
+ {
+ return Collections.unmodifiableList( repositories );
+ }
+
+ public void setRepositories( ArrayList repositories )
+ {
+ this.repositories = repositories;
+ }
+}
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/Checksum.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/Checksum.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/Checksum.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/Checksum.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,36 @@
+package org.apache.maven.repository.proxy.files;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class Checksum
+{
+ private String algorithm;
+
+ public Checksum( String algorithm )
+ {
+ this.setAlgorithm( algorithm );
+ }
+
+ public String getFileExtension()
+ {
+ if ( "MD5".equals( algorithm ) )
+ {
+ return "md5";
+ }
+ else
+ {
+ return "sha1";
+ }
+ }
+
+ public String getAlgorithm()
+ {
+ return algorithm;
+ }
+
+ public void setAlgorithm( String algorithm )
+ {
+ this.algorithm = algorithm;
+ }
+}
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/DefaultRepositoryFileManager.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/DefaultRepositoryFileManager.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/DefaultRepositoryFileManager.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/files/DefaultRepositoryFileManager.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,95 @@
+package org.apache.maven.repository.proxy.files;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class DefaultRepositoryFileManager
+{
+ /* @plexus.requirement */
+ private ArtifactFactory factory;
+
+ public Object getRequestedObjectFromPath( String path )
+ {
+ if ( path.endsWith( ".pom" ) )
+ {
+ return getArtifactFromPath( path );
+ }
+ else if ( path.endsWith( "ar" ) )
+ {
+ return getArtifactFromPath( path );
+ }
+ else if ( path.endsWith( ".md5" ) )
+ {
+ return new Checksum( "MD5" );
+ }
+ else if ( path.endsWith( ".sha1" ) )
+ {
+ return new Checksum( "SHA-1" );
+ }
+ else
+ {
+ //@todo handle metadata file requests
+ return null;
+ }
+ }
+
+ private Artifact getArtifactFromPath( String path )
+ {
+ List pathInfo = getReversedPathInfo( path );
+ String filename = getPathToken( pathInfo );
+ String version = getPathToken( pathInfo );
+ String artifactId = getPathToken( pathInfo );
+ String groupId = "";
+ while ( pathInfo.size() > 0 )
+ {
+ if ( groupId.length() == 0 )
+ {
+ groupId = "." + groupId;
+ }
+ else
+ {
+ groupId = getPathToken( pathInfo ) + "." + groupId;
+ }
+ }
+
+ return factory.createBuildArtifact( groupId, artifactId, version,
getFileExtension( filename ) );
+ }
+
+ private List getReversedPathInfo( String path )
+ {
+ List reversedPath = new ArrayList();
+
+ StringTokenizer tokenizer = new StringTokenizer( path, "/" );
+ while( tokenizer.hasMoreTokens() )
+ {
+ reversedPath.add( 0, tokenizer.nextToken() );
+ }
+
+ return reversedPath;
+ }
+
+ private String getPathToken( List path )
+ {
+ if ( path.size() > 0 )
+ {
+ return (String) path.remove( 0 );
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ private String getFileExtension( String filename )
+ {
+ int idx = filename.lastIndexOf( '.' );
+ return filename.substring( idx + 1 );
+ }
+}
Added:
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/repository/ProxyRepository.java
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/repository/ProxyRepository.java?rev=373670&view=auto
==============================================================================
---
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/repository/ProxyRepository.java
(added)
+++
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/repository/ProxyRepository.java
Mon Jan 30 18:13:38 2006
@@ -0,0 +1,38 @@
+package org.apache.maven.repository.proxy.repository;
+
+import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.wagon.observers.ChecksumObserver;
+import org.apache.maven.repository.proxy.files.Checksum;
+
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @author Edwin Punzalan
+ */
+public class ProxyRepository
+ extends DefaultArtifactRepository
+{
+ private Checksum checksum;
+
+ public ProxyRepository( String id, String url, ArtifactRepositoryLayout
layout )
+ {
+ super( id, url, layout );
+ }
+
+ public void setChecksum( String algorithm )
+ {
+ this.checksum = new Checksum( algorithm );
+ }
+
+ public Checksum getChecksum()
+ {
+ return checksum;
+ }
+
+ public ChecksumObserver getChecksumObserver()
+ throws NoSuchAlgorithmException
+ {
+ return new ChecksumObserver( checksum.getAlgorithm() );
+ }
+}
Modified: maven/repository-manager/trunk/pom.xml
URL:
http://svn.apache.org/viewcvs/maven/repository-manager/trunk/pom.xml?rev=373670&r1=373669&r2=373670&view=diff
==============================================================================
--- maven/repository-manager/trunk/pom.xml (original)
+++ maven/repository-manager/trunk/pom.xml Mon Jan 30 18:13:38 2006
@@ -137,6 +137,7 @@
<module>maven-repository-indexer</module>
<module>maven-repository-utils</module>
<module>maven-repository-webapp</module>
+ <module>maven-repository-proxy</module>
</modules>
<repositories>
<repository>