Author: rfeng
Date: Fri Mar  6 01:27:13 2009
New Revision: 750739

URL: http://svn.apache.org/viewvc?rev=750739&view=rev
Log:
Use AssemblyFactory to create Extension

Modified:
    
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
    
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AssemblyFactory.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/DefaultExtensionFactory.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Extension.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/ExtensionFactory.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/AssemblyFactoryImpl.java
    
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ExtensionImpl.java
    
tuscany/java/sca/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java

Modified: 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
 (original)
+++ 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
 Fri Mar  6 01:27:13 2009
@@ -21,6 +21,8 @@
 
 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 static org.apache.tuscany.sca.assembly.xml.Constants.ELEMENT;
 import static org.apache.tuscany.sca.assembly.xml.Constants.MANY;
 import static org.apache.tuscany.sca.assembly.xml.Constants.MULTIPLICITY;
@@ -28,9 +30,12 @@
 import static org.apache.tuscany.sca.assembly.xml.Constants.NAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.ONE_N;
 import static org.apache.tuscany.sca.assembly.xml.Constants.ONE_ONE;
+import static org.apache.tuscany.sca.assembly.xml.Constants.PROPERTY_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.SCA11_NS;
 import static org.apache.tuscany.sca.assembly.xml.Constants.TARGET;
 import static org.apache.tuscany.sca.assembly.xml.Constants.TYPE;
+import static org.apache.tuscany.sca.assembly.xml.Constants.VALUE;
+import static org.apache.tuscany.sca.assembly.xml.Constants.VALUE_QNAME;
 import static org.apache.tuscany.sca.assembly.xml.Constants.ZERO_N;
 import static org.apache.tuscany.sca.assembly.xml.Constants.ZERO_ONE;
 
@@ -62,7 +67,6 @@
 import org.apache.tuscany.sca.assembly.Contract;
 import org.apache.tuscany.sca.assembly.Extensible;
 import org.apache.tuscany.sca.assembly.Extension;
-import org.apache.tuscany.sca.assembly.ExtensionFactory;
 import org.apache.tuscany.sca.assembly.Implementation;
 import org.apache.tuscany.sca.assembly.Multiplicity;
 import org.apache.tuscany.sca.assembly.Reference;
@@ -96,7 +100,6 @@
 abstract class BaseAssemblyProcessor extends BaseStAXArtifactProcessor {
 
     protected AssemblyFactory assemblyFactory;
-    protected ExtensionFactory extensionFactory;
     protected PolicyFactory policyFactory;
     protected StAXArtifactProcessor<Object> extensionProcessor;
     protected PolicySubjectProcessor policyProcessor;
@@ -110,13 +113,11 @@
      */
     @SuppressWarnings("unchecked")
     protected BaseAssemblyProcessor(AssemblyFactory assemblyFactory,
-                                    ExtensionFactory extensionFactory,
                                     PolicyFactory policyFactory,
                                     DocumentBuilderFactory 
documentBuilderFactory,
                                     StAXArtifactProcessor extensionProcessor,
                                     Monitor monitor) {
         this.assemblyFactory = assemblyFactory;
-        this.extensionFactory = extensionFactory;
         this.policyFactory = policyFactory;
         this.documentBuilderFactory = documentBuilderFactory;
         this.extensionProcessor = 
(StAXArtifactProcessor<Object>)extensionProcessor;
@@ -133,7 +134,6 @@
                                     StAXArtifactProcessor staxProcessor,
                                     Monitor monitor) {
         this.assemblyFactory = 
modelFactories.getFactory(AssemblyFactory.class);
-        this.extensionFactory = 
modelFactories.getFactory(ExtensionFactory.class);
         this.policyFactory = modelFactories.getFactory(PolicyFactory.class);
         this.documentBuilderFactory = 
modelFactories.getFactory(DocumentBuilderFactory.class);
         this.extensionProcessor = (StAXArtifactProcessor<Object>)staxProcessor;
@@ -324,6 +324,7 @@
         property.setMustSupply(getBoolean(reader, MUST_SUPPLY));
         property.setXSDElement(getQName(reader, ELEMENT));
         property.setXSDType(getQName(reader, TYPE));
+
     }
 
     /**
@@ -429,6 +430,68 @@
             return null;
     }
 
+    protected List<Extension> readPropertyValue(XMLStreamReader reader) throws 
XMLStreamException,
+        ContributionReadException {
+        List<Extension> values = new ArrayList<Extension>();
+        QName name = reader.getName(); // Should be sca:property
+
+        // SCA 1.1 supports the @value for simple types
+        String valueAttr = getString(reader, VALUE);
+        if (valueAttr != null) {
+            Extension ext = assemblyFactory.createExtension();
+            ext.setValue(valueAttr);
+            ext.setQName(VALUE_QNAME);
+            ext.setAttribute(true);
+            values.add(ext);
+        }
+
+        boolean isTextForProperty = true;
+        StringBuffer text = new StringBuffer();
+
+        int event = reader.getEventType();
+        while (true) {
+            switch (event) {
+                case START_ELEMENT:
+                    name = reader.getName();
+                    if (PROPERTY_QNAME.equals(name)) {
+                        isTextForProperty = true;
+                        continue;
+                    }
+                    isTextForProperty = false;
+                    // Read <value>
+                    if (VALUE_QNAME.equals(name)) {
+                        Object value = extensionProcessor.read(reader);
+                        // Assume the value is the XMLStreamReader for the 
content
+                        Extension ext = assemblyFactory.createExtension();
+                        ext.setValue(value);
+                        ext.setQName(name);
+                        values.add(ext);
+                    } else {
+                        // Global elements
+                        // FIXME: do we want to check if the element mataches 
property.element
+                        Object value = extensionProcessor.read(reader);
+                        Extension ext = assemblyFactory.createExtension();
+                        ext.setValue(value);
+                        ext.setQName(name);
+                        values.add(ext);
+                    }
+                    break;
+                case XMLStreamConstants.CHARACTERS:
+                case XMLStreamConstants.CDATA:
+                    if (isTextForProperty) {
+                        text.append(reader.getText());
+                    }
+                    break;
+                case END_ELEMENT:
+                    name = reader.getName();
+                    if (PROPERTY_QNAME.equals(name)) {
+                        return values;
+                    }
+                    break;
+            }
+        }
+    }
+    
     /**
      * Read a property value into a DOM document.
      * @param element
@@ -441,7 +504,6 @@
      */
     protected Document readPropertyValue(QName element, QName type, 
XMLStreamReader reader) throws XMLStreamException,
         ContributionReadException {
-
         Document document;
         try {
             if (documentBuilderFactory == null) {
@@ -703,7 +765,10 @@
                     if (attributeValue instanceof Extension) {
                         attributeExtension = (Extension)attributeValue;
                     } else {
-                        attributeExtension = 
extensionFactory.createExtension(attributeName, attributeValue, true);
+                        attributeExtension = assemblyFactory.createExtension();
+                        attributeExtension.setQName(attributeName);
+                        attributeExtension.setAttribute(true);
+                        attributeExtension.setValue(attributeValue);
                     }
                     
estensibleElement.getAttributeExtensions().add(attributeExtension);
                 }

Modified: 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
 (original)
+++ 
tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/Constants.java
 Fri Mar  6 01:27:13 2009
@@ -73,6 +73,8 @@
     QName BINDING_SCA_QNAME = new QName(Constants.SCA11_NS, BINDING_SCA);
     
     String NAME = "name";
+    String VALUE = "value";
+    QName VALUE_QNAME = new QName(SCA11_NS, VALUE);    
     String TARGET_NAMESPACE = "targetNamespace";
     String LOCAL = "local";
     String AUTOWIRE = "autowire";

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AssemblyFactory.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AssemblyFactory.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AssemblyFactory.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AssemblyFactory.java
 Fri Mar  6 01:27:13 2009
@@ -19,6 +19,7 @@
 package org.apache.tuscany.sca.assembly;
 
 
+
 /**
  * A factory for the assembly model
  * 
@@ -146,6 +147,13 @@
     Wire createWire();
     
     /**
+     * Create an Extension
+     * @return
+     */
+    Extension createExtension();
+
+   
+    /**
      * Create a new endpoint
      * 
      * @return a new endpoint

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/DefaultExtensionFactory.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/DefaultExtensionFactory.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/DefaultExtensionFactory.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/DefaultExtensionFactory.java
 Fri Mar  6 01:27:13 2009
@@ -23,14 +23,18 @@
 
 import org.apache.tuscany.sca.assembly.impl.ExtensionImpl;
 
+/**
+ * @deprecated
+ */
+...@deprecated
 public class DefaultExtensionFactory implements ExtensionFactory {
 
-       public Extension createExtension() {
-               return new ExtensionImpl();
-       }
+    public Extension createExtension() {
+        return new ExtensionImpl();
+    }
 
-       public Extension createExtension(QName name, Object value, boolean 
isAttribute) {
-               return new ExtensionImpl(name, value, isAttribute);
-       }
+    public Extension createExtension(QName name, Object value, boolean 
isAttribute) {
+        return new ExtensionImpl(name, value, isAttribute);
+    }
 
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Extension.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Extension.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Extension.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/Extension.java
 Fri Mar  6 01:27:13 2009
@@ -61,5 +61,5 @@
      * Set whether or not the extension is an attribute
      * @param value
      */
-    void setIsAttribute(boolean isAttribute);
+    void setAttribute(boolean isAttribute);
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/ExtensionFactory.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/ExtensionFactory.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/ExtensionFactory.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/ExtensionFactory.java
 Fri Mar  6 01:27:13 2009
@@ -19,10 +19,13 @@
 package org.apache.tuscany.sca.assembly;
 
 import javax.xml.namespace.QName;
-
+/**
+ * @deprecated Use AssemblyFactory directly
+ */
+...@deprecated
 public interface ExtensionFactory {
 
-       Extension createExtension();
-       
-       Extension createExtension(QName qName, Object value, boolean 
isAttribute);
+    Extension createExtension();
+
+    Extension createExtension(QName qName, Object value, boolean isAttribute);
 }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/AssemblyFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/AssemblyFactoryImpl.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/AssemblyFactoryImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/AssemblyFactoryImpl.java
 Fri Mar  6 01:27:13 2009
@@ -35,6 +35,7 @@
 import org.apache.tuscany.sca.assembly.ConstrainingType;
 import org.apache.tuscany.sca.assembly.Endpoint2;
 import org.apache.tuscany.sca.assembly.EndpointReference2;
+import org.apache.tuscany.sca.assembly.Extension;
 import org.apache.tuscany.sca.assembly.Property;
 import org.apache.tuscany.sca.assembly.Reference;
 import org.apache.tuscany.sca.assembly.Service;
@@ -114,7 +115,11 @@
     public Wire createWire() {
         return new WireImpl();
     }
-   
+    
+    public Extension createExtension() {
+        return new ExtensionImpl();
+    }
+
     public Endpoint2 createEndpoint() {
         return new Endpoint2Impl();
     }

Modified: 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ExtensionImpl.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ExtensionImpl.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ExtensionImpl.java
 (original)
+++ 
tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/impl/ExtensionImpl.java
 Fri Mar  6 01:27:13 2009
@@ -56,7 +56,7 @@
         return isAttribute;
     }
 
-    public void setIsAttribute(boolean isAttribute) {
+    public void setAttribute(boolean isAttribute) {
         this.isAttribute = isAttribute;
     }
 }

Modified: 
tuscany/java/sca/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java
URL: 
http://svn.apache.org/viewvc/tuscany/java/sca/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java?rev=750739&r1=750738&r2=750739&view=diff
==============================================================================
--- 
tuscany/java/sca/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java
 (original)
+++ 
tuscany/java/sca/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java
 Fri Mar  6 01:27:13 2009
@@ -23,8 +23,8 @@
 import javax.xml.stream.XMLStreamReader;
 import javax.xml.stream.XMLStreamWriter;
 
+import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.Extension;
-import org.apache.tuscany.sca.assembly.ExtensionFactory;
 import org.apache.tuscany.sca.contribution.Constants;
 import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
@@ -43,10 +43,10 @@
 public class AnyAttributeProcessor extends BaseStAXArtifactProcessor 
implements StAXAttributeProcessor<Extension> {
     private static final QName ANY_ATTRIBUTE = new 
QName(Constants.XMLSCHEMA_NS, "anyAttribute");
     
-    private ExtensionFactory extensionFactory;
+    private AssemblyFactory assemblyFactory;
 
     public AnyAttributeProcessor(FactoryExtensionPoint modelFactories, Monitor 
monitor) {
-        this.extensionFactory = 
modelFactories.getFactory(ExtensionFactory.class);
+        this.assemblyFactory = 
modelFactories.getFactory(AssemblyFactory.class);
     }
        
     public QName getArtifactType() {
@@ -59,7 +59,11 @@
 
     public Extension read(QName attributeName, XMLStreamReader reader) throws 
ContributionReadException, XMLStreamException {
         String attributeValue = 
reader.getAttributeValue(attributeName.getNamespaceURI(), 
attributeName.getLocalPart());
-        return extensionFactory.createExtension(attributeName, attributeValue, 
true);
+        Extension ext = assemblyFactory.createExtension();
+        ext.setQName(attributeName);
+        ext.setAttribute(true);
+        ext.setValue(attributeValue);
+        return ext;
     }
 
     public void write(Extension attributeExtension, XMLStreamWriter writer) 
throws ContributionWriteException, XMLStreamException {


Reply via email to