summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/contribution/src/main
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-03-18 01:34:22 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2010-03-18 01:34:22 +0000
commitbc902f7edf8ea0a278e322c485dd2fc977d02294 (patch)
treeef9aa67c64adb9ce03a88fccc7e92d8872846968 /sca-java-2.x/trunk/modules/contribution/src/main
parent0155d4682e2fcc0a677eff08df8dca36cb046f7f (diff)
TUSCANY-3452 - Adding support for new extensibility for contract based elements, adjusting current xml for the new model and adapting our element extension list to read/write semantycally same xml when these extensions are in use
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@924584 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/contribution/src/main')
-rw-r--r--sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java11
-rw-r--r--sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportProcessor.java13
-rw-r--r--sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java39
3 files changed, 54 insertions, 9 deletions
diff --git a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java
index b6731f735b..0d410fb377 100644
--- a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java
+++ b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java
@@ -115,7 +115,11 @@ public class NamespaceExportProcessor extends BaseStAXArtifactProcessor implemen
}
readExtendedAttributes(reader, namespaceExport, attributeProcessor, extensionFactory, context);
} else {
- readExtendedElement(reader, namespaceExport, extensionProcessor, context);
+ //read extended elements
+ Object ext = extensionProcessor.read(reader, context);
+ if (namespaceExport != null) {
+ namespaceExport.getExtensions().add(ext);
+ }
}
break;
@@ -151,7 +155,10 @@ public class NamespaceExportProcessor extends BaseStAXArtifactProcessor implemen
writeExtendedAttributes(writer, namespaceExport, attributeProcessor, context);
- writeExtendedElements(writer, namespaceExport, extensionProcessor, context);
+ // handle extended elements
+ for (Object ext : namespaceExport.getExtensions()) {
+ extensionProcessor.write(ext, writer, context);
+ }
writer.writeEndElement();
}
diff --git a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportProcessor.java b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportProcessor.java
index f9ba0c40fd..17b0dc3953 100644
--- a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportProcessor.java
+++ b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceImportProcessor.java
@@ -122,7 +122,11 @@ public class NamespaceImportProcessor extends BaseStAXArtifactProcessor implemen
}
readExtendedAttributes(reader, namespaceImport, attributeProcessor, extensionFactory, context);
} else {
- readExtendedElement(reader, namespaceImport, extensionProcessor, context);
+ // handle extended elements
+ Object ext = extensionProcessor.read(reader, context);
+ if (namespaceImport != null) {
+ namespaceImport.getExtensions().add(ext);
+ }
}
break;
case XMLStreamConstants.END_ELEMENT:
@@ -159,7 +163,12 @@ public class NamespaceImportProcessor extends BaseStAXArtifactProcessor implemen
}
writeExtendedAttributes(writer, namespaceImport, attributeProcessor, context);
- writeExtendedElements(writer, namespaceImport, extensionProcessor, context);
+
+ //handle extended elements
+ for (Object ext : namespaceImport.getExtensions()) {
+ extensionProcessor.write(ext, writer, context);
+ }
+
writer.writeEndElement();
}
diff --git a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
index 7056823ec8..40a558b80b 100644
--- a/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
+++ b/sca-java-2.x/trunk/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/BaseStAXArtifactProcessor.java
@@ -22,6 +22,8 @@ package org.apache.tuscany.sca.contribution.processor;
import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -43,6 +45,9 @@ import org.apache.tuscany.sca.common.xml.stax.StAXHelper;
* @version $Rev$ $Date$
*/
public abstract class BaseStAXArtifactProcessor {
+ private static String SCA11_NS = "http://docs.oasis-open.org/ns/opencsa/sca/200912";
+ private static String SCA11_TUSCANY_NS = "http://tuscany.apache.org/xmlns/sca/1.1";
+
/**
* The StAXHelper without states
*/
@@ -319,6 +324,7 @@ public abstract class BaseStAXArtifactProcessor {
Extensible extensibleElement,
StAXAttributeProcessor extensionAttributeProcessor, ProcessorContext context)
throws ContributionWriteException, XMLStreamException {
+
for (Extension extension : extensibleElement.getAttributeExtensions()) {
if (extension.isAttribute()) {
extensionAttributeProcessor.write(extension, writer, context);
@@ -328,8 +334,9 @@ public abstract class BaseStAXArtifactProcessor {
protected void readExtendedElement(XMLStreamReader reader,
Extensible extensible,
- StAXArtifactProcessor extensionProcessor, ProcessorContext context) throws ContributionReadException,
- XMLStreamException {
+ StAXArtifactProcessor extensionProcessor, ProcessorContext context)
+ throws ContributionReadException, XMLStreamException {
+
Object ext = extensionProcessor.read(reader, context);
if (extensible != null) {
extensible.getExtensions().add(ext);
@@ -338,11 +345,33 @@ public abstract class BaseStAXArtifactProcessor {
protected void writeExtendedElements(XMLStreamWriter writer,
Extensible extensible,
- StAXArtifactProcessor extensionProcessor, ProcessorContext context) throws ContributionWriteException,
- XMLStreamException {
+ StAXArtifactProcessor extensionProcessor, ProcessorContext context)
+ throws ContributionWriteException, XMLStreamException {
+
+ List <Object> otherExtensions = new ArrayList<Object>();
+
+ // write all generic extensions as elements
+ // to produce semanticaly equal xml output
for (Object ext : extensible.getExtensions()) {
- extensionProcessor.write(ext, writer, context);
+ if (ext instanceof Extension) {
+ extensionProcessor.write(ext, writer, context);
+ } else {
+ otherExtensions.add(ext);
+ }
}
+
+ //wrap xml extensibility into a extension wrapper element
+ if(otherExtensions.size() > 0) {
+
+ writeStart(writer, SCA11_NS, "extensions");
+
+ for (Object extension : otherExtensions) {
+ extensionProcessor.write(extension, writer, context);
+ }
+
+ writeEnd(writer);
+ }
+
}
/**