You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by ant elder <an...@gmail.com> on 2007/05/16 10:44:20 UTC
Re: svn commit: r538450 - in /incubator/tuscany/java/sca/modules: assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ binding-rmi/src/main/java/org/apache/tuscany/sca/binding/rmi/xml/ binding-ws-xml/src/main/java/org/apache/tuscany/sca/bi
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, jsdelfino@apache.org <js...@apache.org> 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: tuscany-commits-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-commits-help@ws.apache.org
>
>