You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/09/03 11:46:47 UTC

svn commit: r572267 [1/6] - in /incubator/tuscany/java/sca: itest/ modules/ modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ modules/binding-jms/src/main/jav...

Author: jsdelfino
Date: Mon Sep  3 02:46:41 2007
New Revision: 572267

URL: http://svn.apache.org/viewvc?rev=572267&view=rev
Log:
Fixed implementation of SCA assembly XML writers. Simplified most readers and writers. Added code to read/write policy intents and policy sets on relevant SCA assembly XML elements.

Added:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
      - copied, changed from r572232, incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/PolicyAttachPointProcessor.java   (with props)
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java   (with props)
    incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationProcessor.java
      - copied, changed from r572232, incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoader.java
    incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProcessor.java
      - copied, changed from r572232, incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringArtifactProcessor.java
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryImplementationProcessor.java
      - copied, changed from r572232, incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryArtifactProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentAttachPointTypeProcessor.java
      - copied, changed from r572232, incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentAttachPointProcessor.java
    incubator/tuscany/java/sca/modules/topology-xml/src/main/java/org/apache/tuscany/sca/topology/xml/BaseTopologyArtifactProcessor.java
      - copied, changed from r572232, incubator/tuscany/java/sca/modules/topology-xml/src/main/java/org/apache/tuscany/sca/topology/xml/BaseArtifactProcessor.java
Removed:
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/XAttr.java
    incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoader.java
    incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringArtifactProcessor.java
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/xml/XQueryArtifactProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/IntentAttachPointProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/XAttr.java
    incubator/tuscany/java/sca/modules/topology-xml/src/main/java/org/apache/tuscany/sca/topology/xml/BaseArtifactProcessor.java
    incubator/tuscany/java/sca/modules/topology-xml/src/main/java/org/apache/tuscany/sca/topology/xml/XAttr.java
Modified:
    incubator/tuscany/java/sca/itest/pom.xml
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeDocumentProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ConstrainingTypeProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/DefaultBeanModelProcessor.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/BuildPolicyTestCase.java
    incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/MockPolicyProcessor.java
    incubator/tuscany/java/sca/modules/binding-jms/src/main/java/org/apache/tuscany/sca/binding/jms/impl/JMSBindingProcessor.java
    incubator/tuscany/java/sca/modules/binding-notification/src/main/java/org/apache/tuscany/sca/binding/notification/NotificationBindingProcessor.java
    incubator/tuscany/java/sca/modules/binding-sca-xml/src/main/java/org/apache/tuscany/sca/binding/sca/xml/SCABindingProcessor.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/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionMetadataProcessor.java
    incubator/tuscany/java/sca/modules/contribution-impl/src/main/java/org/apache/tuscany/sca/contribution/service/impl/ContributionServiceImpl.java
    incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaExportProcessor.java
    incubator/tuscany/java/sca/modules/contribution-java/src/main/java/org/apache/tuscany/sca/contribution/java/impl/JavaImportProcessor.java
    incubator/tuscany/java/sca/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java
    incubator/tuscany/java/sca/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXArtifactProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/StAXArtifactProcessor.java
    incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/URLArtifactProcessor.java
    incubator/tuscany/java/sca/modules/data-engine-helper/src/main/java/org/apache/tuscany/sca/data/engine/ConnectionInfoArtifactProcessor.java
    incubator/tuscany/java/sca/modules/data-engine-helper/src/main/java/org/apache/tuscany/sca/data/engine/config/ConnectionProperties.java
    incubator/tuscany/java/sca/modules/databinding-sdo/src/main/java/org/apache/tuscany/sca/databinding/sdo/ImportSDOProcessor.java
    incubator/tuscany/java/sca/modules/host-embedded/src/test/java/test/crud/impl/CRUDImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-bpel/src/main/java/org/apache/tuscany/sca/implementation/bpel/impl/BPELArtifactProcessor.java
    incubator/tuscany/java/sca/modules/implementation-das/src/main/java/org/apache/tuscany/sca/implementation/das/DASArtifactProcessor.java
    incubator/tuscany/java/sca/modules/implementation-das/src/test/java/org/apache/tuscany/sca/implementation/das/DASArtifactProcessorTestCase.java
    incubator/tuscany/java/sca/modules/implementation-data/src/main/java/org/apache/tuscany/sca/implementation/data/DATAArtifactProcessor.java
    incubator/tuscany/java/sca/modules/implementation-data/src/test/java/org/apache/tuscany/sca/implementation/data/DATAArtifactProcessorTestCase.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/sca/implementation/java/xml/JavaImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-notification/src/main/java/org/apache/tuscany/sca/implementation/notification/NotificationModuleActivator.java
    incubator/tuscany/java/sca/modules/implementation-notification/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
    incubator/tuscany/java/sca/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java
    incubator/tuscany/java/sca/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/xml/OSGiImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-resource/src/main/java/org/apache/tuscany/sca/implementation/resource/impl/ResourceImplementationProcessor.java
    incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java
    incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringXMLComponentTypeLoader.java
    incubator/tuscany/java/sca/modules/implementation-spring/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor
    incubator/tuscany/java/sca/modules/implementation-xquery/src/main/java/org/apache/tuscany/sca/implementation/xquery/XQueryModuleActivator.java
    incubator/tuscany/java/sca/modules/interface-java-xml/src/main/java/org/apache/tuscany/sca/interfacedef/java/xml/JavaInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/interface-wsdl-xml/src/main/java/org/apache/tuscany/sca/interfacedef/wsdl/xml/WSDLInterfaceProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/BindingTypeProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/ImplementationTypeProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyConstants.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicyIntentProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/PolicySetProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/SCADefinitionsDocumentProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/main/java/org/apache/tuscany/sca/policy/xml/SCADefinitionsProcessor.java
    incubator/tuscany/java/sca/modules/policy-xml/src/test/java/org/apache/tuscany/sca/policy/xml/MockPolicyProcessor.java
    incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/SCADefinitions.java
    incubator/tuscany/java/sca/modules/policy/src/main/java/org/apache/tuscany/sca/policy/impl/SCADefinitionsImpl.java
    incubator/tuscany/java/sca/modules/pom.xml
    incubator/tuscany/java/sca/modules/topology-xml/src/main/java/org/apache/tuscany/sca/topology/xml/TopologyDocumentProcessor.java
    incubator/tuscany/java/sca/modules/topology-xml/src/main/java/org/apache/tuscany/sca/topology/xml/TopologyProcessor.java
    incubator/tuscany/java/sca/samples/binding-echo-extension/src/main/java/echo/impl/EchoBindingProcessor.java
    incubator/tuscany/java/sca/samples/binding-echo-extension/src/main/java/echo/provider/policy/WSPolicyProcessor.java
    incubator/tuscany/java/sca/samples/implementation-pojo-extension/src/main/java/pojo/impl/POJOImplementationProcessor.java
    incubator/tuscany/java/sca/samples/pom.xml

Modified: incubator/tuscany/java/sca/itest/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/itest/pom.xml?rev=572267&r1=572266&r2=572267&view=diff
==============================================================================
--- incubator/tuscany/java/sca/itest/pom.xml (original)
+++ incubator/tuscany/java/sca/itest/pom.xml Mon Sep  3 02:46:41 2007
@@ -59,7 +59,9 @@
                 -->
                 <module>large-sdo-ws</module>
                 <module>operation-overloading</module>
+                <!--
                 <module>osgi-implementation</module>
+                -->
                 <module>properties</module>
                 <module>recursive</module>
                 <module>references</module>

Copied: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java (from r572232, 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/BaseAssemblyProcessor.java?p2=incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java&p1=incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseArtifactProcessor.java&r1=572232&r2=572267&rev=572267&view=diff
==============================================================================
--- 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/BaseAssemblyProcessor.java Mon Sep  3 02:46:41 2007
@@ -21,15 +21,11 @@
 
 import static javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI;
 import static javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI;
-import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.StringTokenizer;
 
-import javax.xml.XMLConstants;
 import javax.xml.namespace.QName;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -54,12 +50,12 @@
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.Service;
 import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
 import org.apache.tuscany.sca.contribution.service.ContributionReadException;
 import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
 import org.apache.tuscany.sca.interfacedef.InterfaceContract;
-import org.apache.tuscany.sca.interfacedef.Operation;
 import org.apache.tuscany.sca.policy.Intent;
 import org.apache.tuscany.sca.policy.IntentAttachPoint;
 import org.apache.tuscany.sca.policy.PolicyFactory;
@@ -76,12 +72,13 @@
  * 
  * @version $Rev$ $Date$
  */
-abstract class BaseArtifactProcessor implements Constants {
+abstract class BaseAssemblyProcessor extends BaseStAXArtifactProcessor implements Constants {
 
     protected ContributionFactory contributionFactory;
     protected AssemblyFactory assemblyFactory;
     protected PolicyFactory policyFactory;
     protected StAXArtifactProcessor<Object> extensionProcessor;
+    protected PolicyAttachPointProcessor policyProcessor;
     private DocumentBuilderFactory documentBuilderFactory;
 
     /**
@@ -91,7 +88,7 @@
      * @param policyFactory
      */
     @SuppressWarnings("unchecked")
-    public BaseArtifactProcessor(ContributionFactory contribFactory,
+    public BaseAssemblyProcessor(ContributionFactory contribFactory,
                                  AssemblyFactory factory,
                                  PolicyFactory policyFactory,
                                  StAXArtifactProcessor extensionProcessor) {
@@ -99,6 +96,7 @@
         this.policyFactory = policyFactory;
         this.extensionProcessor = (StAXArtifactProcessor<Object>)extensionProcessor;
         this.contributionFactory = contribFactory;
+        this.policyProcessor = new PolicyAttachPointProcessor(policyFactory);
     }
 
     /**
@@ -107,253 +105,36 @@
      * @param policyFactory
      */
     @SuppressWarnings("unchecked")
-    public BaseArtifactProcessor(AssemblyFactory factory,
+    public BaseAssemblyProcessor(AssemblyFactory factory,
                                  PolicyFactory policyFactory,
                                  StAXArtifactProcessor extensionProcessor) {
         this.assemblyFactory = factory;
         this.policyFactory = policyFactory;
         this.extensionProcessor = (StAXArtifactProcessor<Object>)extensionProcessor;
+        this.policyProcessor = new PolicyAttachPointProcessor(policyFactory);
     }
 
     /**
-     * Returns the string value of an attribute.
-     * @param reader
-     * @param name
-     * @return
-     */
-    protected String getString(XMLStreamReader reader, String name) {
-        return reader.getAttributeValue(null, name);
-    }
-
-    /**
-     * Returns the qname value of an attribute.
-     * @param reader
-     * @param name
-     * @return
-     */
-    protected QName getQName(XMLStreamReader reader, String name) {
-        String qname = reader.getAttributeValue(null, name);
-        return getQNameValue(reader, qname);
-    }
-
-    /**
-     * Returns the value of xsi:type attribute
-     * @param reader The XML stream reader
-     * @return The QName of the type, if the attribute is not present, null is
-     *         returned.
-     */
-    protected QName getXSIType(XMLStreamReader reader) {
-        String qname = reader.getAttributeValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "type");
-        return getQNameValue(reader, qname);
-    }
-
-    /**
-     * Returns a qname from a string.  
-     * @param reader
-     * @param value
-     * @return
-     */
-    protected 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;
-        }
-    }
-
-    /**
-     * Returns the boolean value of an attribute.
-     * @param reader
-     * @param name
-     * @return
-     */
-    protected boolean getBoolean(XMLStreamReader reader, String name) {
-        String value = reader.getAttributeValue(null, name);
-        if (value == null) {
-            return false;
-        }
-        return Boolean.valueOf(value);
-    }
-    
-    /**
-     * Test if an attribute is explicitly set
-     * @param reader
-     * @param name
-     * @return
-     */
-    protected boolean isSet(XMLStreamReader reader, String name) {
-        return reader.getAttributeValue(null, name) != null;
-    }
-    
-    
-
-    /**
-     * Returns the value of an attribute as a list of qnames.
-     * @param reader
+     * Start an element.
+     * @param writer
      * @param name
-     * @return
-     */
-    protected List<QName> getQNames(XMLStreamReader reader, String name) {
-        String value = reader.getAttributeValue(null, name);
-        if (value != null) {
-            List<QName> qnames = new ArrayList<QName>();
-            for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
-                qnames.add(getQName(reader, tokens.nextToken()));
-            }
-            return qnames;
-        } else {
-            return Collections.emptyList();
-        }
-    }
-
-    /**
-     * Read policy intents.
-     * @param attachPoint
-     * @param reader
-     */
-    protected void readIntents(Object attachPoint, XMLStreamReader reader) {
-        readIntents(attachPoint, null, reader);
-    }
-
-    /**
-     * Write policy intents
-     * @param attachPoint
-     */
-    protected XAttr writeIntents(Object attachPoint) {
-        return writeIntents(attachPoint, null);
-    }
-
-    /**
-     * Read policy intents associated with an operation.
-     * @param attachPoint
-     * @param operation
-     * @param reader
-     */
-    protected void readIntents(Object attachPoint, Operation operation, XMLStreamReader reader) {
-        if (!(attachPoint instanceof IntentAttachPoint))
-            return;
-        IntentAttachPoint intentAttachPoint = (IntentAttachPoint)attachPoint;
-        String value = reader.getAttributeValue(null, Constants.REQUIRES);
-        if (value != null) {
-            List<Intent> requiredIntents = intentAttachPoint.getRequiredIntents();
-            for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
-                QName qname = getQNameValue(reader, tokens.nextToken());
-                Intent intent = policyFactory.createIntent();
-                intent.setName(qname);
-                if (operation != null) {
-                    //FIXME Don't we need to handle intent specification
-                    // on an operation basis?
-                    //intent.getOperations().add(operation);
-                }
-                requiredIntents.add(intent);
-            }
-        }
-    }
-
-    /**
-     * Write policy intents associated with an operation.
-     * @param attachPoint
-     * @param operation
-     */
-    protected XAttr writeIntents(Object attachPoint, Operation operation) {
-        if (!(attachPoint instanceof IntentAttachPoint)) {
-            return null;
-        }
-        IntentAttachPoint intentAttachPoint = (IntentAttachPoint)attachPoint;
-        List<QName> qnames = new ArrayList<QName>();
-        for (Intent intent: intentAttachPoint.getRequiredIntents()) {
-            qnames.add(intent.getName());
-        }
-        return new XAttr(Constants.REQUIRES, qnames);
-    }
-    
-    /**
-     * Reads policy intents and policy sets.
-     * @param attachPoint
-     * @param reader
-     */
-    protected void readPolicies(Object attachPoint, XMLStreamReader reader) {
-        readPolicies(attachPoint, null, reader);
-    }
-
-    /**
-     * Writes policy intents and policy sets.
-     * @param attachPoint
-     */
-    protected XAttr writePolicySets(Object attachPoint) {
-        return writePolicySets(attachPoint, null);
-    }
-
-    /**
-     * Write policy sets associated with an operation.
-     * @param attachPoint
-     * @param operation
-     */
-    protected XAttr writePolicySets(Object attachPoint, Operation operation) {
-        if (!(attachPoint instanceof PolicySetAttachPoint)) {
-            return null;
-        }
-        PolicySetAttachPoint policySetAttachPoint = (PolicySetAttachPoint)attachPoint;
-        List<QName> qnames = new ArrayList<QName>();
-        for (PolicySet policySet: policySetAttachPoint.getPolicySets()) {
-            qnames.add(policySet.getName());
-        }
-        return new XAttr(Constants.POLICY_SETS, qnames);
-    }
-    
-    /**
-     * Reads policy intents and policy sets associated with an operation.
-     * @param attachPoint
-     * @param operation
-     * @param reader
-     */
-    protected void readPolicies(Object attachPoint, Operation operation, XMLStreamReader reader) {
-        readIntents(attachPoint, operation, reader);
-        readPolicySets(attachPoint, operation, reader);
-    }
-
-    /**
-     * Reads policy sets.
-     * @param attachPoint
-     * @param reader
+     * @param attrs
+     * @throws XMLStreamException
      */
-    protected void readPolicySets(Object attachPoint, XMLStreamReader reader) {
-        readPolicySets(attachPoint, null, reader);
+    protected void writeStart(XMLStreamWriter writer, String name, XAttr... attrs) throws XMLStreamException {
+        writeStart(writer, SCA10_NS, name, attrs);
     }
 
     /**
-     * Reads policy sets associated with an operation.
-     * @param attachPoint
-     * @param operation
-     * @param reader
+     * Start a document.
+     * @param writer
+     * @throws XMLStreamException
      */
-    protected void readPolicySets(Object attachPoint, Operation operation, XMLStreamReader reader) {
-        if (!(attachPoint instanceof PolicySetAttachPoint)) {
-            return;
-        }
-        PolicySetAttachPoint policySetAttachPoint = (PolicySetAttachPoint)attachPoint;
-        String value = reader.getAttributeValue(null, Constants.POLICY_SETS);
-        if (value != null) {
-            List<PolicySet> policySets = policySetAttachPoint.getPolicySets();
-            for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
-                QName qname = getQNameValue(reader, tokens.nextToken());
-                PolicySet policySet = policyFactory.createPolicySet();
-                policySet.setName(qname);
-                if (operation != null) {
-                    //FIXME Don't we need to handle policySet specification
-                    // on an operation basis?
-                    //policySet.getOperations().add(operation);
-                }
-                policySets.add(policySet);
-            }
-        }
+    protected void writeStartDocument(XMLStreamWriter writer, String name, XAttr... attrs) throws XMLStreamException {
+        writer.writeStartDocument();
+        writer.setDefaultNamespace(SCA10_NS);
+        writeStart(writer, SCA10_NS, name, attrs);
+        writer.writeDefaultNamespace(SCA10_NS);
     }
 
     /**
@@ -438,46 +219,6 @@
     }
 
     /**
-     * Parse the next child element.
-     * @param reader
-     * @return
-     * @throws XMLStreamException
-     */
-    protected boolean nextChildElement(XMLStreamReader reader) throws XMLStreamException {
-        while (reader.hasNext()) {
-            int event = reader.next();
-            if (event == END_ELEMENT) {
-                return false;
-            }
-            if (event == START_ELEMENT) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-     * Advance the stream to the next END_ELEMENT event skipping any nested
-     * content.
-     * @param reader the reader to advance
-     * @throws XMLStreamException if there was a problem reading the stream
-     */
-    protected void skipToEndElement(XMLStreamReader reader) throws XMLStreamException {
-        int depth = 0;
-        while (reader.hasNext()) {
-            int event = reader.next();
-            if (event == XMLStreamConstants.START_ELEMENT) {
-                depth++;
-            } else if (event == XMLStreamConstants.END_ELEMENT) {
-                if (depth == 0) {
-                    return;
-                }
-                depth--;
-            }
-        }
-    }
-
-    /**
      * Resolve an implementation.
      * @param implementation
      * @param resolver
@@ -577,89 +318,6 @@
     }
 
     /**
-     * Start an element.
-     * @param uri
-     * @param name
-     * @param attrs
-     * @throws XMLStreamException
-     */
-    protected void writeStart(XMLStreamWriter writer, String uri, String name, XAttr... attrs)
-        throws XMLStreamException {
-        writeAttributePrefixes(writer, attrs);
-        writer.writeStartElement(uri, name);
-        writeAttributes(writer, attrs);
-    }
-
-    /**
-     * Start an element.
-     * @param writer
-     * @param name
-     * @param attrs
-     * @throws XMLStreamException
-     */
-    protected void writeStart(XMLStreamWriter writer, String name, XAttr... attrs) throws XMLStreamException {
-        writeAttributePrefixes(writer, attrs);
-        writer.writeStartElement(SCA10_NS, name);
-        writeAttributes(writer, attrs);
-    }
-
-    /**
-     * End an element. 
-     * @param writer
-     * @throws XMLStreamException
-     */
-    protected void writeEnd(XMLStreamWriter writer) throws XMLStreamException {
-        writer.writeEndElement();
-    }
-
-    /**
-     * Start a document.
-     * @param writer
-     * @throws XMLStreamException
-     */
-    protected void writeStartDocument(XMLStreamWriter writer, String name, XAttr... attrs) throws XMLStreamException {
-        writer.writeStartDocument();
-        writer.setDefaultNamespace(SCA10_NS);
-        writeStart(writer, name, attrs);
-        writer.writeDefaultNamespace(SCA10_NS);
-    }
-
-    /**
-     * End a document.
-     * @param writer
-     * @throws XMLStreamException
-     */
-    protected void writeEndDocument(XMLStreamWriter writer) throws XMLStreamException {
-        writer.writeEndDocument();
-    }
-
-    /**
-     * Write attributes to the current element.
-     * @param writer
-     * @param attrs
-     * @throws XMLStreamException
-     */
-    protected void writeAttributes(XMLStreamWriter writer, XAttr... attrs) throws XMLStreamException {
-        for (XAttr attr : attrs) {
-            if (attr != null)
-                attr.write(writer);
-        }
-    }
-
-    /**
-     * Write attribute prefixes to the current element.
-     * @param writer
-     * @param attrs
-     * @throws XMLStreamException
-     */
-    protected void writeAttributePrefixes(XMLStreamWriter writer, XAttr... attrs) throws XMLStreamException {
-        for (XAttr attr : attrs) {
-            if (attr != null)
-                attr.writePrefix(writer);
-        }
-    }
-
-    /**
      * Returns a constrainingType attribute.
      * @param componentType
      * @return
@@ -935,4 +593,5 @@
             }
         }
     }
+
 }

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java?rev=572267&r1=572266&r2=572267&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeDocumentProcessor.java Mon Sep  3 02:46:41 2007
@@ -40,7 +40,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public class ComponentTypeDocumentProcessor extends BaseArtifactProcessor implements URLArtifactProcessor<ComponentType> {
+public class ComponentTypeDocumentProcessor extends BaseAssemblyProcessor implements URLArtifactProcessor<ComponentType> {
     private XMLInputFactory inputFactory;
     
     /**
@@ -57,13 +57,36 @@
     public ComponentType read(URL contributionURL, URI uri, URL url) throws ContributionReadException {
         InputStream urlStream = null;
         try {
+            
+            // Create a stream reader
             urlStream = url.openStream();
             XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
             reader.nextTag();
+            
+            // Reader the componentType model 
             ComponentType componentType = (ComponentType)extensionProcessor.read(reader);
             if (componentType != null) {
                 componentType.setURI(uri.toString());
             }
+
+            // For debugging purposes, write it back to XML
+//            if (componentType != null) {
+//                try {
+//                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
+//                    XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+//                    outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
+//                    extensionProcessor.write(componentType, outputFactory.createXMLStreamWriter(bos));
+//                    Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(bos.toByteArray()));
+//                    OutputFormat format = new OutputFormat();
+//                    format.setIndenting(true);
+//                    format.setIndent(2);
+//                    XMLSerializer serializer = new XMLSerializer(System.out, format);
+//                    serializer.serialize(document);
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+            
             return componentType;
             
         } catch (XMLStreamException e) {

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeProcessor.java?rev=572267&r1=572266&r2=572267&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/ComponentTypeProcessor.java Mon Sep  3 02:46:41 2007
@@ -53,7 +53,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public class ComponentTypeProcessor extends BaseArtifactProcessor implements StAXArtifactProcessor<ComponentType> {
+public class ComponentTypeProcessor extends BaseAssemblyProcessor implements StAXArtifactProcessor<ComponentType> {
     
     /**
      * Constructs a new componentType processor.
@@ -65,7 +65,7 @@
         super(factory, policyFactory, extensionProcessor);
     }
     
-    public ComponentType read(XMLStreamReader reader) throws ContributionReadException {
+    public ComponentType read(XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
         ComponentType componentType = null;
         Service service = null;
         Reference reference = null;
@@ -74,274 +74,263 @@
         Callback callback = null;
         QName name = null;
         
-        try {
-    
-            // Read the componentType document
-            while (reader.hasNext()) {
-                int event = reader.getEventType();
-                switch (event) {
-                    case START_ELEMENT:
-                        name = reader.getName();
-    
-                        if (Constants.COMPONENT_TYPE_QNAME.equals(name)) {
-    
-                            // Read a <componentType>
-                            componentType = assemblyFactory.createComponentType();
-                            componentType.setConstrainingType(readConstrainingType(reader));
-    
-                        } else if (Constants.SERVICE_QNAME.equals(name)) {
-    
-                            // Read a <service>
-                            service = assemblyFactory.createService();
-                            contract = service;
-                            service.setName(getString(reader, Constants.NAME));
-                            componentType.getServices().add(service);
-                            readPolicies(service, reader);
-    
-                        } else if (Constants.REFERENCE_QNAME.equals(name)) {
+        // Read the componentType document
+        while (reader.hasNext()) {
+            int event = reader.getEventType();
+            switch (event) {
+                case START_ELEMENT:
+                    name = reader.getName();
 
-                            // Read a <reference>
-                            reference = assemblyFactory.createReference();
-                            contract = reference;
-                            reference.setName(getString(reader, Constants.NAME));
-                            reference.setWiredByImpl(getBoolean(reader, Constants.WIRED_BY_IMPL));
-                            readMultiplicity(reference, reader);
-                            readTargets(reference, reader);
-                            componentType.getReferences().add(reference);
-                            readPolicies(reference, reader);
-    
-                        } else if (Constants.PROPERTY_QNAME.equals(name)) {
-    
-                            // Read a <property>
-                            property = assemblyFactory.createProperty();
-                            readAbstractProperty(property, reader);
-                            readPolicies(property, reader);
-                            
-                            // Read the property value
-                            Document value = readPropertyValue(property.getXSDElement(), property.getXSDType(), reader);
-                            property.setValue(value);
-                            
-                            componentType.getProperties().add(property);
-                            
-                        } else if (Constants.IMPLEMENTATION_QNAME.equals(name)) {
-                            
-                            // Read an <implementation> element
-                            readPolicies(componentType, reader);
-                            
-                        } else if (Constants.CALLBACK_QNAME.equals(name)) {
-    
-                            // Read a <callback>
-                            callback = assemblyFactory.createCallback();
-                            contract.setCallback(callback);
-                            readPolicies(callback, reader);
-    
-                        } else if (OPERATION.equals(name)) {
-    
-                            // Read an <operation>
-                            Operation operation = assemblyFactory.createOperation();
-                            operation.setName(getString(reader, NAME));
-                            operation.setUnresolved(true);
-                            if (callback != null) {
-                                readPolicies(callback, operation, reader);
-                            } else {
-                                readPolicies(contract, operation, reader);
-                            }
+                    if (Constants.COMPONENT_TYPE_QNAME.equals(name)) {
+
+                        // Read a <componentType>
+                        componentType = assemblyFactory.createComponentType();
+                        componentType.setConstrainingType(readConstrainingType(reader));
+
+                    } else if (Constants.SERVICE_QNAME.equals(name)) {
+
+                        // Read a <service>
+                        service = assemblyFactory.createService();
+                        contract = service;
+                        service.setName(getString(reader, Constants.NAME));
+                        componentType.getServices().add(service);
+                        policyProcessor.readPolicies(service, reader);
+
+                    } else if (Constants.REFERENCE_QNAME.equals(name)) {
+
+                        // Read a <reference>
+                        reference = assemblyFactory.createReference();
+                        contract = reference;
+                        reference.setName(getString(reader, Constants.NAME));
+                        reference.setWiredByImpl(getBoolean(reader, Constants.WIRED_BY_IMPL));
+                        readMultiplicity(reference, reader);
+                        readTargets(reference, reader);
+                        componentType.getReferences().add(reference);
+                        policyProcessor.readPolicies(reference, reader);
+
+                    } else if (Constants.PROPERTY_QNAME.equals(name)) {
+
+                        // Read a <property>
+                        property = assemblyFactory.createProperty();
+                        readAbstractProperty(property, reader);
+                        policyProcessor.readPolicies(property, reader);
+                        
+                        // Read the property value
+                        Document value = readPropertyValue(property.getXSDElement(), property.getXSDType(), reader);
+                        property.setValue(value);
+                        
+                        componentType.getProperties().add(property);
+                        
+                    } else if (Constants.IMPLEMENTATION_QNAME.equals(name)) {
+                        
+                        // Read an <implementation> element
+                        policyProcessor.readPolicies(componentType, reader);
+                        
+                    } else if (Constants.CALLBACK_QNAME.equals(name)) {
+
+                        // Read a <callback>
+                        callback = assemblyFactory.createCallback();
+                        contract.setCallback(callback);
+                        policyProcessor.readPolicies(callback, reader);
+
+                    } else if (OPERATION.equals(name)) {
+
+                        // Read an <operation>
+                        Operation operation = assemblyFactory.createOperation();
+                        operation.setName(getString(reader, NAME));
+                        operation.setUnresolved(true);
+                        if (callback != null) {
+                            policyProcessor.readPolicies(callback, operation, reader);
                         } else {
-    
-                            // Read an extension element
-                            Object extension = extensionProcessor.read(reader);
-                            if (extension != null) {
-                                if (extension instanceof InterfaceContract) {
-    
-                                    // <service><interface> and <reference><interface>
-                                    contract.setInterfaceContract((InterfaceContract)extension);
-    
-                                } else if (extension instanceof Binding) {
-    
-                                    // <service><binding> and <reference><binding>
-                                    if (callback != null) {
-                                        callback.getBindings().add((Binding)extension);
-                                    } else {
-                                        contract.getBindings().add((Binding)extension);
-                                    }
+                            policyProcessor.readPolicies(contract, operation, reader);
+                        }
+                    } else {
+
+                        // Read an extension element
+                        Object extension = extensionProcessor.read(reader);
+                        if (extension != null) {
+                            if (extension instanceof InterfaceContract) {
+
+                                // <service><interface> and <reference><interface>
+                                contract.setInterfaceContract((InterfaceContract)extension);
+
+                            } else if (extension instanceof Binding) {
+
+                                // <service><binding> and <reference><binding>
+                                if (callback != null) {
+                                    callback.getBindings().add((Binding)extension);
                                 } else {
-                                    
-                                    // Add the extension element to the current element
-                                    if (callback != null) {
-                                        callback.getExtensions().add(extension);
-                                    } else if (contract != null) {
-                                        contract.getExtensions().add(extension);
-                                    } else if (property != null) {
-                                        property.getExtensions().add(extension);
-                                    } else {
-                                        if (componentType instanceof Extensible) {
-                                            ((Extensible)componentType).getExtensions().add(extension);
-                                        }
+                                    contract.getBindings().add((Binding)extension);
+                                }
+                            } else {
+                                
+                                // Add the extension element to the current element
+                                if (callback != null) {
+                                    callback.getExtensions().add(extension);
+                                } else if (contract != null) {
+                                    contract.getExtensions().add(extension);
+                                } else if (property != null) {
+                                    property.getExtensions().add(extension);
+                                } else {
+                                    if (componentType instanceof Extensible) {
+                                        ((Extensible)componentType).getExtensions().add(extension);
                                     }
                                 }
                             }
                         }
-                        break;
-    
-                    case END_ELEMENT:
-                        name = reader.getName();
-    
-                        // Clear current state when reading reaching end element
-                        if (SERVICE_QNAME.equals(name)) {
-                            service = null;
-                            contract = null;
-                        } else if (REFERENCE_QNAME.equals(name)) {
-                            reference = null;
-                            contract = null;
-                        } else if (PROPERTY_QNAME.equals(name)) {
-                            property = null;
-                        } else if (CALLBACK_QNAME.equals(name)) {
-                            callback = null;
-                        }
-                        break;
-                }
-                
-                // Read the next element
-                if (reader.hasNext()) {
-                    reader.next();
-                }
+                    }
+                    break;
+
+                case END_ELEMENT:
+                    name = reader.getName();
+
+                    // Clear current state when reading reaching end element
+                    if (SERVICE_QNAME.equals(name)) {
+                        service = null;
+                        contract = null;
+                    } else if (REFERENCE_QNAME.equals(name)) {
+                        reference = null;
+                        contract = null;
+                    } else if (PROPERTY_QNAME.equals(name)) {
+                        property = null;
+                    } else if (CALLBACK_QNAME.equals(name)) {
+                        callback = null;
+                    }
+                    break;
             }
             
-        } catch (XMLStreamException e) {
-            throw new ContributionReadException(e);
+            // Read the next element
+            if (reader.hasNext()) {
+                reader.next();
+            }
         }
         return componentType;
     }
     
-    public void write(ComponentType componentType, XMLStreamWriter writer) throws ContributionWriteException {
+    public void write(ComponentType componentType, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
         
-        try {
-            // Write <componentType> element
-            writeStartDocument(writer, COMPONENT_TYPE,
-                   writeConstrainingType(componentType));
-    
-            // Write <service> elements
-            for (Service service : componentType.getServices()) {
-                writeStart(writer, SERVICE, new XAttr(NAME, service.getName()),
-                           writeIntents(service), writePolicySets(service));
+        // Write <componentType> element
+        writeStartDocument(writer, COMPONENT_TYPE,
+               writeConstrainingType(componentType));
 
-                if (service.getInterfaceContract() != null) {
-                    extensionProcessor.write(service.getInterfaceContract(), writer);
-                }
-                
-                for (Binding binding: service.getBindings()) {
-                    extensionProcessor.write(binding, writer);
-                }
-                
-                if (service.getCallback() != null) {
-                    Callback callback = service.getCallback();
-                    writeStart(writer, CALLBACK, writeIntents(callback), writePolicySets(callback));
+        // Write <service> elements
+        for (Service service : componentType.getServices()) {
+            writeStart(writer, SERVICE, new XAttr(NAME, service.getName()),
+                       policyProcessor.writePolicies(service));
 
-                    for (Binding binding: callback.getBindings()) {
-                        extensionProcessor.write(binding, writer);
-                    }
-                    for (Object extension: callback.getExtensions()) {
-                        extensionProcessor.write(extension, writer);
-                    }
-                    
-                    writeEnd(writer);
+            if (service.getInterfaceContract() != null) {
+                extensionProcessor.write(service.getInterfaceContract(), writer);
+            }
+            
+            for (Binding binding: service.getBindings()) {
+                extensionProcessor.write(binding, writer);
+            }
+            
+            if (service.getCallback() != null) {
+                Callback callback = service.getCallback();
+                writeStart(writer, CALLBACK, policyProcessor.writePolicies(callback));
+
+                for (Binding binding: callback.getBindings()) {
+                    extensionProcessor.write(binding, writer);
                 }
-                
-                for (Object extension: service.getExtensions()) {
+                for (Object extension: callback.getExtensions()) {
                     extensionProcessor.write(extension, writer);
                 }
                 
                 writeEnd(writer);
             }
+            
+            for (Object extension: service.getExtensions()) {
+                extensionProcessor.write(extension, writer);
+            }
+            
+            writeEnd(writer);
+        }
 
-            // Write <reference> elements
-            for (Reference reference : componentType.getReferences()) {
-                
-                writeStart(writer, REFERENCE,
-                      new XAttr(NAME, reference.getName()),
-                      writeTargets(reference),
-                      writeIntents(reference), writePolicySets(reference));
+        // Write <reference> elements
+        for (Reference reference : componentType.getReferences()) {
+            
+            writeStart(writer, REFERENCE,
+                  new XAttr(NAME, reference.getName()),
+                  writeTargets(reference),
+                  policyProcessor.writePolicies(reference));
 
-                extensionProcessor.write(reference.getInterfaceContract(), writer);
-                
-                for (Binding binding: reference.getBindings()) {
-                    extensionProcessor.write(binding, writer);
-                }
-                
-                if (reference.getCallback() != null) {
-                    Callback callback = reference.getCallback();
-                    writeStart(writer, CALLBACK,
-                               writeIntents(callback), writePolicySets(callback));
+            extensionProcessor.write(reference.getInterfaceContract(), writer);
+            
+            for (Binding binding: reference.getBindings()) {
+                extensionProcessor.write(binding, writer);
+            }
+            
+            if (reference.getCallback() != null) {
+                Callback callback = reference.getCallback();
+                writeStart(writer, CALLBACK,
+                           policyProcessor.writePolicies(callback));
 
-                    for (Binding binding: callback.getBindings()) {
-                        extensionProcessor.write(binding, writer);
-                    }
-                    for (Object extension: callback.getExtensions()) {
-                        extensionProcessor.write(extension, writer);
-                    }
-                    
-                    writeEnd(writer);
+                for (Binding binding: callback.getBindings()) {
+                    extensionProcessor.write(binding, writer);
                 }
-
-                for (Object extension: reference.getExtensions()) {
+                for (Object extension: callback.getExtensions()) {
                     extensionProcessor.write(extension, writer);
                 }
                 
                 writeEnd(writer);
             }
-    
-            // Write <property> elements
-            for (Property property : componentType.getProperties()) {
-                writeStart(writer,
-                           PROPERTY,
-                           new XAttr(NAME, property.getName()),
-                           new XAttr(MUST_SUPPLY, property.isMustSupply()),
-                           new XAttr(MANY, property.isMany()),
-                           new XAttr(TYPE, property.getXSDType()),
-                           new XAttr(ELEMENT, property.getXSDElement()),
-                           writeIntents(property));
 
-                // Write property value
-                writePropertyValue(property.getValue(), property.getXSDElement(), property.getXSDType(), writer);
+            for (Object extension: reference.getExtensions()) {
+                extensionProcessor.write(extension, writer);
+            }
+            
+            writeEnd(writer);
+        }
 
-                // Write extensions
-                for (Object extension : property.getExtensions()) {
-                    extensionProcessor.write(extension, writer);
-                }
+        // Write <property> elements
+        for (Property property : componentType.getProperties()) {
+            writeStart(writer,
+                       PROPERTY,
+                       new XAttr(NAME, property.getName()),
+                       new XAttr(MUST_SUPPLY, property.isMustSupply()),
+                       new XAttr(MANY, property.isMany()),
+                       new XAttr(TYPE, property.getXSDType()),
+                       new XAttr(ELEMENT, property.getXSDElement()),
+                       policyProcessor.writePolicies(property));
 
-                writeEnd(writer);
-            }
-    
-            // Write extension elements
-            if (componentType instanceof Extensible) {
-                for (Object extension: ((Extensible)componentType).getExtensions()) {
-                    extensionProcessor.write(extension, writer);
-                }
+            // Write property value
+            writePropertyValue(property.getValue(), property.getXSDElement(), property.getXSDType(), writer);
+
+            // Write extensions
+            for (Object extension : property.getExtensions()) {
+                extensionProcessor.write(extension, writer);
             }
-            
-            // Write <implementation> elements if the componentType has
-            // any intents or policySets
-            boolean writeImplementation = false;
-            if (componentType instanceof IntentAttachPoint) {
-                if (!((IntentAttachPoint)componentType).getRequiredIntents().isEmpty()) {
-                    writeImplementation = true;
-                }
+
+            writeEnd(writer);
+        }
+
+        // Write extension elements
+        if (componentType instanceof Extensible) {
+            for (Object extension: ((Extensible)componentType).getExtensions()) {
+                extensionProcessor.write(extension, writer);
             }
-            if (componentType instanceof PolicySetAttachPoint) {
-                if (!((PolicySetAttachPoint)componentType).getPolicySets().isEmpty()) {
-                    writeImplementation = true;
-                }
+        }
+        
+        // Write <implementation> elements if the componentType has
+        // any intents or policySets
+        boolean writeImplementation = false;
+        if (componentType instanceof IntentAttachPoint) {
+            if (!((IntentAttachPoint)componentType).getRequiredIntents().isEmpty()) {
+                writeImplementation = true;
             }
-            if (writeImplementation) {
-                writeStart(writer, IMPLEMENTATION,
-                           writeIntents(componentType), writePolicySets(componentType));
+        }
+        if (componentType instanceof PolicySetAttachPoint) {
+            if (!((PolicySetAttachPoint)componentType).getPolicySets().isEmpty()) {
+                writeImplementation = true;
             }
-            
-            writeEndDocument(writer);
-            
-        } catch (XMLStreamException e) {
-            throw new ContributionWriteException(e);
         }
+        if (writeImplementation) {
+            writeStart(writer, IMPLEMENTATION,
+                       policyProcessor.writePolicies(componentType));
+        }
+        
+        writeEndDocument(writer);
     }
     
     public void resolve(ComponentType componentType, ModelResolver resolver) throws ContributionResolveException {

Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java?rev=572267&r1=572266&r2=572267&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/CompositeDocumentProcessor.java Mon Sep  3 02:46:41 2007
@@ -40,7 +40,7 @@
  * 
  * @version $Rev$ $Date$
  */
-public class CompositeDocumentProcessor extends BaseArtifactProcessor implements URLArtifactProcessor<Composite> {
+public class CompositeDocumentProcessor extends BaseAssemblyProcessor implements URLArtifactProcessor<Composite> {
     private XMLInputFactory inputFactory;
 
     /**
@@ -57,13 +57,36 @@
     public Composite read(URL contributionURL, URI uri, URL url) throws ContributionReadException {
         InputStream urlStream = null;
         try {
+            
+            // Create a stream reader
             urlStream = url.openStream();
             XMLStreamReader reader = inputFactory.createXMLStreamReader(urlStream);
             reader.nextTag();
+            
+            // Read the composite model
             Composite composite = (Composite)extensionProcessor.read(reader);
             if (composite != null) {
                 composite.setURI(uri.toString());
             }
+
+            // For debugging purposes, write it back to XML
+//            if (composite != null) {
+//                try {
+//                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
+//                    XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+//                    outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, Boolean.TRUE);
+//                    extensionProcessor.write(composite, outputFactory.createXMLStreamWriter(bos));
+//                    Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(bos.toByteArray()));
+//                    OutputFormat format = new OutputFormat();
+//                    format.setIndenting(true);
+//                    format.setIndent(2);
+//                    XMLSerializer serializer = new XMLSerializer(System.out, format);
+//                    serializer.serialize(document);
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            }
+            
             return composite;
             
         } catch (XMLStreamException e) {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org