Author: kstam
Date: Thu Sep 15 04:17:46 2011
New Revision: 1170951

URL: http://svn.apache.org/viewvc?rev=1170951&view=rev
Log:
JUDDI-258 hooking up checking for max constraints for a publisher

Added:
    
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/v3/error/MaxEntitiesExceededException.java
Modified:
    
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
    
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
    juddi/trunk/juddi-core/src/main/resources/messages.properties

Modified: 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
URL: 
http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java?rev=1170951&r1=1170950&r2=1170951&view=diff
==============================================================================
--- 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
 (original)
+++ 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
 Thu Sep 15 04:17:46 2011
@@ -518,7 +518,8 @@ public class UDDIPublicationImpl extends
                        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
                        
-                       new ValidatePublish(publisher).validateSaveBinding(em, 
body, null);
+                       ValidatePublish validator = new 
ValidatePublish(publisher);
+                       validator.validateSaveBinding(em, body, null);
        
                        BindingDetail result = new BindingDetail();
                        
@@ -536,6 +537,8 @@ public class UDDIPublicationImpl extends
                                em.persist(modelBindingTemplate);
                                
                                
result.getBindingTemplate().add(apiBindingTemplate);
+                               
+                               validator.validateSaveBindingMax(em, 
modelBindingTemplate.getBusinessService().getEntityKey());
                        }
        
                        tx.commit();
@@ -569,7 +572,8 @@ public class UDDIPublicationImpl extends
                        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
                        
-                       new ValidatePublish(publisher).validateSaveBusiness(em, 
body, null);
+                       ValidatePublish validator = new 
ValidatePublish(publisher);
+                       validator.validateSaveBusiness(em, body, null);
        
                        BusinessDetail result = new BusinessDetail();
                        
@@ -586,6 +590,9 @@ public class UDDIPublicationImpl extends
        
                                
result.getBusinessEntity().add(apiBusinessEntity);
                        }
+                       
+                       //check how many business this publisher owns.
+                       validator.validateSaveBusinessMax(em);
        
                        tx.commit();
                         long procTime = System.nanoTime() - startTime;
@@ -618,7 +625,8 @@ public class UDDIPublicationImpl extends
        
                        UddiEntityPublisher publisher = 
this.getEntityPublisher(em, body.getAuthInfo());
                        
-                       new ValidatePublish(publisher).validateSaveService(em, 
body, null);
+                       ValidatePublish validator = new 
ValidatePublish(publisher);
+                       validator.validateSaveService(em, body, null);
                        
                        ServiceDetail result = new ServiceDetail();
        
@@ -636,8 +644,11 @@ public class UDDIPublicationImpl extends
                                em.persist(modelBusinessService);
                                
                                
result.getBusinessService().add(apiBusinessService);
+                               
+                               validator.validateSaveServiceMax(em, 
modelBusinessService.getBusinessEntity().getEntityKey());
                        }
-       
+                       
+                       
                        tx.commit();
                         long procTime = System.nanoTime() - startTime;
                         serviceCounter.update(PublicationQuery.SAVE_SERVICE, 

Added: 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/v3/error/MaxEntitiesExceededException.java
URL: 
http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/v3/error/MaxEntitiesExceededException.java?rev=1170951&view=auto
==============================================================================
--- 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/v3/error/MaxEntitiesExceededException.java
 (added)
+++ 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/v3/error/MaxEntitiesExceededException.java
 Thu Sep 15 04:17:46 2011
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.v3.error;
+
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.RegistryException;
+import org.apache.juddi.v3.error.UDDIErrorHelper;
+
+/**
+ *   E_valueNotAllowed: (20210) Signifies that a value did not pass validation 
because of contextual issues.  The value may be valid in some contexts, but 
+ *   not in the context used.  The error text MAY contain information about 
the contextual problem.
+ * 
+ * @author <a href="mailto:[email protected]";>Jeff Faath</a>
+ */
+public class MaxEntitiesExceededException extends RegistryException {
+
+       private static final long serialVersionUID = -4003033708851434957L;
+
+       public MaxEntitiesExceededException(ErrorMessage message) {
+               super(message, 
UDDIErrorHelper.buildDispositionReport(UDDIErrorHelper.E_VALUE_NOT_ALLOWED));
+       }
+}

Modified: 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
URL: 
http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java?rev=1170951&r1=1170950&r2=1170951&view=diff
==============================================================================
--- 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
 (original)
+++ 
juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
 Thu Sep 15 04:17:46 2011
@@ -37,12 +37,15 @@ import org.apache.juddi.keygen.KeyGenera
 import org.apache.juddi.model.Publisher;
 import org.apache.juddi.model.UddiEntity;
 import org.apache.juddi.model.UddiEntityPublisher;
+import org.apache.juddi.query.FindBusinessByPublisherQuery;
+import org.apache.juddi.query.FindTModelByPublisherQuery;
 import org.apache.juddi.v3.error.AssertionNotFoundException;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
 import org.apache.juddi.v3.error.InvalidKeyPassedException;
 import org.apache.juddi.v3.error.InvalidProjectionException;
 import org.apache.juddi.v3.error.KeyUnavailableException;
+import org.apache.juddi.v3.error.MaxEntitiesExceededException;
 import org.apache.juddi.v3.error.UserMismatchException;
 import org.apache.juddi.v3.error.ValueNotAllowedException;
 import org.uddi.api_v3.AddPublisherAssertions;
@@ -270,6 +273,32 @@ public class ValidatePublish extends Val
                }
        }
        
+    public void validateSaveBusinessMax(EntityManager em) throws 
DispositionReportFaultMessage {
+               
+               //Obtain the maxSettings for this publisher or get the defaults
+               Publisher publisher = em.find(Publisher.class, 
getPublisher().getAuthorizedName());
+               Integer maxBusinesses = publisher.getMaxBusinesses();
+               try {
+                       if (maxBusinesses==null) {
+                               if 
(AppConfig.getConfiguration().containsKey(Property.JUDDI_MAX_BUSINESSES_PER_PUBLISHER))
 {
+                                       maxBusinesses = 
AppConfig.getConfiguration().getInteger(Property.JUDDI_MAX_BUSINESSES_PER_PUBLISHER,
 -1);
+                               } else {
+                                       maxBusinesses = -1;
+                               }
+                       }
+               } catch (ConfigurationException e) {
+                       log.error(e.getMessage(), e);
+               }
+               //if we have the maxBusinesses set for this publisher then we 
need to make sure we did not exceed it.
+               if (maxBusinesses > 0) {
+                       //get the businesses owned by this publisher
+                       List<?> businessKeysFound = 
FindBusinessByPublisherQuery.select(em, null, publisher, null);
+                       if (businessKeysFound!=null && businessKeysFound.size() 
> maxBusinesses) 
+                               throw new MaxEntitiesExceededException(new 
ErrorMessage("errors.save.maxBusinessesExceeded"));
+               }
+               
+       }
+       
        public void validateSaveService(EntityManager em, SaveService body, 
Configuration config) throws DispositionReportFaultMessage {
 
                if (config==null) {
@@ -294,6 +323,31 @@ public class ValidatePublish extends Val
                }
        }
        
+       public void validateSaveServiceMax(EntityManager em, String 
businessKey) throws DispositionReportFaultMessage {
+               
+               //Obtain the maxSettings for this publisher or get the defaults
+               Publisher publisher = em.find(Publisher.class, 
getPublisher().getAuthorizedName());
+               Integer maxServices = publisher.getMaxBusinesses();
+               try {
+                       if (maxServices==null) {
+                               if 
(AppConfig.getConfiguration().containsKey(Property.JUDDI_MAX_SERVICES_PER_BUSINESS))
 {
+                                       maxServices = 
AppConfig.getConfiguration().getInteger(Property.JUDDI_MAX_SERVICES_PER_BUSINESS,
 -1);
+                               } else {
+                                       maxServices = -1;
+                               }
+                       }
+               } catch (ConfigurationException e) {
+                       log.error(e.getMessage(), e);
+               }
+               //if we have the maxServices set for a business then we need to 
make sure we did not exceed it.
+               if (maxServices > 0) {
+                       //get the businesses owned by this publisher
+                       org.apache.juddi.model.BusinessEntity 
modelBusinessEntity = em.find(org.apache.juddi.model.BusinessEntity.class, 
businessKey);
+                       if (modelBusinessEntity.getBusinessServices()!=null && 
modelBusinessEntity.getBusinessServices().size() > maxServices) 
+                               throw new MaxEntitiesExceededException(new 
ErrorMessage("errors.save.maxServicesExceeded"));
+               }
+       }
+       
        public void validateSaveBinding(EntityManager em, SaveBinding body, 
Configuration config) throws DispositionReportFaultMessage {
 
                if (config==null) {
@@ -316,6 +370,31 @@ public class ValidatePublish extends Val
                        validateBindingTemplate(em, entity, null, config);
                }
        }
+       
+       public void validateSaveBindingMax(EntityManager em, String serviceKey) 
throws DispositionReportFaultMessage {
+               
+               //Obtain the maxSettings for this publisher or get the defaults
+               Publisher publisher = em.find(Publisher.class, 
getPublisher().getAuthorizedName());
+               Integer maxBindings = publisher.getMaxBindingsPerService();
+               try {
+                       if (maxBindings==null) {
+                               if 
(AppConfig.getConfiguration().containsKey(Property.JUDDI_MAX_BINDINGS_PER_SERVICE))
 {
+                                       maxBindings = 
AppConfig.getConfiguration().getInteger(Property.JUDDI_MAX_BINDINGS_PER_SERVICE,
 -1);
+                               } else {
+                                       maxBindings = -1;
+                               }
+                       }
+               } catch (ConfigurationException e) {
+                       log.error(e.getMessage(), e);
+               }
+               //if we have the maxBindings set for a service then we need to 
make sure we did not exceed it.
+               if (maxBindings > 0) {
+                       //get the bindings owned by this service
+                       org.apache.juddi.model.BusinessService 
modelBusinessService = em.find(org.apache.juddi.model.BusinessService.class, 
serviceKey);
+                       if (modelBusinessService.getBindingTemplates()!=null && 
modelBusinessService.getBindingTemplates().size() > maxBindings) 
+                               throw new MaxEntitiesExceededException(new 
ErrorMessage("errors.save.maxBindingsExceeded"));
+               }
+       }
 
        public void validateSaveTModel(EntityManager em, SaveTModel body, 
Configuration config) throws DispositionReportFaultMessage {
 
@@ -339,6 +418,31 @@ public class ValidatePublish extends Val
                        validateTModel(em, entity, config);
                }
        }
+       
+       public void validateSaveTModelMax(EntityManager em) throws 
DispositionReportFaultMessage {
+               
+               //Obtain the maxSettings for this publisher or get the defaults
+               Publisher publisher = em.find(Publisher.class, 
getPublisher().getAuthorizedName());
+               Integer maxTModels = publisher.getMaxTmodels();
+               try {
+                       if (maxTModels==null) {
+                               if 
(AppConfig.getConfiguration().containsKey(Property.JUDDI_MAX_TMODELS_PER_PUBLISHER))
 {
+                                       maxTModels = 
AppConfig.getConfiguration().getInteger(Property.JUDDI_MAX_TMODELS_PER_PUBLISHER,
 -1);
+                               } else {
+                                       maxTModels = -1;
+                               }
+                       }
+               } catch (ConfigurationException e) {
+                       log.error(e.getMessage(), e);
+               }
+               //if we have the TModels set for a publisher then we need to 
make sure we did not exceed it.
+               if (maxTModels > 0) {
+                       //get the tmodels owned by this publisher
+                       List<?> tmodelKeysFound = 
FindTModelByPublisherQuery.select(em, null, publisher, null);
+                       if (tmodelKeysFound!=null && tmodelKeysFound.size() > 
maxTModels) 
+                               throw new MaxEntitiesExceededException(new 
ErrorMessage("errors.save.maxTModelsExceeded"));
+               }
+       }
 
        public void validateAddPublisherAssertions(EntityManager em, 
AddPublisherAssertions body) throws DispositionReportFaultMessage {
 

Modified: juddi/trunk/juddi-core/src/main/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/juddi/trunk/juddi-core/src/main/resources/messages.properties?rev=1170951&r1=1170950&r2=1170951&view=diff
==============================================================================
--- juddi/trunk/juddi-core/src/main/resources/messages.properties (original)
+++ juddi/trunk/juddi-core/src/main/resources/messages.properties Thu Sep 15 
04:17:46 2011
@@ -179,6 +179,10 @@ errors.getregisteredinfo.NoInfoSelection
 errors.AdminReqd=An account must have administrative privileges to perform 
this function
 errors.savepublisher.NoInput=At least one Publisher must be provided
 errors.savepublisher.AdminReqd=An account must have administrative privileges 
to save publishers
+errors.save.maxBusinessesExceeded=The maximum allowed number of businesses are 
exceed for this publisher
+errors.save.maxServicesExceeded=The maximum allowed number of services are 
exceed for this business
+errors.save.maxBindingsExceeded=The maximum allowed number of bindings are 
exceed for this service
+errors.save.maxTModelsExceeded=The maximum allowed number of tmodels are 
exceed for this publisher
 errors.deletepublisher.AdminReqd=An account must have administrative 
privileges to delete publishers
 errors.publisher.NullInput=The Publisher structure cannot be blank
 errors.publisher.NoAuthorizedName=A valid publisher authorized name was not 
specified



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to