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/08/12 23:57:14 UTC

svn commit: r431095 - in /incubator/tuscany/java/sca: commands/launcher/src/main/resources/META-INF/tuscany/ core/src/main/java/org/apache/tuscany/core/bootstrap/ core/src/main/java/org/apache/tuscany/core/idl/java/ test/src/main/resources/META-INF/tus...

Author: jboynes
Date: Sat Aug 12 14:57:13 2006
New Revision: 431095

URL: http://svn.apache.org/viewvc?rev=431095&view=rev
Log:
refactor InterfaceJavaLoader to use introspector
refactor launcher and test scdls to start an introspector

Added:
    incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl   (with props)
    incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl   (with props)
Modified:
    incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
    incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/idl/java/InterfaceJavaLoader.java
    incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/loader.scdl
    incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/system.scdl

Added: incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl?rev=431095&view=auto
==============================================================================
--- incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl (added)
+++ incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl Sat Aug 12 14:57:13 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.    
+-->
+<!--
+    Configuration for Java IDL support.
+    
+    $Rev$ $Date$
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+           name="org.apache.tuscany.launcher.InterfaceJava">
+
+    <component name="interfaceJava.introspector">
+        <system:implementation.system class="org.apache.tuscany.core.idl.java.InterfaceJavaIntrospectorImpl"/>
+    </component>
+    <component name="interfaceJava.loader">
+        <system:implementation.system class="org.apache.tuscany.core.idl.java.InterfaceJavaLoader"/>
+    </component>
+</composite>

Propchange: incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/interfaceJava.scdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl?rev=431095&r1=431094&r2=431095&view=diff
==============================================================================
--- incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl (original)
+++ incubator/tuscany/java/sca/commands/launcher/src/main/resources/META-INF/tuscany/system.scdl Sat Aug 12 14:57:13 2006
@@ -80,6 +80,9 @@
     <!-- include implementation processor configuration -->
     <include name="org.apache.tuscany.launcher.Implementation" scdlLocation="implementation.scdl"/>
 
+    <!-- Java interface definition language -->
+    <include name="org.apache.tuscany.launcher.InterfaceJava" scdlLocation="interfaceJava.scdl"/>
+
     <!-- include omposite implementation type -->
     <include name="org.apache.tuscany.launcher.Composite" scdlLocation="composite.scdl"/>
 

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?rev=431095&r1=431094&r2=431095&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Sat Aug 12 14:57:13 2006
@@ -69,6 +69,7 @@
 import org.apache.tuscany.core.loader.ComponentTypeElementLoader;
 import org.apache.tuscany.core.loader.IncludeLoader;
 import org.apache.tuscany.core.idl.java.InterfaceJavaLoader;
+import org.apache.tuscany.core.idl.java.InterfaceJavaIntrospectorImpl;
 import org.apache.tuscany.core.loader.LoaderRegistryImpl;
 import org.apache.tuscany.core.loader.PropertyLoader;
 import org.apache.tuscany.core.loader.ReferenceLoader;
@@ -191,7 +192,7 @@
         registerLoader(loaderRegistry, new ComponentTypeElementLoader(loaderRegistry));
         registerLoader(loaderRegistry, new CompositeLoader(loaderRegistry, null));
         registerLoader(loaderRegistry, new IncludeLoader(loaderRegistry));
-        registerLoader(loaderRegistry, new InterfaceJavaLoader(loaderRegistry));
+        registerLoader(loaderRegistry, new InterfaceJavaLoader(loaderRegistry, new InterfaceJavaIntrospectorImpl()));
         registerLoader(loaderRegistry, new PropertyLoader(loaderRegistry));
         registerLoader(loaderRegistry, new ReferenceLoader(loaderRegistry));
         registerLoader(loaderRegistry, new ServiceLoader(loaderRegistry));

Modified: incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/idl/java/InterfaceJavaLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/idl/java/InterfaceJavaLoader.java?rev=431095&r1=431094&r2=431095&view=diff
==============================================================================
--- incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/idl/java/InterfaceJavaLoader.java (original)
+++ incubator/tuscany/java/sca/core/src/main/java/org/apache/tuscany/core/idl/java/InterfaceJavaLoader.java Sat Aug 12 14:57:13 2006
@@ -25,54 +25,69 @@
 import static org.osoa.sca.Version.XML_NAMESPACE_1_0;
 import org.osoa.sca.annotations.Constructor;
 
+import org.apache.tuscany.core.loader.StAXUtil;
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.LoaderExtension;
+import org.apache.tuscany.spi.idl.InvalidServiceContractException;
+import org.apache.tuscany.spi.loader.InvalidValueException;
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.loader.LoaderUtil;
-import org.apache.tuscany.spi.model.ServiceContract;
-
-import org.apache.tuscany.core.loader.StAXUtil;
+import org.apache.tuscany.spi.model.InteractionScope;
 
 /**
  * Loads a Java interface definition from an XML-based assembly file
  *
  * @version $Rev$ $Date$
  */
-public class InterfaceJavaLoader extends LoaderExtension<ServiceContract> {
+public class InterfaceJavaLoader extends LoaderExtension<JavaServiceContract> {
     public static final QName INTERFACE_JAVA = new QName(XML_NAMESPACE_1_0, "interface.java");
 
-    @Constructor({"registry"})
-    public InterfaceJavaLoader(@Autowire LoaderRegistry registry) {
+    private final InterfaceJavaIntrospector introspector;
+
+    @Constructor({"registry", "introspector"})
+    public InterfaceJavaLoader(@Autowire LoaderRegistry registry,
+                               @Autowire InterfaceJavaIntrospector introspector) {
         super(registry);
+        this.introspector = introspector;
     }
 
     public QName getXMLType() {
         return INTERFACE_JAVA;
     }
 
-    public ServiceContract load(CompositeComponent parent, XMLStreamReader reader, DeploymentContext deploymentContext)
+    public JavaServiceContract load(CompositeComponent parent,
+                                    XMLStreamReader reader,
+                                    DeploymentContext deploymentContext)
         throws XMLStreamException, LoaderException {
 
         assert INTERFACE_JAVA.equals(reader.getName());
-        ServiceContract serviceContract = new JavaServiceContract();
-        serviceContract.setInteractionScope(StAXUtil.interactionScope(reader.getAttributeValue(null, "scope")));
+        InteractionScope interactionScope = StAXUtil.interactionScope(reader.getAttributeValue(null, "scope"));
         String name = reader.getAttributeValue(null, "interface");
         if (name == null) {
             // allow "class" as well as seems to be a common mistake
             name = reader.getAttributeValue(null, "class");
         }
-        serviceContract.setInterfaceName(name);
-        serviceContract.setInterfaceClass(LoaderUtil.loadClass(name, deploymentContext.getClassLoader()));
+        if (name == null) {
+            throw new InvalidValueException("interface name not supplied");
+        }
+        Class<?> interfaceClass = LoaderUtil.loadClass(name, deploymentContext.getClassLoader());
 
         name = reader.getAttributeValue(null, "callbackInterface");
-        serviceContract.setCallbackName(name);
-        if (name != null) {
-            serviceContract.setCallbackClass(LoaderUtil.loadClass(name, deploymentContext.getClassLoader()));
-        }
+        Class<?> callbackClass = (name != null) ? LoaderUtil.loadClass(name, deploymentContext.getClassLoader()) : null;
         LoaderUtil.skipToEndElement(reader);
+
+        JavaServiceContract serviceContract;
+        try {
+            serviceContract = introspector.introspect(interfaceClass, callbackClass);
+        } catch (InvalidServiceContractException e) {
+            LoaderException le = new LoaderException(e);
+            le.setIdentifier(interfaceClass.getName());
+            throw le;
+        }
+        serviceContract.setInteractionScope(interactionScope);
         return serviceContract;
     }
 }

Added: incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl?rev=431095&view=auto
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl (added)
+++ incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl Sat Aug 12 14:57:13 2006
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<!--
+    Configuration for Java IDL support.
+
+    $Rev$ $Date$
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+           name="org.apache.tuscany.test.InterfaceJava">
+
+    <component name="interfaceJava.introspector">
+        <system:implementation.system class="org.apache.tuscany.core.idl.java.InterfaceJavaIntrospectorImpl"/>
+    </component>
+    <component name="interfaceJava.loader">
+        <system:implementation.system class="org.apache.tuscany.core.idl.java.InterfaceJavaLoader"/>
+    </component>
+</composite>

Propchange: incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/interfaceJava.scdl
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/loader.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/loader.scdl?rev=431095&r1=431094&r2=431095&view=diff
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/loader.scdl (original)
+++ incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/loader.scdl Sat Aug 12 14:57:13 2006
@@ -36,9 +36,6 @@
     <component name="elementLoader.include">
         <system:implementation.system class="org.apache.tuscany.core.loader.IncludeLoader"/>
     </component>
-    <component name="elementLoader.interface.java">
-        <system:implementation.system class="org.apache.tuscany.core.idl.java.InterfaceJavaLoader"/>
-    </component>
     <component name="elementLoader.property">
         <system:implementation.system class="org.apache.tuscany.core.loader.PropertyLoader"/>
     </component>

Modified: incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/system.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/system.scdl?rev=431095&r1=431094&r2=431095&view=diff
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/system.scdl (original)
+++ incubator/tuscany/java/sca/test/src/main/resources/META-INF/tuscany/system.scdl Sat Aug 12 14:57:13 2006
@@ -80,6 +80,9 @@
     <!-- include implementation processor configuration -->
     <include name="org.apache.tuscany.test.Implementation" scdlLocation="implementation.scdl"/>
 
+    <!-- Java interface definition language -->
+    <include name="org.apache.tuscany.launcher.InterfaceJava" scdlLocation="interfaceJava.scdl"/>
+
     <!-- include omposite implementation type -->
     <include name="org.apache.tuscany.test.Composite" scdlLocation="composite.scdl"/>
 



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org