Author: olamy
Date: Tue Oct  2 21:12:42 2012
New Revision: 1393185

URL: http://svn.apache.org/viewvc?rev=1393185&view=rev
Log:
[MRM-1681] addProxy Connectors Rules screen
add validation.

Modified:
    
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultProxyConnectorRuleService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors-rules.js
    
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html

Modified: 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java?rev=1393185&r1=1393184&r2=1393185&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/group/DefaultRepositoryGroupAdmin.java
 Tue Oct  2 21:12:42 2012
@@ -225,7 +225,7 @@ public class DefaultRepositoryGroupAdmin
                     java.util.List<String> repos = map.get( groupId );
                     if ( repos == null )
                     {
-                        repos = new java.util.ArrayList<String>();
+                        repos = new ArrayList<String>();
                         map.put( groupId, repos );
                     }
                     repos.add( repo.getId() );
@@ -247,7 +247,7 @@ public class DefaultRepositoryGroupAdmin
                 java.util.List<String> groups = map.get( repositoryId );
                 if ( groups == null )
                 {
-                    groups = new java.util.ArrayList<String>();
+                    groups = new ArrayList<String>();
                     map.put( repositoryId, groups );
                 }
                 groups.add( group.getId() );

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultProxyConnectorRuleService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultProxyConnectorRuleService.java?rev=1393185&r1=1393184&r2=1393185&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultProxyConnectorRuleService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultProxyConnectorRuleService.java
 Tue Oct  2 21:12:42 2012
@@ -23,6 +23,7 @@ import org.apache.archiva.admin.model.be
 import 
org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.api.services.ProxyConnectorRuleService;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.inject.Inject;
@@ -31,7 +32,7 @@ import java.util.List;
 /**
  * @author Olivier Lamy
  */
-@Service ( "proxyConnectorRuleService#rest" )
+@Service ("proxyConnectorRuleService#rest")
 public class DefaultProxyConnectorRuleService
     extends AbstractRestService
     implements ProxyConnectorRuleService
@@ -53,9 +54,43 @@ public class DefaultProxyConnectorRuleSe
         }
     }
 
+    private void validateProxyConnectorRule( ProxyConnectorRule 
proxyConnectorRule )
+        throws ArchivaRestServiceException
+    {
+        if ( StringUtils.isEmpty( proxyConnectorRule.getPattern() ) )
+        {
+            ArchivaRestServiceException e = new ArchivaRestServiceException( 
"pattern cannot be empty", null );
+            e.setErrorKey( "proxy-connector-rule.pattern.empty" );
+            throw e;
+        }
+
+        if ( proxyConnectorRule.getProxyConnectors() == null || 
proxyConnectorRule.getProxyConnectors().isEmpty() )
+        {
+            ArchivaRestServiceException e =
+                new ArchivaRestServiceException( "proxyConnector rule must 
have proxyConnectors.", null );
+            e.setErrorKey( "proxy-connector-rule.pattern.connectors.empty" );
+            throw e;
+        }
+
+        for ( ProxyConnectorRule proxyConnectorRule1 : 
getProxyConnectorRules() )
+        {
+            if ( StringUtils.equals( proxyConnectorRule.getPattern(), 
proxyConnectorRule1.getPattern() )
+                && proxyConnectorRule.getProxyConnectorRuleType() == 
proxyConnectorRule1.getProxyConnectorRuleType() )
+            {
+                ArchivaRestServiceException e =
+                    new ArchivaRestServiceException( "same ProxyConnector rule 
already exists.", null );
+                e.setErrorKey( "proxy-connector-rule.pattern.already.exists" );
+                throw e;
+            }
+        }
+    }
+
     public Boolean addProxyConnectorRule( ProxyConnectorRule 
proxyConnectorRule )
         throws ArchivaRestServiceException
     {
+
+        validateProxyConnectorRule( proxyConnectorRule );
+
         try
         {
             proxyConnectorRuleAdmin.addProxyConnectorRule( proxyConnectorRule, 
getAuditInformation() );

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties?rev=1393185&r1=1393184&r2=1393185&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-web-common/src/main/resources/org/apache/archiva/i18n/default.properties
 Tue Oct  2 21:12:42 2012
@@ -493,5 +493,8 @@ proxy-connector-rule.deleted=ProxyConnec
 proxy-connector-rule.pattern=Pattern
 proxy-connector-rule.added=ProxyConnector rule added.
 proxy-connector-rule.updated=ProxyConnector rule updated.
+proxy-connector-rule.pattern.empty=Pattern cannot be empty.
+proxy-connector-rule.pattern.already.exists=Same ProxyConnector rule already 
exists.
+proxy-connector-rule.pattern.connectors.empty=You must select proxyConnectors.
 
 

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors-rules.js
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors-rules.js?rev=1393185&r1=1393184&r2=1393185&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors-rules.js
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/proxy-connectors-rules.js
 Tue Oct  2 21:12:42 2012
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-define("archiva.proxy-connectors-rules",["jquery","i18n","jquery.tmpl","bootstrap","jquery.validate","knockout"
+define("archiva.proxy-connectors-rules",["jquery","i18n","jquery.tmpl","bootstrap","jquery.ui","knockout"
   ,"knockout.simpleGrid","knockout.sortable","archiva.proxy-connectors"], 
function() {
 
 
@@ -57,7 +57,10 @@ define("archiva.proxy-connectors-rules",
     addProxyConnectorRule=function(proxyConnectorRule){
       $("#proxy-connector-rule-add-btn" ).button("loading");
       $.log("addProxyConnectorRule");
-      
self.saveProxyConnectorRule(proxyConnectorRule,"restServices/archivaServices/proxyConnectorRuleService/proxyConnectorRule",true);
+      
self.saveProxyConnectorRule(proxyConnectorRule,"restServices/archivaServices/proxyConnectorRuleService/proxyConnectorRule",true,
+      function(){
+        $("#proxy-connector-rule-add-btn" ).button("reset");
+      });
     }
 
     
this.saveProxyConnectorRule=function(proxyConnectorRule,url,add,completeFnCallback){

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html?rev=1393185&r1=1393184&r2=1393185&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/templates/archiva/repositories.html
 Tue Oct  2 21:12:42 2012
@@ -1341,7 +1341,7 @@
             <div class="control-group">
               <label class="control-label" 
for="id">${$.i18n.prop('proxy-connector-rule.pattern')}</label>
               <div class="controls">
-                <input type="text" class="input-large required" 
id="proxy-connector-rule-pattern" name="id" size="15"
+                <input type="text" class="input-large required" id="pattern" 
name="pattern" size="15"
                      
data-bind="value:proxyConnectorRule.pattern,css:{'uneditable-input': 
update},readonly:update"/>
               </div>
             </div>


Reply via email to