You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2006/05/25 22:05:20 UTC

svn commit: r409453 - in /incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java: JavaComponentTypeLoader.java JavaImplementationLoader.java

Author: jboynes
Date: Thu May 25 13:05:19 2006
New Revision: 409453

URL: http://svn.apache.org/viewvc?rev=409453&view=rev
Log:
apply patch from Raymond Feng for skeleton loaders

Added:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.java   (with props)

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java?rev=409453&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java Thu May 25 13:05:19 2006
@@ -0,0 +1,112 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed 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.container.java;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.core.loader.AssemblyConstants;
+import org.apache.tuscany.core.model.PojoComponentType;
+import org.apache.tuscany.core.util.JavaIntrospectionHelper;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.ComponentTypeLoaderExtension;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.loader.UnrecognizedElementException;
+import org.apache.tuscany.spi.model.ComponentType;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class JavaComponentTypeLoader extends ComponentTypeLoaderExtension<JavaImplementation> {
+
+    public JavaComponentTypeLoader() {
+        super();
+    }
+
+    public void load(JavaImplementation implementation, DeploymentContext deploymentContext) {
+        Class<?> implClass = implementation.getImplementationClass();
+        URL resource = implClass.getResource(JavaIntrospectionHelper.getBaseName(implClass) + ".componentType");
+        try {
+            if (resource == null) {
+                loadByIntrospection(implementation);
+            } else {
+                loadFromSidefile(implementation, resource, deploymentContext);
+            }
+        } catch (LoaderException e) {
+            // throw new TuscanyRuntimeException(e);
+        }
+    }
+
+    protected void loadByIntrospection(JavaImplementation implementation) {
+        Class<?> implClass = implementation.getImplementationClass();
+        PojoComponentType componentType = null; // FIXME: introspector.introspect(implClass);
+        implementation.setComponentType(componentType);
+    }
+
+    protected ComponentType loadFromSidefile(JavaImplementation implementation, URL sidefile, DeploymentContext deploymentContext)
+            throws LoaderException {
+        try {
+            XMLStreamReader reader;
+            InputStream is;
+            is = sidefile.openStream();
+            try {
+                XMLInputFactory factory = deploymentContext.getXmlFactory();
+                reader = factory.createXMLStreamReader(is);
+                try {
+                    reader.nextTag();
+                    if (!AssemblyConstants.COMPONENT_TYPE.equals(reader.getName())) {
+                        UnrecognizedElementException e = new UnrecognizedElementException(reader.getName());
+                        e.setResourceURI(sidefile.toString());
+                        throw e;
+                    }
+                    return (ComponentType) loaderRegistry.load(reader, deploymentContext);
+                } finally {
+                    try {
+                        reader.close();
+                    } catch (XMLStreamException e) {
+                        // ignore
+                    }
+                }
+            } finally {
+                try {
+                    is.close();
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        } catch (IOException e) {
+            LoaderException sfe = new LoaderException(e.getMessage());
+            sfe.setResourceURI(sidefile.toString());
+            throw sfe;
+        } catch (XMLStreamException e) {
+            LoaderException sfe = new LoaderException(e.getMessage());
+            sfe.setResourceURI(sidefile.toString());
+            throw sfe;
+        }
+    }
+
+    @Override
+    protected Class<JavaImplementation> getTypeClass() {
+        return JavaImplementation.class;
+    }
+
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaComponentTypeLoader.java
------------------------------------------------------------------------------
    svn:keywords = Rev,Date

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.java?rev=409453&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.java Thu May 25 13:05:19 2006
@@ -0,0 +1,33 @@
+package org.apache.tuscany.container.java;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.tuscany.core.loader.AssemblyConstants;
+import org.apache.tuscany.core.loader.StAXUtil;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.apache.tuscany.spi.extension.LoaderExtension;
+import org.apache.tuscany.spi.loader.LoaderException;
+import org.apache.tuscany.spi.model.ModelObject;
+
+public class JavaImplementationLoader extends LoaderExtension {
+    public static final QName IMPLEMENTATION_JAVA = new QName(AssemblyConstants.SCA_NAMESPACE, "implementation.java");
+    
+    @Override
+    protected QName getXMLType() {
+        return IMPLEMENTATION_JAVA;
+    }
+
+    public ModelObject load(XMLStreamReader reader, DeploymentContext deploymentContext) throws XMLStreamException, LoaderException {
+        assert IMPLEMENTATION_JAVA.equals(reader.getName());
+        JavaImplementation implementation = new JavaImplementation();
+        String implClass = reader.getAttributeValue(null, "class");
+        Class<?> implementationClass = StAXUtil.loadClass(implClass, deploymentContext.getClassLoader());
+        implementation.setImplementationClass(implementationClass);
+        registry.loadComponentType(implementation, deploymentContext);
+        StAXUtil.skipToEndElement(reader);
+        return implementation;
+    }
+
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaImplementationLoader.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