Author: epunzalan Date: Tue Feb 7 18:10:14 2006 New Revision: 375827 URL: http://svn.apache.org/viewcvs?rev=375827&view=rev Log: PR: MRM-43
Added a factory and made sure the proxy instance will always have a configuration when run. Current unit tests status also included. Added: maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManagerFactory.java maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/DefaultProxyManagerTest.java Modified: 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/ProxyManager.java maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/configuration/ProxyConfigurationTest.java Modified: 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=375827&r1=375826&r2=375827&view=diff ============================================================================== --- maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java (original) +++ maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java Tue Feb 7 18:10:14 2006 @@ -45,7 +45,7 @@ /** * @author Edwin Punzalan - * @plexus.component role="org.apache.maven.repository.proxy.ProxyManager" + * @plexus.component role="org.apache.maven.repository.proxy.ProxyManager" role-hint="default" */ public class DefaultProxyManager extends AbstractLogEnabled @@ -54,7 +54,7 @@ /** * @plexus.requirement */ - private WagonManager wagon; + private WagonManager wagonManager; /** * @plexus.requirement @@ -63,14 +63,14 @@ private ProxyConfiguration config; - /** - * Constructor. - * - * @param configuration the configuration object to base the behavior of this instance - */ - public DefaultProxyManager( ProxyConfiguration configuration ) + public void setConfiguration( ProxyConfiguration config ) { - config = configuration; + this.config = config; + } + + public ProxyConfiguration getConfiguration() + { + return config; } /** @@ -79,7 +79,9 @@ public File get( String path ) throws ProxyException, ResourceDoesNotExistException { - //@todo use wagon for cache use file:// as URL + checkConfiguration(); + + //@todo use wagonManager for cache use file:// as URL String cachePath = config.getRepositoryCachePath(); File cachedFile = new File( cachePath, path ); if ( !cachedFile.exists() ) @@ -95,6 +97,8 @@ public File getRemoteFile( String path ) throws ProxyException, ResourceDoesNotExistException { + checkConfiguration(); + Artifact artifact = ArtifactUtils.buildArtifact( path, artifactFactory ); File remoteFile; @@ -135,7 +139,7 @@ { try { - wagon.getArtifact( artifact, config.getRepositories() ); + wagonManager.getArtifact( artifact, config.getRepositories() ); } catch ( TransferFailedException e ) { @@ -190,9 +194,9 @@ try { - wagon = this.wagon.getWagon( repository.getProtocol() ); + wagon = wagonManager.getWagon( repository.getProtocol() ); - //@todo configure wagon + //@todo configure wagonManager if ( useChecksum ) { @@ -249,7 +253,7 @@ } catch ( UnsupportedProtocolException e ) { - getLogger().info( "Skipping repository " + repository.getUrl() + ": no wagon configured for protocol " + + getLogger().info( "Skipping repository " + repository.getUrl() + ": no wagonManager configured for protocol " + repository.getProtocol() ); } finally @@ -270,10 +274,10 @@ } /** - * Used to add checksum observers as transfer listeners to the wagon object + * Used to add checksum observers as transfer listeners to the wagonManager object * - * @param wagon the wagon object to use the checksum with - * @return map of ChecksumObservers added into the wagon transfer listeners + * @param wagon the wagonManager object to use the checksum with + * @return map of ChecksumObservers added into the wagonManager transfer listeners */ private Map prepareChecksums( Wagon wagon ) { @@ -296,10 +300,10 @@ } /** - * Used to remove the ChecksumObservers from the wagon object + * Used to remove the ChecksumObservers from the wagonManager object * - * @param wagon the wagon object to remote the ChecksumObservers from - * @param checksumMap the map representing the list of ChecksumObservers added to the wagon object + * @param wagon the wagonManager object to remote the ChecksumObservers from + * @param checksumMap the map representing the list of ChecksumObservers added to the wagonManager object */ private void releaseChecksums( Wagon wagon, Map checksumMap ) { @@ -311,11 +315,11 @@ } /** - * Used to request the wagon object to connect to a repository + * Used to request the wagonManager object to connect to a repository * - * @param wagon the wagon object that will be used to connect to the repository - * @param repository the repository object to connect the wagon to - * @return true when the wagon is able to connect to the repository + * @param wagon the wagonManager object that will be used to connect to the repository + * @param repository the repository object to connect the wagonManager to + * @return true when the wagonManager is able to connect to the repository */ private boolean connectToRepository( Wagon wagon, ProxyRepository repository ) { @@ -338,11 +342,11 @@ } /** - * Used to verify the checksum during a wagon download + * Used to verify the checksum during a wagonManager download * - * @param checksumMap the map of ChecksumObservers present in the wagon as transferlisteners + * @param checksumMap the map of ChecksumObservers present in the wagonManager as transferlisteners * @param path path of the remote object whose checksum is to be verified - * @param wagon the wagon object used to download the requested path + * @param wagon the wagonManager object used to download the requested path * @return true when the checksum succeeds and false when the checksum failed. */ private boolean doChecksumCheck( Map checksumMap, String path, Wagon wagon ) @@ -413,10 +417,19 @@ return true; } + private void checkConfiguration() + throws ProxyException + { + if ( config == null ) + { + throw new ProxyException( "No proxy configuration defined." ); + } + } + /** - * Used to disconnect the wagon from its repository + * Used to disconnect the wagonManager from its repository * - * @param wagon the connected wagon object + * @param wagon the connected wagonManager object */ private void disconnectWagon( Wagon wagon ) { @@ -426,7 +439,7 @@ } catch ( ConnectionException e ) { - getLogger().error( "Problem disconnecting from wagon - ignoring: " + e.getMessage() ); + getLogger().error( "Problem disconnecting from wagonManager - ignoring: " + e.getMessage() ); } } } Modified: 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=375827&r1=375826&r2=375827&view=diff ============================================================================== --- maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java (original) +++ maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManager.java Tue Feb 7 18:10:14 2006 @@ -17,6 +17,7 @@ */ import org.apache.maven.wagon.ResourceDoesNotExistException; +import org.apache.maven.repository.proxy.configuration.ProxyConfiguration; import java.io.File; @@ -27,6 +28,8 @@ */ public interface ProxyManager { + static String ROLE = ProxyManager.class.getName(); + /** * Used to retrieve a cached path or retrieve one if the cache does not contain it yet. * @@ -36,7 +39,7 @@ * @throws ResourceDoesNotExistException when the requested object can't be found in any of the * configured repositories */ - public File get( String path ) + File get( String path ) throws ProxyException, ResourceDoesNotExistException; /** @@ -49,6 +52,20 @@ * @throws ResourceDoesNotExistException when the requested object can't be found in any of the * configured repositories */ - public File getRemoteFile( String path ) + File getRemoteFile( String path ) throws ProxyException, ResourceDoesNotExistException; + + /** + * Used by the factory to set the configuration of the proxy + * + * @param config the ProxyConfiguration to set the behavior of the proxy + */ + void setConfiguration( ProxyConfiguration config ); + + /** + * Used to retrieve the configuration describing the behavior of the proxy + * + * @return the ProxyConfiguration of this proxy + */ + ProxyConfiguration getConfiguration(); } Added: maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManagerFactory.java URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManagerFactory.java?rev=375827&view=auto ============================================================================== --- maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManagerFactory.java (added) +++ maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxyManagerFactory.java Tue Feb 7 18:10:14 2006 @@ -0,0 +1,52 @@ +package org.apache.maven.repository.proxy; + +/* + * 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. + */ + +import org.apache.maven.repository.proxy.configuration.ProxyConfiguration; +import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; +import org.codehaus.plexus.context.Context; +import org.codehaus.plexus.context.ContextException; +import org.codehaus.plexus.PlexusContainer; +import org.codehaus.plexus.PlexusConstants; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; + +/** + * @author Edwin Punzalan + * + * @plexus.component role="org.apache.maven.repository.proxy.ProxyManagerFactory" + */ +public class ProxyManagerFactory + implements Contextualizable +{ + public static String ROLE = "org.apache.maven.repository.proxy.ProxyManagerFactory"; + + private PlexusContainer container; + + public ProxyManager getProxyManager( String proxy_type, ProxyConfiguration config ) + throws ComponentLookupException + { + ProxyManager proxy = (ProxyManager) container.lookup( ProxyManager.ROLE, proxy_type ); + proxy.setConfiguration( config ); + return proxy; + } + + public void contextualize( Context context ) + throws ContextException + { + container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); + } +} Added: maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/DefaultProxyManagerTest.java URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/DefaultProxyManagerTest.java?rev=375827&view=auto ============================================================================== --- maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/DefaultProxyManagerTest.java (added) +++ maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/DefaultProxyManagerTest.java Tue Feb 7 18:10:14 2006 @@ -0,0 +1,96 @@ +package org.apache.maven.repository.proxy; + +import org.codehaus.plexus.PlexusTestCase; +import org.codehaus.plexus.component.repository.exception.ComponentLookupException; +import org.apache.maven.repository.proxy.configuration.ProxyConfiguration; +import org.apache.maven.wagon.ResourceDoesNotExistException; + +/* + * 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. + */ + +/** + * @author Edwin Punzalan + */ +public class DefaultProxyManagerTest + extends PlexusTestCase +{ + private ProxyManager proxy; + + protected void setUp() + throws Exception + { + super.setUp(); + + ProxyManagerFactory factory = (ProxyManagerFactory) container.lookup( ProxyManagerFactory.ROLE ); + proxy = factory.getProxyManager( "default", getTestConfiguration() ); + } + + public void testExceptions() + { + proxy.setConfiguration( null ); + + try + { + proxy.get( "/invalid" ); + fail( "Expected empty configuration error." ); + } + catch ( ProxyException e ) + { + assertEquals( "Expected Exception not thrown.", "No proxy configuration defined.", e.getMessage() ); + } + catch ( ResourceDoesNotExistException e ) + { + fail( "Expected Exception not thrown." ); + } + + try + { + proxy.getRemoteFile( "/invalid" ); + fail( "Expected empty configuration error." ); + } + catch ( ProxyException e ) + { + assertEquals( "Expected Exception not thrown.", "No proxy configuration defined.", e.getMessage() ); + } + catch ( ResourceDoesNotExistException e ) + { + fail( "Expected Exception not thrown." ); + } + } + + public void testCache() + { + + } + + protected void tearDown() + throws Exception + { + container.release( proxy ); + + super.tearDown(); + } + + private ProxyConfiguration getTestConfiguration() + throws ComponentLookupException + { + ProxyConfiguration config = (ProxyConfiguration) container.lookup( ProxyConfiguration.ROLE ); + + config.setRepositoryCachePath( "target/proxy-cache" ); + + return config; + } +} Modified: maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/configuration/ProxyConfigurationTest.java URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/configuration/ProxyConfigurationTest.java?rev=375827&r1=375826&r2=375827&view=diff ============================================================================== --- maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/configuration/ProxyConfigurationTest.java (original) +++ maven/repository-manager/trunk/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/configuration/ProxyConfigurationTest.java Tue Feb 7 18:10:14 2006 @@ -52,7 +52,6 @@ File cacheFile = new File( "target/proxy-cache" ); config.setRepositoryCachePath( "file://" + cacheFile.getAbsolutePath() ); ArtifactRepository cache = config.getRepositoryCache(); - System.out.println( cache.getUrl() ); assertEquals( cacheFile.getAbsolutePath(), cache.getBasedir() ); assertEquals( config.getRepositoryCachePath(), cache.getBasedir() ); }