You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2007/09/12 11:33:55 UTC

svn commit: r574859 [4/5] - in /maven/archiva/trunk: ./ archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/ archiva-base/archiva-configuration/src/main/java/org/apache/maven/archiva/configuration/functors/ archiva-b...

Modified: maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java (original)
+++ maven/archiva/trunk/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/DefaultArchivaTaskScheduler.java Wed Sep 12 02:33:41 2007
@@ -22,7 +22,7 @@
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.maven.archiva.common.ArchivaException;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.scheduled.tasks.ArchivaTask;
 import org.apache.maven.archiva.scheduled.tasks.DatabaseTask;
 import org.apache.maven.archiva.scheduled.tasks.RepositoryTask;
@@ -48,7 +48,7 @@
 import java.util.List;
 
 /**
- * Default implementation of a scheduling component for archiva..
+ * Default implementation of a scheduling component for archiva.
  *
  * @author <a href="mailto:brett@apache.org">Brett Porter</a>
  * @author <a href="mailto:jmcconnell@apache.org">Jesse McConnell</a>
@@ -97,13 +97,13 @@
     {
         try
         {
-            List repositories = archivaConfiguration.getConfiguration().getRepositories();
+            List repositories = archivaConfiguration.getConfiguration().getManagedRepositories();
 
             for ( Iterator i = repositories.iterator(); i.hasNext(); )
             {
-                RepositoryConfiguration repoConfig = (RepositoryConfiguration) i.next();
+                ManagedRepositoryConfiguration repoConfig = (ManagedRepositoryConfiguration) i.next();
 
-                if ( repoConfig.isManaged() && repoConfig.isIndexed() )
+                if ( repoConfig.isIndexed() )
                 {
                     scheduleRepositoryJobs( repoConfig );
                 }
@@ -117,7 +117,7 @@
         }
     }
 
-    private void scheduleRepositoryJobs( RepositoryConfiguration repoConfig )
+    private void scheduleRepositoryJobs( ManagedRepositoryConfiguration repoConfig )
         throws SchedulerException
     {
         if ( repoConfig.getRefreshCronExpression() == null )
@@ -132,15 +132,14 @@
         CronExpressionValidator cronValidator = new CronExpressionValidator();
         if ( !cronValidator.validate( cronString ) )
         {
-            getLogger().warn(
-                              "Cron expression [" + cronString + "] for repository [" + repoConfig.getId()
-                                  + "] is invalid.  Defaulting to hourly." );
+            getLogger().warn( "Cron expression [" + cronString + "] for repository [" + repoConfig.getId() +
+                "] is invalid.  Defaulting to hourly." );
             cronString = CRON_HOURLY;
         }
 
         // setup the unprocessed artifact job
-        JobDetail repositoryJob = new JobDetail( REPOSITORY_JOB + ":" + repoConfig.getId(), REPOSITORY_SCAN_GROUP,
-                                                 RepositoryTaskJob.class );
+        JobDetail repositoryJob =
+            new JobDetail( REPOSITORY_JOB + ":" + repoConfig.getId(), REPOSITORY_SCAN_GROUP, RepositoryTaskJob.class );
 
         JobDataMap dataMap = new JobDataMap();
         dataMap.put( RepositoryTaskJob.TASK_QUEUE, repositoryScanningQueue );
@@ -150,16 +149,16 @@
 
         try
         {
-            CronTrigger trigger = new CronTrigger( REPOSITORY_JOB_TRIGGER + ":" + repoConfig.getId(),
-                                                   REPOSITORY_SCAN_GROUP, cronString );
+            CronTrigger trigger =
+                new CronTrigger( REPOSITORY_JOB_TRIGGER + ":" + repoConfig.getId(), REPOSITORY_SCAN_GROUP, cronString );
 
             scheduler.scheduleJob( repositoryJob, trigger );
         }
         catch ( ParseException e )
         {
             getLogger().error(
-                               "ParseException in repository scanning cron expression, disabling repository scanning for '"
-                                   + repoConfig.getId() + "': " + e.getMessage() );
+                "ParseException in repository scanning cron expression, disabling repository scanning for '" +
+                    repoConfig.getId() + "': " + e.getMessage() );
         }
 
     }
@@ -180,8 +179,7 @@
         if ( !cronValidator.validate( cronString ) )
         {
             getLogger().warn(
-                              "Cron expression [" + cronString
-                                  + "] for database update is invalid.  Defaulting to hourly." );
+                "Cron expression [" + cronString + "] for database update is invalid.  Defaulting to hourly." );
             cronString = CRON_HOURLY;
         }
 
@@ -194,8 +192,7 @@
         catch ( ParseException e )
         {
             getLogger().error(
-                               "ParseException in database scanning cron expression, disabling database scanning: "
-                                   + e.getMessage() );
+                "ParseException in database scanning cron expression, disabling database scanning: " + e.getMessage() );
         }
 
     }
@@ -219,7 +216,7 @@
     }
 
     /**
-     * 
+     *
      */
     public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
@@ -245,11 +242,11 @@
         // currently we have to reschedule all repo jobs because we don't know where the changed one came from
         if ( "refreshCronExpression".equals( propertyName ) )
         {
-            List repositories = archivaConfiguration.getConfiguration().getRepositories();
+            List repositories = archivaConfiguration.getConfiguration().getManagedRepositories();
 
             for ( Iterator i = repositories.iterator(); i.hasNext(); )
             {
-                RepositoryConfiguration repoConfig = (RepositoryConfiguration) i.next();
+                ManagedRepositoryConfiguration repoConfig = (ManagedRepositoryConfiguration) i.next();
 
                 if ( repoConfig.getRefreshCronExpression() != null )
                 {
@@ -268,27 +265,6 @@
         }
     }
 
-    public void scheduleAllRepositoryTasks()
-        throws TaskExecutionException
-    {
-        try
-        {
-            List repositories = archivaConfiguration.getConfiguration().getRepositories();
-
-            for ( Iterator i = repositories.iterator(); i.hasNext(); )
-            {
-                RepositoryConfiguration repoConfig = (RepositoryConfiguration) i.next();
-
-                scheduleRepositoryJobs( repoConfig );
-            }
-
-        }
-        catch ( SchedulerException e )
-        {
-            throw new TaskExecutionException( "Unable to schedule repository jobs: " + e.getMessage(), e );
-        }
-    }
-
     public void scheduleDatabaseTasks()
         throws TaskExecutionException
     {
@@ -300,22 +276,6 @@
         {
             throw new TaskExecutionException( "Unable to schedule repository jobs: " + e.getMessage(), e );
 
-        }
-    }
-
-    public void scheduleRepositoryTask( String repositoryId )
-        throws TaskExecutionException
-    {
-        try
-        {
-            RepositoryConfiguration repoConfig = archivaConfiguration.getConfiguration()
-                .findRepositoryById( repositoryId );
-
-            scheduleRepositoryJobs( repoConfig );
-        }
-        catch ( SchedulerException e )
-        {
-            throw new TaskExecutionException( "Unable to schedule repository jobs: " + e.getMessage(), e );
         }
     }
 

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/pom.xml Wed Sep 12 02:33:41 2007
@@ -218,6 +218,30 @@
       <version>1.6.2</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus.redback</groupId>
+      <artifactId>redback-keys-memory</artifactId>
+      <version>${redback.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus.redback</groupId>
+      <artifactId>redback-rbac-memory</artifactId>
+      <version>${redback.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus.redback</groupId>
+      <artifactId>redback-users-memory</artifactId>
+      <version>${redback.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <!-- Test Deps -->
+    <dependency>
+      <groupId>easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
@@ -374,18 +398,6 @@
               <instantiation-strategy>per-lookup</instantiation-strategy>
             </roleDefault>
           </roleDefaults>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <!-- TODO! add unit tests -->
-        <configuration>
-          <instrumentation>
-            <excludes>
-              <exclude>**/**</exclude>
-            </excludes>
-          </instrumentation>
         </configuration>
       </plugin>
       <plugin>

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ConfigureProxyConnectorAction.java Wed Sep 12 02:33:41 2007
@@ -20,19 +20,14 @@
  */
 
 import com.opensymphony.xwork.Preparable;
-import org.apache.commons.collections.Closure;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.functors.IfClosure;
 import org.apache.commons.collections.functors.NotPredicate;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
-import org.apache.maven.archiva.configuration.NetworkProxyConfiguration;
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
 import org.apache.maven.archiva.configuration.functors.ProxyConnectorSelectionPredicate;
-import org.apache.maven.archiva.configuration.functors.RemoteRepositoryPredicate;
-import org.apache.maven.archiva.configuration.functors.RepositoryIdListClosure;
 import org.apache.maven.archiva.policies.DownloadPolicy;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
@@ -106,7 +101,7 @@
     /**
      * The list of local repository ids.
      */
-    private List localRepoIdList = new ArrayList();
+    private List managedRepoIdList = new ArrayList();
 
     /**
      * The list of remote repository ids.
@@ -301,9 +296,9 @@
         return connector;
     }
 
-    public List getLocalRepoIdList()
+    public List getManagedRepoIdList()
     {
-        return localRepoIdList;
+        return managedRepoIdList;
     }
 
     public String getMode()
@@ -396,35 +391,13 @@
         Configuration config = archivaConfiguration.getConfiguration();
 
         // Gather Network Proxy Ids.
-
         this.proxyIdOptions = new ArrayList();
         this.proxyIdOptions.add( DIRECT_CONNECTION );
-
-        Closure addProxyIds = new Closure()
-        {
-            public void execute( Object input )
-            {
-                if ( input instanceof NetworkProxyConfiguration )
-                {
-                    NetworkProxyConfiguration netproxy = (NetworkProxyConfiguration) input;
-                    proxyIdOptions.add( netproxy.getId() );
-                }
-            }
-        };
-
-        CollectionUtils.forAllDo( config.getNetworkProxies(), addProxyIds );
+        this.proxyIdOptions.addAll( config.getNetworkProxiesAsMap().keySet() );
 
         // Gather Local & Remote Repo Ids.
-
-        RepositoryIdListClosure remoteRepoIdList = new RepositoryIdListClosure( new ArrayList() );
-        RepositoryIdListClosure localRepoIdList = new RepositoryIdListClosure( new ArrayList() );
-        Closure repoIfClosure =
-            IfClosure.getInstance( RemoteRepositoryPredicate.getInstance(), remoteRepoIdList, localRepoIdList );
-
-        CollectionUtils.forAllDo( config.getRepositories(), repoIfClosure );
-
-        this.remoteRepoIdList = remoteRepoIdList.getList();
-        this.localRepoIdList = localRepoIdList.getList();
+        this.remoteRepoIdList = new ArrayList( config.getRemoteRepositoriesAsMap().keySet() );
+        this.managedRepoIdList = new ArrayList( config.getManagedRepositoriesAsMap().keySet() );
     }
 
     public String save()
@@ -472,9 +445,9 @@
         this.connector = connector;
     }
 
-    public void setLocalRepoIdList( List localRepoIdList )
+    public void setManagedRepoIdList( List managedRepoIdList )
     {
-        this.localRepoIdList = localRepoIdList;
+        this.managedRepoIdList = managedRepoIdList;
     }
 
     public void setMode( String mode )

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/ProxyConnectorsAction.java Wed Sep 12 02:33:41 2007
@@ -20,16 +20,12 @@
  */
 
 import com.opensymphony.xwork.Preparable;
-
 import org.apache.commons.collections.Closure;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Transformer;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
-import org.apache.maven.archiva.web.action.admin.repositories.AdminRepositoryConfiguration;
 import org.codehaus.plexus.redback.rbac.Resource;
 import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
@@ -42,11 +38,10 @@
 import java.util.Map;
 
 /**
- * ProxyConnectorsAction 
+ * ProxyConnectorsAction
  *
  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="proxyConnectorsAction"
  */
 public class ProxyConnectorsAction
@@ -54,43 +49,24 @@
     implements SecureAction, Preparable
 {
     /**
-     * @plexus.requirement role-hint="adminrepoconfig"
-     */
-    private Transformer repoConfigToAdmin;
-
-    /**
      * @plexus.requirement
      */
     private ArchivaConfiguration archivaConfiguration;
 
-    private Map /*<String,AdminRepositoryConfiguration>*/repoMap;
+    private Map repoMap;
 
     /**
      * Map of Proxy Connectors.
      */
-    private Map /*<String,AdminProxyConnector>*/proxyConnectorMap;
+    private Map proxyConnectorMap;
 
     public void prepare()
-        throws Exception
     {
         Configuration config = archivaConfiguration.getConfiguration();
 
         repoMap = new HashMap();
-
-        Closure addToRepoMap = new Closure()
-        {
-            public void execute( Object input )
-            {
-                if ( input instanceof RepositoryConfiguration )
-                {
-                    AdminRepositoryConfiguration arepo = (AdminRepositoryConfiguration) repoConfigToAdmin
-                        .transform( input );
-                    repoMap.put( arepo.getId(), arepo );
-                }
-            }
-        };
-
-        CollectionUtils.forAllDo( config.getRepositories(), addToRepoMap );
+        repoMap.putAll( config.getRemoteRepositoriesAsMap() );
+        repoMap.putAll( config.getManagedRepositoriesAsMap() );
 
         proxyConnectorMap = new HashMap();
 
@@ -109,7 +85,7 @@
                         connectors = new ArrayList();
                         proxyConnectorMap.put( key, connectors );
                     }
-                    
+
                     connectors.add( proxyConfig );
                 }
             }
@@ -134,18 +110,8 @@
         return repoMap;
     }
 
-    public void setRepoMap( Map repoMap )
-    {
-        this.repoMap = repoMap;
-    }
-
     public Map getProxyConnectorMap()
     {
         return proxyConnectorMap;
-    }
-
-    public void setProxyConnectorMap( Map proxyConnectorMap )
-    {
-        this.proxyConnectorMap = proxyConnectorMap;
     }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java Wed Sep 12 02:33:41 2007
@@ -19,30 +19,16 @@
  * under the License.
  */
 
-import com.opensymphony.xwork.ActionContext;
 import com.opensymphony.xwork.Preparable;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.common.utils.PathUtil;
-import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
-import org.apache.maven.archiva.configuration.IndeterminateConfigurationException;
 import org.apache.maven.archiva.configuration.InvalidConfigurationException;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
-import org.apache.maven.archiva.security.ArchivaRoleConstants;
-import org.codehaus.plexus.redback.authorization.AuthorizationException;
-import org.codehaus.plexus.redback.authorization.AuthorizationResult;
-import org.codehaus.plexus.redback.rbac.Resource;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.codehaus.plexus.redback.role.RoleManager;
 import org.codehaus.plexus.redback.role.RoleManagerException;
-import org.codehaus.plexus.redback.system.SecuritySession;
-import org.codehaus.plexus.redback.system.SecuritySystem;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureAction;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureActionBundle;
-import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
 import org.codehaus.plexus.registry.RegistryException;
 import org.codehaus.plexus.scheduler.CronExpressionValidator;
-import org.codehaus.plexus.xwork.action.PlexusActionSupport;
 
 import java.io.File;
 import java.io.IOException;
@@ -53,36 +39,21 @@
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="configureRepositoryAction"
  */
 public class ConfigureRepositoryAction
-    extends PlexusActionSupport
-    implements Preparable, SecureAction
+    extends AbstractConfigureRepositoryAction
+    implements Preparable
 {
     /**
-     * @plexus.requirement role-hint="default"
-     */
-    private RoleManager roleManager;
-
-    /**
-     * @plexus.requirement
-     */
-    private SecuritySystem securitySystem;
-
-    /**
-     * @plexus.requirement
+     * The model for this action.
      */
-    private ArchivaConfiguration archivaConfiguration;
-
-    private String repoid;
-
-    private String mode;
+    private ManagedRepositoryConfiguration repository;
 
     /**
-     * The model for this action.
+     * @plexus.requirement role-hint="default"
      */
-    private AdminRepositoryConfiguration repository;
+    protected RoleManager roleManager;
 
     public String add()
     {
-        getLogger().info( ".add()" );
         this.mode = "add";
 
         this.repository.setReleases( true );
@@ -91,35 +62,12 @@
         return INPUT;
     }
 
-    public String confirm()
-    {
-        getLogger().info( ".confirm()" );
-
-        if ( operationAllowed( ArchivaRoleConstants.OPERATION_DELETE_REPOSITORY, getRepoid() ) )
-        {
-            addActionError(
-                "You do not have the appropriate permissions to delete the " + getRepoid() + " repository." );
-            return ERROR;
-        }
-
-        return INPUT;
-    }
-
     public String delete()
     {
-        getLogger().info( ".delete()" );
-
-        if ( operationAllowed( ArchivaRoleConstants.OPERATION_DELETE_REPOSITORY, getRepoid() ) )
-        {
-            addActionError(
-                "You do not have the appropriate permissions to delete the " + getRepoid() + " repository." );
-            return ERROR;
-        }
-
         String result = SUCCESS;
         if ( StringUtils.equals( mode, "delete-entry" ) || StringUtils.equals( mode, "delete-contents" ) )
         {
-            AdminRepositoryConfiguration existingRepository = getRepository();
+            ManagedRepositoryConfiguration existingRepository = repository;
             if ( existingRepository == null )
             {
                 addActionError( "A repository with that id does not exist" );
@@ -130,8 +78,9 @@
 
             try
             {
-                removeRepository( getRepoid() );
-                result = saveConfiguration();
+                Configuration configuration = archivaConfiguration.getConfiguration();
+                removeRepository( repoid, configuration );
+                result = saveConfiguration( configuration );
 
                 if ( result.equals( SUCCESS ) )
                 {
@@ -167,93 +116,52 @@
         return result;
     }
 
-    public String edit()
-    {
-        getLogger().info( ".edit()" );
-        this.mode = "edit";
-
-        if ( operationAllowed( ArchivaRoleConstants.OPERATION_EDIT_REPOSITORY, getRepoid() ) )
-        {
-            addActionError( "You do not have the appropriate permissions to edit the " + getRepoid() + " repository." );
-            return ERROR;
-        }
-
-        return INPUT;
-    }
-
-    public String getMode()
-    {
-        return this.mode;
-    }
-
-    public String getRepoid()
-    {
-        return repoid;
-    }
-
-    public AdminRepositoryConfiguration getRepository()
+    public ManagedRepositoryConfiguration getRepository()
     {
         return repository;
     }
 
-    public SecureActionBundle getSecureActionBundle()
-        throws SecureActionException
-    {
-        SecureActionBundle bundle = new SecureActionBundle();
-
-        bundle.setRequiresAuthentication( true );
-        bundle.addRequiredAuthorization( ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION, Resource.GLOBAL );
-
-        return bundle;
-    }
-
     public void prepare()
-        throws Exception
     {
-        String id = getRepoid();
+        String id = repoid;
         if ( id == null )
         {
-            this.repository = new AdminRepositoryConfiguration();
+            this.repository = new ManagedRepositoryConfiguration();
             this.repository.setReleases( false );
             this.repository.setIndexed( false );
         }
-
-        RepositoryConfiguration repoconfig = archivaConfiguration.getConfiguration().findRepositoryById( id );
-        if ( repoconfig != null )
+        else
         {
-            this.repository = new AdminRepositoryConfiguration( repoconfig );
+            repository = archivaConfiguration.getConfiguration().findManagedRepositoryById( id );
         }
     }
 
     public String save()
     {
-        String mode = getMode();
-        String repoId = getRepository().getId();
-        boolean containsError = false;
-
-        getLogger().info( ".save(" + mode + ":" + repoId + ")" );
+        String repoId = repository.getId();
 
-        containsError = validateFields( mode );
+        Configuration configuration = archivaConfiguration.getConfiguration();
+        boolean containsError = validateFields( configuration );
 
         if ( containsError && StringUtils.equalsIgnoreCase( "add", mode ) )
         {
             return INPUT;
         }
-        else if ( containsError && StringUtils.equalsIgnoreCase( "edit", mode ) )
+        else if ( containsError && StringUtils.equalsIgnoreCase( "edit", this.mode ) )
         {
             return ERROR;
         }
 
-        if ( StringUtils.equalsIgnoreCase( "edit", mode ) )
+        if ( StringUtils.equalsIgnoreCase( "edit", this.mode ) )
         {
-            removeRepository( repoId );
+            removeRepository( repoId, configuration );
         }
 
         String result;
         try
         {
-            addRepository( getRepository() );
-            result = saveConfiguration();
+            addRepository( repository, configuration );
+            result = saveConfiguration( configuration );
         }
         catch ( IOException e )
         {
@@ -279,12 +187,11 @@
         return result;
     }
 
-    private boolean validateFields( String mode )
+    private boolean validateFields( Configuration config )
     {
         boolean containsError = false;
         CronExpressionValidator validator = new CronExpressionValidator();
-        Configuration config = archivaConfiguration.getConfiguration();
-        String repoId = getRepository().getId();
+        String repoId = repository.getId();
 
         if ( StringUtils.isBlank( repoId ) )
         {
@@ -292,17 +199,18 @@
             containsError = true;
         }
         //if edit mode, do not validate existence of repoId
-        else if ( config.findRepositoryById( repoId ) != null && !StringUtils.equalsIgnoreCase( mode, "edit" ) )
+        else if ( ( config.getManagedRepositoriesAsMap().containsKey( repoId ) ||
+            config.getRemoteRepositoriesAsMap().containsKey( repoId ) ) &&
+            !StringUtils.equalsIgnoreCase( mode, "edit" ) )
         {
             addFieldError( "repository.id",
                            "Unable to add new repository with id [" + repoId + "], that id already exists." );
             containsError = true;
         }
 
-        if ( StringUtils.isBlank( repository.getUrl() ) )
+        if ( StringUtils.isBlank( repository.getLocation() ) )
         {
-
-            addFieldError( "repository.url", "You must enter a directory or url." );
+            addFieldError( "repository.location", "You must enter a directory." );
             containsError = true;
         }
         if ( StringUtils.isBlank( repository.getName() ) )
@@ -319,120 +227,53 @@
         return containsError;
     }
 
-    public void setMode( String mode )
-    {
-        this.mode = mode;
-    }
-
-    public void setRepoid( String repoid )
-    {
-        this.repoid = repoid;
-    }
-
-    public void setRepository( AdminRepositoryConfiguration repository )
-    {
-        this.repository = repository;
-    }
-
-    private void addRepository( AdminRepositoryConfiguration repository )
+    private void addRepository( ManagedRepositoryConfiguration repository, Configuration configuration )
         throws IOException, RoleManagerException
     {
-        getLogger().info( ".addRepository(" + repository + ")" );
-
-        // Fix the URL entry (could possibly be a filesystem path)
-        String rawUrlEntry = repository.getUrl();
-        if ( !rawUrlEntry.startsWith( "http://" ) )
+        // Normalize the path
+        File file = new File( repository.getLocation() );
+        repository.setLocation( file.getCanonicalPath() );
+        if ( !file.exists() )
         {
-            repository.setUrl( PathUtil.toUrl( rawUrlEntry ) );
+            file.mkdirs();
+            // TODO: error handling when this fails, or is not a directory!
         }
 
-        if ( repository.isManaged() )
-        {
-            // Normalize the path
-            File file = new File( repository.getDirectory() );
-            repository.setDirectory( file.getCanonicalPath() );
-            if ( !file.exists() )
-            {
-                file.mkdirs();
-                // TODO: error handling when this fails, or is not a directory!
-            }
-        }
-
-        archivaConfiguration.getConfiguration().addRepository( repository );
+        configuration.addManagedRepository( repository );
 
         // TODO: double check these are configured on start up
+        // TODO: belongs in the business logic
         roleManager.createTemplatedRole( "archiva-repository-manager", repository.getId() );
 
         roleManager.createTemplatedRole( "archiva-repository-observer", repository.getId() );
-
     }
 
-    private boolean operationAllowed( String permission, String repoid )
-    {
-        ActionContext context = ActionContext.getContext();
-        SecuritySession securitySession = (SecuritySession) context.get( SecuritySession.ROLE );
-
-        AuthorizationResult authzResult;
-        try
-        {
-            authzResult = securitySystem.authorize( securitySession, permission, repoid );
-
-            return authzResult.isAuthorized();
-        }
-        catch ( AuthorizationException e )
-        {
-            getLogger().info( "Unable to authorize permission: " + permission + " against repo: " + repoid +
-                " due to: " + e.getMessage() );
-            return false;
-        }
-    }
-
-    private void removeContents( AdminRepositoryConfiguration existingRepository )
+    private void removeContents( ManagedRepositoryConfiguration existingRepository )
         throws IOException
     {
-        if ( existingRepository.isManaged() )
-        {
-            getLogger().info( "Removing " + existingRepository.getDirectory() );
-            FileUtils.deleteDirectory( new File( existingRepository.getDirectory() ) );
-        }
+        FileUtils.deleteDirectory( new File( existingRepository.getLocation() ) );
     }
 
-    private void removeRepository( String repoId )
+    private void removeRepository( String repoId, Configuration configuration )
     {
-        getLogger().info( ".removeRepository()" );
-
-        RepositoryConfiguration toremove = archivaConfiguration.getConfiguration().findRepositoryById( repoId );
+        ManagedRepositoryConfiguration toremove = configuration.findManagedRepositoryById( repoId );
         if ( toremove != null )
         {
-            archivaConfiguration.getConfiguration().removeRepository( toremove );
+            configuration.removeManagedRepository( toremove );
         }
     }
 
-    private void removeRepositoryRoles( RepositoryConfiguration existingRepository )
+    private void removeRepositoryRoles( ManagedRepositoryConfiguration existingRepository )
         throws RoleManagerException
     {
         roleManager.removeTemplatedRole( "archiva-repository-manager", existingRepository.getId() );
         roleManager.removeTemplatedRole( "archiva-repository-observer", existingRepository.getId() );
 
-        getLogger().info( "removed user roles associated with repository " + existingRepository.getId() );
+        getLogger().debug( "removed user roles associated with repository " + existingRepository.getId() );
     }
 
-    private String saveConfiguration()
-        throws IOException, InvalidConfigurationException, RegistryException
+    public void setRoleManager( RoleManager roleManager )
     {
-        getLogger().info( ".saveConfiguration()" );
-
-        try
-        {
-            archivaConfiguration.save( archivaConfiguration.getConfiguration() );
-            addActionMessage( "Successfully saved configuration" );
-        }
-        catch ( IndeterminateConfigurationException e )
-        {
-            addActionError( e.getMessage() );
-            return INPUT;
-        }
-
-        return SUCCESS;
+        this.roleManager = roleManager;
     }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/RepositoriesAction.java Wed Sep 12 02:33:41 2007
@@ -21,15 +21,14 @@
 
 import com.opensymphony.webwork.interceptor.ServletRequestAware;
 import com.opensymphony.xwork.Preparable;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.list.TransformedList;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
-import org.apache.maven.archiva.configuration.functors.LocalRepositoryPredicate;
-import org.apache.maven.archiva.configuration.functors.RemoteRepositoryPredicate;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.configuration.RemoteRepositoryConfiguration;
 import org.apache.maven.archiva.configuration.functors.RepositoryConfigurationComparator;
+import org.apache.maven.archiva.database.ArchivaDAO;
+import org.apache.maven.archiva.database.constraints.MostRecentRepositoryScanStatistics;
+import org.apache.maven.archiva.model.RepositoryContentStatistics;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.apache.maven.archiva.web.util.ContextUtils;
 import org.codehaus.plexus.redback.rbac.Resource;
@@ -38,18 +37,18 @@
 import org.codehaus.plexus.redback.xwork.interceptor.SecureActionException;
 import org.codehaus.plexus.xwork.action.PlexusActionSupport;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
- * Shows the Repositories Tab for the administrator. 
+ * Shows the Repositories Tab for the administrator.
  *
  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="com.opensymphony.xwork.Action" role-hint="repositoriesAction"
  */
 public class RepositoriesAction
@@ -57,23 +56,29 @@
     implements SecureAction, ServletRequestAware, Preparable
 {
     /**
-     * @plexus.requirement role-hint="adminrepoconfig"
-     */
-    private Transformer repoConfigToAdmin;
-
-    /**
      * @plexus.requirement
      */
     private ArchivaConfiguration archivaConfiguration;
 
-    private List managedRepositories;
+    private List<ManagedRepositoryConfiguration> managedRepositories;
+
+    private List<RemoteRepositoryConfiguration> remoteRepositories;
+
+    private Map<String, RepositoryContentStatistics> repositoryStatistics;
 
-    private List remoteRepositories;
+    /**
+     * @plexus.requirement role-hint="jdo"
+     */
+    private ArchivaDAO dao;
 
+    /**
+     * Used to construct the repository WebDAV URL in the repository action.
+     */
     private String baseUrl;
 
     public void setServletRequest( HttpServletRequest request )
     {
+        // TODO: is there a better way to do this?
         this.baseUrl = ContextUtils.getBaseURL( request, "repository" );
     }
 
@@ -89,28 +94,40 @@
     }
 
     public void prepare()
-        throws Exception
     {
         Configuration config = archivaConfiguration.getConfiguration();
 
-        remoteRepositories = TransformedList.decorate( new ArrayList(), repoConfigToAdmin );
-        managedRepositories = TransformedList.decorate( new ArrayList(), repoConfigToAdmin );
-
-        remoteRepositories.addAll( CollectionUtils.select( config.getRepositories(), RemoteRepositoryPredicate.getInstance() ) );
-        managedRepositories.addAll( CollectionUtils.select( config.getRepositories(), LocalRepositoryPredicate.getInstance() ) );
+        remoteRepositories = new ArrayList<RemoteRepositoryConfiguration>( config.getRemoteRepositories() );
+        managedRepositories = new ArrayList<ManagedRepositoryConfiguration>( config.getManagedRepositories() );
 
         Collections.sort( managedRepositories, new RepositoryConfigurationComparator() );
         Collections.sort( remoteRepositories, new RepositoryConfigurationComparator() );
+
+        repositoryStatistics = new HashMap<String, RepositoryContentStatistics>();
+        for ( ManagedRepositoryConfiguration repo : managedRepositories )
+        {
+            List<RepositoryContentStatistics> results =
+                dao.query( new MostRecentRepositoryScanStatistics( repo.getId() ) );
+            if ( !results.isEmpty() )
+            {
+                repositoryStatistics.put( repo.getId(), results.get( 0 ) );
+            }
+        }
     }
 
-    public List getManagedRepositories()
+    public List<ManagedRepositoryConfiguration> getManagedRepositories()
     {
         return managedRepositories;
     }
 
-    public List getRemoteRepositories()
+    public List<RemoteRepositoryConfiguration> getRemoteRepositories()
     {
         return remoteRepositories;
+    }
+
+    public Map<String, RepositoryContentStatistics> getRepositoryStatistics()
+    {
+        return repositoryStatistics;
     }
 
     public String getBaseUrl()

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/check/RoleExistanceEnvironmentCheck.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/check/RoleExistanceEnvironmentCheck.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/check/RoleExistanceEnvironmentCheck.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/check/RoleExistanceEnvironmentCheck.java Wed Sep 12 02:33:41 2007
@@ -19,17 +19,15 @@
  * under the License.
  */
 
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.Configuration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.database.ArchivaDAO;
-import org.apache.maven.archiva.database.ArchivaDatabaseException;
-import org.apache.maven.archiva.database.ObjectNotFoundException;
-import org.apache.maven.archiva.model.ArchivaRepository;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.redback.role.RoleManager;
 import org.codehaus.plexus.redback.role.RoleManagerException;
 import org.codehaus.plexus.redback.system.check.EnvironmentCheck;
 
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -58,6 +56,11 @@
      */
     private RoleManager roleManager;
 
+    /**
+     * @plexus.requirement
+     */
+    private ArchivaConfiguration configuration;
+
     private boolean checked;
 
     public void validateEnvironment( List list )
@@ -66,24 +69,17 @@
         {
             try
             {
-                List repos = dao.getRepositoryDAO().getRepositories();
-
-                if ( hasManagedRepository( repos ) )
+                Configuration config = configuration.getConfiguration();
+                for ( ManagedRepositoryConfiguration repository : config.getManagedRepositoriesAsMap().values() )
                 {
-                    Iterator it = repos.iterator();
-                    while ( it.hasNext() )
+                    if ( !roleManager.templatedRoleExists( "archiva-repository-manager", repository.getId() ) )
                     {
-                        ArchivaRepository repository = (ArchivaRepository) it.next();
+                        roleManager.createTemplatedRole( "archiva-repository-manager", repository.getId() );
+                    }
 
-                        if ( !roleManager.templatedRoleExists( "archiva-repository-manager", repository.getId() ) )
-                        {
-                            roleManager.createTemplatedRole( "archiva-repository-manager", repository.getId() );
-                        }
-
-                        if ( !roleManager.templatedRoleExists( "archiva-repository-observer", repository.getId() ) )
-                        {
-                            roleManager.createTemplatedRole( "archiva-repository-observer", repository.getId() );
-                        }
+                    if ( !roleManager.templatedRoleExists( "archiva-repository-observer", repository.getId() ) )
+                    {
+                        roleManager.createTemplatedRole( "archiva-repository-observer", repository.getId() );
                     }
                 }
             }
@@ -92,33 +88,9 @@
                 list.add( this.getClass().getName() + "error initializing roles: " + rpe.getMessage() );
                 getLogger().info( "error initializing roles", rpe );
             }
-            catch ( ObjectNotFoundException e )
-            {
-                list.add( this.getClass().getName() + "error initializing roles (repository not found): " + e.getMessage() );
-                getLogger().info( "error initializing roles", e );
-            }
-            catch ( ArchivaDatabaseException e )
-            {
-                list.add( this.getClass().getName() + "error initializing roles (database error): " + e.getMessage() );
-                getLogger().info( "error initializing roles", e );
-            }
 
             checked = true;
         }
     }
 
-    public boolean hasManagedRepository( List repos )
-    {
-        Iterator it = repos.iterator();
-        while ( it.hasNext() )
-        {
-            ArchivaRepository repo = (ArchivaRepository) it.next();
-            if ( repo.isManaged() )
-            {
-                return true;
-            }
-        }
-
-        return false;
-    }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/interceptor/ConfigurationInterceptor.java Wed Sep 12 02:33:41 2007
@@ -22,16 +22,10 @@
 import com.opensymphony.webwork.ServletActionContext;
 import com.opensymphony.xwork.ActionInvocation;
 import com.opensymphony.xwork.interceptor.Interceptor;
-
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
-import org.apache.maven.archiva.database.ArchivaDAO;
-import org.apache.maven.archiva.model.ArchivaRepository;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.http.HttpSession;
+import javax.servlet.ServletContext;
 
 /**
  * An interceptor that makes the configuration bits available, both to the application and the webapp
@@ -45,41 +39,18 @@
     implements Interceptor
 {
     /**
-     * @plexus.requirement role-hint="jdo"
-     */
-    private ArchivaDAO dao;
-
-    /** 
      * @plexus.requirement role-hint="default"
      */
     private ArchivaConfiguration configuration;
-    
-    /**
-     * @param actionInvocation
-     * @return
-     * @throws Exception
-     */
+
     public String intercept( ActionInvocation actionInvocation )
         throws Exception
     {
         // populate webapp configuration bits into the session
-        HttpSession session = ServletActionContext.getRequest().getSession();
-        if ( session != null )
-        {
-            session.setAttribute( "uiOptions", configuration.getConfiguration().getWebapp().getUi() );
-        }
-        
-        List repos = dao.getRepositoryDAO().getRepositories();
-
-        if ( !hasManagedRepository( repos ) )
-        {
-            getLogger().info( "No repositories exist - forwarding to repository configuration page" );
-            return "config-repository-needed";
-        }
-        else
-        {
-            return actionInvocation.invoke();
-        }
+        ServletContext applicationScope = ServletActionContext.getServletContext();
+        applicationScope.setAttribute( "uiOptions", configuration.getConfiguration().getWebapp().getUi() );
+
+        return actionInvocation.invoke();
     }
 
     public void destroy()
@@ -92,28 +63,4 @@
         // This space left intentionally blank
     }
 
-    public boolean hasManagedRepository( List repos )
-    {
-        if ( repos == null )
-        {
-            return false;
-        }
-
-        if ( repos.isEmpty() )
-        {
-            return false;
-        }
-
-        Iterator it = repos.iterator();
-        while ( it.hasNext() )
-        {
-            ArchivaRepository repo = (ArchivaRepository) it.next();
-            if ( repo.isManaged() )
-            {
-                return true;
-            }
-        }
-
-        return false;
-    }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/ProxiedDavServer.java Wed Sep 12 02:33:41 2007
@@ -21,7 +21,7 @@
 
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.Configuration;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.model.ArchivaRepository;
 import org.apache.maven.archiva.model.ArtifactReference;
 import org.apache.maven.archiva.model.ProjectReference;
@@ -85,7 +85,7 @@
 
     private BidirectionalRepositoryLayout layout;
 
-    private RepositoryConfiguration repositoryConfiguration;
+    private ManagedRepositoryConfiguration repositoryConfiguration;
 
     private ArchivaRepository managedRepository;
 
@@ -116,7 +116,7 @@
 
         Configuration config = archivaConfiguration.getConfiguration();
 
-        repositoryConfiguration = config.findRepositoryById( getPrefix() );
+        repositoryConfiguration = config.findManagedRepositoryById( getPrefix() );
 
         managedRepository = ArchivaConfigurationAdaptor.toArchivaRepository( repositoryConfiguration );
 
@@ -200,7 +200,6 @@
                 {
                     connectors.fetchFromProxies( managedRepository, project );
                     request.getRequest().setPathInfo( metadataTools.toPath( project ) );
-                    return;
                 }
             }
             catch ( RepositoryMetadataException e )
@@ -247,7 +246,7 @@
         }
     }
 
-    public RepositoryConfiguration getRepositoryConfiguration()
+    public ManagedRepositoryConfiguration getRepositoryConfiguration()
     {
         return repositoryConfiguration;
     }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/repository/RepositoryServlet.java Wed Sep 12 02:33:41 2007
@@ -19,15 +19,9 @@
  * under the License.
  */
 
-import org.apache.commons.collections.Closure;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.collections.functors.IfClosure;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationNames;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
-import org.apache.maven.archiva.configuration.functors.LocalRepositoryPredicate;
-import org.apache.maven.archiva.configuration.functors.RepositoryConfigurationToMapClosure;
-import org.apache.maven.archiva.model.RepositoryURL;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
 import org.codehaus.plexus.redback.authentication.AuthenticationException;
 import org.codehaus.plexus.redback.authentication.AuthenticationResult;
@@ -46,17 +40,13 @@
 import org.codehaus.plexus.webdav.servlet.multiplexed.MultiplexedWebDavServlet;
 import org.codehaus.plexus.webdav.util.WebdavMethodUtil;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
 
 /**
  * RepositoryServlet
@@ -68,29 +58,17 @@
     extends MultiplexedWebDavServlet
     implements RegistryListener
 {
-    /**
-     * @plexus.requirement
-     */
     private SecuritySystem securitySystem;
 
-    /**
-     * @plexus.requirement role-hint="basic"
-     */
     private HttpAuthenticator httpAuth;
 
-    /**
-     * @plexus.requirement
-     */
     private AuditLog audit;
 
-    /**
-     * @plexus.requirement
-     */
     private ArchivaConfiguration configuration;
 
-    private Map repositoryMap = new HashMap();
+    private Map<String, ManagedRepositoryConfiguration> repositoryMap;
 
-    public void initComponents()
+    public synchronized void initComponents()
         throws ServletException
     {
         super.initComponents();
@@ -102,32 +80,22 @@
         configuration = (ArchivaConfiguration) lookup( ArchivaConfiguration.class.getName() );
         configuration.addChangeListener( this );
 
-        updateRepositoryMap();
+        repositoryMap = configuration.getConfiguration().getManagedRepositoriesAsMap();
     }
 
-    public void initServers( ServletConfig servletConfig )
+    public synchronized void initServers( ServletConfig servletConfig )
         throws DavServerException
     {
-        List repositories = configuration.getConfiguration().getRepositories();
-        Iterator itrepos = repositories.iterator();
-        while ( itrepos.hasNext() )
+        for ( ManagedRepositoryConfiguration repo : repositoryMap.values() )
         {
-            RepositoryConfiguration repo = (RepositoryConfiguration) itrepos.next();
-            if ( !repo.isManaged() )
-            {
-                // Skip non-managed.
-                continue;
-            }
-
-            RepositoryURL url = new RepositoryURL( repo.getUrl() );
-            File repoDir = new File( url.getPath() );
+            File repoDir = new File( repo.getLocation() );
 
             if ( !repoDir.exists() )
             {
                 if ( !repoDir.mkdirs() )
                 {
                     // Skip invalid directories.
-                    log( "Unable to create missing directory for " + url.getPath() );
+                    log( "Unable to create missing directory for " + repo.getLocation() );
                     continue;
                 }
             }
@@ -138,17 +106,18 @@
         }
     }
 
-    public RepositoryConfiguration getRepository( DavServerRequest request )
+    public synchronized ManagedRepositoryConfiguration getRepository( String prefix )
     {
-        synchronized ( this.repositoryMap )
+        if ( repositoryMap == null )
         {
-            return (RepositoryConfiguration) repositoryMap.get( request.getPrefix() );
+            repositoryMap = configuration.getConfiguration().getManagedRepositoriesAsMap();
         }
+        return repositoryMap.get( prefix );
     }
 
-    public String getRepositoryName( DavServerRequest request )
+    private String getRepositoryName( DavServerRequest request )
     {
-        RepositoryConfiguration repoConfig = getRepository( request );
+        ManagedRepositoryConfiguration repoConfig = getRepository( request.getPrefix() );
         if ( repoConfig == null )
         {
             return "Unknown";
@@ -157,19 +126,6 @@
         return repoConfig.getName();
     }
 
-    private void updateRepositoryMap()
-    {
-        RepositoryConfigurationToMapClosure repoMapClosure = new RepositoryConfigurationToMapClosure();
-        Closure localRepoMap = IfClosure.getInstance( LocalRepositoryPredicate.getInstance(), repoMapClosure );
-        CollectionUtils.forAllDo( configuration.getConfiguration().getRepositories(), localRepoMap );
-
-        synchronized ( this.repositoryMap )
-        {
-            this.repositoryMap.clear();
-            this.repositoryMap.putAll( repoMapClosure.getMap() );
-        }
-    }
-
     public boolean isAuthenticated( DavServerRequest davRequest, HttpServletResponse response )
         throws ServletException, IOException
     {
@@ -180,7 +136,7 @@
         {
             AuthenticationResult result = httpAuth.getAuthenticationResult( request, response );
 
-            if ( ( result != null ) && !result.isAuthenticated() )
+            if ( result != null && !result.isAuthenticated() )
             {
                 // Must Authenticate.
                 httpAuth.challenge( request, response, "Repository " + getRepositoryName( davRequest ),
@@ -225,16 +181,16 @@
                 permission = ArchivaRoleConstants.OPERATION_REPOSITORY_UPLOAD;
             }
 
-            AuthorizationResult authzResult = securitySystem.authorize( securitySession, permission, davRequest
-                .getPrefix() );
+            AuthorizationResult authzResult =
+                securitySystem.authorize( securitySession, permission, davRequest.getPrefix() );
 
             if ( !authzResult.isAuthorized() )
             {
                 if ( authzResult.getException() != null )
                 {
-                    log( "Authorization Denied [ip=" + request.getRemoteAddr() + ",isWriteRequest=" + isWriteRequest
-                        + ",permission=" + permission + ",repo=" + davRequest.getPrefix() + "] : "
-                        + authzResult.getException().getMessage() );
+                    log( "Authorization Denied [ip=" + request.getRemoteAddr() + ",isWriteRequest=" + isWriteRequest +
+                        ",permission=" + permission + ",repo=" + davRequest.getPrefix() + "] : " +
+                        authzResult.getException().getMessage() );
                 }
 
                 // Issue HTTP Challenge.
@@ -256,29 +212,13 @@
         // nothing to do
     }
 
-    public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
+    public synchronized void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
-        if ( ConfigurationNames.isRepositories( propertyName ) )
+        if ( ConfigurationNames.isManagedRepositories( propertyName ) )
         {
-            // Attempt to reduce the number of times we refresh the repository map.
-            if ( propertyName.endsWith( ".id" ) || propertyName.endsWith( ".url" ) )
+            if ( propertyName.endsWith( ".id" ) || propertyName.endsWith( ".location" ) )
             {
-                synchronized ( this.repositoryMap )
-                {
-                    updateRepositoryMap();
-
-                    getDavManager().removeAllServers();
-
-                    try
-                    {
-                        initServers( getServletConfig() );
-                    }
-                    catch ( DavServerException e )
-                    {
-                        log( "Error restarting WebDAV server after configuration change - service disabled: "
-                            + e.getMessage(), e );
-                    }
-                }
+                repositoryMap = null;
             }
         }
     }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/startup/ConfigurationSynchronization.java Wed Sep 12 02:33:41 2007
@@ -19,9 +19,10 @@
  * under the License.
  */
 
+import org.apache.maven.archiva.common.utils.PathUtil;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ConfigurationNames;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.database.ArchivaDAO;
 import org.apache.maven.archiva.database.ArchivaDatabaseException;
 import org.apache.maven.archiva.database.ObjectNotFoundException;
@@ -39,14 +40,13 @@
 import java.util.List;
 
 /**
- * ConfigurationSynchronization 
+ * ConfigurationSynchronization
  *
  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
- * 
- * @plexus.component 
- *              role="org.apache.maven.archiva.web.startup.ConfigurationSynchronization"
- *              role-hint="default"
+ * @plexus.component role="org.apache.maven.archiva.web.startup.ConfigurationSynchronization"
+ * role-hint="default"
+ * @todo consider whether we really need these in the database or not
  */
 public class ConfigurationSynchronization
     extends AbstractLogEnabled
@@ -69,9 +69,9 @@
 
     public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
-        if ( ConfigurationNames.isRepositories( propertyName ) )
+        if ( ConfigurationNames.isManagedRepositories( propertyName ) )
         {
-            synchConfiguration();
+            synchConfiguration( archivaConfiguration.getConfiguration().getManagedRepositories() );
         }
     }
 
@@ -80,13 +80,12 @@
         /* do nothing */
     }
 
-    private void synchConfiguration()
+    private void synchConfiguration( List repos )
     {
-        List repos = archivaConfiguration.getConfiguration().getRepositories();
         Iterator it = repos.iterator();
         while ( it.hasNext() )
         {
-            RepositoryConfiguration repoConfig = (RepositoryConfiguration) it.next();
+            ManagedRepositoryConfiguration repoConfig = (ManagedRepositoryConfiguration) it.next();
             try
             {
                 try
@@ -95,7 +94,7 @@
                     // Found repository.  Update it.
 
                     repository.getModel().setName( repoConfig.getName() );
-                    repository.getModel().setUrl( repoConfig.getUrl() );
+                    repository.getModel().setUrl( PathUtil.toUrl( repoConfig.getLocation() ) );
                     repository.getModel().setLayoutName( repoConfig.getLayout() );
                     repository.getModel().setCreationSource( "configuration" );
                     repository.getModel().setReleasePolicy( repoConfig.isReleases() );
@@ -143,7 +142,7 @@
     public void initialize()
         throws InitializationException
     {
-        synchConfiguration();
+        synchConfiguration( archivaConfiguration.getConfiguration().getManagedRepositories() );
         archivaConfiguration.addChangeListener( this );
     }
 }

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/CopyPasteSnippet.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/CopyPasteSnippet.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/CopyPasteSnippet.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/CopyPasteSnippet.java Wed Sep 12 02:33:41 2007
@@ -1,22 +1,39 @@
 package org.apache.maven.archiva.web.tags;
 
+/*
+ * 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.commons.lang.StringEscapeUtils;
-import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.web.util.ContextUtils;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 
-import java.io.IOException;
-
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspWriter;
 import javax.servlet.jsp.PageContext;
+import java.io.IOException;
 
 /**
- * CopyPasteSnippet 
+ * CopyPasteSnippet
  *
  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
- * 
  * @plexus.component role="org.apache.maven.archiva.web.tags.CopyPasteSnippet"
  */
 public class CopyPasteSnippet
@@ -32,9 +49,9 @@
             buf.append( "Error generating snippet." );
             getLogger().error( "Unable to generate snippet for null object." );
         }
-        else if ( o instanceof RepositoryConfiguration )
+        else if ( o instanceof ManagedRepositoryConfiguration )
         {
-            createSnippet( buf, (RepositoryConfiguration) o, pageContext );
+            createSnippet( buf, (ManagedRepositoryConfiguration) o, pageContext );
         }
         else
         {
@@ -53,7 +70,7 @@
         }
     }
 
-    private void createSnippet( StringBuffer snippet, RepositoryConfiguration repo, PageContext pageContext )
+    private void createSnippet( StringBuffer snippet, ManagedRepositoryConfiguration repo, PageContext pageContext )
     {
         snippet.append( "<project>\n" );
         snippet.append( "  ...\n" );
@@ -83,15 +100,8 @@
         snippet.append( "      <name>" ).append( repo.getName() ).append( "</name>\n" );
 
         snippet.append( "      <url>" );
-        if ( repo.isManaged() )
-        {
-            snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) );
-            snippet.append( "/" ).append( repo.getId() ).append( "/" );
-        }
-        else
-        {
-            snippet.append( repo.getUrl() );
-        }
+        snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) );
+        snippet.append( "/" ).append( repo.getId() ).append( "/" );
 
         snippet.append( "</url>\n" );
 

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DownloadArtifact.java
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DownloadArtifact.java?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DownloadArtifact.java (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/tags/DownloadArtifact.java Wed Sep 12 02:33:41 2007
@@ -22,7 +22,6 @@
 import com.opensymphony.webwork.WebWorkException;
 import com.opensymphony.webwork.components.Component;
 import com.opensymphony.xwork.util.OgnlValueStack;
-
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.maven.archiva.database.ArchivaDAO;
@@ -37,24 +36,22 @@
 import org.apache.maven.archiva.repository.layout.LayoutException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.PageContext;
 import java.io.IOException;
 import java.io.Writer;
 import java.text.DecimalFormat;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.PageContext;
-
 /**
- * DownloadArtifact 
+ * DownloadArtifact
  *
  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
  * @version $Id$
- * 
- * @plexus.component role="com.opensymphony.webwork.components.Component" role-hint="download-artifact" 
- *  instantiation-strategy="per-lookup"
+ * @plexus.component role="com.opensymphony.webwork.components.Component" role-hint="download-artifact"
+ * instantiation-strategy="per-lookup"
  */
 public class DownloadArtifact
     extends Component
@@ -207,21 +204,21 @@
         while ( it.hasNext() )
         {
             ArchivaArtifact artifact = (ArchivaArtifact) it.next();
-            sb.append("\n<tr>");
-            
+            sb.append( "\n<tr>" );
+
             sb.append( "<td class=\"icon\">" );
             appendImageLink( sb, prefix, layout, artifact );
             sb.append( "</td>" );
-            
+
             sb.append( "<td class=\"type\">" );
             appendLink( sb, prefix, layout, artifact );
             sb.append( "</td>" );
-            
+
             sb.append( "<td class=\"size\">" );
             appendFilesize( sb, artifact );
             sb.append( "</td>" );
-            
-            sb.append("</tr>");
+
+            sb.append( "</tr>" );
         }
         sb.append( "</table>" );
         sb.append( "</p>" );
@@ -232,34 +229,20 @@
         sb.append( "<div class=\"ft\"><div class=\"c\"></div></div>" );
         sb.append( "</div>" ); // close "download"
     }
-    
-    private void appendImageLink( StringBuffer sb, String prefix, BidirectionalRepositoryLayout layout, ArchivaArtifact artifact )
+
+    private void appendImageLink( StringBuffer sb, String prefix, BidirectionalRepositoryLayout layout,
+                                  ArchivaArtifact artifact )
     {
-        StringBuffer url = new StringBuffer();
-        String path = layout.toPath( artifact );
         String type = artifact.getType();
-        
-        url.append( prefix );
-        url.append( "/" ).append( path );
-        
-        String filename = path.substring( path.lastIndexOf( "/" ) + 1 );
-        
-        sb.append( "<a href=\"" ).append( StringEscapeUtils.escapeXml( url.toString() ) ).append( "\"" );
-        sb.append( " title=\"" ).append( "Download " ).append( StringEscapeUtils.escapeXml( filename ) ).append( "\"" );
-        sb.append( ">" );
-        
-        sb.append( "<img src=\"" ).append( req.getContextPath() );
-        sb.append( "/images/download-type-" ).append( type ).append( ".png\" />" );
-        
-        sb.append( "</a>" );
+        String linkText = "<img src=\"" + req.getContextPath() + "/images/download-type-" + type + ".png\" />";
+        appendLink( sb, prefix, layout, artifact, linkText );
     }
 
-    private void appendLink( StringBuffer sb, String prefix, BidirectionalRepositoryLayout layout,
-                             ArchivaArtifact artifact )
+    private static void appendLink( StringBuffer sb, String prefix, BidirectionalRepositoryLayout layout,
+                                    ArchivaArtifact artifact, String linkText )
     {
         StringBuffer url = new StringBuffer();
         String path = layout.toPath( artifact );
-        String type = artifact.getType();
 
         url.append( prefix );
         url.append( "/" ).append( path );
@@ -270,10 +253,20 @@
         sb.append( " title=\"" ).append( "Download " ).append( StringEscapeUtils.escapeXml( filename ) ).append( "\"" );
         sb.append( ">" );
 
-        sb.append( StringUtils.capitalize( type ) );
+        sb.append( linkText );
+
         sb.append( "</a>" );
     }
-    
+
+    private void appendLink( StringBuffer sb, String prefix, BidirectionalRepositoryLayout layout,
+                             ArchivaArtifact artifact )
+    {
+        String type = artifact.getType();
+        String linkText = StringUtils.capitalize( type );
+
+        appendLink( sb, prefix, layout, artifact, linkText );
+    }
+
     private void appendFilesize( StringBuffer sb, ArchivaArtifact artifact )
     {
         sb.append( decimalFormat.format( artifact.getModel().getSize() ) );

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml Wed Sep 12 02:33:41 2007
@@ -82,8 +82,6 @@
           <xml fileName="${appserver.home}/conf/shared.xml" config-optional="true"
                config-at="org.apache.maven.shared.app"/>
           <xml fileName="${appserver.home}/conf/common.xml" config-optional="true"/>
-          <xml fileName="org/apache/maven/archiva/configuration/default-archiva.xml"
-               config-at="org.apache.maven.archiva"/>
           <properties fileName="${appserver.home}/conf/security.properties" config-optional="true"
                       config-at="org.codehaus.plexus.redback"/>
           <properties fileName="org/apache/maven/archiva/security.properties" config-at="org.codehaus.plexus.redback"/>

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml Wed Sep 12 02:33:41 2007
@@ -30,7 +30,6 @@
 
   <package name="base" extends="webwork-default">
     <interceptors>
-      <interceptor name="strange" class="webwork-is-doing-strange-things"/>
       <interceptor name="configuration" class="configurationInterceptor"/>
       <interceptor name="redbackForceAdminUser" class="redbackForceAdminUserInterceptor"/>
       <interceptor name="redbackSecureActions" class="redbackSecureActionInterceptor"/>
@@ -84,20 +83,6 @@
     <default-interceptor-ref name="configuredArchivaStack"/>
 
     <global-results>
-      <!-- TODO: want an extra message on the configure page when this first happens! -->
-      <!-- TODO: can we send them back to the original location afterwards? -->
-      <result name="config-needed" type="redirect-action">
-        <param name="namespace">/admin</param>
-        <param name="actionName">repositories</param>
-      </result>
-
-      <!-- This redirect is triggered by the configuration interceptor -->
-      <result name="config-repository-needed" type="redirect-action">
-        <param name="namespace">/admin</param>
-        <param name="actionName">addRepository</param>
-        <param name="method">input</param>
-      </result>
-
       <!-- The following security-* result names arrive from the plexus-security package -->
       <result name="security-login-success" type="redirect-action">index</result>
       <result name="security-login-cancel" type="redirect-action">index</result>
@@ -265,6 +250,32 @@
 
     <action name="deleteRepository" class="configureRepositoryAction" method="confirm">
       <result name="input">/WEB-INF/jsp/admin/deleteRepository.jsp</result>
+      <result name="success" type="redirect-action">repositories</result>
+      <interceptor-ref name="configuredPrepareParamsStack"/>
+    </action>
+
+    <action name="addRemoteRepository" class="configureRemoteRepositoryAction" method="add">
+      <result name="input">/WEB-INF/jsp/admin/addRemoteRepository.jsp</result>
+      <result name="success" type="redirect-action">repositories</result>
+      <interceptor-ref name="configuredPrepareParamsStack"/>
+    </action>
+
+    <action name="editRemoteRepository" class="configureRemoteRepositoryAction" method="edit">
+      <result name="input">/WEB-INF/jsp/admin/editRemoteRepository.jsp</result>
+      <result name="error" type="redirect-action">repositories</result>
+      <result name="success" type="redirect-action">repositories</result>
+      <interceptor-ref name="configuredPrepareParamsStack"/>
+    </action>
+
+    <action name="saveRemoteRepository" class="configureRemoteRepositoryAction" method="save">
+      <result name="success" type="redirect-action">repositories</result>
+      <result name="input">/WEB-INF/jsp/admin/editRemoteRepository.jsp</result>
+      <result name="error">/WEB-INF/jsp/admin/editRemoteRepository.jsp</result>
+      <interceptor-ref name="configuredPrepareParamsStack"/>
+    </action>
+
+    <action name="deleteRemoteRepository" class="configureRemoteRepositoryAction" method="confirm">
+      <result name="input">/WEB-INF/jsp/admin/deleteRemoteRepository.jsp</result>
       <result name="success" type="redirect-action">repositories</result>
       <interceptor-ref name="configuredPrepareParamsStack"/>
     </action>

Modified: maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf
URL: http://svn.apache.org/viewvc/maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf?rev=574859&r1=574858&r2=574859&view=diff
==============================================================================
--- maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf (original)
+++ maven/archiva/trunk/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/include/repositoryForm.jspf Wed Sep 12 02:33:41 2007
@@ -20,16 +20,16 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 
 <ww:textfield name="repository.name" label="Name" size="50" required="true"/>
-<ww:textfield name="repository.url" label="Directory or URL" size="50" required="true"/>  
+<ww:textfield name="repository.location" label="Directory" size="50" required="true"/>
 <ww:select list="#@java.util.LinkedHashMap@{'default' : 'Maven 2.x Repository', 'legacy' : 'Maven 1.x Repository'}"
            name="repository.layout" label="Type"/>
-<ww:textfield name="repository.refreshCronExpression" label="Cron" size="40" required="true" />
+<ww:textfield name="repository.refreshCronExpression" label="Cron" size="40" required="true"/>
 <ww:textfield name="repository.daysOlder" label="Repository Purge By Days Older Than" size="5"/>
 <ww:textfield name="repository.retentionCount" label="Repository Purge By Retention Count" size="5"/>
 <ww:checkbox name="repository.releases" value="repository.releases" label="Releases Included"/>
 <ww:checkbox name="repository.snapshots" value="repository.snapshots" label="Snapshots Included"/>
 <ww:checkbox name="repository.indexed" value="repository.indexed" label="Scannable"/>
 <ww:checkbox name="repository.deleteReleasedSnapshots" value="repository.deleteReleasedSnapshots"
-           label="Delete Released Snapshots"/>
+             label="Delete Released Snapshots"/>