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 {