You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by bd...@apache.org on 2010/08/04 08:16:29 UTC

svn commit: r982130 - in /tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl: CompositePolicyBuilderImpl.java PolicyAttachmentBuilderImpl.java

Author: bdaniel
Date: Wed Aug  4 06:16:29 2010
New Revision: 982130

URL: http://svn.apache.org/viewvc?rev=982130&view=rev
Log:
Fix the removal of direct policy sets when external policy sets are attached. Also, allow policy sets to attach externally to interface elements. 

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/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java

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=982130&r1=982129&r2=982130&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 Wed Aug  4 06:16:29 2010
@@ -365,14 +365,16 @@ public class CompositePolicyBuilderImpl 
 			BuilderContext context) {
     	boolean foundExternalPolicySet = false;
 		for (PolicySet ps : subject.getPolicySets() ) {
-			if ( ps.getAttachTo() != null ) 
+			if ( ps.isExternalAttachment() ) {
 				foundExternalPolicySet = true;
+				break;
+			}
 		}
 		
 		if ( foundExternalPolicySet ) {
 			List<PolicySet> copy = new ArrayList<PolicySet>(subject.getPolicySets());
 			for ( PolicySet ps : copy ) {
-				if ( ps.getAttachTo() == null ) {
+				if ( !ps.isExternalAttachment() ) {
 					subject.getPolicySets().remove(ps);
 				}
 			}

Modified: tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java?rev=982130&r1=982129&r2=982130&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/builder/src/main/java/org/apache/tuscany/sca/builder/impl/PolicyAttachmentBuilderImpl.java Wed Aug  4 06:16:29 2010
@@ -182,6 +182,7 @@ public class PolicyAttachmentBuilderImpl
 		        String index = getStructuralURI(node);
 		        PolicySubject subject = lookup(composite, index);
 		        if (subject != null) {
+		        	ps.setIsExternalAttachment(true);
 		        	subject.getPolicySets().add(ps);
 		        } else {
 		        	// raise a warning that the XPath node didn't match a node in the 
@@ -270,6 +271,12 @@ public class PolicyAttachmentBuilderImpl
                     Element component = (Element)node.getParentNode();
                     String uri = component.getAttributeNS(null, "uri");
                     return uri + "#implementation()";
+                } else if (localName.startsWith("interface.")) {                
+                	Element contract = (Element)node.getParentNode();
+                	String contractName = contract.getAttributeNS(null, "name");
+                	Element component = (Element)node.getParentNode().getParentNode();
+                	String uri = component.getAttributeNS(null, "uri");
+                	return uri + "#" + contractName + "#interface()"; //(" + contractName + "/" + interfaceName + ")"
                 }
             }
         }
@@ -296,6 +303,7 @@ public class PolicyAttachmentBuilderImpl
         String service = null;
         String reference = null;
         String binding = null;
+        boolean isInterface = false;
         boolean impl = false;
 
         if (index != -1) {
@@ -323,6 +331,9 @@ public class PolicyAttachmentBuilderImpl
                         service = path;
                     } else if ("reference".equals(prefix)) {
                         reference = path;
+                    } else if ( prefix.indexOf("#interface") != -1 ) {
+                    	service = prefix.substring(0, prefix.indexOf("#interface"));
+                    	isInterface = true;
                     }
                 }
             }
@@ -331,7 +342,9 @@ public class PolicyAttachmentBuilderImpl
             if (component.getURI().equals(componentURI)) {
                 if (service != null) {
                     ComponentService componentService = component.getService(service);
-                    if (binding != null) {
+                    if ( isInterface ) {
+                    	return componentService.getInterfaceContract().getInterface();
+                    } else if (binding != null) {
                         Binding b = getBinding(componentService, binding);
                         if (b instanceof PolicySubject) {
                             return (PolicySubject)b;