You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2007/07/24 03:07:00 UTC

svn commit: r558904 - in /maven/archiva/trunk/archiva-web/archiva-webapp/src/main: java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java resources/xwork.xml

Author: oching
Date: Mon Jul 23 18:06:56 2007
New Revision: 558904

URL: http://svn.apache.org/viewvc?view=rev&rev=558904
Log:
[MRM-326]
Submitted by Jan Ancajas

- Added validation in ConfigureRepositoryAction
- Added input and error results in saveRepository (xwork.xml)


Modified:
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/repositories/ConfigureRepositoryAction.java
    maven/archiva/trunk/archiva-web/archiva-webapp/src/main/resources/xwork.xml

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?view=diff&rev=558904&r1=558903&r2=558904
==============================================================================
--- 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 Mon Jul 23 18:06:56 2007
@@ -26,6 +26,7 @@
 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.InvalidConfigurationException;
 import org.apache.maven.archiva.configuration.RepositoryConfiguration;
 import org.apache.maven.archiva.security.ArchivaRoleConstants;
@@ -40,6 +41,7 @@
 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;
@@ -212,13 +214,19 @@
     {
         String mode = getMode();
         String repoId = getRepository().getId();
+        boolean containsError = false;
 
         getLogger().info( ".save(" + mode + ":" + repoId + ")" );
 
-        if ( StringUtils.isBlank( repository.getId() ) )
+        containsError = validateFields(mode);
+
+        if ( containsError && StringUtils.equalsIgnoreCase( "add", mode ) )
+        {            
+            return INPUT;
+        }
+        else if ( containsError && StringUtils.equalsIgnoreCase( "edit", mode )) 
         {
-            addFieldError( "id", "A repository with a blank id cannot be saved." );
-            return SUCCESS;
+            return ERROR;
         }
 
         if ( StringUtils.equalsIgnoreCase( "edit", mode ) )
@@ -249,6 +257,45 @@
         }
 
         return SUCCESS;
+    }
+
+    private boolean validateFields(String mode)
+    {
+        boolean containsError = false;
+        CronExpressionValidator validator = new CronExpressionValidator();
+        Configuration config = archivaConfiguration.getConfiguration();
+        String repoId = getRepository().getId();
+
+        if ( StringUtils.isBlank( repoId ) )
+        {   
+            addFieldError( "repository.id", "You must enter a repository identifier." );
+            containsError = true;
+        }
+        //if edit mode, do not validate existence of repoId
+        else if ( config.findRepositoryById( repoId ) != null && !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() ) )
+        {   
+            
+            addFieldError( "repository.url", "You must enter a directory or url." );
+            containsError = true;
+        }
+        if ( StringUtils.isBlank( repository.getName() ) )
+        {
+            addFieldError( "repository.name", "You must enter a repository name." );
+            containsError = true;
+        }
+        if ( !validator.validate( repository.getRefreshCronExpression() ) )
+        {
+            addFieldError( "repository.refreshCronExpression", "Invalid cron expression." );
+            containsError = true;
+        }
+
+        return containsError;
     }
 
     public void setMode( String mode )

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?view=diff&rev=558904&r1=558903&r2=558904
==============================================================================
--- 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 Mon Jul 23 18:06:56 2007
@@ -258,6 +258,8 @@
     
     <action name="saveRepository" class="configureRepositoryAction" method="save">
       <result name="success" type="redirect-action">repositories</result>
+      <result name="input">/WEB-INF/jsp/admin/addRepository.jsp</result>
+      <result name="error">/WEB-INF/jsp/admin/editRepository.jsp</result>
       <interceptor-ref name="configuredPrepareParamsStack"/>
     </action>