Author: rfeng
Date: Fri Nov 20 00:53:01 2009
New Revision: 882372

URL: http://svn.apache.org/viewvc?rev=882372&view=rev
Log:
Add <requires> and <policySetAttachment> support for the composite (binding and 
implementation levels need be to implemented by binding/impl processors)

Modified:
    
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
    
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
    
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/PolicySubjectProcessor.java

Modified: 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java?rev=882372&r1=882371&r2=882372&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
 (original)
+++ 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
 Fri Nov 20 00:53:01 2009
@@ -34,17 +34,20 @@
 import static 
org.apache.tuscany.sca.assembly.xml.Constants.IMPLEMENTATION_COMPOSITE_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.INCLUDE;
 import static org.apache.tuscany.sca.assembly.xml.Constants.INCLUDE_QNAME;
+import static org.apache.tuscany.sca.assembly.xml.Constants.INTENTS;
 import static org.apache.tuscany.sca.assembly.xml.Constants.LOCAL;
 import static org.apache.tuscany.sca.assembly.xml.Constants.MANY;
 import static org.apache.tuscany.sca.assembly.xml.Constants.MUST_SUPPLY;
 import static org.apache.tuscany.sca.assembly.xml.Constants.NAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.NONOVERRIDABLE;
+import static 
org.apache.tuscany.sca.assembly.xml.Constants.POLICY_SET_ATTACHMENT_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.PROMOTE;
 import static org.apache.tuscany.sca.assembly.xml.Constants.PROPERTY;
 import static org.apache.tuscany.sca.assembly.xml.Constants.PROPERTY_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.REFERENCE;
 import static org.apache.tuscany.sca.assembly.xml.Constants.REFERENCE_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.REPLACE;
+import static org.apache.tuscany.sca.assembly.xml.Constants.REQUIRES_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.SCA11_NS;
 import static org.apache.tuscany.sca.assembly.xml.Constants.SERVICE;
 import static org.apache.tuscany.sca.assembly.xml.Constants.SERVICE_QNAME;
@@ -99,7 +102,9 @@
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
 import org.apache.tuscany.sca.monitor.Monitor;
 import org.apache.tuscany.sca.policy.ExtensionType;
+import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.PolicyFactory;
+import org.apache.tuscany.sca.policy.PolicySet;
 import org.apache.tuscany.sca.policy.PolicySubject;
 import org.w3c.dom.Document;
 
@@ -464,6 +469,37 @@
 
                             component.setImplementation(implementation);
                             policyProcessor.readPolicies(implementation, 
reader);
+                        } else if (REQUIRES_QNAME.equals(name)) {
+                            List<QName> intents = getQNames(reader, INTENTS);
+                            for (QName i : intents) {
+                                Intent intent = policyFactory.createIntent();
+                                intent.setName(i);
+                                if (composite != null) {
+                                    composite.getRequiredIntents().add(intent);
+                                } else if (component != null) {
+                                    component.getRequiredIntents().add(intent);
+                                } else if (contract != null) {
+                                    contract.getRequiredIntents().add(intent);
+                                } else if (callback != null) {
+                                    callback.getRequiredIntents().add(intent);
+                                }
+                            }
+                        } else if (POLICY_SET_ATTACHMENT_QNAME.equals(name)) {
+                            QName ps = getQName(reader, NAME);
+                            if (ps != null) {
+                                PolicySet policySet = 
policyFactory.createPolicySet();
+                                policySet.setName(ps);
+                                if (composite != null) {
+                                    composite.getPolicySets().add(policySet);
+                                } else if (component != null) {
+                                    component.getPolicySets().add(policySet);
+                                } else if (contract != null) {
+                                    contract.getPolicySets().add(policySet);
+                                } else if (callback != null) {
+                                    callback.getPolicySets().add(policySet);
+                                }
+                            }
+
                         } else {
 
                             // Read an extension element

Modified: 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java?rev=882372&r1=882371&r2=882372&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
 (original)
+++ 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
 Fri Nov 20 00:53:01 2009
@@ -71,13 +71,20 @@
     
     String NAME = "name";
     String VALUE = "value";
-    QName VALUE_QNAME = new QName(SCA11_NS, VALUE);    
+    QName VALUE_QNAME = new QName(SCA11_NS, VALUE);
+    
+    String POLICY_SET_ATTACHMENT = "policySetAttachment";
+    QName POLICY_SET_ATTACHMENT_QNAME = new QName(SCA11_NS, 
POLICY_SET_ATTACHMENT);
+    
     String TARGET_NAMESPACE = "targetNamespace";
     String LOCAL = "local";
     String AUTOWIRE = "autowire";
     String NONOVERRIDABLE = "nonOverridable";
     String REPLACE = "replace";
     String REQUIRES = "requires";
+    QName REQUIRES_QNAME = new QName(SCA11_NS, REQUIRES);
+    String INTENTS = "intents";
+    
     String POLICY_SETS = "policySets"; 
     String PROMOTE = "promote";
     String TARGET = "target";

Modified: 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/PolicySubjectProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/PolicySubjectProcessor.java?rev=882372&r1=882371&r2=882372&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/PolicySubjectProcessor.java
 (original)
+++ 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/PolicySubjectProcessor.java
 Fri Nov 20 00:53:01 2009
@@ -62,14 +62,14 @@
 
     /**
      * Read policy intents associated with an operation.
-     * @param attachPoint
+     * @param subject
      * @param operation
      * @param reader
      */
-    private void readIntents(Object attachPoint, Operation operation, 
XMLStreamReader reader) {
-        if (!(attachPoint instanceof PolicySubject))
+    private void readIntents(Object subject, Operation operation, 
XMLStreamReader reader) {
+        if (!(subject instanceof PolicySubject))
             return;
-        PolicySubject intentAttachPoint = (PolicySubject)attachPoint;
+        PolicySubject intentAttachPoint = (PolicySubject)subject;
         String value = reader.getAttributeValue(null, REQUIRES);
         if (value != null) {
             List<Intent> requiredIntents = 
intentAttachPoint.getRequiredIntents();
@@ -89,35 +89,35 @@
 
     /**
      * Reads policy intents and policy sets associated with an operation.
-     * @param attachPoint
+     * @param subject
      * @param operation
      * @param reader
      */
-    public void readPolicies(Object attachPoint, Operation operation, 
XMLStreamReader reader) {
-        readIntents(attachPoint, operation, reader);
-        readPolicySets(attachPoint, operation, reader);
+    public void readPolicies(Object subject, Operation operation, 
XMLStreamReader reader) {
+        readIntents(subject, operation, reader);
+        readPolicySets(subject, operation, reader);
     }
 
     /**
      * Reads policy intents and policy sets.
-     * @param attachPoint
+     * @param subject
      * @param reader
      */
-    public void readPolicies(Object attachPoint, XMLStreamReader reader) {
-        readPolicies(attachPoint, null, reader);
+    public void readPolicies(Object subject, XMLStreamReader reader) {
+        readPolicies(subject, null, reader);
     }
 
     /**
      * Reads policy sets associated with an operation.
-     * @param attachPoint
+     * @param subject
      * @param operation
      * @param reader
      */
-    private void readPolicySets(Object attachPoint, Operation operation, 
XMLStreamReader reader) {
-        if (!(attachPoint instanceof PolicySubject)) {
+    private void readPolicySets(Object subject, Operation operation, 
XMLStreamReader reader) {
+        if (!(subject instanceof PolicySubject)) {
             return;
         }
-        PolicySubject policySubject = (PolicySubject)attachPoint;
+        PolicySubject policySubject = (PolicySubject)subject;
         String value = reader.getAttributeValue(null, POLICY_SETS);
         if (value != null) {
             List<PolicySet> policySets = policySubject.getPolicySets();
@@ -137,55 +137,55 @@
     
     /**
      * Write policies
-     * @param attachPoint
+     * @param subject
      * @return
      */
-    XAttr writePolicies(Object attachPoint) throws XMLStreamException {
-        return writePolicies(attachPoint, (Operation)null);
+    XAttr writePolicies(Object subject) throws XMLStreamException {
+        return writePolicies(subject, (Operation)null);
     }
 
     /**
      * Write policies
-     * @param attachPoint
+     * @param subject
      * @return
      */
-    public void writePolicyAttributes(Object attachPoint, XMLStreamWriter 
writer) throws XMLStreamException {
-        writePolicyAttributes(attachPoint, (Operation)null, writer);
+    public void writePolicyAttributes(Object subject, XMLStreamWriter writer) 
throws XMLStreamException {
+        writePolicyAttributes(subject, (Operation)null, writer);
     }
 
     /**
      * Write policies associated with an operation
-     * @param attachPoint
+     * @param subject
      * @param operation
      * @return
      */
-    XAttr writePolicies(Object attachPoint, Operation operation) {
+    XAttr writePolicies(Object subject, Operation operation) {
         List<XAttr> attrs =new ArrayList<XAttr>();
-        attrs.add(writeIntents(attachPoint, operation));
-        attrs.add(writePolicySets(attachPoint, operation));
+        attrs.add(writeIntents(subject, operation));
+        attrs.add(writePolicySets(subject, operation));
         return new XAttr(null, attrs);
     }
 
     /**
      * Write policies
-     * @param attachPoint
+     * @param subject
      * @return
      */
-    public void writePolicyAttributes(Object attachPoint, Operation operation, 
XMLStreamWriter writer) throws XMLStreamException {
-        XAttr attr = writePolicies(attachPoint, operation);
+    public void writePolicyAttributes(Object subject, Operation operation, 
XMLStreamWriter writer) throws XMLStreamException {
+        XAttr attr = writePolicies(subject, operation);
         attr.write(writer);
     }
 
     /**
      * Write policy intents associated with an operation.
-     * @param attachPoint
+     * @param subject
      * @param operation
      */
-    private XAttr writeIntents(Object attachPoint, Operation operation) {
-        if (!(attachPoint instanceof PolicySubject)) {
+    private XAttr writeIntents(Object subject, Operation operation) {
+        if (!(subject instanceof PolicySubject)) {
             return null;
         }
-        PolicySubject intentAttachPoint = (PolicySubject)attachPoint;
+        PolicySubject intentAttachPoint = (PolicySubject)subject;
         List<QName> qnames = new ArrayList<QName>();
         for (Intent intent: intentAttachPoint.getRequiredIntents()) {
             qnames.add(intent.getName());
@@ -195,14 +195,14 @@
 
     /**
      * Write policy sets associated with an operation.
-     * @param attachPoint
+     * @param subject
      * @param operation
      */
-    private XAttr writePolicySets(Object attachPoint, Operation operation) {
-        if (!(attachPoint instanceof PolicySubject)) {
+    private XAttr writePolicySets(Object subject, Operation operation) {
+        if (!(subject instanceof PolicySubject)) {
             return null;
         }
-        PolicySubject policySetAttachPoint = (PolicySubject)attachPoint;
+        PolicySubject policySetAttachPoint = (PolicySubject)subject;
         List<QName> qnames = new ArrayList<QName>();
         for (PolicySet policySet: policySetAttachPoint.getPolicySets()) {
             qnames.add(policySet.getName());
@@ -210,9 +210,9 @@
         return new XAttr(Constants.POLICY_SETS, qnames);
     }
     
-    public void resolvePolicies(Object attachPoint, ModelResolver resolver, 
ProcessorContext context) {
-        if ( attachPoint instanceof PolicySubject ) {
-            PolicySubject policySetAttachPoint = (PolicySubject)attachPoint;
+    public void resolvePolicies(Object subject, ModelResolver resolver, 
ProcessorContext context) {
+        if ( subject instanceof PolicySubject ) {
+            PolicySubject policySetAttachPoint = (PolicySubject)subject;
             
             List<Intent> requiredIntents = new ArrayList<Intent>();
             Intent resolvedIntent = null;


Reply via email to