Author: jzurbano
Date: Fri Apr 29 11:30:08 2011
New Revision: 1097776

URL: http://svn.apache.org/viewvc?rev=1097776&view=rev
Log:
[MRM-1470] Ability to add a repository relative to Archiva's appserver.base 
without knowing it's filesystem location
* applied patch

Submitted by: Maria Catherine Tan


Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AbstractManagedRepositoriesAction.java
 Fri Apr 29 11:30:08 2011
@@ -20,11 +20,13 @@ package org.apache.maven.archiva.web.act
  */
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.codehaus.plexus.redback.role.RoleManager;
 import org.codehaus.plexus.redback.role.RoleManagerException;
+import org.codehaus.plexus.registry.Registry;
 
 import java.io.File;
 import java.io.IOException;
@@ -43,7 +45,14 @@ public abstract class AbstractManagedRep
      * @plexus.requirement role-hint="default"
      */
     protected RoleManager roleManager;
-    
+
+    /**
+     * Plexus registry to read the configuration from.
+     *
+     * @plexus.requirement role-hint="commons-configuration"
+     */
+    private Registry registry;
+
     public static final String CONFIRM = "confirm";
     
     public RoleManager getRoleManager()
@@ -56,6 +65,11 @@ public abstract class AbstractManagedRep
         this.roleManager = roleManager;
     }
 
+    public void setRegistry( Registry registry )
+    {
+        this.registry = registry;
+    }
+
     protected void addRepository( ManagedRepositoryConfiguration repository, 
Configuration configuration )
         throws IOException
     {
@@ -129,4 +143,13 @@ public abstract class AbstractManagedRep
 
         log.debug( "removed user roles associated with repository " + repoId );
     }
+
+    protected String removeExpressions( String directory )
+    {
+        String value = StringUtils.replace( directory, "${appserver.base}", 
registry.getString( "appserver.base",
+                                                                               
                 "${appserver.base}" ) );
+        value = StringUtils.replace( value, "${appserver.home}", 
registry.getString( "appserver.home",
+                                                                               
      "${appserver.home}" ) );
+        return value;
+    }
 }

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryAction.java
 Fri Apr 29 11:30:08 2011
@@ -74,6 +74,8 @@ public class AddManagedRepositoryAction
 
     public String commit()
     {
+        repository.setLocation( removeExpressions( repository.getLocation() ) 
);
+
         File location = new File( repository.getLocation() );
         if( location.exists() )
         {

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryAction.java
 Fri Apr 29 11:30:08 2011
@@ -100,6 +100,8 @@ public class EditManagedRepositoryAction
         boolean resetStats = false;
 
         // check if the location was changed
+        repository.setLocation( removeExpressions( repository.getLocation() ) 
);
+
         if ( !StringUtils.equalsIgnoreCase( 
existingConfig.getLocation().trim(), repository.getLocation().trim() ) )
         {
             resetStats = true;

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
 Fri Apr 29 11:30:08 2011
@@ -60,6 +60,7 @@
     <constructor-arg ref="repositoryStatisticsManager"/>
     <constructor-arg ref="repositoryMerger#maven2"/>
     <constructor-arg ref="auditListener#logging"/>
+    <constructor-arg ref="registry#commons-configuration"/>
 
   </bean>
 

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/AddManagedRepositoryActionTest.java
 Fri Apr 29 11:30:08 2011
@@ -30,6 +30,7 @@ import org.apache.maven.archiva.configur
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.apache.maven.archiva.web.action.AbstractActionTestCase;
 import org.codehaus.plexus.redback.role.RoleManager;
+import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
 import org.codehaus.redback.integration.interceptor.SecureActionException;
@@ -51,6 +52,10 @@ public class AddManagedRepositoryActionT
 
     private MockControl archivaConfigurationControl;
 
+    private Registry registry;
+
+    private MockControl registryControl;
+
     private ArchivaConfiguration archivaConfiguration;
     
     private static final String REPO_ID = "repo-ident";
@@ -72,6 +77,11 @@ public class AddManagedRepositoryActionT
         roleManagerControl = MockControl.createControl( RoleManager.class );
         roleManager = (RoleManager) roleManagerControl.getMock();
         action.setRoleManager( roleManager );
+
+        registryControl = MockControl.createControl( Registry.class );
+        registry = (Registry) registryControl.getMock();
+        action.setRegistry( registry );
+
         location = getTestFile( "target/test/location" );
     }
 
@@ -131,6 +141,13 @@ public class AddManagedRepositoryActionT
 
         roleManagerControl.replay();
 
+        registry.getString( "appserver.base", "${appserver.base}" );
+        registryControl.setReturnValue( "target/test" );
+        registry.getString( "appserver.home", "${appserver.home}" );
+        registryControl.setReturnValue( "target/test" );
+
+        registryControl.replay();
+
         Configuration configuration = new Configuration();
         archivaConfiguration.getConfiguration();
         archivaConfigurationControl.setReturnValue( configuration );
@@ -146,11 +163,13 @@ public class AddManagedRepositoryActionT
         assertFalse( location.exists() );
         String status = action.commit();
         assertEquals( Action.SUCCESS, status );
-        assertTrue( location.exists() );        
+        assertTrue( location.exists() );
         assertEquals( Collections.singletonList( repository ), 
configuration.getManagedRepositories() );
+        assertEquals( location.getCanonicalPath(), new File( 
repository.getLocation() ).getCanonicalPath() );
 
         roleManagerControl.verify();
         archivaConfigurationControl.verify();
+        registryControl.verify();
     }
     
     
@@ -160,8 +179,15 @@ public class AddManagedRepositoryActionT
         if( !location.exists() )
         {
             location.mkdirs();
-        }        
-    
+        }
+
+        registry.getString( "appserver.base", "${appserver.base}" );
+        registryControl.setReturnValue( "target/test" );
+        registry.getString( "appserver.home", "${appserver.home}" );
+        registryControl.setReturnValue( "target/test" );
+
+        registryControl.replay();
+
         action.prepare();
         ManagedRepositoryConfiguration repository = action.getRepository();
         populateRepository( repository );
@@ -169,13 +195,15 @@ public class AddManagedRepositoryActionT
         assertTrue( location.exists() );
         String status = action.commit();
         assertEquals( AddManagedRepositoryAction.CONFIRM, status );
+        assertEquals( location.getCanonicalPath(), new File( 
repository.getLocation() ).getCanonicalPath() );
+        registryControl.verify();
     }
     
     private void populateRepository( ManagedRepositoryConfiguration repository 
)
     {
         repository.setId( REPO_ID );
         repository.setName( "repo name" );
-        repository.setLocation( location.getAbsolutePath() );
+        repository.setLocation( "${appserver.base}/location" );
         repository.setLayout( "default" );
         repository.setRefreshCronExpression( "* 0/5 * * * ?" );
         repository.setDaysOlder( 31 );

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp/src/test/java/org/apache/maven/archiva/web/action/admin/repositories/EditManagedRepositoryActionTest.java
 Fri Apr 29 11:30:08 2011
@@ -32,6 +32,7 @@ import org.apache.maven.archiva.configur
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.apache.maven.archiva.web.action.AbstractActionTestCase;
 import org.codehaus.plexus.redback.role.RoleManager;
+import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
 import org.codehaus.redback.integration.interceptor.SecureActionException;
@@ -62,6 +63,10 @@ public class EditManagedRepositoryAction
 
     private ArchivaConfiguration archivaConfiguration;
 
+    private Registry registry;
+
+    private MockControl registryControl;
+    
     private static final String REPO_ID = "repo-ident";
 
     private File location;
@@ -82,6 +87,11 @@ public class EditManagedRepositoryAction
         roleManagerControl = MockControl.createControl( RoleManager.class );
         roleManager = (RoleManager) roleManagerControl.getMock();
         action.setRoleManager( roleManager );
+
+        registryControl = MockControl.createControl( Registry.class );
+        registry = (Registry) registryControl.getMock();
+        action.setRegistry( registry );
+
         location = getTestFile( "target/test/location" );
 
         metadataRepository = mock( MetadataRepository.class );
@@ -124,7 +134,10 @@ public class EditManagedRepositoryAction
         assertEquals( REPO_ID, action.getRepoid() );
         ManagedRepositoryConfiguration repository = action.getRepository();
         assertNotNull( repository );
-        assertRepositoryEquals( repository, createRepository() );
+
+        ManagedRepositoryConfiguration newRepository = createRepository();
+        assertRepositoryEquals( repository, newRepository );
+        assertEquals( repository.getLocation(), newRepository.getLocation() );
 
         String status = action.input();
         assertEquals( Action.INPUT, status );
@@ -154,6 +167,13 @@ public class EditManagedRepositoryAction
 
         roleManagerControl.replay();
 
+        registry.getString( "appserver.base", "${appserver.base}" );
+        registryControl.setReturnValue( "target/test" );
+        registry.getString( "appserver.home", "${appserver.home}" );
+        registryControl.setReturnValue( "target/test" );
+
+        registryControl.replay();
+
         Configuration configuration = createConfigurationForEditing( 
createRepository() );
         archivaConfiguration.getConfiguration();
         archivaConfigurationControl.setReturnValue( configuration );
@@ -191,10 +211,12 @@ public class EditManagedRepositoryAction
         newRepository.setName( "new repo name" );
         assertRepositoryEquals( repository, newRepository );
         assertEquals( Collections.singletonList( repository ), 
configuration.getManagedRepositories() );
+        assertEquals( location.getCanonicalPath(), new File( 
repository.getLocation() ).getCanonicalPath() );
 
         roleManagerControl.verify();
         archivaConfigurationControl.verify();
         repositoryStatisticsManagerControl.verify();
+        registryControl.verify();
     }
 
     public void testEditRepositoryLocationChanged()
@@ -219,6 +241,13 @@ public class EditManagedRepositoryAction
 
         roleManagerControl.replay();
 
+        registry.getString( "appserver.base", "${appserver.base}" );
+        registryControl.setReturnValue( "target/test" );
+        registry.getString( "appserver.home", "${appserver.home}" );
+        registryControl.setReturnValue( "target/test" );
+
+        registryControl.replay();
+
         Configuration configuration = createConfigurationForEditing( 
createRepository() );
         archivaConfiguration.getConfiguration();
         archivaConfigurationControl.setReturnValue( configuration );
@@ -250,15 +279,17 @@ public class EditManagedRepositoryAction
         populateRepository( repository );
         File testFile = getTestFile( "target/test/location/new" );
         FileUtils.deleteDirectory( testFile );
-        repository.setLocation( testFile.getCanonicalPath() );
+        repository.setLocation( "${appserver.base}/location/new" );
         action.setRepository( repository );
         String status = action.commit();
         assertEquals( Action.SUCCESS, status );
         assertEquals( Collections.singletonList( repository ), 
configuration.getManagedRepositories() );
+        assertEquals( testFile.getCanonicalPath(), new File( 
repository.getLocation() ).getCanonicalPath() );
 
         roleManagerControl.verify();
         archivaConfigurationControl.verify();
         repositoryStatisticsManagerControl.verify();
+        registryControl.verify();
     }
 
     private void assertRepositoryEquals( ManagedRepositoryConfiguration 
expectedRepository,
@@ -268,7 +299,6 @@ public class EditManagedRepositoryAction
         assertEquals( expectedRepository.getId(), actualRepository.getId() );
         assertEquals( expectedRepository.getIndexDir(), 
actualRepository.getIndexDir() );
         assertEquals( expectedRepository.getLayout(), 
actualRepository.getLayout() );
-        assertEquals( expectedRepository.getLocation(), 
actualRepository.getLocation() );
         assertEquals( expectedRepository.getName(), actualRepository.getName() 
);
         assertEquals( expectedRepository.getRefreshCronExpression(), 
actualRepository.getRefreshCronExpression() );
         assertEquals( expectedRepository.getRetentionCount(), 
actualRepository.getRetentionCount() );
@@ -310,7 +340,7 @@ public class EditManagedRepositoryAction
     {
         repository.setId( REPO_ID );
         repository.setName( "repo name" );
-        repository.setLocation( location.getCanonicalPath() );
+        repository.setLocation( "${appserver.base}/location" );
         repository.setLayout( "default" );
         repository.setRefreshCronExpression( "* 0/5 * * * ?" );
         repository.setDaysOlder( 31 );
@@ -326,7 +356,7 @@ public class EditManagedRepositoryAction
     {
         repository.setId( REPO_ID + "-stage" );
         repository.setName( "repo name" );
-        repository.setLocation( location.getCanonicalPath() );
+        repository.setLocation( "${appserver.base}/location" );
         repository.setLayout( "default" );
         repository.setRefreshCronExpression( "* 0/5 * * * ?" );
         repository.setDaysOlder( 31 );

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImpl.java
 Fri Apr 29 11:30:08 2011
@@ -53,6 +53,7 @@ import org.apache.maven.archiva.reposito
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
 import org.apache.maven.archiva.repository.RepositoryException;
 import org.apache.maven.archiva.repository.RepositoryNotFoundException;
+import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.registry.RegistryException;
 import org.codehaus.plexus.scheduler.CronExpressionValidator;
 import org.slf4j.Logger;
@@ -96,13 +97,16 @@ public class AdministrationServiceImpl
 
     private RepositorySessionFactory repositorySessionFactory;
 
+    private Registry registry;
+
     public AdministrationServiceImpl( ArchivaConfiguration archivaConfig, 
RepositoryContentConsumers repoConsumersUtil,
                                       RepositoryContentFactory repoFactory,
                                       RepositorySessionFactory 
repositorySessionFactory,
                                       RepositoryArchivaTaskScheduler 
repositoryTaskScheduler,
                                       Collection<RepositoryListener> listeners,
                                       RepositoryStatisticsManager 
repositoryStatisticsManager,
-                                      RepositoryMerger repositoryMerger, 
AuditListener auditListener )
+                                      RepositoryMerger repositoryMerger, 
AuditListener auditListener,
+                                      Registry registry )
     {
         this.archivaConfiguration = archivaConfig;
         this.repoConsumersUtil = repoConsumersUtil;
@@ -113,6 +117,7 @@ public class AdministrationServiceImpl
         this.repositoryStatisticsManager = repositoryStatisticsManager;
         this.repositoryMerger = repositoryMerger;
         this.auditListener = auditListener;
+        this.registry = registry;
     }
 
     /**
@@ -389,7 +394,7 @@ public class AdministrationServiceImpl
         repository.setReleases( releasesIncluded );
         repository.setSnapshots( snapshotsIncluded );
         repository.setName( name );
-        repository.setLocation( location );
+        repository.setLocation( removeExpressions( location ) );
         repository.setLayout( layout );
         repository.setRefreshCronExpression( cronExpression );
 
@@ -730,4 +735,13 @@ public class AdministrationServiceImpl
         stagingRepository.setSnapshots( repository.isSnapshots() );
         return stagingRepository;
     }
+
+    private String removeExpressions( String directory )
+    {
+        String value = StringUtils.replace( directory, "${appserver.base}", 
registry.getString( "appserver.base",
+                                                                               
                 "${appserver.base}" ) );
+        value = StringUtils.replace( value, "${appserver.home}", 
registry.getString( "appserver.home",
+                                                                               
      "${appserver.home}" ) );
+        return value;
+    }
 }

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java?rev=1097776&r1=1097775&r2=1097776&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/AdministrationServiceImplTest.java
 Fri Apr 29 11:30:08 2011
@@ -52,6 +52,7 @@ import org.apache.maven.archiva.reposito
 import 
org.apache.maven.archiva.repository.content.ManagedLegacyRepositoryContent;
 import org.apache.maven.archiva.repository.content.PathParser;
 import org.apache.maven.archiva.repository.layout.LayoutException;
+import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
 import org.easymock.MockControl;
 import org.easymock.classextension.MockClassControl;
@@ -132,6 +133,10 @@ public class AdministrationServiceImplTe
 
     private AuditListener auditListener;
 
+    private MockControl registryControl;
+
+    private Registry registry;
+
     private static final String STAGE = "-stage";
 
     protected void setUp()
@@ -185,10 +190,13 @@ public class AdministrationServiceImplTe
         auditListenerControl = MockControl.createControl( AuditListener.class 
);
         auditListener = (AuditListener) auditListenerControl.getMock();
 
+        registryControl = MockControl.createControl( Registry.class );
+        registry = (Registry) registryControl.getMock();
+
         service = new AdministrationServiceImpl( archivaConfig, 
repoConsumersUtil, repositoryFactory,
                                                  repositorySessionFactory, 
repositoryTaskScheduler,
                                                  Collections.singletonList( 
listener ), repositoryStatisticsManager,
-                                                 repositoryMerger, 
auditListener );
+                                                 repositoryMerger, 
auditListener, registry );
     }
 
     /* Tests for repository consumers */
@@ -897,6 +905,7 @@ public class AdministrationServiceImplTe
         String name = projId + " Releases";
         String releaseLocation = "target/test-repository/" + projId + 
".releases";
         String stageLocation = releaseLocation + "-stage";
+        String appserverBase = "target";
 
         ManagedRepositoryConfiguration managedRepo = createManagedRepo( 
"repo1", "default", "repo", true, false );
         RemoteRepositoryConfiguration remoteRepo = createRemoteRepository( 
"central", "Central Repository", "default",
@@ -917,6 +926,8 @@ public class AdministrationServiceImplTe
         configControl.expectAndReturn( config.getManagedRepositoriesAsMap(), 
managedRepoMap );
         configControl.expectAndReturn( config.getRemoteRepositoriesAsMap(), 
remoteRepoMap );
         configControl.expectAndReturn( config.getRepositoryGroupsAsMap(), 
repoGroupMap );
+        registryControl.expectAndReturn( registry.getString( "appserver.base", 
"${appserver.base}" ), appserverBase );
+        registryControl.expectAndReturn( registry.getString( "appserver.home", 
"${appserver.home}" ), appserverBase );
         config.addManagedRepository( managedRepo );
         configControl.setMatcher( MockControl.ALWAYS_MATCHER );
         configControl.setVoidCallable();
@@ -928,15 +939,18 @@ public class AdministrationServiceImplTe
 
         archivaConfigControl.replay();
         configControl.replay();
+        registryControl.replay();
         assertFalse( new File( releaseLocation ).isDirectory() );
         assertFalse( new File( stageLocation ).isDirectory() );
-        boolean success = service.addManagedRepository( repoId, layout, name, 
releaseLocation, true, true, false, true,
+        boolean success = service.addManagedRepository( repoId, layout, name, 
"${appserver.base}/test-repository/" + projId + ".releases", true, true, false, 
true,
                                                         "0 15 3 * * ? *" );
         assertTrue( success );
         assertTrue( new File( releaseLocation ).isDirectory() );
         assertTrue( new File( stageLocation ).isDirectory() );
         new File( releaseLocation ).delete();
         new File( stageLocation ).delete();
+
+        registryControl.verify();
     }
 
     /* private methods */


Reply via email to