summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--branches/sca-java-1.x/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java11
-rw-r--r--branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadWriteAnyAttributeTestCase.java22
-rw-r--r--branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/TestAttributeProcessor.java4
-rw-r--r--branches/sca-java-1.x/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java37
4 files changed, 41 insertions, 33 deletions
diff --git a/branches/sca-java-1.x/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java b/branches/sca-java-1.x/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
index ac9f4c6006..a09807d3f8 100644
--- a/branches/sca-java-1.x/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
+++ b/branches/sca-java-1.x/modules/assembly-xml/src/main/java/org/apache/tuscany/sca/assembly/xml/BaseAssemblyProcessor.java
@@ -882,8 +882,13 @@ abstract class BaseAssemblyProcessor extends BaseStAXArtifactProcessor implement
QName attributeName = reader.getAttributeName(a);
if( attributeName.getNamespaceURI() != null && attributeName.getNamespaceURI().length() > 0) {
if( ! elementName.getNamespaceURI().equals(attributeName.getNamespaceURI()) ) {
- String attributeValue = (String) extensionAttributeProcessor.read(attributeName, reader);
- Extension attributeExtension = extensionFactory.createExtension(attributeName, attributeValue, true);
+ Object attributeValue = extensionAttributeProcessor.read(attributeName, reader);
+ Extension attributeExtension;
+ if (attributeValue instanceof Extension) {
+ attributeExtension = (Extension) attributeValue;
+ } else {
+ attributeExtension = extensionFactory.createExtension(attributeName, attributeValue, true);
+ }
estensibleElement.getAttributeExtensions().add(attributeExtension);
}
}
@@ -903,7 +908,7 @@ abstract class BaseAssemblyProcessor extends BaseStAXArtifactProcessor implement
protected void writeExtendedAttributes(XMLStreamWriter writer, Extensible extensibleElement, StAXAttributeProcessor extensionAttributeProcessor) throws ContributionWriteException, XMLStreamException {
for(Extension extension : extensibleElement.getAttributeExtensions()) {
if(extension.isAttribute()) {
- extensionAttributeProcessor.write(extension.getValue(), writer);
+ extensionAttributeProcessor.write(extension, writer);
}
}
}
diff --git a/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadWriteAnyAttributeTestCase.java b/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadWriteAnyAttributeTestCase.java
index 826e39baab..6877dcdb34 100644
--- a/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadWriteAnyAttributeTestCase.java
+++ b/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/ReadWriteAnyAttributeTestCase.java
@@ -47,19 +47,17 @@ import org.junit.Test;
*/
public class ReadWriteAnyAttributeTestCase {
- private static final QName ATTRIBUTE = new QName("http://test", "customAttribute");
+ private static final QName EXTENDED_ATTRIBUTE = new QName("http://test", "customAttribute");
- // implementation.java for CalculatorServiceComponent appears in a strange place as the
- // java implementation extension is not loaded and hence they are loaded as any elements
private static final String XML = "<?xml version='1.0' encoding='UTF-8'?>"+
"<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\" " +
"xmlns:ns1=\"http://www.osoa.org/xmlns/sca/1.0\" " +
"targetNamespace=\"http://calc\" " +
"name=\"Calculator\">"+
- "<component name=\"AddServiceComponent\" xmlns:test=\"http://test\" test:customAttribute=\"customValue\">"+
- "<implementation.java class=\"calculator.AddServiceImpl\" />"+
- "</component>"+
- "</composite>";
+ "<component name=\"AddServiceComponent\" xmlns:test=\"http://test\" test:customAttribute=\"customValue\">"+
+ "<implementation.java class=\"calculator.AddServiceImpl\" />"+
+ "</component>"+
+ "</composite>";
private XMLInputFactory inputFactory;
private ExtensibleStAXArtifactProcessor staxProcessor;
@@ -91,7 +89,6 @@ public class ReadWriteAnyAttributeTestCase {
* @throws Exception
*/
@Test
- @Ignore
public void testReadWriteCompositeWithAttributeProcessor() throws Exception {
init(new TestAttributeProcessor());
@@ -104,8 +101,8 @@ public class ReadWriteAnyAttributeTestCase {
staxProcessor.write(composite, bos);
// used for debug comparison
- System.out.println(XML);
- System.out.println(bos.toString());
+ // System.out.println(XML);
+ // System.out.println(bos.toString());
assertEquals(XML, bos.toString());
}
@@ -116,7 +113,6 @@ public class ReadWriteAnyAttributeTestCase {
* @throws Exception
*/
@Test
- @Ignore
public void testDefaultReadWriteComposite() throws Exception {
init(null);
@@ -129,8 +125,8 @@ public class ReadWriteAnyAttributeTestCase {
staxProcessor.write(composite, bos);
// used for debug comparison
- System.out.println(XML);
- System.out.println(bos.toString());
+ // System.out.println(XML);
+ // System.out.println(bos.toString());
assertEquals(XML, bos.toString());
}
diff --git a/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/TestAttributeProcessor.java b/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/TestAttributeProcessor.java
index 84beebe466..c34e9e3d22 100644
--- a/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/TestAttributeProcessor.java
+++ b/branches/sca-java-1.x/modules/assembly-xml/src/test/java/org/apache/tuscany/sca/assembly/xml/TestAttributeProcessor.java
@@ -31,7 +31,7 @@ import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
import org.apache.tuscany.sca.contribution.service.ContributionWriteException;
/**
- * A Policy Processor used for testing.
+ * A Attribute Processor used for testing.
*
* @version $Rev$ $Date$
*/
@@ -51,7 +51,7 @@ public class TestAttributeProcessor extends BaseStAXArtifactProcessor implements
}
public Class<String> getModelType() {
- return String.class;
+ return null;
}
public void resolve(String arg0, ModelResolver arg1) throws ContributionResolveException {
diff --git a/branches/sca-java-1.x/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java b/branches/sca-java-1.x/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java
index 36e959ea21..0031063c79 100644
--- a/branches/sca-java-1.x/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java
+++ b/branches/sca-java-1.x/modules/contribution-xml/src/main/java/org/apache/tuscany/sca/contribution/processor/xml/AnyAttributeProcessor.java
@@ -23,6 +23,8 @@ import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
+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.ModelFactoryExtensionPoint;
import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
@@ -38,32 +40,37 @@ import org.apache.tuscany.sca.monitor.Monitor;
*
* @version $Rev$ $Date$
*/
-public class AnyAttributeProcessor extends BaseStAXArtifactProcessor implements StAXAttributeProcessor<String> {
- private static final QName ANY_ATTRIBUTE = new QName(Constants.XMLSCHEMA_NS, "anyAttribute");
-
- public AnyAttributeProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
-
- }
+public class AnyAttributeProcessor extends BaseStAXArtifactProcessor implements StAXAttributeProcessor<Extension> {
+ private static final QName ANY_ATTRIBUTE = new QName(Constants.XMLSCHEMA_NS, "anyAttribute");
+
+ private ExtensionFactory extensionFactory;
+
+ public AnyAttributeProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) {
+ this.extensionFactory = modelFactories.getFactory(ExtensionFactory.class);
+ }
public QName getArtifactType() {
return ANY_ATTRIBUTE;
}
- public Class<String> getModelType() {
- return String.class;
+ public Class<Extension> getModelType() {
+ return Extension.class;
}
- public String read(QName attributeName, XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
- return reader.getAttributeValue(attributeName.getNamespaceURI(), attributeName.getLocalPart());
+ public Extension read(QName attributeName, XMLStreamReader reader) throws ContributionReadException, XMLStreamException {
+ String attributeValue = reader.getAttributeValue(attributeName.getNamespaceURI(), attributeName.getLocalPart());
+ return extensionFactory.createExtension(attributeName, attributeValue, true);
}
- public void write(String value, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
- writer.setPrefix(ANY_ATTRIBUTE.getPrefix(), ANY_ATTRIBUTE.getNamespaceURI());
- writer.writeAttribute(ANY_ATTRIBUTE.getLocalPart(), value);
+ public void write(Extension attributeExtension, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException {
+ writer.writeAttribute(attributeExtension.getQName().getPrefix(),
+ attributeExtension.getQName().getNamespaceURI(),
+ attributeExtension.getQName().getLocalPart(),
+ attributeExtension.getValue().toString()); //for extended attributes, we can assume values
+ // are just the string representation fo the attribute
}
-
- public void resolve(String arg0, ModelResolver arg1) throws ContributionResolveException {
+ public void resolve(Extension arg0, ModelResolver arg1) throws ContributionResolveException {
}
}