I liked it better having a base class to extend, having all the extension
ArtifactProcessors just cut and paste the policy code doesn't seem very
perfect. Why can't the 'SPI' provide base classes for common code? Or could
the interfaces be changed so the code doesn't need to be implemented?

  ...ant

On 5/16/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

Author: jsdelfino
Date: Tue May 15 23:50:37 2007
New Revision: 538450

URL: http://svn.apache.org/viewvc?view=rev&rev=538450
Log:
Changed visibility of BaseArtifactProcessor to prevent that extensions
confuse it with an SPI.

Modified:

    
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java

    
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/xml/RMIBindingProcessor.java

    
incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java

    
incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java

Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java?view=diff&rev=538450&r1=538449&r2=538450

==============================================================================
---
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
Tue May 15 23:50:37 2007
@@ -72,7 +72,7 @@
  *
  * @version $Rev$ $Date$
  */
-public abstract class BaseArtifactProcessor implements Constants {
+abstract class BaseArtifactProcessor implements Constants {

     protected AssemblyFactory assemblyFactory;
     protected PolicyFactory policyFactory;
@@ -81,12 +81,6 @@
     private static final DocumentBuilderFactory domFactory =
DocumentBuilderFactory.newInstance();
     static {
         domFactory.setNamespaceAware(true);
-    }
-
-    /**
-     * Constructs a new BaseArtifactProcessor.
-     */
-    public BaseArtifactProcessor() {
     }

     /**

Modified:
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/xml/RMIBindingProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/xml/RMIBindingProcessor.java?view=diff&rev=538450&r1=538449&r2=538450

==============================================================================
---
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/xml/RMIBindingProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/xml/RMIBindingProcessor.java
Tue May 15 23:50:37 2007
@@ -21,13 +21,15 @@

import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;

+import java.util.List;
+import java.util.StringTokenizer;
+
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;

import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.xml.BaseArtifactProcessor;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.binding.rmi.RMIBinding;
import org.apache.tuscany.sca.binding.rmi.RMIBindingConstants;
@@ -37,17 +39,21 @@
import
org.apache.tuscany.sca.contribution.service.ContributionReadException;
import
org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import
org.apache.tuscany.sca.contribution.service.ContributionWriteException;
+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.PolicySetAttachPoint;

-public class RMIBindingProcessor extends BaseArtifactProcessor implements
+public class RMIBindingProcessor implements
     StAXArtifactProcessor<RMIBinding>, RMIBindingConstants {

     private RMIBindingFactory rmiBindingFactory;
+    private PolicyFactory policyFactory;

     public RMIBindingProcessor(AssemblyFactory assemblyFactory,
                                PolicyFactory policyFactory,
                                RMIBindingFactory rmiBindingFactory) {
-        super(assemblyFactory, policyFactory, null);
+        this.policyFactory = policyFactory;
         this.rmiBindingFactory = rmiBindingFactory;
     }

@@ -59,9 +65,9 @@
             readPolicies(rmiBinding, reader);

             //Read host, port and service name
-            rmiBinding.setRmiHostName(getString(reader, RMI_HOST));
-            rmiBinding.setRmiPort(getString(reader, RMI_PORT));
-            rmiBinding.setRmiServiceName(getString(reader, RMI_SERVICE));
+            rmiBinding.setRmiHostName(reader.getAttributeValue(null,
RMI_HOST));
+            rmiBinding.setRmiPort(reader.getAttributeValue(null,
RMI_PORT));
+            rmiBinding.setRmiServiceName(reader.getAttributeValue(null,
RMI_SERVICE));

             // Skip to end element
             while (reader.hasNext()) {
@@ -109,4 +115,55 @@
     public Class<RMIBinding> getModelType() {
         return RMIBinding.class;
     }
+
+    /**
+     * Reads policy intents and policy sets.
+     * @param attachPoint
+     * @param reader
+     */
+    private void readPolicies(PolicySetAttachPoint attachPoint,
XMLStreamReader reader) {
+        String value = reader.getAttributeValue(null, Constants.REQUIRES
);
+        if (value != null) {
+            List<Intent> requiredIntents = attachPoint.getRequiredIntents
();
+            for (StringTokenizer tokens = new StringTokenizer(value);
tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                Intent intent = policyFactory.createIntent();
+                intent.setName(qname);
+                requiredIntents.add(intent);
+            }
+        }
+
+        value = reader.getAttributeValue(null, Constants.POLICY_SETS);
+        if (value != null) {
+            List<PolicySet> policySets = attachPoint.getPolicySets();
+            for (StringTokenizer tokens = new StringTokenizer(value);
tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                PolicySet policySet = policyFactory.createPolicySet();
+                policySet.setName(qname);
+                policySets.add(policySet);
+            }
+        }
+    }
+
+    /**
+     * Returns a qname from a string.
+     * @param reader
+     * @param value
+     * @return
+     */
+    private QName getQNameValue(XMLStreamReader reader, String value) {
+        if (value != null) {
+            int index = value.indexOf(':');
+            String prefix = index == -1 ? "" : value.substring(0, index);
+            String localName = index == -1 ? value : value.substring(index
+ 1);
+            String ns = reader.getNamespaceContext
().getNamespaceURI(prefix);
+            if (ns == null) {
+                ns = "";
+            }
+            return new QName(ns, localName, prefix);
+        } else {
+            return null;
+        }
+    }
+
}

Modified:
incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java?view=diff&rev=538450&r1=538449&r2=538450

==============================================================================
---
incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/binding-ws-xml/src/main/java/org/apache/tuscany/sca/binding/ws/xml/WebServiceBindingProcessor.java
Tue May 15 23:50:37 2007
@@ -21,7 +21,9 @@

import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;

+import java.util.List;
import java.util.Map;
+import java.util.StringTokenizer;

import javax.wsdl.Definition;
import javax.wsdl.Port;
@@ -33,7 +35,6 @@
import javax.xml.stream.XMLStreamWriter;

import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.xml.BaseArtifactProcessor;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.binding.ws.WebServiceBinding;
import org.apache.tuscany.sca.binding.ws.WebServiceBindingFactory;
@@ -48,21 +49,25 @@
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterfaceContract;
import
org.apache.tuscany.sca.interfacedef.wsdl.introspect.WSDLInterfaceIntrospector
;
+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.PolicySetAttachPoint;

-public class WebServiceBindingProcessor extends BaseArtifactProcessor
implements
+public class WebServiceBindingProcessor implements
     StAXArtifactProcessor<WebServiceBinding>, WebServiceConstants {

     private WSDLFactory wsdlFactory;
     private WSDLInterfaceIntrospector introspector;
     private WebServiceBindingFactory wsFactory;
+    private PolicyFactory policyFactory;

     public WebServiceBindingProcessor(AssemblyFactory assemblyFactory,
                                       PolicyFactory policyFactory,
                                       WebServiceBindingFactory wsFactory,
                                       WSDLFactory wsdlFactory,
                                       WSDLInterfaceIntrospector
introspector) {
-        super(assemblyFactory, policyFactory, null);
+        this.policyFactory = policyFactory;
         this.wsFactory = wsFactory;
         this.introspector = introspector;
         this.wsdlFactory = wsdlFactory;
@@ -275,4 +280,55 @@
     public Class<WebServiceBinding> getModelType() {
         return WebServiceBinding.class;
     }
+
+    /**
+     * Reads policy intents and policy sets.
+     * @param attachPoint
+     * @param reader
+     */
+    private void readPolicies(PolicySetAttachPoint attachPoint,
XMLStreamReader reader) {
+        String value = reader.getAttributeValue(null, Constants.REQUIRES
);
+        if (value != null) {
+            List<Intent> requiredIntents = attachPoint.getRequiredIntents
();
+            for (StringTokenizer tokens = new StringTokenizer(value);
tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                Intent intent = policyFactory.createIntent();
+                intent.setName(qname);
+                requiredIntents.add(intent);
+            }
+        }
+
+        value = reader.getAttributeValue(null, Constants.POLICY_SETS);
+        if (value != null) {
+            List<PolicySet> policySets = attachPoint.getPolicySets();
+            for (StringTokenizer tokens = new StringTokenizer(value);
tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                PolicySet policySet = policyFactory.createPolicySet();
+                policySet.setName(qname);
+                policySets.add(policySet);
+            }
+        }
+    }
+
+    /**
+     * Returns a qname from a string.
+     * @param reader
+     * @param value
+     * @return
+     */
+    private QName getQNameValue(XMLStreamReader reader, String value) {
+        if (value != null) {
+            int index = value.indexOf(':');
+            String prefix = index == -1 ? "" : value.substring(0, index);
+            String localName = index == -1 ? value : value.substring(index
+ 1);
+            String ns = reader.getNamespaceContext
().getNamespaceURI(prefix);
+            if (ns == null) {
+                ns = "";
+            }
+            return new QName(ns, localName, prefix);
+        } else {
+            return null;
+        }
+    }
+
}

Modified:
incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java?view=diff&rev=538450&r1=538449&r2=538450

==============================================================================
---
incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java
(original)
+++
incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java
Tue May 15 23:50:37 2007
@@ -21,13 +21,15 @@

import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;

+import java.util.List;
+import java.util.StringTokenizer;
+
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;

import org.apache.tuscany.sca.assembly.AssemblyFactory;
-import org.apache.tuscany.sca.assembly.xml.BaseArtifactProcessor;
import org.apache.tuscany.sca.assembly.xml.Constants;
import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
;
import org.apache.tuscany.sca.contribution.resolver.ClassReference;
@@ -39,19 +41,25 @@
import
org.apache.tuscany.sca.implementation.java.JavaImplementationFactory;
import
org.apache.tuscany.sca.implementation.java.introspect.IntrospectionException
;
import
org.apache.tuscany.sca.implementation.java.introspect.JavaClassIntrospector
;
+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.PolicySetAttachPoint;

-public class JavaImplementationProcessor extends BaseArtifactProcessor
implements
+public class JavaImplementationProcessor implements
     StAXArtifactProcessor<JavaImplementation>,
JavaImplementationConstants {

     private JavaImplementationFactory javaFactory;
     private JavaClassIntrospector introspector;
+    private AssemblyFactory assemblyFactory;
+    private PolicyFactory policyFactory;

     public JavaImplementationProcessor(AssemblyFactory assemblyFactory,
                                        PolicyFactory policyFactory,
                                        JavaImplementationFactory
javaFactory,
                                        JavaClassIntrospector
introspector) {
-        super(assemblyFactory, policyFactory, null);
+        this.assemblyFactory = assemblyFactory;
+        this.policyFactory = policyFactory;
         this.javaFactory = javaFactory;
         this.introspector = introspector;
     }
@@ -128,9 +136,53 @@
     }

     /**
-     * @param javaFactory the javaFactory to set
+     * Reads policy intents and policy sets.
+     * @param attachPoint
+     * @param reader
      */
-    public void setJavaFactory(JavaImplementationFactory javaFactory) {
-        this.javaFactory = javaFactory;
+    private void readPolicies(PolicySetAttachPoint attachPoint,
XMLStreamReader reader) {
+        String value = reader.getAttributeValue(null, Constants.REQUIRES
);
+        if (value != null) {
+            List<Intent> requiredIntents = attachPoint.getRequiredIntents
();
+            for (StringTokenizer tokens = new StringTokenizer(value);
tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                Intent intent = policyFactory.createIntent();
+                intent.setName(qname);
+                requiredIntents.add(intent);
+            }
+        }
+
+        value = reader.getAttributeValue(null, Constants.POLICY_SETS);
+        if (value != null) {
+            List<PolicySet> policySets = attachPoint.getPolicySets();
+            for (StringTokenizer tokens = new StringTokenizer(value);
tokens.hasMoreTokens();) {
+                QName qname = getQNameValue(reader, tokens.nextToken());
+                PolicySet policySet = policyFactory.createPolicySet();
+                policySet.setName(qname);
+                policySets.add(policySet);
+            }
+        }
     }
+
+    /**
+     * Returns a qname from a string.
+     * @param reader
+     * @param value
+     * @return
+     */
+    private QName getQNameValue(XMLStreamReader reader, String value) {
+        if (value != null) {
+            int index = value.indexOf(':');
+            String prefix = index == -1 ? "" : value.substring(0, index);
+            String localName = index == -1 ? value : value.substring(index
+ 1);
+            String ns = reader.getNamespaceContext
().getNamespaceURI(prefix);
+            if (ns == null) {
+                ns = "";
+            }
+            return new QName(ns, localName, prefix);
+        } else {
+            return null;
+        }
+    }
+
}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


Reply via email to