summaryrefslogtreecommitdiffstats
path: root/branches/sca-equinox/modules/contribution/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'branches/sca-equinox/modules/contribution/src/main/java')
-rw-r--r--branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXArtifactProcessor.java21
-rw-r--r--branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXAttributeProcessor.java23
2 files changed, 40 insertions, 4 deletions
diff --git a/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXArtifactProcessor.java b/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXArtifactProcessor.java
index ce706fa69c..a1c13c95f2 100644
--- a/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXArtifactProcessor.java
+++ b/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXArtifactProcessor.java
@@ -34,6 +34,7 @@ import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl;
+import org.apache.tuscany.sca.contribution.Constants;
import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
import org.apache.tuscany.sca.contribution.service.ContributionReadException;
import org.apache.tuscany.sca.contribution.service.ContributionResolveException;
@@ -51,10 +52,11 @@ import org.apache.tuscany.sca.monitor.Problem.Severity;
*
* @version $Rev$ $Date$
*/
-public class ExtensibleStAXArtifactProcessor
- implements StAXArtifactProcessor<Object> {
-
+public class ExtensibleStAXArtifactProcessor implements StAXArtifactProcessor<Object> {
private static final Logger logger = Logger.getLogger(ExtensibleStAXArtifactProcessor.class.getName());
+
+ private static final QName ANY_ELEMENT = new QName("http://www.w3.org/2001/XMLSchema", "anyElement");
+
private XMLInputFactory inputFactory;
private XMLOutputFactory outputFactory;
private StAXArtifactProcessorExtensionPoint processors;
@@ -138,7 +140,13 @@ public class ExtensibleStAXArtifactProcessor
logger.warning("Element " + name + " cannot be processed. (" + location + ")");
}
warning("ElementCannotBeProcessed", processors, name, location);
- return null;
+
+ StAXArtifactProcessor<?> anyElementProcessor = processors.getProcessor(ANY_ELEMENT);
+ if (anyElementProcessor != null) {
+ return anyElementProcessor.read(source);
+ } else {
+ return null;
+ }
}
return processor.read(source);
}
@@ -156,6 +164,11 @@ public class ExtensibleStAXArtifactProcessor
logger.warning("No StAX processor is configured to handle " + model.getClass());
}
warning("NoStaxProcessor", processors, model.getClass());
+
+ StAXArtifactProcessor anyElementProcessor = processors.getProcessor(ANY_ELEMENT);
+ if (anyElementProcessor != null) {
+ anyElementProcessor.write(model, outputSource);
+ }
}
}
}
diff --git a/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXAttributeProcessor.java b/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXAttributeProcessor.java
index 3329f0bf1c..29c2af7513 100644
--- a/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXAttributeProcessor.java
+++ b/branches/sca-equinox/modules/contribution/src/main/java/org/apache/tuscany/sca/contribution/processor/ExtensibleStAXAttributeProcessor.java
@@ -147,6 +147,17 @@ public class ExtensibleStAXAttributeProcessor
return processor.read(attributeName, source);
}
+
+ //handle extension attributes without processors
+ processor = (StAXAttributeProcessor<?>)processors.getProcessor(UNKNOWN_ATTRIBUTE);
+ if (processor == null) {
+ Location location = source.getLocation();
+ if (logger.isLoggable(Level.WARNING)) {
+ logger.warning("Could not find Default Attribute processor !");
+ }
+ warning("DefaultAttributeProcessorNotAvailable", processors, UNKNOWN_ATTRIBUTE, location);
+ }
+
return processor == null ? null : processor.read(attributeName, source);
}
@@ -168,6 +179,18 @@ public class ExtensibleStAXAttributeProcessor
processor.write(model, outputSource);
return;
}
+
+ //handle extension attributes without processors
+ processor = (StAXAttributeProcessor<?>)processors.getProcessor(UNKNOWN_ATTRIBUTE);
+ if(processor == null) {
+ if (logger.isLoggable(Level.WARNING)) {
+ logger.warning("No Default StAX processor is configured to handle " + model.getClass());
+ }
+ warning("NoDefaultStaxProcessor", processors, model.getClass());
+ } else {
+ processor.write(model, outputSource);
+ return;
+ }
}