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/03 10:34:53 UTC
svn commit: r525085 [1/2] - in /incubator/tuscany/java/sca/scdl4j: ./
assembly-xml/ assembly-xml/src/main/java/org/apache/tuscany/assembly/
assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/
assembly-xml/src/main/java/org/apache/tuscany/assemb...
Author: jsdelfino
Date: Tue Apr 3 01:34:51 2007
New Revision: 525085
URL: http://svn.apache.org/viewvc?view=rev&rev=525085
Log:
Refactored the stax loaders and integrated the other loader modules with them.
Added:
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/test/java/org/apache/tuscany/assembly/
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadAllTestCase.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/ReadTestCase.java (with props)
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/test/java/org/apache/tuscany/assembly/xml/StAXPerfTest.java (with props)
Removed:
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/scdl/
incubator/tuscany/java/sca/scdl4j/assembly-xml/src/test/java/org/apache/tuscany/scdl/
incubator/tuscany/java/sca/scdl4j/idl-java-xml/src/main/java/org/apache/tuscany/idl/java/xml/JavaInterfaceHandler.java
incubator/tuscany/java/sca/scdl4j/idl-java-xml/src/test/java/org/apache/tuscany/idl/java/xml/SAXReadTestCase.java
incubator/tuscany/java/sca/scdl4j/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceHandler.java
incubator/tuscany/java/sca/scdl4j/idl-wsdl-xml/src/test/java/org/apache/tuscany/idl/wsdl/xml/SAXReadTestCase.java
incubator/tuscany/java/sca/scdl4j/impl-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationHandler.java
incubator/tuscany/java/sca/scdl4j/impl-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/SAXReadTestCase.java
Modified:
incubator/tuscany/java/sca/scdl4j/assembly-xml/pom.xml
incubator/tuscany/java/sca/scdl4j/idl-java-xml/src/main/java/org/apache/tuscany/idl/java/xml/JavaConstants.java
incubator/tuscany/java/sca/scdl4j/idl-java-xml/src/main/java/org/apache/tuscany/idl/java/xml/JavaInterfaceLoader.java
incubator/tuscany/java/sca/scdl4j/idl-java-xml/src/test/java/org/apache/tuscany/idl/java/xml/ReadTestCase.java
incubator/tuscany/java/sca/scdl4j/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLConstants.java
incubator/tuscany/java/sca/scdl4j/idl-wsdl-xml/src/main/java/org/apache/tuscany/idl/wsdl/xml/WSDLInterfaceLoader.java
incubator/tuscany/java/sca/scdl4j/idl-wsdl-xml/src/test/java/org/apache/tuscany/idl/wsdl/xml/ReadTestCase.java
incubator/tuscany/java/sca/scdl4j/impl-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationConstants.java
incubator/tuscany/java/sca/scdl4j/impl-java-xml/src/main/java/org/apache/tuscany/implementation/java/xml/JavaImplementationLoader.java
incubator/tuscany/java/sca/scdl4j/impl-java-xml/src/test/java/org/apache/tuscany/implementation/java/xml/ReadTestCase.java
incubator/tuscany/java/sca/scdl4j/pom.xml
Modified: incubator/tuscany/java/sca/scdl4j/assembly-xml/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/pom.xml?view=diff&rev=525085&r1=525084&r2=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/pom.xml (original)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/pom.xml Tue Apr 3 01:34:51 2007
@@ -25,7 +25,7 @@
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>tuscany-assembly-stax</artifactId>
+ <artifactId>tuscany-assembly-xml</artifactId>
<version>0.1-incubating-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Apache Tuscany SCA XML Assembly Support</name>
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,69 @@
+/*
+ * 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 javax.xml.namespace.QName;
+
+public interface Constants {
+ String SCA10_NS = "http://www.osoa.org/xmlns/sca/1.0";
+ String COMPONENT_TYPE = "componentType";
+ QName COMPONENT_TYPE_QNAME = new QName(SCA10_NS, COMPONENT_TYPE);
+ String SERVICE = "service";
+ QName SERVICE_QNAME = new QName(SCA10_NS, SERVICE);
+ String REFERENCE = "reference";
+ QName REFERENCE_QNAME = new QName(SCA10_NS, REFERENCE);
+ String PROPERTY = "property";
+ QName PROPERTY_QNAME = new QName(SCA10_NS, PROPERTY);
+ String CONSTRAINING_TYPE = "constrainingType";
+ QName CONSTRAINING_TYPE_QNAME = new QName(SCA10_NS, CONSTRAINING_TYPE);
+ String COMPOSITE = "composite";
+ QName COMPOSITE_QNAME = new QName(SCA10_NS, COMPOSITE);
+ String INCLUDE = "include";
+ QName INCLUDE_QNAME = new QName(SCA10_NS, INCLUDE);
+ String COMPONENT = "component";
+ QName COMPONENT_QNAME = new QName(SCA10_NS, COMPONENT);
+ String WIRE = "wire";
+ QName WIRE_QNAME = new QName(SCA10_NS, WIRE);
+ String NAME = "name";
+ String TARGET_NAMESPACE = "targetNamespace";
+ String LOCAL = "local";
+ String AUTOWIRE = "autowire";
+ String REQUIRES = "requires";
+ String POLICY_SETS = "policySets";
+ String OPERATION = "operation";
+ QName OPERATION_QNAME = new QName(SCA10_NS, OPERATION);
+ String CALLBACK = "callback";
+ QName CALLBACK_QNAME = new QName(SCA10_NS, CALLBACK);
+ String PROMOTE = "promote";
+ String TARGET = "target";
+ String WIRED_BY_IMPL = "wiredByImpl";
+ String MULTIPLICITY = "multiplicity";
+ String TYPE = "type";
+ String ELEMENT = "element";
+ String MANY = "many";
+ String MUST_SUPPLY = "mustSupply";
+ String SOURCE = "source";
+ String FILE = "file";
+ String URI = "uri";
+ String ZERO_ONE = "0..1";
+ String ZERO_N = "0..n";
+ String ONE_ONE = "1..1";
+ String ONE_N = "1..n";
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Constants.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,33 @@
+/*
+ * 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;
+
+/**
+ * Denotes an invalid configuration artifact
+ *
+ * @version $Rev$ $Date$
+ */
+public class InvalidConfigurationException extends LoaderException {
+ private static final long serialVersionUID = -4312958640212000366L;
+
+ public InvalidConfigurationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/InvalidConfigurationException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,31 @@
+/*
+ * 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 javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * A content handler for SCDL implementation elements.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface Loader<T> {
+ T load(XMLStreamReader reader) throws XMLStreamException;
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/Loader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,80 @@
+/*
+ * 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;
+
+
+/**
+ * Base class for Exceptions raised during the loading process. Loader implementations should throw a subclass of this
+ * to indicate the actual problem.
+ *
+ * @version $Rev$ $Date$
+ */
+public class LoaderException extends RuntimeException {
+ public static final int UNDEFINED = -1;
+ private static final long serialVersionUID = -7459051598906813461L;
+ private String resourceURI;
+ private int line = UNDEFINED;
+ private int column = UNDEFINED;
+
+ public LoaderException(String message) {
+ super(message);
+ }
+
+ public LoaderException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public LoaderException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ * Returns the location of the resource that was being loaded.
+ *
+ * @return the location of the resource that was being loaded
+ */
+ public String getResourceURI() {
+ return resourceURI;
+ }
+
+ /**
+ * Sets the location of the resource that was being loaded.
+ *
+ * @param resourceURI the location of the resource that was being loaded
+ */
+ public void setResourceURI(String resourceURI) {
+ this.resourceURI = resourceURI;
+ }
+
+ public int getLine() {
+ return line;
+ }
+
+ public void setLine(int line) {
+ this.line = line;
+ }
+
+ public int getColumn() {
+ return column;
+ }
+
+ public void setColumn(int column) {
+ this.column = column;
+ }
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,46 @@
+/*
+ * 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 javax.xml.namespace.QName;
+
+/**
+ * A registry for SCDL content handlers.
+ *
+ * @version $Rev$ $Date$
+ */
+public interface LoaderRegistry extends Loader {
+
+ /**
+ * Registers a content handler with an XML element qname.
+ *
+ * @param qname
+ * @param handler
+ */
+ void addLoader(QName element, Loader handler);
+
+ /**
+ * Returns the handler registered with the given XML element qname.
+ *
+ * @param qname
+ * @return
+ */
+ Loader getLoader(QName element);
+
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/LoaderRegistry.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,48 @@
+/*
+ * 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 javax.xml.namespace.QName;
+
+/**
+ * Exception that indicates an element was encountered that could not be handled.
+ *
+ * @version $Rev$ $Date$
+ */
+public class UnrecognizedElementException extends LoaderException {
+ private static final long serialVersionUID = 2549543622209829032L;
+ private final QName element;
+
+ /**
+ * Constructor that indicates which element could not be handled.
+ * @param element the element that could not be handled
+ */
+ public UnrecognizedElementException(QName element) {
+ super("Unrecognized element: " + element.toString());
+ this.element = element;
+ }
+
+ /**
+ * Returns the element that could not be handled.
+ * @return the element that could not be handled.
+ */
+ public QName getElement() {
+ return element;
+ }
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/UnrecognizedElementException.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,272 @@
+/*
+ * 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.impl;
+
+import static javax.xml.XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI;
+import static javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI;
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.assembly.model.AbstractProperty;
+import org.apache.tuscany.assembly.model.AbstractReference;
+import org.apache.tuscany.assembly.model.AssemblyFactory;
+import org.apache.tuscany.assembly.model.ConstrainingType;
+import org.apache.tuscany.assembly.model.Multiplicity;
+import org.apache.tuscany.assembly.model.Property;
+import org.apache.tuscany.assembly.xml.Constants;
+import org.apache.tuscany.policy.model.Intent;
+import org.apache.tuscany.policy.model.IntentAttachPoint;
+import org.apache.tuscany.policy.model.PolicyFactory;
+import org.apache.tuscany.policy.model.PolicySet;
+import org.apache.tuscany.policy.model.PolicySetAttachPoint;
+import org.apache.tuscany.sca.idl.Operation;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * A test handler to test the usability of the assembly model API when loading
+ * SCDL
+ *
+ * @version $Rev$ $Date$
+ */
+abstract class BaseLoader implements Constants {
+
+ private AssemblyFactory factory;
+ private PolicyFactory policyFactory;
+
+ BaseLoader() {
+ }
+
+ BaseLoader(AssemblyFactory factory, PolicyFactory policyFactory) {
+ this.factory = factory;
+ this.policyFactory = policyFactory;
+ }
+
+ protected String getString(XMLStreamReader reader, String name) {
+ return reader.getAttributeValue(null, name);
+ }
+
+ protected QName getQName(XMLStreamReader reader, String name) {
+ String qname = reader.getAttributeValue(null, name);
+ return getQNameValue(reader, qname);
+ }
+
+ /**
+ * Get the value of xsi:type attribute
+ *
+ * @param reader The XML stream reader
+ * @return The QName of the type, if the attribute is not present, null is
+ * returned.
+ */
+ protected QName getXSIType(XMLStreamReader reader) {
+ String qname = reader.getAttributeValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "type");
+ return getQNameValue(reader, qname);
+ }
+
+ protected QName getQNameValue(XMLStreamReader reader, String value) {
+ if (value != null) {
+ int index = value.indexOf(':');
+ String prefix = index == -1 ? "" : value.substring(0, index);
+ String localName = index == -1 ? value : value.substring(index + 1);
+ String ns = reader.getNamespaceContext().getNamespaceURI(prefix);
+ if (ns == null) {
+ ns = "";
+ }
+ return new QName(ns, localName, prefix);
+ } else {
+ return null;
+ }
+ }
+
+ protected boolean getBoolean(XMLStreamReader reader, String name) {
+ String value = reader.getAttributeValue(null, name);
+ return Boolean.valueOf(value);
+ }
+
+ protected List<QName> getQNames(XMLStreamReader reader, String name) {
+ String value = reader.getAttributeValue(null, name);
+ if (value != null) {
+ List<QName> qnames = new ArrayList<QName>();
+ for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
+ qnames.add(getQName(reader, tokens.nextToken()));
+ }
+ return qnames;
+ } else {
+ return Collections.emptyList();
+ }
+ }
+
+ protected void readIntents(IntentAttachPoint attachPoint, XMLStreamReader reader) {
+ readIntents(attachPoint, null, reader);
+ }
+
+ protected void readIntents(IntentAttachPoint attachPoint, Operation operation, XMLStreamReader reader) {
+ String value = reader.getAttributeValue(null, Constants.REQUIRES);
+ if (value != null) {
+ List<Intent> requiredIntents = attachPoint.getRequiredIntents();
+ for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
+ QName qname = getQNameValue(reader, tokens.nextToken());
+ Intent intent = policyFactory.createIntent();
+ intent.setName(qname);
+ if (operation != null) {
+ intent.getOperations().add(operation);
+ }
+ requiredIntents.add(intent);
+ }
+ }
+ }
+
+ protected void readPolicies(PolicySetAttachPoint attachPoint, XMLStreamReader reader) {
+ readPolicies(attachPoint, null, reader);
+ }
+
+ protected void readMultiplicity(AbstractReference reference, XMLStreamReader reader) {
+ String value = reader.getAttributeValue(null, MULTIPLICITY);
+ if (ZERO_ONE.equals(value)) {
+ reference.setMultiplicity(Multiplicity.ZERO_ONE);
+ } else if (ONE_N.equals(value)) {
+ reference.setMultiplicity(Multiplicity.ONE_N);
+ } else if (ZERO_N.equals(value)) {
+ reference.setMultiplicity(Multiplicity.ZERO_N);
+ }
+ }
+
+ protected void readPolicies(PolicySetAttachPoint attachPoint, Operation operation, XMLStreamReader reader) {
+ readIntents(attachPoint, operation, reader);
+
+ String value = reader.getAttributeValue(null, Constants.POLICY_SETS);
+ if (value != null) {
+ List<PolicySet> policySets = attachPoint.getPolicySets();
+ for (StringTokenizer tokens = new StringTokenizer(value); tokens.hasMoreTokens();) {
+ QName qname = getQNameValue(reader, tokens.nextToken());
+ PolicySet policySet = policyFactory.createPolicySet();
+ policySet.setName(qname);
+ if (operation != null) {
+ policySet.getOperations().add(operation);
+ }
+ policySets.add(policySet);
+ }
+ }
+ }
+
+ protected ConstrainingType getConstrainingType(XMLStreamReader reader) {
+ QName constrainingTypeName = getQName(reader, "constrainingType");
+ if (constrainingTypeName != null) {
+ ConstrainingType constrainingType = factory.createConstrainingType();
+ constrainingType.setName(constrainingTypeName);
+ constrainingType.setUnresolved(true);
+ return constrainingType;
+ } else {
+ return null;
+ }
+ }
+
+ protected void readAbstractProperty(AbstractProperty prop, XMLStreamReader reader) throws XMLStreamException {
+ prop.setName(getString(reader, "name"));
+ prop.setMany(getBoolean(reader, "many"));
+ prop.setMustSupply(getBoolean(reader, "mustSupply"));
+ prop.setXSDElement(getQName(reader, "element"));
+ prop.setXSDType(getQName(reader, "type"));
+ Node value = readPropertyValue(reader, prop.getXSDType());
+ prop.setDefaultValue(value);
+ }
+
+ protected void readProperty(Property prop, XMLStreamReader reader) throws XMLStreamException {
+ readAbstractProperty(prop, reader);
+ }
+
+ protected boolean nextChildElement(XMLStreamReader reader) throws XMLStreamException {
+ while (reader.hasNext()) {
+ int event = reader.next();
+ if (event == END_ELEMENT) {
+ return false;
+ }
+ if (event == START_ELEMENT) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Advance the stream to the next END_ELEMENT event skipping any nested
+ * content.
+ *
+ * @param reader the reader to advance
+ * @throws XMLStreamException if there was a problem reading the stream
+ */
+ protected void skipToEndElement(XMLStreamReader reader) throws XMLStreamException {
+ int depth = 0;
+ while (reader.hasNext()) {
+ int event = reader.next();
+ if (event == XMLStreamConstants.START_ELEMENT) {
+ depth++;
+ } else if (event == XMLStreamConstants.END_ELEMENT) {
+ if (depth == 0) {
+ return;
+ }
+ depth--;
+ }
+ }
+ }
+
+ public static Document readPropertyValue(XMLStreamReader reader, QName type)
+ throws XMLStreamException {
+ Document doc = DOMUtil.newDocument();
+
+ // root element has no namespace and local name "value"
+ Element root = doc.createElementNS(null, "value");
+ if (type != null) {
+ Attr xsi = doc.createAttributeNS(XMLNS_ATTRIBUTE_NS_URI, "xmlns:xsi");
+ xsi.setValue(W3C_XML_SCHEMA_INSTANCE_NS_URI);
+ root.setAttributeNodeNS(xsi);
+
+ String prefix = type.getPrefix();
+ if (prefix == null || prefix.length() == 0) {
+ prefix = "ns";
+ }
+
+ DOMUtil.declareNamespace(root, prefix, type.getNamespaceURI());
+
+ Attr xsiType = doc.createAttributeNS(W3C_XML_SCHEMA_INSTANCE_NS_URI, "xsi:type");
+ xsiType.setValue(prefix + ":" + type.getLocalPart());
+ root.setAttributeNodeNS(xsiType);
+ }
+ doc.appendChild(root);
+
+ DOMUtil.loadDOM(reader, root);
+ return doc;
+ }
+
+
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/BaseLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,186 @@
+/*
+ * 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.impl;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.assembly.model.AssemblyFactory;
+import org.apache.tuscany.assembly.model.Binding;
+import org.apache.tuscany.assembly.model.Callback;
+import org.apache.tuscany.assembly.model.ComponentService;
+import org.apache.tuscany.assembly.model.ComponentType;
+import org.apache.tuscany.assembly.model.Contract;
+import org.apache.tuscany.assembly.model.Property;
+import org.apache.tuscany.assembly.model.Reference;
+import org.apache.tuscany.assembly.model.Service;
+import org.apache.tuscany.assembly.xml.Constants;
+import org.apache.tuscany.assembly.xml.Loader;
+import org.apache.tuscany.assembly.xml.LoaderRegistry;
+import org.apache.tuscany.policy.model.PolicyFactory;
+import org.apache.tuscany.sca.idl.Interface;
+import org.apache.tuscany.sca.idl.Operation;
+
+/**
+ * A componentType loader.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ComponentTypeLoader extends BaseLoader implements Loader<ComponentType> {
+ private AssemblyFactory factory;
+ private LoaderRegistry registry;
+
+ /**
+ * Constructs a new componentType loader.
+ *
+ * @param factory
+ * @param policyFactory
+ * @param registry
+ */
+ public ComponentTypeLoader(AssemblyFactory factory, PolicyFactory policyFactory, LoaderRegistry registry) {
+ super(factory, policyFactory);
+ this.factory = factory;
+ this.registry = registry;
+ }
+
+ public ComponentType load(XMLStreamReader reader) throws XMLStreamException {
+ ComponentType componentType = null;
+ Service service = null;
+ Reference reference = null;
+ Contract contract = null;
+ Property property = null;
+ Callback callback = null;
+ QName name = null;
+
+ // Read the componentType document
+ while (reader.hasNext()) {
+ int event = reader.getEventType();
+ switch (event) {
+ case START_ELEMENT:
+ name = reader.getName();
+
+ if (Constants.COMPONENT_TYPE_QNAME.equals(name)) {
+
+ // Read a <componentType>
+ componentType = factory.createComponentType();
+ componentType.setConstrainingType(getConstrainingType(reader));
+ readPolicies(componentType, reader);
+
+ } else if (Constants.SERVICE_QNAME.equals(name)) {
+
+ // Read a <service>
+ service = factory.createService();
+ contract = service;
+ service.setName(getString(reader, Constants.NAME));
+ componentType.getServices().add(service);
+ readPolicies(service, reader);
+
+ } else if (Constants.REFERENCE_QNAME.equals(name)) {
+
+ // Read a <reference>
+ reference = factory.createReference();
+ contract = reference;
+ reference.setName(getString(reader, Constants.NAME));
+ readMultiplicity(reference, reader);
+
+ // TODO support multivalued attribute
+ ComponentService target = factory.createComponentService();
+ target.setUnresolved(true);
+ target.setName(getString(reader, Constants.TARGET));
+ reference.getTargets().add(target);
+
+ componentType.getReferences().add(reference);
+ readPolicies(reference, reader);
+
+ } else if (Constants.PROPERTY_QNAME.equals(name)) {
+
+ // Read a <property>
+ property = factory.createProperty();
+ readProperty(property, reader);
+ componentType.getProperties().add(property);
+ readPolicies(property, reader);
+
+ } else if (Constants.CALLBACK_QNAME.equals(name)) {
+
+ // Read a <callback>
+ callback = factory.createCallback();
+ contract.setCallback(callback);
+ readPolicies(callback, reader);
+
+ } else if (OPERATION.equals(name)) {
+
+ // Read an <operation>
+ Operation operation = factory.createOperation();
+ operation.setName(getString(reader, NAME));
+ operation.setUnresolved(true);
+ if (callback != null) {
+ readPolicies(callback, operation, reader);
+ } else {
+ readPolicies(contract, operation, reader);
+ }
+ } else {
+
+ // Read an extension element
+ Object extension = registry.load(reader);
+ if (extension != null) {
+ if (extension instanceof Interface) {
+
+ // <service><interface> and <reference><interface>
+ contract.setInterface((Interface)extension);
+
+ } else if (extension instanceof Binding) {
+
+ // <service><binding> and <reference><binding>
+ contract.getBindings().add((Binding)extension);
+ }
+ }
+ }
+ break;
+
+ case END_ELEMENT:
+ name = reader.getName();
+
+ // Clear current state when reading reaching end element
+ if (SERVICE_QNAME.equals(name)) {
+ service = null;
+ contract = null;
+ } else if (REFERENCE_QNAME.equals(name)) {
+ reference = null;
+ contract = null;
+ } else if (PROPERTY_QNAME.equals(name)) {
+ property = null;
+ } else if (CALLBACK_QNAME.equals(name)) {
+ callback = null;
+ }
+ break;
+ }
+
+ // Read the next element
+ if (reader.hasNext()) {
+ reader.next();
+ }
+ }
+ return componentType;
+ }
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ComponentTypeLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,301 @@
+/*
+ * 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.impl;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.assembly.model.AssemblyFactory;
+import org.apache.tuscany.assembly.model.Binding;
+import org.apache.tuscany.assembly.model.Callback;
+import org.apache.tuscany.assembly.model.Component;
+import org.apache.tuscany.assembly.model.ComponentProperty;
+import org.apache.tuscany.assembly.model.ComponentReference;
+import org.apache.tuscany.assembly.model.ComponentService;
+import org.apache.tuscany.assembly.model.Composite;
+import org.apache.tuscany.assembly.model.CompositeReference;
+import org.apache.tuscany.assembly.model.CompositeService;
+import org.apache.tuscany.assembly.model.Contract;
+import org.apache.tuscany.assembly.model.Implementation;
+import org.apache.tuscany.assembly.model.Property;
+import org.apache.tuscany.assembly.model.Wire;
+import org.apache.tuscany.assembly.xml.Loader;
+import org.apache.tuscany.assembly.xml.LoaderRegistry;
+import org.apache.tuscany.policy.model.PolicyFactory;
+import org.apache.tuscany.sca.idl.Interface;
+import org.apache.tuscany.sca.idl.Operation;
+
+/**
+ * A composite content handler.
+ *
+ * @version $Rev$ $Date$
+ */
+public class CompositeLoader extends BaseLoader implements Loader<Composite> {
+ private AssemblyFactory factory;
+ private LoaderRegistry registry;
+
+ /**
+ * Construct a new composite loader
+ *
+ * @param assemblyFactory
+ * @param policyFactory
+ * @param registry
+ */
+ public CompositeLoader(AssemblyFactory factory, PolicyFactory policyFactory, LoaderRegistry registry) {
+ super(factory, policyFactory);
+ this.factory = factory;
+ this.registry = registry;
+ }
+
+ public Composite load(XMLStreamReader reader) throws XMLStreamException {
+ Composite composite = null;
+ Composite include = null;
+ Component component = null;
+ Property property = null;
+ ComponentService componentService = null;
+ ComponentReference componentReference = null;
+ ComponentProperty componentProperty = null;
+ CompositeService compositeService = null;
+ CompositeReference compositeReference = null;
+ Contract contract = null;
+ Wire wire = null;
+ Callback callback = null;
+ QName name = null;
+
+ // Read the composite document
+ while (reader.hasNext()) {
+ int event = reader.getEventType();
+ switch (event) {
+ case START_ELEMENT:
+ name = reader.getName();
+
+ if (COMPOSITE_QNAME.equals(name)) {
+
+ // Read a <composite>
+ composite = factory.createComposite();
+ composite.setName(getQName(reader, NAME));
+ composite.setAutowire(getBoolean(reader, AUTOWIRE));
+ composite.setLocal(getBoolean(reader, LOCAL));
+ composite.setConstrainingType(getConstrainingType(reader));
+ readPolicies(composite, reader);
+
+ } else if (INCLUDE_QNAME.equals(name)) {
+
+ // Read an <include>
+ include = factory.createComposite();
+ include.setUnresolved(true);
+ composite.getIncludes().add(include);
+
+ } else if (SERVICE_QNAME.equals(name)) {
+ if (component != null) {
+
+ // Read a <component><service>
+ componentService = factory.createComponentService();
+ contract = componentService;
+ componentService.setName(getString(reader, NAME));
+ component.getServices().add(componentService);
+ readPolicies(contract, reader);
+ } else {
+
+ // Read a <composite><service>
+ compositeService = factory.createCompositeService();
+ contract = compositeService;
+ compositeService.setName(getString(reader, NAME));
+
+ ComponentService promoted = factory.createComponentService();
+ promoted.setUnresolved(true);
+ promoted.setName(getString(reader, PROMOTE));
+ compositeService.setPromotedService(promoted);
+
+ composite.getServices().add(compositeService);
+ readPolicies(contract, reader);
+ }
+
+ } else if (REFERENCE_QNAME.equals(name)) {
+ if (component != null) {
+
+ // Read a <component><reference>
+ componentReference = factory.createComponentReference();
+ contract = componentReference;
+ componentReference.setName(getString(reader, NAME));
+ readMultiplicity(componentReference, reader);
+
+ // TODO support multivalued attribute
+ ComponentService target = factory.createComponentService();
+ target.setUnresolved(true);
+ target.setName(getString(reader, TARGET));
+ componentReference.getTargets().add(target);
+
+ component.getReferences().add(componentReference);
+ readPolicies(contract, reader);
+ } else {
+
+ // Read a <composite><reference>
+ compositeReference = factory.createCompositeReference();
+ contract = compositeReference;
+ compositeReference.setName(getString(reader, NAME));
+ readMultiplicity(compositeReference, reader);
+
+ // TODO support multivalued attribute
+ ComponentReference promoted = factory.createComponentReference();
+ promoted.setUnresolved(true);
+ promoted.setName(getString(reader, PROMOTE));
+ compositeReference.getPromotedReferences().add(promoted);
+
+ composite.getReferences().add(compositeReference);
+ readPolicies(contract, reader);
+ }
+
+ } else if (PROPERTY_QNAME.equals(name)) {
+ if (component != null) {
+
+ // Read a <component><property>
+ componentProperty = factory.createComponentProperty();
+ property = componentProperty;
+ readPolicies(property, reader);
+ readProperty(componentProperty, reader);
+ component.getProperties().add(componentProperty);
+ } else {
+
+ // Read a <composite><property>
+ property = factory.createProperty();
+ readPolicies(property, reader);
+ readProperty(property, reader);
+ composite.getProperties().add(property);
+ }
+
+ } else if (COMPONENT_QNAME.equals(name)) {
+
+ // Read a <component>
+ component = factory.createComponent();
+ component.setName(getString(reader, NAME));
+ component.setConstrainingType(getConstrainingType(reader));
+ composite.getComponents().add(component);
+ readPolicies(component, reader);
+
+ } else if (WIRE_QNAME.equals(name)) {
+
+ // Read a <wire>
+ wire = factory.createWire();
+ ComponentReference source = factory.createComponentReference();
+ source.setUnresolved(true);
+ source.setName(getString(reader, SOURCE));
+ wire.setSource(source);
+
+ ComponentService target = factory.createComponentService();
+ target.setUnresolved(true);
+ target.setName(getString(reader, TARGET));
+ wire.setTarget(target);
+
+ composite.getWires().add(wire);
+ readPolicies(wire, reader);
+
+ } else if (CALLBACK_QNAME.equals(name)) {
+
+ // Read a <callback>
+ callback = factory.createCallback();
+ contract.setCallback(callback);
+ readPolicies(callback, reader);
+
+ } else if (OPERATION.equals(name)) {
+
+ // Read an <operation>
+ Operation operation = factory.createOperation();
+ operation.setName(getString(reader, NAME));
+ operation.setUnresolved(true);
+ if (callback != null) {
+ readPolicies(callback, operation, reader);
+ } else {
+ readPolicies(contract, operation, reader);
+ }
+ } else {
+
+ // Read an extension element
+ Object extension = registry.load(reader);
+ if (extension != null) {
+ if (extension instanceof Interface) {
+
+ // <service><interface> and
+ // <reference><interface>
+ contract.setInterface((Interface)extension);
+
+ } else if (extension instanceof Binding) {
+ // <service><binding> and <reference><binding>
+ contract.getBindings().add((Binding)extension);
+
+ } else if (extension instanceof Implementation) {
+
+ // <component><implementation>
+ component.setImplementation((Implementation)extension);
+ }
+ }
+ }
+ break;
+
+ case XMLStreamConstants.CHARACTERS:
+
+ // Read an <include>qname</include>
+ if (include != null && INCLUDE_QNAME.equals(name)) {
+ include.setName(getQNameValue(reader, reader.getText().trim()));
+ }
+
+ break;
+
+ case END_ELEMENT:
+ name = reader.getName();
+
+ // Clear current state when reading reaching end element
+ if (SERVICE_QNAME.equals(name)) {
+ componentService = null;
+ compositeService = null;
+ contract = null;
+ } else if (INCLUDE_QNAME.equals(name)) {
+ include = null;
+ } else if (REFERENCE_QNAME.equals(name)) {
+ componentReference = null;
+ compositeReference = null;
+ contract = null;
+ } else if (PROPERTY_QNAME.equals(name)) {
+ componentProperty = null;
+ property = null;
+ } else if (COMPONENT_QNAME.equals(name)) {
+ component = null;
+ } else if (WIRE_QNAME.equals(name)) {
+ wire = null;
+ } else if (CALLBACK_QNAME.equals(name)) {
+ callback = null;
+ }
+ break;
+ }
+
+ // Read the next element
+ if (reader.hasNext()) {
+ reader.next();
+ }
+ }
+ return composite;
+ }
+
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/CompositeLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,154 @@
+/*
+ * 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.impl;
+
+import static javax.xml.stream.XMLStreamConstants.END_ELEMENT;
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.assembly.model.AbstractContract;
+import org.apache.tuscany.assembly.model.AbstractProperty;
+import org.apache.tuscany.assembly.model.AbstractReference;
+import org.apache.tuscany.assembly.model.AbstractService;
+import org.apache.tuscany.assembly.model.AssemblyFactory;
+import org.apache.tuscany.assembly.model.ConstrainingType;
+import org.apache.tuscany.assembly.xml.Constants;
+import org.apache.tuscany.assembly.xml.Loader;
+import org.apache.tuscany.assembly.xml.LoaderRegistry;
+import org.apache.tuscany.policy.model.PolicyFactory;
+import org.apache.tuscany.sca.idl.Interface;
+import org.apache.tuscany.sca.idl.Operation;
+
+/**
+ * A contrainingType content handler.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ConstrainingTypeLoader extends BaseLoader implements Loader<ConstrainingType> {
+ private AssemblyFactory factory;
+ private LoaderRegistry registry;
+
+ /**
+ * Construct a new constrainingType loader.
+ * @param factory
+ * @param policyFactory
+ * @param registry
+ */
+ public ConstrainingTypeLoader(AssemblyFactory factory, PolicyFactory policyFactory, LoaderRegistry registry) {
+ super(factory, policyFactory);
+ this.factory = factory;
+ this.registry = registry;
+ }
+
+ public ConstrainingType load(XMLStreamReader reader) throws XMLStreamException {
+ ConstrainingType constrainingType = null;
+ AbstractService abstractService = null;
+ AbstractReference abstractReference = null;
+ AbstractProperty abstractProperty = null;
+ AbstractContract abstractContract = null;
+ QName name = null;
+
+ // Read the constrainingType document
+ while (reader.hasNext()) {
+ int event = reader.getEventType();
+ switch (event) {
+
+ case START_ELEMENT:
+ name = reader.getName();
+
+ // Read a <constrainingType>
+ if (Constants.CONSTRAINING_TYPE_QNAME.equals(name)) {
+ constrainingType = factory.createConstrainingType();
+ constrainingType.setName(getQName(reader, Constants.NAME));
+ readIntents(constrainingType, reader);
+
+ } else if (Constants.SERVICE_QNAME.equals(name)) {
+
+ // Read a <service>
+ abstractService = factory.createAbstractService();
+ abstractContract = abstractService;
+ abstractService.setName(getString(reader, Constants.NAME));
+ constrainingType.getServices().add(abstractService);
+ readIntents(abstractService, reader);
+
+ } else if (Constants.REFERENCE_QNAME.equals(name)) {
+
+ // Read a <reference>
+ abstractReference = factory.createAbstractReference();
+ abstractContract = abstractReference;
+ abstractReference.setName(getString(reader, Constants.NAME));
+ readMultiplicity(abstractReference, reader);
+ constrainingType.getReferences().add(abstractReference);
+ readIntents(abstractReference, reader);
+
+ } else if (Constants.PROPERTY_QNAME.equals(name)) {
+
+ // Read a <property>
+ abstractProperty = factory.createAbstractProperty();
+ readAbstractProperty(abstractProperty, reader);
+ constrainingType.getProperties().add(abstractProperty);
+ readIntents(abstractProperty, reader);
+
+ } else if (OPERATION.equals(name)) {
+
+ // Read an <operation>
+ Operation operation = factory.createOperation();
+ operation.setName(getString(reader, NAME));
+ operation.setUnresolved(true);
+ readIntents(abstractContract, operation, reader);
+
+ } else {
+
+ // Read an extension element
+ Object extension = registry.load(reader);
+ if (extension instanceof Interface) {
+ // <service><interface> and <reference><interface>
+ abstractContract.setInterface((Interface)extension);
+ }
+ }
+ break;
+
+ case END_ELEMENT:
+ name = reader.getName();
+
+ // Clear current state when reading reaching end element
+ if (SERVICE_QNAME.equals(name)) {
+ abstractService = null;
+ abstractContract = null;
+ } else if (REFERENCE_QNAME.equals(name)) {
+ abstractReference = null;
+ abstractContract = null;
+ } else if (PROPERTY_QNAME.equals(name)) {
+ abstractProperty = null;
+ }
+ break;
+ }
+ if (reader.hasNext()) {
+ reader.next();
+ }
+ }
+ return constrainingType;
+
+ }
+
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/ConstrainingTypeLoader.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,169 @@
+/*
+ * 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.impl;
+
+import static javax.xml.XMLConstants.XMLNS_ATTRIBUTE_NS_URI;
+
+import javax.xml.namespace.QName;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.assembly.xml.LoaderException;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public final class DOMUtil {
+ private static final DocumentBuilderFactory FACTORY = DocumentBuilderFactory.newInstance();
+ static {
+ FACTORY.setNamespaceAware(true);
+ }
+
+ private DOMUtil() {
+ }
+
+ public static Document newDocument() {
+ try {
+ return newDocumentBuilder().newDocument();
+ } catch (ParserConfigurationException e) {
+ throw new LoaderException(e);
+ }
+ }
+
+ public static DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
+ return FACTORY.newDocumentBuilder();
+ }
+
+ public static QName getQName(Node node) {
+ String ns = node.getNamespaceURI();
+ if (ns == null) {
+ ns = "";
+ }
+ // node.getLocalName() will return null if it is created using DOM Level
+ // 1 method
+ // such as createElement()
+ return new QName(ns, node.getNodeName());
+ }
+
+ public static Element createElement(Document document, QName name) {
+ String prefix = name.getPrefix();
+ String qname = (prefix != null && prefix.length() > 0) ? prefix + ":" + name.getLocalPart() : name
+ .getLocalPart();
+ return document.createElementNS(name.getNamespaceURI(), qname);
+ }
+
+ public static void declareNamespace(Element element, String prefix, String ns) {
+ String qname = null;
+ if ("".equals(prefix)) {
+ qname = "xmlns";
+ } else {
+ qname = "xmlns:" + prefix;
+ }
+ Node node = element;
+ boolean declared = false;
+ while (node != null && node.getNodeType() == Node.ELEMENT_NODE) {
+ NamedNodeMap attrs = node.getAttributes();
+ if (attrs == null) {
+ break;
+ }
+ Node attr = attrs.getNamedItem(qname);
+ if (attr != null) {
+ declared = ns.equals(attr.getNodeValue());
+ break;
+ }
+ node = node.getParentNode();
+ }
+ if (!declared) {
+ Attr attr = element.getOwnerDocument().createAttributeNS(XMLNS_ATTRIBUTE_NS_URI, qname);
+ attr.setValue(ns);
+ element.setAttributeNodeNS(attr);
+ }
+ }
+
+ /**
+ * Load a property value specification from an StAX stream into a DOM
+ * Document. Only elements, text and attributes are processed; all comments
+ * and other whitespace are ignored.
+ *
+ * @param reader the stream to read from
+ * @param root the DOM node to load
+ * @throws javax.xml.stream.XMLStreamException
+ */
+ public static void loadDOM(XMLStreamReader reader, Node root) throws XMLStreamException {
+ Document document = root.getOwnerDocument();
+ Node current = root;
+ while (true) {
+ switch (reader.next()) {
+ case XMLStreamConstants.START_ELEMENT:
+ QName name = reader.getName();
+ Element child = createElement(document, name);
+
+ // push the new element and make it the current one
+ current.appendChild(child);
+ current = child;
+
+ declareNamespace(child, name.getPrefix(), name.getNamespaceURI());
+
+ int count = reader.getNamespaceCount();
+ for (int i = 0; i < count; i++) {
+ String prefix = reader.getNamespacePrefix(i);
+ String ns = reader.getNamespaceURI(i);
+ declareNamespace(child, prefix, ns);
+ }
+
+ // add the attributes for this element
+ count = reader.getAttributeCount();
+ for (int i = 0; i < count; i++) {
+ String ns = reader.getAttributeNamespace(i);
+ String prefix = reader.getAttributePrefix(i);
+ String localPart = reader.getAttributeLocalName(i);
+ String value = reader.getAttributeValue(i);
+ child.setAttributeNS(ns, localPart, value);
+ declareNamespace(child, prefix, ns);
+ }
+
+ break;
+ case XMLStreamConstants.CDATA:
+ current.appendChild(document.createCDATASection(reader.getText()));
+ break;
+ case XMLStreamConstants.CHARACTERS:
+ current.appendChild(document.createTextNode(reader.getText()));
+ break;
+ case XMLStreamConstants.END_ELEMENT:
+ // if we are back at the root then we are done
+ if (current == root) {
+ return;
+ }
+
+ // pop the element off the stack
+ current = current.getParentNode();
+ }
+ }
+ }
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/DOMUtil.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java?view=auto&rev=525085
==============================================================================
--- incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java (added)
+++ incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java Tue Apr 3 01:34:51 2007
@@ -0,0 +1,157 @@
+/*
+ * 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.impl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.Location;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.assembly.model.AssemblyFactory;
+import org.apache.tuscany.assembly.model.impl.DefaultAssemblyFactory;
+import org.apache.tuscany.assembly.xml.Constants;
+import org.apache.tuscany.assembly.xml.InvalidConfigurationException;
+import org.apache.tuscany.assembly.xml.Loader;
+import org.apache.tuscany.assembly.xml.LoaderException;
+import org.apache.tuscany.assembly.xml.LoaderRegistry;
+import org.apache.tuscany.assembly.xml.UnrecognizedElementException;
+import org.apache.tuscany.policy.model.PolicyFactory;
+import org.apache.tuscany.policy.model.impl.DefaultPolicyFactory;
+
+/**
+ * The default implementation of a loader registry
+ *
+ * @version $Rev$ $Date$
+ */
+public class LoaderRegistryImpl implements LoaderRegistry {
+ private final Map<QName, Loader> loaders = new HashMap<QName, Loader>();
+
+ private AssemblyFactory assemblyFactory;
+ private PolicyFactory policyFactory;
+ private XMLInputFactory factory;
+
+ /**
+ * Constructs a new loader registry.
+ * @param assemblyFactory
+ * @param policyFactory
+ * @param factory
+ */
+ public LoaderRegistryImpl(AssemblyFactory assemblyFactory, PolicyFactory policyFactory, XMLInputFactory factory) {
+ super();
+ this.assemblyFactory = assemblyFactory;
+ this.policyFactory = policyFactory;
+ this.factory = factory;
+ init();
+ }
+
+ public LoaderRegistryImpl() {
+ this(new DefaultAssemblyFactory(), new DefaultPolicyFactory(), XMLInputFactory.newInstance());
+ }
+
+ public final void init() {
+ addLoader(Constants.COMPOSITE_QNAME, new CompositeLoader(assemblyFactory, policyFactory, this));
+ addLoader(Constants.COMPONENT_TYPE_QNAME, new ComponentTypeLoader(assemblyFactory, policyFactory, this));
+ addLoader(Constants.CONSTRAINING_TYPE_QNAME, new ConstrainingTypeLoader(assemblyFactory, policyFactory, this));
+ }
+
+ public Object load(XMLStreamReader reader) throws XMLStreamException {
+ QName name = reader.getName();
+ Loader loader = loaders.get(name);
+ if (loader == null) {
+ return null;
+ }
+ return loader.load(reader);
+ }
+
+ public <MO> MO load(URL url, Class<MO> type) throws LoaderException {
+ try {
+ XMLStreamReader reader;
+ InputStream is;
+ is = url.openStream();
+ try {
+ reader = factory.createXMLStreamReader(is);
+ try {
+ reader.nextTag();
+ QName name = reader.getName();
+ Object mo = load(reader);
+ if (type.isInstance(mo)) {
+ return type.cast(mo);
+ } else {
+ UnrecognizedElementException e = new UnrecognizedElementException(name);
+ e.setResourceURI(url.toString());
+ throw e;
+ }
+ } catch (LoaderException e) {
+ Location location = reader.getLocation();
+ e.setLine(location.getLineNumber());
+ e.setColumn(location.getColumnNumber());
+ throw e;
+ } finally {
+ try {
+ reader.close();
+ } catch (XMLStreamException e) {
+ // ignore
+ }
+ }
+ } finally {
+ try {
+ is.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ } catch (IOException e) {
+ LoaderException sfe = new LoaderException(e);
+ sfe.setResourceURI(url.toString());
+ throw sfe;
+ } catch (XMLStreamException e) {
+ throw new InvalidConfigurationException("Invalid or missing resource: " + url.toString(), e);
+ }
+ }
+
+ public final void addLoader(QName element, Loader loader) {
+ loaders.put(element, loader);
+ }
+
+ public Loader getLoader(QName element) {
+ return loaders.get(element);
+ }
+
+ /**
+ * @return the assemblyFactory
+ */
+ public AssemblyFactory getAssemblyFactory() {
+ return assemblyFactory;
+ }
+
+ /**
+ * @return the policyFactory
+ */
+ public PolicyFactory getPolicyFactory() {
+ return policyFactory;
+ }
+
+}
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/scdl4j/assembly-xml/src/main/java/org/apache/tuscany/assembly/xml/impl/LoaderRegistryImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org