Author: slaws
Date: Mon Jan 18 20:48:27 2010
New Revision: 900548

URL: http://svn.apache.org/viewvc?rev=900548&view=rev
Log:
Check that the policy sets for a particular endpoint, endpointreference or 
implementation are expressed in one language.

Modified:
    
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
    
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties

Modified: 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java?rev=900548&r1=900547&r2=900548&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/CompositePolicyBuilderImpl.java
 Mon Jan 18 20:48:27 2010
@@ -19,6 +19,8 @@
 
 package org.apache.tuscany.sca.builder.impl;
 
+import java.util.Set;
+
 import javax.xml.namespace.QName;
 
 import org.apache.tuscany.sca.assembly.Component;
@@ -178,10 +180,22 @@
 
             for (ComponentService componentService : component.getServices()) {
                 for (Endpoint ep : componentService.getEndpoints()) {
-                    for (QName policyType : getPolicyNames(ep)) {
-                        PolicyBuilder builder = 
builders.getPolicyBuilder(policyType);
-                        if (builder != null) {
-                            builder.build(ep, context);
+                    Set<QName> policyNames = getPolicyNames(ep);
+                    
+                    // check that only one policy language is present in the 
endpoint's policy sets
+                    if (policyNames.size() > 1){
+                        Monitor.error(context.getMonitor(), 
+                                      this, 
+                                      "builder-validation-messages", 
+                                      "MultiplePolicyLanguagesInEP", 
+                                      ep.toString(), 
+                                      policyNames.toString());
+                    } else {
+                        for (QName policyType : policyNames) {
+                            PolicyBuilder builder = 
builders.getPolicyBuilder(policyType);
+                            if (builder != null) {
+                                builder.build(ep, context);
+                            }
                         }
                     }
                 }
@@ -189,10 +203,22 @@
 
             for (ComponentReference componentReference : 
component.getReferences()) {
                 for (EndpointReference epr : 
componentReference.getEndpointReferences()) {
-                    for (QName policyType : getPolicyNames(epr)) {
-                        PolicyBuilder builder = 
builders.getPolicyBuilder(policyType);
-                        if (builder != null) {
-                            builder.build(epr, context);
+                    Set<QName> policyNames = getPolicyNames(epr);
+                    
+                    // check that only one policy language is present in the 
endpoint references's policy sets
+                    if (policyNames.size() > 1){
+                        Monitor.error(context.getMonitor(), 
+                                      this, 
+                                      "builder-validation-messages", 
+                                      "MultiplePolicyLanguagesInEPR", 
+                                      epr.toString(), 
+                                      policyNames.toString());
+                    } else {                    
+                        for (QName policyType : policyNames) {
+                            PolicyBuilder builder = 
builders.getPolicyBuilder(policyType);
+                            if (builder != null) {
+                                builder.build(epr, context);
+                            }
                         }
                     }
                 }
@@ -200,10 +226,22 @@
 
             Implementation implementation = component.getImplementation();
             if (implementation != null) {
-                for (QName policyType : getPolicyNames(implementation)) {
-                    PolicyBuilder builder = 
builders.getPolicyBuilder(policyType);
-                    if (builder != null) {
-                        builder.build(component, implementation, context);
+                Set<QName> policyNames = getPolicyNames(implementation);
+                
+                // check that only one policy language is present in the 
implementations's policy sets
+                if (policyNames.size() > 1){
+                    Monitor.error(context.getMonitor(), 
+                                  this, 
+                                  "builder-validation-messages", 
+                                  "MultiplePolicyLanguagesInImplementation", 
+                                  component.toString(), 
+                                  policyNames.toString());
+                } else {
+                    for (QName policyType : policyNames) {
+                        PolicyBuilder builder = 
builders.getPolicyBuilder(policyType);
+                        if (builder != null) {
+                            builder.build(component, implementation, context);
+                        }
                     }
                 }
             }

Modified: 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties?rev=900548&r1=900547&r2=900548&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/builder/src/main/resources/org/apache/tuscany/sca/builder/builder-validation-messages.properties
 Mon Jan 18 20:48:27 2010
@@ -22,4 +22,7 @@
 # there are a whole stack of builder related messages that
 # are still yet to be moved here from assembly-validation-messages.properties
 PolicyAttachedToProperty = [POL40002] The policy {0} has been attached to a 
property or one of its children. This is not allowed.
-PolicyDOMModelMissmatch = The DOM node which has been found as a result of 
evaluating the XPath attachment of policy {0} cannot be mapped back to an 
element in the SCA model. The structural URI of the node is {1} 
+PolicyDOMModelMissmatch = The DOM node which has been found as a result of 
evaluating the XPath attachment of policy {0} cannot be mapped back to an 
element in the SCA model. The structural URI of the node is {1}
+MultiplePolicyLanguagesInEP = The policy sets for endpoint {0} contain 
policies specified in more than one language {1}
+MultiplePolicyLanguagesInEPR = The policy sets for endpoint reference {0} 
contain policies specified in more than one language {1}  
+MultiplePolicyLanguagesInImpl = The policy sets for component {0} 
implementation contain policies specified in more than one language {1}


Reply via email to