You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/04/07 01:42:36 UTC
svn commit: r526321 - in /incubator/tuscany/java/sca/modules:
assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/
assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/
contribution/src/main/java/org/apache/tuscany/services/spi/contri...
Author: jsdelfino
Date: Fri Apr 6 16:42:35 2007
New Revision: 526321
URL: http://svn.apache.org/viewvc?view=rev&rev=526321
Log:
Simplified usage of generics in ArtifactProcessor SPI
Added:
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java (with props)
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java (with props)
Removed:
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAndResolveDocumentTestCase.java
Modified:
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/Attr.java
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java
incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java
incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessor.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessorRegistry.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DOMArtifactProcessor.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactProcessorRegistry.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessor.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessorRegistry.java
incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/URLArtifactProcessor.java
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/Attr.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/Attr.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/Attr.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/Attr.java Fri Apr 6 16:42:35 2007
@@ -23,6 +23,8 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import org.apache.tuscany.assembly.xml.Constants;
+
/**
* Represents an XML attribute that needs to be written to a document.
*
@@ -30,7 +32,7 @@
*/
public class Attr {
- String uri;
+ String uri = Constants.SCA10_NS;
String name;
Object value;
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseArtifactProcessor.java Fri Apr 6 16:42:35 2007
@@ -41,6 +41,7 @@
import org.apache.tuscany.assembly.AbstractReference;
import org.apache.tuscany.assembly.AssemblyFactory;
import org.apache.tuscany.assembly.Binding;
+import org.apache.tuscany.assembly.ComponentType;
import org.apache.tuscany.assembly.ConstrainingType;
import org.apache.tuscany.assembly.Contract;
import org.apache.tuscany.assembly.Multiplicity;
@@ -390,7 +391,7 @@
* @throws XMLStreamException
* @throws ContributionReadException
*/
- public static Document readPropertyValue(XMLStreamReader reader, QName type)
+ protected Document readPropertyValue(XMLStreamReader reader, QName type)
throws XMLStreamException, ContributionReadException {
Document doc = DOMUtil.newDocument();
@@ -425,7 +426,7 @@
* @param attrs
* @throws XMLStreamException
*/
- protected void start(XMLStreamWriter writer, String uri, String name, Attr... attrs) throws XMLStreamException {
+ protected void writeStart(XMLStreamWriter writer, String uri, String name, Attr... attrs) throws XMLStreamException {
writer.writeStartElement(uri, name);
writeAttributes(writer, attrs);
}
@@ -437,7 +438,7 @@
* @param attrs
* @throws XMLStreamException
*/
- protected void start(XMLStreamWriter writer, String name, Attr... attrs) throws XMLStreamException {
+ protected void writeStart(XMLStreamWriter writer, String name, Attr... attrs) throws XMLStreamException {
writer.writeStartElement(SCA10_NS, name);
writeAttributes(writer, attrs);
}
@@ -447,11 +448,30 @@
* @param writer
* @throws XMLStreamException
*/
- protected void end(XMLStreamWriter writer) throws XMLStreamException {
+ protected void writeEnd(XMLStreamWriter writer) throws XMLStreamException {
writer.writeEndElement();
}
/**
+ * Start a document.
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void writeStartDocument(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeStartDocument();
+ writer.setDefaultNamespace(SCA10_NS);
+ }
+
+ /**
+ * End a document.
+ * @param writer
+ * @throws XMLStreamException
+ */
+ protected void writeEndDocument(XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeEndDocument();
+ }
+
+ /**
* Write attributes to the current element.
* @param writer
* @param attrs
@@ -480,4 +500,18 @@
protected void writeProperty(XMLStreamWriter writer, Property prop) throws XMLStreamException {
writeAbstractProperty(writer, prop);
}
+
+ /**
+ * Returns a constrainingType attribute.
+ * @param componentType
+ * @return
+ */
+ protected QName getConstrainingTypeAttr(ComponentType componentType) {
+ ConstrainingType constrainingType = componentType.getConstrainingType();
+ if (constrainingType != null)
+ return constrainingType.getName();
+ else
+ return null;
+ }
+
}
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeProcessor.java Fri Apr 6 16:42:35 2007
@@ -204,14 +204,55 @@
return componentType;
}
- public void write(ComponentType model, XMLStreamWriter outputSource) throws ContributionWriteException {
- // TODO Auto-generated method stub
+ public void write(ComponentType componentType, XMLStreamWriter writer) throws ContributionWriteException {
+ try {
+ writeStartDocument(writer);
+ writer.setPrefix("sca", SCA10_NS);
+
+ writeStart(writer, COMPONENT_TYPE,
+ new Attr(Constants.CONSTRAINING_TYPE, getConstrainingTypeAttr(componentType)));
+ writer.writeDefaultNamespace(SCA10_NS);
+
+ for (Service service : componentType.getServices()) {
+ writeStart(writer, SERVICE, new Attr(NAME, service.getName()));
+ if (service.getCallback() != null) {
+ writeStart(writer, CALLBACK);
+ writeEnd(writer);
+ }
+ writeEnd(writer);
+ }
+
+ for (Reference reference : componentType.getReferences()) {
+ // TODO handle multivalued target attribute
+ String target = reference.getTargets().isEmpty() ? null : reference.getTargets().get(0).getName();
+ writeStart(writer, REFERENCE,
+ new Attr(NAME, reference.getName()),
+ new Attr(TARGET, target));
+ if (reference.getCallback() != null) {
+ writeStart(writer, CALLBACK);
+ writeEnd(writer);
+ }
+ writeEnd(writer);
+ }
+
+ for (Property property : componentType.getProperties()) {
+ writeStart(writer, PROPERTY, new Attr(NAME, property.getName()));
+ writeEnd(writer);
+ }
+
+ writeEnd(writer);
+
+ writeEndDocument(writer);
+
+ } catch (XMLStreamException e) {
+ throw new ContributionWriteException(e);
+ }
}
public void resolve(ComponentType componentType, ArtifactResolver resolver) throws ContributionResolveException {
- // Resolve componen type services and references
+ // Resolve component type services and references
resolveContract(componentType.getServices(), resolver);
resolveContract(componentType.getReferences(), resolver);
}
Modified: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java Fri Apr 6 16:42:35 2007
@@ -19,7 +19,7 @@
package org.apache.tuscany.assembly.xml;
-import java.net.URL;
+import java.io.InputStream;
import javax.xml.namespace.QName;
@@ -34,11 +34,11 @@
import org.apache.tuscany.assembly.CompositeService;
import org.apache.tuscany.assembly.Multiplicity;
import org.apache.tuscany.assembly.Property;
-import org.apache.tuscany.assembly.util.CompositeUtil;
import org.apache.tuscany.assembly.util.PrintUtil;
import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultArtifactResolver;
import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -63,8 +63,8 @@
}
public void testReadComposite() throws Exception {
- URL url = getClass().getClassLoader().getResource("TestAllCalculator.composite");
- Composite composite = registry.read(url, Composite.class);
+ InputStream is = getClass().getClassLoader().getResourceAsStream("TestAllCalculator.composite");
+ Composite composite = registry.read(is, Composite.class);
assertNotNull(composite);
assertEquals(composite.getName(), new QName("http://calc", "TestAllCalculator"));
assertEquals(composite.getConstrainingType().getName(), new QName("http://calc", "CalculatorComponent"));
@@ -148,10 +148,11 @@
}
public void testReadCompositeAndWireIt() throws Exception {
- URL url = getClass().getClassLoader().getResource("TestAllCalculator.composite");
- Composite composite = registry.read(url, Composite.class);
+ InputStream is = getClass().getClassLoader().getResourceAsStream("TestAllCalculator.composite");
+ Composite composite = registry.read(is, Composite.class);
assertNotNull(composite);
- new CompositeUtil(composite).configure(null);
+ registry.resolve(composite, new DefaultArtifactResolver());
+ registry.wire(composite);
Component calcComponent = composite.getComponents().get(0);
CompositeService calcCompositeService = (CompositeService)composite.getServices().get(0);
Added: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java?view=auto&rev=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java Fri Apr 6 16:42:35 2007
@@ -0,0 +1,100 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * 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.
+ */
+
+package org.apache.tuscany.assembly.xml;
+
+import java.net.URL;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.ConstrainingType;
+import org.apache.tuscany.assembly.xml.impl.ComponentTypeDocumentProcessor;
+import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
+import org.apache.tuscany.assembly.xml.impl.CompositeDocumentProcessor;
+import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeDocumentProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultArtifactResolver;
+import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
+import org.apache.tuscany.services.spi.contribution.DefaultURLArtifactProcessorRegistry;
+
+/**
+ * Test the resolving SCA XML assemblies.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ReadDocumentTestCase extends TestCase {
+
+ private DefaultURLArtifactProcessorRegistry registry;
+
+ public void setUp() throws Exception {
+ registry = new DefaultURLArtifactProcessorRegistry();
+
+ // Create Stax processors
+ DefaultStAXArtifactProcessorRegistry staxRegistry = new DefaultStAXArtifactProcessorRegistry();
+ staxRegistry.addArtifactProcessor(new CompositeProcessor(staxRegistry));
+ staxRegistry.addArtifactProcessor(new ComponentTypeProcessor(staxRegistry));
+ staxRegistry.addArtifactProcessor(new ConstrainingTypeProcessor(staxRegistry));
+
+ // Create document processors
+ registry.addArtifactProcessor(new CompositeDocumentProcessor(staxRegistry));
+ registry.addArtifactProcessor(new ComponentTypeDocumentProcessor(staxRegistry));
+ registry.addArtifactProcessor(new ConstrainingTypeDocumentProcessor(staxRegistry));
+ }
+
+ public void tearDown() throws Exception {
+ registry = null;
+ }
+
+ public void testResolveConstrainingType() throws Exception {
+ DefaultArtifactResolver resolver = new DefaultArtifactResolver();
+
+ URL url = getClass().getClassLoader().getResource("CalculatorComponent.constrainingType");
+ ConstrainingType constrainingType = (ConstrainingType)registry.read(url);
+ assertNotNull(constrainingType);
+ resolver.put(constrainingType, constrainingType);
+
+ url = getClass().getClassLoader().getResource("TestAllCalculator.composite");
+ Composite composite = (Composite)registry.read(url);
+ assertNotNull(composite);
+
+ registry.resolve(composite, resolver);
+
+ assertEquals(composite.getConstrainingType(), constrainingType);
+ assertEquals(composite.getComponents().get(0).getConstrainingType(), constrainingType);
+ }
+
+ public void testResolveComposite() throws Exception {
+ DefaultArtifactResolver resolver = new DefaultArtifactResolver();
+
+ URL url = getClass().getClassLoader().getResource("Calculator.composite");
+ Composite nestedComposite = (Composite)registry.read(url);
+ assertNotNull(nestedComposite);
+ resolver.put(nestedComposite, nestedComposite);
+
+ url = getClass().getClassLoader().getResource("TestAllCalculator.composite");
+ Composite composite = (Composite)registry.read(url);
+
+ registry.resolve(composite, resolver);
+
+ assertEquals(composite.getComponents().get(2).getImplementation(), nestedComposite);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadDocumentTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java?view=auto&rev=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java (added)
+++ incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java Fri Apr 6 16:42:35 2007
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * 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.
+ */
+
+package org.apache.tuscany.assembly.xml;
+
+import java.io.InputStream;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.assembly.ComponentType;
+import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.ConstrainingType;
+import org.apache.tuscany.assembly.xml.impl.ComponentTypeProcessor;
+import org.apache.tuscany.assembly.xml.impl.CompositeProcessor;
+import org.apache.tuscany.assembly.xml.impl.ConstrainingTypeProcessor;
+import org.apache.tuscany.services.spi.contribution.DefaultArtifactResolver;
+import org.apache.tuscany.services.spi.contribution.DefaultStAXArtifactProcessorRegistry;
+
+/**
+ * Test the usability of the assembly model API when loading SCDL
+ *
+ * @version $Rev$ $Date$
+ */
+public class WriteAllTestCase extends TestCase {
+ private DefaultStAXArtifactProcessorRegistry registry;
+
+ public void setUp() throws Exception {
+ registry = new DefaultStAXArtifactProcessorRegistry();
+ registry.addArtifactProcessor(new CompositeProcessor(registry));
+ registry.addArtifactProcessor(new ComponentTypeProcessor(registry));
+ registry.addArtifactProcessor(new ConstrainingTypeProcessor(registry));
+ }
+
+ public void tearDown() throws Exception {
+ registry = null;
+ }
+
+ public void testReadWriteComposite() throws Exception {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("TestAllCalculator.composite");
+ Composite composite = registry.read(is, Composite.class);
+ registry.write(composite, System.out);
+ }
+
+ public void testReadWireWriteComposite() throws Exception {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("TestAllCalculator.composite");
+ Composite composite = registry.read(is, Composite.class);
+ registry.resolve(composite, new DefaultArtifactResolver());
+ registry.wire(composite);
+ registry.write(composite, System.out);
+ }
+
+ public void testReadWriteComponentType() throws Exception {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("CalculatorImpl.componentType");
+ ComponentType componentType = registry.read(is, ComponentType.class);
+ registry.resolve(componentType, new DefaultArtifactResolver());
+ registry.wire(componentType);
+ registry.write(componentType, System.out);
+ }
+
+ public void testReadWriteConstrainingType() throws Exception {
+ InputStream is = getClass().getClassLoader().getResourceAsStream("CalculatorComponent.constrainingType");
+ ConstrainingType constrainingType = registry.read(is, ConstrainingType.class);
+ registry.resolve(constrainingType, new DefaultArtifactResolver());
+ registry.wire(constrainingType);
+ registry.write(constrainingType, System.out);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/modules/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/WriteAllTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessor.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessor.java Fri Apr 6 16:42:35 2007
@@ -25,23 +25,7 @@
*
* @version $Rev: 522653 $ $Date: 2007-03-26 15:30:21 -0700 (Mon, 26 Mar 2007) $
*/
-public interface ArtifactProcessor <I, O, M, T> {
-
- /**
- * Reads a model from an input source. Examples of input sources are: a URI, a
- * DOM node, an XML reader.
- * @param source
- * @return a model representation of the input.
- */
- M read(I inputSource) throws ContributionReadException;
-
- /**
- * Writes a model to an ouput source. Examples of output sources are: a URI, a
- * DOM node, an XML writer.
- * @param source
- * @return a model representation of the source.
- */
- void write(M model, O outputSource) throws ContributionWriteException;
+public interface ArtifactProcessor <M> {
/**
* Resolve references from this model to other models. For example references
@@ -60,12 +44,6 @@
*/
void wire(M model) throws ContributionWireException;
- /**
- * Returns the type of artifact handled by this artifact processor.
- * @return the type of artifact handled by this artifact processor
- */
- T getArtifactType();
-
/**
* Returns the type of model handled by this artifact processor.
* @return the type of model handled by this artifact processor
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessorRegistry.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/ArtifactProcessorRegistry.java Fri Apr 6 16:42:35 2007
@@ -31,6 +31,6 @@
* Add an artifact processor.
* @param artifactProcessor the artifact processor to add
*/
- void addArtifactProcessor(Object artifactProcessor);
+ void addArtifactProcessor(P artifactProcessor);
}
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DOMArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DOMArtifactProcessor.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DOMArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DOMArtifactProcessor.java Fri Apr 6 16:42:35 2007
@@ -28,5 +28,28 @@
*
* @version $Rev: 522653 $ $Date: 2007-03-26 15:30:21 -0700 (Mon, 26 Mar 2007) $
*/
-public interface DOMArtifactProcessor<M> extends ArtifactProcessor<Node, Node, M, QName> {
+public interface DOMArtifactProcessor<M> extends ArtifactProcessor<M> {
+
+ /**
+ * Reads a model from an input source. Examples of input sources are: a URI, a
+ * DOM node, an XML reader.
+ * @param source
+ * @return a model representation of the input.
+ */
+ M read(Node inputSource) throws ContributionReadException;
+
+ /**
+ * Writes a model to an ouput source. Examples of output sources are: a URI, a
+ * DOM node, an XML writer.
+ * @param source
+ * @return a model representation of the source.
+ */
+ void write(M model, Node outputSource) throws ContributionWriteException;
+
+ /**
+ * Returns the type of artifact handled by this artifact processor.
+ * @return the type of artifact handled by this artifact processor
+ */
+ QName getArtifactType();
+
}
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactProcessorRegistry.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultArtifactProcessorRegistry.java Fri Apr 6 16:42:35 2007
@@ -26,9 +26,9 @@
*
* @version $Rev$ $Date$
*/
-abstract class DefaultArtifactProcessorRegistry<P extends ArtifactProcessor> implements ArtifactProcessorRegistry<P> {
- private final Map<Object, P> processorsByArtifactType = new HashMap<Object, P>();
- private final Map<Class<?>, P> processorsByModelType = new HashMap<Class<?>, P>();
+abstract class DefaultArtifactProcessorRegistry {
+ protected final Map<Object, ArtifactProcessor> processorsByArtifactType = new HashMap<Object, ArtifactProcessor>();
+ protected final Map<Class<?>, ArtifactProcessor> processorsByModelType = new HashMap<Class<?>, ArtifactProcessor>();
/**
* Constructs a new loader registry.
@@ -41,7 +41,7 @@
* @param artifactType an artifact type
* @return the processor associated with the given artifact type
*/
- protected P getProcessor(Object artifactType) {
+ protected ArtifactProcessor getProcessor(Object artifactType) {
return processorsByArtifactType.get(artifactType);
}
@@ -50,20 +50,14 @@
* @param modelType a model type
* @return the processor associated with the given model type
*/
- protected P getProcessor(Class<?> modelType) {
- Class<?>[] classes = modelType.getClasses();
+ protected ArtifactProcessor getProcessor(Class<?> modelType) {
+ Class<?>[] classes = modelType.getInterfaces();
for (Class<?> c: classes) {
- P processor = processorsByModelType.get(c);
+ ArtifactProcessor processor = processorsByModelType.get(c);
if (processor != null)
return processor;
}
return null;
}
- public void addArtifactProcessor(Object artifactProcessor) {
- P processor = (P)artifactProcessor;
- processorsByArtifactType.put((Object)processor.getArtifactType(), processor);
- processorsByModelType.put(processor.getModelType(), processor);
- }
-
}
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultStAXArtifactProcessorRegistry.java Fri Apr 6 16:42:35 2007
@@ -20,11 +20,12 @@
import java.io.IOException;
import java.io.InputStream;
-import java.net.URL;
+import java.io.OutputStream;
import javax.xml.namespace.QName;
import javax.xml.stream.Location;
import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
@@ -35,24 +36,26 @@
* @version $Rev$ $Date$
*/
public class DefaultStAXArtifactProcessorRegistry
- extends DefaultArtifactProcessorRegistry<StAXArtifactProcessor<Object>>
+ extends DefaultArtifactProcessorRegistry
implements StAXArtifactProcessorRegistry, StAXArtifactProcessor<Object> {
- private XMLInputFactory factory;
+ private XMLInputFactory inputFactory;
+ private XMLOutputFactory outputFactory;
/**
* Constructs a new loader registry.
* @param assemblyFactory
* @param policyFactory
- * @param factory
+ * @param inputFactory
*/
- public DefaultStAXArtifactProcessorRegistry(XMLInputFactory factory) {
+ public DefaultStAXArtifactProcessorRegistry(XMLInputFactory inputFactory, XMLOutputFactory outputFactory) {
super();
- this.factory = factory;
+ this.inputFactory = inputFactory;
+ this.outputFactory = outputFactory;
}
public DefaultStAXArtifactProcessorRegistry() {
- this(XMLInputFactory.newInstance());
+ this(XMLInputFactory.newInstance(), XMLOutputFactory.newInstance());
}
public Object read(XMLStreamReader source) throws ContributionReadException {
@@ -92,14 +95,19 @@
processor.wire(model);
}
}
-
- public <MO> MO read(URL url, Class<MO> type) throws ContributionReadException {
+
+ /**
+ * Read a model from an input stream.
+ * @param is
+ * @param type
+ * @return
+ * @throws ContributionReadException
+ */
+ public <MO> MO read(InputStream is, Class<MO> type) throws ContributionReadException {
try {
XMLStreamReader reader;
- InputStream is;
- is = url.openStream();
try {
- reader = factory.createXMLStreamReader(is);
+ reader = inputFactory.createXMLStreamReader(is);
try {
reader.nextTag();
QName name = reader.getName();
@@ -108,7 +116,6 @@
return type.cast(mo);
} else {
UnrecognizedElementException e = new UnrecognizedElementException(name);
- e.setResourceURI(url.toString());
throw e;
}
} catch (ContributionReadException e) {
@@ -130,15 +137,34 @@
// ignore
}
}
- } catch (IOException e) {
+ } catch (XMLStreamException e) {
ContributionReadException ce = new ContributionReadException(e);
- ce.setResourceURI(url.toString());
throw ce;
+ }
+ }
+
+ /**
+ * Write a model to an ouput stream.
+ * @param model
+ * @param os
+ * @throws ContributionWriteException
+ */
+ public void write(Object model, OutputStream os) throws ContributionWriteException {
+ try {
+ XMLStreamWriter writer = outputFactory.createXMLStreamWriter(os);
+ write(model, writer);
+ writer.flush();
+ writer.close();
} catch (XMLStreamException e) {
- throw new InvalidConfigurationException("Invalid or missing resource: " + url.toString(), e);
+ throw new ContributionWriteException(e);
}
}
+ public void addArtifactProcessor(StAXArtifactProcessor artifactProcessor) {
+ processorsByArtifactType.put((Object)artifactProcessor.getArtifactType(), artifactProcessor);
+ processorsByModelType.put(artifactProcessor.getModelType(), artifactProcessor);
+ }
+
public QName getArtifactType() {
return null;
}
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/DefaultURLArtifactProcessorRegistry.java Fri Apr 6 16:42:35 2007
@@ -26,7 +26,7 @@
* @version $Rev$ $Date$
*/
public class DefaultURLArtifactProcessorRegistry
- extends DefaultArtifactProcessorRegistry<URLArtifactProcessor<Object>>
+ extends DefaultArtifactProcessorRegistry
implements URLArtifactProcessorRegistry, URLArtifactProcessor<Object> {
/**
@@ -88,6 +88,11 @@
e.setResourceURI(url.toString());
throw e;
}
+ }
+
+ public void addArtifactProcessor(URLArtifactProcessor artifactProcessor) {
+ processorsByArtifactType.put((Object)artifactProcessor.getArtifactType(), artifactProcessor);
+ processorsByModelType.put(artifactProcessor.getModelType(), artifactProcessor);
}
public String getArtifactType() {
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessor.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessor.java Fri Apr 6 16:42:35 2007
@@ -28,5 +28,28 @@
*
* @version $Rev: 522653 $ $Date: 2007-03-26 15:30:21 -0700 (Mon, 26 Mar 2007) $
*/
-public interface StAXArtifactProcessor<M> extends ArtifactProcessor <XMLStreamReader, XMLStreamWriter, M, QName> {
+public interface StAXArtifactProcessor<M> extends ArtifactProcessor<M> {
+
+ /**
+ * Reads a model from an input source. Examples of input sources are: a URI, a
+ * DOM node, an XML reader.
+ * @param source
+ * @return a model representation of the input.
+ */
+ M read(XMLStreamReader inputSource) throws ContributionReadException;
+
+ /**
+ * Writes a model to an ouput source. Examples of output sources are: a URI, a
+ * DOM node, an XML writer.
+ * @param source
+ * @return a model representation of the source.
+ */
+ void write(M model, XMLStreamWriter outputSource) throws ContributionWriteException;
+
+ /**
+ * Returns the type of artifact handled by this artifact processor.
+ * @return the type of artifact handled by this artifact processor
+ */
+ QName getArtifactType();
+
}
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessorRegistry.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessorRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/StAXArtifactProcessorRegistry.java Fri Apr 6 16:42:35 2007
@@ -25,7 +25,6 @@
*
* @version $Rev$ $Date$
*/
-public interface StAXArtifactProcessorRegistry extends
- ArtifactProcessorRegistry<StAXArtifactProcessor<Object>> {
+public interface StAXArtifactProcessorRegistry extends ArtifactProcessorRegistry<StAXArtifactProcessor> {
}
Modified: incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/URLArtifactProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/URLArtifactProcessor.java?view=diff&rev=526321&r1=526320&r2=526321
==============================================================================
--- incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/URLArtifactProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/contribution/src/main/java/org/apache/tuscany/services/spi/contribution/URLArtifactProcessor.java Fri Apr 6 16:42:35 2007
@@ -26,5 +26,28 @@
*
* @version $Rev: 522653 $ $Date: 2007-03-26 15:30:21 -0700 (Mon, 26 Mar 2007) $
*/
-public interface URLArtifactProcessor<M> extends ArtifactProcessor<URL, URL, M, String> {
+public interface URLArtifactProcessor<M> extends ArtifactProcessor<M> {
+
+ /**
+ * Reads a model from an input source. Examples of input sources are: a URI, a
+ * DOM node, an XML reader.
+ * @param source
+ * @return a model representation of the input.
+ */
+ M read(URL inputSource) throws ContributionReadException;
+
+ /**
+ * Writes a model to an ouput source. Examples of output sources are: a URI, a
+ * DOM node, an XML writer.
+ * @param source
+ * @return a model representation of the source.
+ */
+ void write(M model, URL outputSource) throws ContributionWriteException;
+
+ /**
+ * Returns the type of artifact handled by this artifact processor.
+ * @return the type of artifact handled by this artifact processor
+ */
+ String getArtifactType();
+
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org