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

svn commit: r519861 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/generator/ core/src/main/java/org/apache/tuscany/core/implementation/java/ core/src/main/java/org/apache/tuscany/core/services/deployment/ core/src/...

Author: jmarino
Date: Mon Mar 19 00:29:06 2007
New Revision: 519861

URL: http://svn.apache.org/viewvc?view=rev&rev=519861
Log:
have java generator register with generator registry; temp classloader fix for AssemblyService

Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImplTestCase.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java?view=diff&rev=519861&r1=519860&r2=519861
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/generator/GeneratorRegistryImpl.java Mon Mar 19 00:29:06 2007
@@ -82,8 +82,8 @@
         resourceGenerators.put(clazz, generator);
     }
 
-    public <T extends ComponentDefinition<? extends Implementation>> void register(Class<T> clazz,
-                                                                                   ComponentGenerator<T> generator) {
+    public <T extends Implementation<?>> void register(Class<T> clazz,
+                                                       ComponentGenerator<ComponentDefinition<T>> generator) {
         componentGenerators.put(clazz, generator);
     }
 
@@ -91,7 +91,7 @@
     public <C extends ComponentDefinition<? extends Implementation>> void generate(C definition,
                                                                                    GeneratorContext context)
         throws GenerationException {
-        Class<? extends ComponentDefinition> type = definition.getClass();
+        Class<?> type = definition.getImplementation().getClass();
         ComponentGenerator<C> generator = (ComponentGenerator<C>) componentGenerators.get(type);
         if (generator == null) {
             throw new GeneratorNotFoundException(type);

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java?view=diff&rev=519861&r1=519860&r2=519861
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentGenerator.java Mon Mar 19 00:29:06 2007
@@ -24,16 +24,20 @@
 import java.lang.reflect.Method;
 import java.util.Map;
 
+import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Reference;
+
 import org.apache.tuscany.spi.generator.ComponentGenerator;
 import org.apache.tuscany.spi.generator.GenerationException;
 import org.apache.tuscany.spi.generator.GeneratorContext;
+import org.apache.tuscany.spi.generator.GeneratorRegistry;
 import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
 import org.apache.tuscany.spi.implementation.java.JavaMappedService;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireSourceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalWireTargetDefinition;
 
@@ -49,7 +53,13 @@
 /**
  * @version $Rev$ $Date$
  */
+@EagerInit
 public class JavaPhysicalComponentGenerator implements ComponentGenerator<ComponentDefinition<JavaImplementation>> {
+
+
+    public JavaPhysicalComponentGenerator(@Reference GeneratorRegistry registry) {
+        registry.register(JavaImplementation.class, this);
+    }
 
     @SuppressWarnings({"unchecked"})
     public void generate(ComponentDefinition<JavaImplementation> definition, GeneratorContext context) {

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java?view=diff&rev=519861&r1=519860&r2=519861
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImpl.java Mon Mar 19 00:29:06 2007
@@ -31,8 +31,11 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
+import org.osoa.sca.annotations.EagerInit;
 import org.osoa.sca.annotations.Reference;
 
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.deployer.ChangeSetHandler;
 import org.apache.tuscany.spi.deployer.ChangeSetHandlerRegistry;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
@@ -48,8 +51,10 @@
 import org.apache.tuscany.spi.model.CompositeImplementation;
 import org.apache.tuscany.spi.model.Implementation;
 import org.apache.tuscany.spi.model.ModelObject;
+import org.apache.tuscany.spi.model.Property;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
 import org.apache.tuscany.spi.model.ReferenceTarget;
+import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.ServiceDefinition;
 import org.apache.tuscany.spi.model.physical.PhysicalChangeSet;
 
@@ -63,21 +68,26 @@
 /**
  * @version $Rev$ $Date$
  */
+@EagerInit
 public class AssemblyServiceImpl implements AssemblyService, ChangeSetHandlerRegistry {
-    //    private static final URI DOMAIN_URI = URI.create("tuscany://domain");
+    private static final URI DOMAIN_URI = URI.create("tuscany://./domain");
     private final GeneratorRegistry generatorRegistry;
     private final LoaderRegistry loaderRegistry;
     private final AutowireResolver autowireResolver;
+    private final ScopeRegistry scopeRegistry;
     private final XMLInputFactory xmlFactory;
-    //private ComponentDefinition<CompositeImplementation> domain;
+    private ComponentDefinition<CompositeImplementation> domain;
 
     public AssemblyServiceImpl(@Reference LoaderRegistry loaderRegistry,
                                @Reference GeneratorRegistry generatorRegistry,
-                               @Reference AutowireResolver autowireResolver) {
+                               @Reference AutowireResolver autowireResolver,
+                               @Reference ScopeRegistry scopeRegistry) {
         this.loaderRegistry = loaderRegistry;
         this.generatorRegistry = generatorRegistry;
         this.autowireResolver = autowireResolver;
+        this.scopeRegistry = scopeRegistry;
         xmlFactory = XMLInputFactory.newInstance("javax.xml.stream.XMLInputFactory", getClass().getClassLoader());
+        domain = createDomain();
     }
 
     private final Map<String, ChangeSetHandler> registry = new HashMap<String, ChangeSetHandler>();
@@ -130,23 +140,28 @@
 
         try {
             XMLStreamReader reader = xmlFactory.createXMLStreamReader(stream);
-            while(reader.next() != XMLStreamConstants.START_ELEMENT) {                
+            while (reader.next() != XMLStreamConstants.START_ELEMENT) {
             }
-//            if (domain == null) {
-//                // lazily create the domain
-//                domain = createDomain();
-//            }
-
-//            ComponentDefinition<CompositeImplementation> defintion = null;    //loaderRegistry.load()
-//            CompositeComponentType<?, ?, ?> type = defintion.getImplementation().getComponentType();
-            
-            DeploymentContext deploymentContext = null;
-            CompositeComponentType<?, ?, ?> type = (CompositeComponentType<?, ?, ?>) loaderRegistry.load(null, reader, deploymentContext);
+
+            ScopeContainer<URI> scopeContainer = scopeRegistry.getScopeContainer(Scope.COMPOSITE);
+            URI groupId = domain.getUri();
+            scopeContainer.createGroup(groupId);
+            // FIXME this needs to be done properly
+            ClassLoader cl = getClass().getClassLoader();
+            DeploymentContext deploymentContext =
+                new RootDeploymentContext(cl, null, groupId, xmlFactory, scopeContainer, false);
+
+            CompositeComponentType<?, ?, ?> type =
+                (CompositeComponentType<?, ?, ?>) loaderRegistry.load(null, reader, deploymentContext);
             Map<URI, GeneratorContext> contexts = new HashMap<URI, GeneratorContext>();
             // TODO create physical resource definitions
             // create physical component definitions
             for (ComponentDefinition<?> child : type.getDeclaredComponents().values()) {
-                generate(child, contexts);
+                try {
+                    generate(child, contexts);
+                } catch (GenerationException e) {
+                    throw new DeploymentException(e);
+                }
             }
             // create physical wire definitions
             for (ComponentDefinition<?> child : type.getDeclaredComponents().values()) {
@@ -204,7 +219,8 @@
         }
     }
 
-    private void generate(ComponentDefinition<?> component, Map<URI, GeneratorContext> contexts) {
+    private void generate(ComponentDefinition<?> component, Map<URI, GeneratorContext> contexts)
+        throws GenerationException {
         URI id = component.getRuntimeId();
         GeneratorContext context = contexts.get(id);
         if (context == null) {
@@ -212,24 +228,18 @@
             context = new DefaultGeneratorContext(changeSet);
             contexts.put(id, context);
         }
-        try {
-            // TODO support composite recursion
-            generatorRegistry.generate(component, context);
-        } catch (GenerationException e) {
-            // throw new
-        }
+        // TODO support composite recursion
+        generatorRegistry.generate(component, context);
 
     }
 
-//    private ComponentDefinition<CompositeImplementation> createDomain() {
-//        CompositeComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
-//            new CompositeComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
-//        CompositeImplementation impl = new CompositeImplementation();
-//        impl.setComponentType(type);
-//        // FIXME domain uri
-//        domain = new ComponentDefinition<CompositeImplementation>(DOMAIN_URI, impl);
-//        return domain;
-//    }
+    private ComponentDefinition<CompositeImplementation> createDomain() {
+        CompositeComponentType<ServiceDefinition, ReferenceDefinition, Property<?>> type =
+            new CompositeComponentType<ServiceDefinition, ReferenceDefinition, Property<?>>();
+        CompositeImplementation impl = new CompositeImplementation();
+        impl.setComponentType(type);
+        return new ComponentDefinition<CompositeImplementation>(DOMAIN_URI, impl);
+    }
 
     private ModelObject resolveTarget(URI uri, CompositeComponentType<?, ?, ?> type) {
         // TODO only resolves one level deep

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImplTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImplTestCase.java?view=diff&rev=519861&r1=519860&r2=519861
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImplTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/services/deployment/AssemblyServiceImplTestCase.java Mon Mar 19 00:29:06 2007
@@ -24,6 +24,7 @@
 import java.net.URLConnection;
 import java.net.URLStreamHandler;
 
+import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.generator.GeneratorRegistry;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 
@@ -99,7 +100,9 @@
         EasyMock.replay(generatorRegistry);
         AutowireResolver resolver = EasyMock.createMock(AutowireResolver.class);
         EasyMock.replay(resolver);
-        service = new AssemblyServiceImpl(loaderRegistry, generatorRegistry, resolver);
+        ScopeRegistry scopeRegistry = EasyMock.createMock(ScopeRegistry.class);
+        EasyMock.replay(scopeRegistry);
+        service = new AssemblyServiceImpl(loaderRegistry, generatorRegistry, resolver, scopeRegistry);
     }
 
     private static class MockURLStreamHandler extends URLStreamHandler {

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java?view=diff&rev=519861&r1=519860&r2=519861
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/generator/GeneratorRegistry.java Mon Mar 19 00:29:06 2007
@@ -36,8 +36,8 @@
  */
 public interface GeneratorRegistry {
 
-    <T extends ComponentDefinition<? extends Implementation>> void register(Class<T> clazz,
-                                                                            ComponentGenerator<T> generator);
+    public <T extends Implementation<?>> void register(Class<T> clazz,
+                                                       ComponentGenerator<ComponentDefinition<T>> generator);
 
     void register(Class<?> clazz, BindingGenerator generator);
 



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