You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2007/03/29 22:20:53 UTC

svn commit: r523826 - in /incubator/tuscany/java/sca: kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/ runtime/embedded/ runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/ runtime/embedded/src/test/java/calculator/ runtime/...

Author: rfeng
Date: Thu Mar 29 13:20:52 2007
New Revision: 523826

URL: http://svn.apache.org/viewvc?view=rev&rev=523826
Log:
Add an embedded dummy runtime

Added:
    incubator/tuscany/java/sca/runtime/embedded/
      - copied from r521957, incubator/tuscany/sandbox/rfeng/runtime/embedded/
    incubator/tuscany/java/sca/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java
      - copied, changed from r523114, incubator/tuscany/sandbox/rfeng/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java
    incubator/tuscany/java/sca/runtime/embedded/src/test/java/calculator/CalculatorClient.java
      - copied unchanged from r523114, incubator/tuscany/sandbox/rfeng/runtime/embedded/src/test/java/calculator/CalculatorClient.java
    incubator/tuscany/java/sca/runtime/embedded/src/test/java/org/apache/tuscany/api/SCARuntimeTestCase.java
      - copied unchanged from r523114, incubator/tuscany/sandbox/rfeng/runtime/embedded/src/test/java/org/apache/tuscany/api/SCARuntimeTestCase.java
    incubator/tuscany/java/sca/runtime/embedded/src/test/resources/system.composite
      - copied, changed from r523114, incubator/tuscany/sandbox/rfeng/runtime/embedded/src/test/resources/system.composite
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java?view=diff&rev=523826&r1=523825&r2=523826
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java Thu Mar 29 13:20:52 2007
@@ -51,6 +51,7 @@
 import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
 import org.apache.tuscany.core.loader.ComponentLoader;
 import org.apache.tuscany.core.loader.ComponentTypeElementLoader;
+import org.apache.tuscany.core.loader.DependencyLoader;
 import org.apache.tuscany.core.loader.IncludeLoader;
 import org.apache.tuscany.core.loader.LoaderRegistryImpl;
 import org.apache.tuscany.core.loader.PropertyLoader;
@@ -58,6 +59,7 @@
 import org.apache.tuscany.core.loader.ServiceLoader;
 import org.apache.tuscany.core.property.PropertyObjectFactoryImpl;
 import org.apache.tuscany.core.resolver.AutowireResolver;
+import org.apache.tuscany.core.services.artifact.LocalMavenRepository;
 import org.apache.tuscany.host.MonitorFactory;
 import org.apache.tuscany.spi.builder.Builder;
 import org.apache.tuscany.spi.builder.Connector;
@@ -175,7 +177,7 @@
         // register element loaders
         registerLoader(loaderRegistry, new ComponentLoader(loaderRegistry, propertyFactory));
         registerLoader(loaderRegistry, new ComponentTypeElementLoader(loaderRegistry));
-        registerLoader(loaderRegistry, new CompositeLoader(loaderRegistry, null));
+        registerLoader(loaderRegistry, new CompositeLoader(loaderRegistry, new LocalMavenRepository(".m2/repository")));
         registerLoader(loaderRegistry, new IncludeLoader(loaderRegistry));
         JavaInterfaceProcessorRegistryImpl processorRegistry = new JavaInterfaceProcessorRegistryImpl();
         registerLoader(loaderRegistry, new InterfaceJavaLoader(loaderRegistry, processorRegistry));
@@ -184,6 +186,7 @@
         registerLoader(loaderRegistry, new ServiceLoader(loaderRegistry));
         registerLoader(loaderRegistry, new SystemImplementationLoader(loaderRegistry));
         registerLoader(loaderRegistry, new LocalBindingLoader(loaderRegistry));
+        registerLoader(loaderRegistry, new DependencyLoader(loaderRegistry));
         return loaderRegistry;
     }
 

Copied: incubator/tuscany/java/sca/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java (from r523114, incubator/tuscany/sandbox/rfeng/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java?view=diff&rev=523826&p1=incubator/tuscany/sandbox/rfeng/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java&r1=523114&p2=incubator/tuscany/java/sca/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java&r2=523826
==============================================================================
--- incubator/tuscany/sandbox/rfeng/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java (original)
+++ incubator/tuscany/java/sca/runtime/embedded/src/main/java/org/apache/tuscany/runtime/embedded/SimpleRuntimeImpl.java Thu Mar 29 13:20:52 2007
@@ -20,9 +20,18 @@
 
 import static org.apache.tuscany.runtime.embedded.SimpleRuntimeInfo.DEFAULT_COMPOSITE;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.net.URI;
 import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
 import org.apache.tuscany.api.annotation.LogLevel;
 import org.apache.tuscany.core.component.SimpleWorkContext;
@@ -73,8 +82,9 @@
         SystemCompositeImplementation impl = new SystemCompositeImplementation();
         impl.setScdlLocation(extensionSCDL);
         impl.setClassLoader(systemClassLoader);
-        ComponentDefinition<SystemCompositeImplementation> definition 
-            = new ComponentDefinition<SystemCompositeImplementation>(name, impl);
+        ComponentDefinition<SystemCompositeImplementation> definition = new ComponentDefinition<SystemCompositeImplementation>(
+                                                                                                                               name,
+                                                                                                                               impl);
 
         Collection<Component> components = getDeployer().deploy(parent, definition);
         for (Component component : components) {
@@ -83,27 +93,76 @@
         return components;
     }
 
+    /**
+     * Create a facade composite to include all the system and extension SCDLs
+     * @param urls
+     * @return
+     * @throws IOException
+     */
+    private URL merge(List<URL> urls) throws IOException {
+        final StringWriter sw = new StringWriter();
+        final PrintWriter pw = new PrintWriter(sw);
+        pw.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
+        pw.print("<composite xmlns=\"http://www.osoa.org/xmlns/sca/1.0\"");
+        pw.println(" name=\"org.apache.tuscany.System\" autowire=\"true\">");
+        int i = 0;
+        for (URL scdl : urls) {
+            pw.print("<include name=\"");
+            pw.print("composite" + (i++) + "\"");
+            pw.print(" scdlLocation=\"");
+            pw.println(scdl.toString() + "\"/>");
+        }
+        pw.println("</composite>");
+        sw.close();
+        // System.out.println(sw.toString());
+        return new URL(null, "sca:system.scdl", new URLStreamHandler() {
+            @Override
+            protected URLConnection openConnection(URL u) throws IOException {
+                return new URLConnection(u) {
+                    @Override
+                    public InputStream getInputStream() throws IOException {
+                        return new ByteArrayInputStream(sw.toString().getBytes("UTF-8"));
+                    }
+
+                    @Override
+                    public void connect() throws IOException {
+                    }
+                };
+            }
+        });
+    }
+
     @SuppressWarnings("unchecked")
     public Component start() throws Exception {
+        
+        // FIXME: [rfeng] This is a hack to bootstrap extensions
+        SimpleRuntimeInfo runtimeInfo = getRuntimeInfo();
+        List<URL> scdls = new ArrayList<URL>();
+        scdls.add(runtimeInfo.getSystemSCDL());
+        for (URL ext : runtimeInfo.getExtensionSCDLs()) {
+            scdls.add(ext);
+        }
+        setSystemScdl(merge(scdls));
+        // End of hack
+        
         initialize();
 
         ScopeRegistry scopeRegistry = getScopeRegistry();
         container = scopeRegistry.getScopeContainer(Scope.COMPOSITE);
 
-        /*
-        int i = 0;
-        for (URL ext : runtimeInfo.getExtensionSCDLs()) {
-            URI uri = URI.create("/extensions/extension" + (i++));
-            deployExtension(null, uri, ext, runtimeInfo.getClassLoader());
-        }
-        */
-        
+        // int i = 0;
+        // for (URL ext : runtimeInfo.getExtensionSCDLs()) {
+        // URI uri = URI.create("/extensions/extension" + (i++));
+        // deployExtension(null, uri, ext, runtimeInfo.getClassLoader());
+        // }
+
         CompositeImplementation impl = new CompositeImplementation();
-        impl.setScdlLocation(applicationScdl);
+        impl.setScdlLocation(getApplicationScdl());
         impl.setClassLoader(runtimeInfo.getClassLoader());
 
-        ComponentDefinition<CompositeImplementation> definition 
-            = new ComponentDefinition<CompositeImplementation>(DEFAULT_COMPOSITE, impl);
+        ComponentDefinition<CompositeImplementation> definition = new ComponentDefinition<CompositeImplementation>(
+                                                                                                                   DEFAULT_COMPOSITE,
+                                                                                                                   impl);
         Collection<Component> components = getDeployer().deploy(null, definition);
         for (Component component : components) {
             component.start();
@@ -113,12 +172,12 @@
         WorkContext workContext = new SimpleWorkContext();
         workContext.setIdentifier(Scope.COMPOSITE, DEFAULT_COMPOSITE);
         PojoWorkContextTunnel.setThreadWorkContext(workContext);
-        return componentManager.getComponent(definition.getUri());
+        return getComponentManager().getComponent(definition.getUri());
     }
 
     @SuppressWarnings("deprecation")
     public <T> T getSystemService(Class<T> type, String name) throws TargetResolutionException {
-        SCAObject child = componentManager.getComponent(URI.create(name));
+        SCAObject child = getComponentManager().getComponent(URI.create(name));
         if (child == null) {
             return null;
         }

Copied: incubator/tuscany/java/sca/runtime/embedded/src/test/resources/system.composite (from r523114, incubator/tuscany/sandbox/rfeng/runtime/embedded/src/test/resources/system.composite)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/runtime/embedded/src/test/resources/system.composite?view=diff&rev=523826&p1=incubator/tuscany/sandbox/rfeng/runtime/embedded/src/test/resources/system.composite&r1=523114&p2=incubator/tuscany/java/sca/runtime/embedded/src/test/resources/system.composite&r2=523826
==============================================================================
--- incubator/tuscany/sandbox/rfeng/runtime/embedded/src/test/resources/system.composite (original)
+++ incubator/tuscany/java/sca/runtime/embedded/src/test/resources/system.composite Thu Mar 29 13:20:52 2007
@@ -138,11 +138,11 @@
 
     <!-- Classloader registry -->
     <!-- 
-    <component name="classLoaderRegistry">
+        <component name="classLoaderRegistry">
         <system:implementation.system class="org.apache.tuscany.core.services.classloading.ClassLoaderRegistryImpl" />
-    </component>
+        </component>
     -->
-    
+
     <!-- Federated deployer -->
     <component name="federateDeployer">
         <system:implementation.system class="org.apache.tuscany.core.deployer.federation.FederatedDeployer" />
@@ -158,11 +158,11 @@
 
     <!-- Connector -->
     <!-- 
-    <component name="connector">
+        <component name="connector">
         <system:implementation.system class="org.apache.tuscany.core.builder.ConnectorImpl" />
-    </component>
+        </component>
     -->
-    
+
     <!-- Jetty HTTP service -->
     <!--
         <component name="httpService">
@@ -277,14 +277,12 @@
     <include name="org.apache.tuscany.core.JavaImplementation" scdlResource="org/apache/tuscany/core/javaImplementation.scdl" />
 
     <!-- service for resolving artifacts using Maven repositories -->
-    <!--
-        <component name="artifactRepository">
-        <system:implementation.system
-        class="org.apache.tuscany.services.maven.MavenArtifactRepository"/>
+    <component name="artifactRepository">
+        <system:implementation.system class="org.apache.tuscany.services.maven.MavenArtifactRepository" />
         <property name="remoteRepoUrl">
-        http://repo1.maven.org/maven2/,http://people.apache.org/repo/m2-snapshot-repository,http://people.apache.org/repo/m2-incubating-repository/,http://people.apache.org/repo/m1-snapshot-repository/</property>
-        </component>
-    -->
+            http://repo1.maven.org/maven2/,http://people.apache.org/repo/m2-snapshot-repository,http://people.apache.org/repo/m2-incubating-repository/,http://people.apache.org/repo/m1-snapshot-repository/
+        </property>
+    </component>
 
     <component name="policyBuilderRegistry">
         <system:implementation.system class="org.apache.tuscany.core.policy.PolicyBuilderRegistryImpl" />



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