Author: rfeng
Date: Tue Aug 24 22:50:49 2010
New Revision: 988752

URL: http://svn.apache.org/viewvc?rev=988752&view=rev
Log:
Port the policy changes

Modified:
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java
    
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java?rev=988752&r1=988751&r2=988752&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAReferenceElement.java
 Tue Aug 24 22:50:49 2010
@@ -18,6 +18,11 @@
  */
 package org.apache.tuscany.sca.implementation.spring.elements.tie;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
 
 /**
  * Represents a <sca:reference> element in a Spring application-context
@@ -31,6 +36,10 @@ public class SpringSCAReferenceElement {
     private String name;
     private String type;
     private String defaultBean;
+    
+    private List<QName> intentNames = new ArrayList<QName>();
+    private List<QName> policySetNames = new ArrayList<QName>();
+
 
     public SpringSCAReferenceElement(String name, String type) {
         this.name = name;
@@ -60,12 +69,21 @@ public class SpringSCAReferenceElement {
     public String getDefaultBean() {
         return defaultBean;
     }
+    
+    public List<QName> getIntentNames() {
+        return intentNames;
+    }
+
+    public List<QName> getPolicySetNames() {
+        return policySetNames;
+    }
 
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
         builder.append("SpringSCAReferenceElement 
[name=").append(name).append(", type=").append(type)
-            .append(", defaultBean=").append(defaultBean).append("]");
+            .append(", defaultBean=").append(defaultBean).append(", 
intentNames=").append(intentNames)
+            .append(", policySetNames=").append(policySetNames).append("]");
         return builder.toString();
     }
 

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java?rev=988752&r1=988751&r2=988752&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/elements/tie/SpringSCAServiceElement.java
 Tue Aug 24 22:50:49 2010
@@ -18,6 +18,11 @@
  */
 package org.apache.tuscany.sca.implementation.spring.elements.tie;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
 
 /**
  * Represents a <sca:service> element in a Spring application-context
@@ -32,6 +37,9 @@ public class SpringSCAServiceElement {
     private String type;
     private String target;
 
+    private List<QName> intentNames = new ArrayList<QName>();
+    private List<QName> policySetNames = new ArrayList<QName>();
+
 
     public SpringSCAServiceElement(String name, String target) {
         this.name = name;
@@ -61,12 +69,22 @@ public class SpringSCAServiceElement {
     public String getTarget() {
         return target;
     }
+    
+    public List<QName> getIntentNames() {
+        return intentNames;
+    }
+
+    public List<QName> getPolicySetNames() {
+        return policySetNames;
+    }
+
 
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
         builder.append("SpringSCAServiceElement 
[name=").append(name).append(", type=").append(type)
-            .append(", target=").append(target).append("]");
+            .append(", target=").append(target).append(", 
intentNames=").append(intentNames)
+            .append(", policySetNames=").append(policySetNames).append("]");
         return builder.toString();
     }
 

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java?rev=988752&r1=988751&r2=988752&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaNamespaceHandler.java
 Tue Aug 24 22:50:49 2010
@@ -16,7 +16,15 @@
  */
 package org.apache.tuscany.sca.implementation.spring.namespace.tie;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import javax.xml.namespace.QName;
+
 import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
 
 /**
  * Handler for the &lt;sca:&gt; namespace in an application context
@@ -35,4 +43,51 @@ public class ScaNamespaceHandler extends
         registerBeanDefinitionParser("property", new 
ScaPropertyBeanDefinitionParser());
     }
 
+    private static String getNamespaceURI(Element element, String prefix) { 
+        if (element == null) {
+            return null;
+        }
+        String name = ("".equals(prefix)) ? "xmlns" : "xmlns:" + prefix;
+        String ns = element.getAttribute(name);
+        if (ns != null && !"".equals(ns)) {
+            return ns;
+        }
+        Node parent = element.getParentNode();
+        if (parent instanceof Element) {
+            return getNamespaceURI((Element)parent, prefix);
+        } else {
+            return null;
+        }
+    }
+
+    public static List<QName> resolve(Element element, String listOfNames) {
+        List<QName> qnames = new ArrayList<QName>();
+        StringTokenizer tokenizer = new StringTokenizer(listOfNames);
+        while (tokenizer.hasMoreTokens()) {
+            String qname = tokenizer.nextToken();
+            String prefix = "";
+            String local = qname;
+            int index = qname.indexOf(':');
+            if (index != -1) {
+                local = qname.substring(index + 1);
+                prefix = qname.substring(0, index);
+            }
+            String ns = getNamespaceURI(element, prefix);
+            if (ns != null) {
+                qnames.add(new QName(ns, local, prefix));
+            } else {
+                throw new IllegalArgumentException("Prefix " + prefix + "is 
not bound to a namespace");
+            }
+        }
+        return qnames;
+    }
+
+    public static String getAttribute(Element element, String name) {
+        String attr = element.getAttributeNS(null, name);
+        if ("".equals(attr)) {
+            return null;
+        } else {
+            return attr;
+        }
+    }
 }

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java?rev=988752&r1=988751&r2=988752&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaReferenceBeanDefinitionParser.java
 Tue Aug 24 22:50:49 2010
@@ -16,6 +16,12 @@
  */
 package org.apache.tuscany.sca.implementation.spring.namespace.tie;
 
+import static 
org.apache.tuscany.sca.implementation.spring.namespace.tie.ScaNamespaceHandler.getAttribute;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
 import 
org.apache.tuscany.sca.implementation.spring.context.tie.SCAGenericApplicationContext;
 import 
org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAReferenceElement;
 import org.springframework.beans.factory.config.BeanDefinition;
@@ -36,9 +42,21 @@ public class ScaReferenceBeanDefinitionP
         if (registry instanceof SCAGenericApplicationContext) {
             SCAGenericApplicationContext context = 
(SCAGenericApplicationContext)registry;
             SpringSCAReferenceElement referenceElement =
-                new SpringSCAReferenceElement(element.getAttributeNS(null, 
"name"),
-                                              element.getAttributeNS(null, 
"type"));
-            referenceElement.setDefaultBean(element.getAttributeNS(null, 
"default"));
+                new SpringSCAReferenceElement(getAttribute(element, "name"), 
getAttribute(element, "type"));
+            referenceElement.setDefaultBean(getAttribute(element, "default"));
+
+            String requires = getAttribute(element, "requires");
+            if (requires != null) {
+                List<QName> qnames = ScaNamespaceHandler.resolve(element, 
requires);
+                referenceElement.getIntentNames().addAll(qnames);
+            }
+
+            String policySets = getAttribute(element, "policySets");
+            if (policySets != null) {
+                List<QName> qnames = ScaNamespaceHandler.resolve(element, 
policySets);
+                referenceElement.getPolicySetNames().addAll(qnames);
+            }
+
             context.addSCAReferenceElement(referenceElement);
         }
 

Modified: 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java?rev=988752&r1=988751&r2=988752&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java
 (original)
+++ 
tuscany/sca-java-2.x/trunk/modules/implementation-spring-tie/src/main/java/org/apache/tuscany/sca/implementation/spring/namespace/tie/ScaServiceBeanDefinitionParser.java
 Tue Aug 24 22:50:49 2010
@@ -16,6 +16,12 @@
  */
 package org.apache.tuscany.sca.implementation.spring.namespace.tie;
 
+import static 
org.apache.tuscany.sca.implementation.spring.namespace.tie.ScaNamespaceHandler.getAttribute;
+
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
 import 
org.apache.tuscany.sca.implementation.spring.context.tie.SCAGenericApplicationContext;
 import 
org.apache.tuscany.sca.implementation.spring.elements.tie.SpringSCAServiceElement;
 import org.springframework.beans.factory.config.BeanDefinition;
@@ -36,9 +42,21 @@ public class ScaServiceBeanDefinitionPar
         if (registry instanceof SCAGenericApplicationContext) {
             SCAGenericApplicationContext context = 
(SCAGenericApplicationContext)registry;
             SpringSCAServiceElement serviceElement =
-                new SpringSCAServiceElement(element.getAttributeNS(null, 
"name"),
-                                            element.getAttributeNS(null, 
"target"));
-            serviceElement.setType(element.getAttributeNS(null, "type"));
+                new SpringSCAServiceElement(getAttribute(element, "name"), 
getAttribute(element, "target"));
+            serviceElement.setType(getAttribute(element, "type"));
+
+            String requires = getAttribute(element, "requires");
+            if (requires != null) {
+                List<QName> qnames = ScaNamespaceHandler.resolve(element, 
requires);
+                serviceElement.getIntentNames().addAll(qnames);
+            }
+
+            String policySets = getAttribute(element, "policySets");
+            if (policySets != null) {
+                List<QName> qnames = ScaNamespaceHandler.resolve(element, 
policySets);
+                serviceElement.getPolicySetNames().addAll(qnames);
+            }
+
             context.addSCAServiceElement(serviceElement);
         }
         // do nothing, handled by Tuscany


Reply via email to