diff options
Diffstat (limited to 'branches/sca-java-1.x/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java')
-rw-r--r-- | branches/sca-java-1.x/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java | 72 |
1 files changed, 46 insertions, 26 deletions
diff --git a/branches/sca-java-1.x/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java b/branches/sca-java-1.x/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java index a316818b0f..2ed444506c 100644 --- a/branches/sca-java-1.x/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java +++ b/branches/sca-java-1.x/modules/contribution-namespace/src/main/java/org/apache/tuscany/sca/contribution/namespace/impl/NamespaceExportProcessor.java @@ -6,15 +6,15 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. */ package org.apache.tuscany.sca.contribution.namespace.impl; @@ -27,11 +27,14 @@ import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; +import org.apache.tuscany.sca.assembly.ExtensionFactory; import org.apache.tuscany.sca.assembly.builder.impl.ProblemImpl; import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; import org.apache.tuscany.sca.contribution.namespace.NamespaceExport; import org.apache.tuscany.sca.contribution.namespace.NamespaceImportExportFactory; +import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; +import org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.service.ContributionReadException; import org.apache.tuscany.sca.contribution.service.ContributionResolveException; @@ -42,26 +45,35 @@ import org.apache.tuscany.sca.monitor.Problem.Severity; /** * Artifact processor for Namespace export - * + * * @version $Rev$ $Date$ */ -public class NamespaceExportProcessor implements StAXArtifactProcessor<NamespaceExport> { +public class NamespaceExportProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<NamespaceExport> { private static final String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0"; private static final QName EXPORT = new QName(SCA10_NS, "export"); private static final String NAMESPACE = "namespace"; - + private final NamespaceImportExportFactory factory; private final Monitor monitor; - - public NamespaceExportProcessor(ModelFactoryExtensionPoint modelFactories, Monitor monitor) { + private final ExtensionFactory extensionFactory; + private final StAXArtifactProcessor<Object> extensionProcessor; + private final StAXAttributeProcessor<Object> attributeProcessor; + + public NamespaceExportProcessor(ModelFactoryExtensionPoint modelFactories, + StAXArtifactProcessor<Object> extensionProcessor, + StAXAttributeProcessor<Object> attributeProcessor, + Monitor monitor) { this.factory = modelFactories.getFactory(NamespaceImportExportFactory.class); + this.extensionFactory = modelFactories.getFactory(ExtensionFactory.class); + this.extensionProcessor = extensionProcessor; + this.attributeProcessor = attributeProcessor; this.monitor = monitor; } - + /** * Report a warning. - * + * * @param problems * @param message * @param model @@ -72,10 +84,10 @@ public class NamespaceExportProcessor implements StAXArtifactProcessor<Namespace monitor.problem(problem); } } - + /** * Report a exception. - * + * * @param problems * @param message * @param model @@ -90,43 +102,47 @@ public class NamespaceExportProcessor implements StAXArtifactProcessor<Namespace public QName getArtifactType() { return EXPORT; } - + public Class<NamespaceExport> getModelType() { return NamespaceExport.class; } - + /** * Process <export namespace=""/> */ public NamespaceExport read(XMLStreamReader reader) throws ContributionReadException { NamespaceExport namespaceExport = this.factory.createNamespaceExport(); QName element = null; - + try { while (reader.hasNext()) { int event = reader.getEventType(); switch (event) { case START_ELEMENT: element = reader.getName(); - + // Read <export> if (EXPORT.equals(element)) { String ns = reader.getAttributeValue(null, NAMESPACE); if (ns == null) { error("AttributeNameSpaceMissing", reader); //throw new ContributionReadException("Attribute 'namespace' is missing"); - } else + } else { namespaceExport.setNamespace(ns); - } - + } + readExtendedAttributes(reader, namespaceExport, attributeProcessor, extensionFactory); + } else { + readExtendedElement(reader, namespaceExport, extensionProcessor); + } + break; case XMLStreamConstants.END_ELEMENT: if (EXPORT.equals(reader.getName())) { return namespaceExport; } - break; + break; } - + // Read the next element if (reader.hasNext()) { reader.next(); @@ -137,24 +153,28 @@ public class NamespaceExportProcessor implements StAXArtifactProcessor<Namespace ContributionReadException ex = new ContributionReadException(e); error("XMLStreamException", reader, ex); } - + return namespaceExport; } public void write(NamespaceExport namespaceExport, XMLStreamWriter writer) throws ContributionWriteException, XMLStreamException { - + // Write <export> writer.writeStartElement(EXPORT.getNamespaceURI(), EXPORT.getLocalPart()); - + if (namespaceExport.getNamespace() != null) { writer.writeAttribute(NAMESPACE, namespaceExport.getNamespace()); } - + + writeExtendedAttributes(writer, namespaceExport, attributeProcessor); + + writeExtendedElements(writer, namespaceExport, extensionProcessor); + writer.writeEndElement(); } public void resolve(NamespaceExport namespaceExport, ModelResolver resolver) throws ContributionResolveException { - + if (namespaceExport.getNamespace() != null) // Initialize the export's resolver namespaceExport.setModelResolver(new NamespaceExportModelResolver(resolver)); |