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 2006/11/12 04:15:26 UTC

svn commit: r473858 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/bootstrap/ core/src/main/java/org/apache/tuscany/core/implementation/system/builder/ core/src/test/java/org/apache/tuscany/core/implementation/syste...

Author: jmarino
Date: Sat Nov 11 19:15:26 2006
New Revision: 473858

URL: http://svn.apache.org/viewvc?view=rev&rev=473858
Log:
enable resources for system components

Added:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/bootstrap/DefaultBootstrapper.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java
    incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/WireObjectFactoryTestCase.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=473858&r1=473857&r2=473858
==============================================================================
--- 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 Sat Nov 11 19:15:26 2006
@@ -41,6 +41,7 @@
 import org.apache.tuscany.core.implementation.processor.ReferenceProcessor;
 import org.apache.tuscany.core.implementation.processor.ScopeProcessor;
 import org.apache.tuscany.core.implementation.processor.ServiceProcessor;
+import org.apache.tuscany.core.implementation.processor.ResourceProcessor;
 import org.apache.tuscany.core.implementation.system.builder.SystemBindingBuilder;
 import org.apache.tuscany.core.implementation.system.builder.SystemComponentBuilder;
 import org.apache.tuscany.core.implementation.system.builder.SystemCompositeBuilder;
@@ -202,6 +203,7 @@
         introspectionRegistry.registerProcessor(new ScopeProcessor());
         introspectionRegistry.registerProcessor(new PropertyProcessor(service));
         introspectionRegistry.registerProcessor(new ReferenceProcessor(registry));
+        introspectionRegistry.registerProcessor(new ResourceProcessor());
         introspectionRegistry.registerProcessor(new ServiceProcessor(service));
         introspectionRegistry.registerProcessor(new HeuristicPojoProcessor(service));
         introspectionRegistry.registerProcessor(new MonitorProcessor(monitorFactory, service));

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java?view=diff&rev=473858&r1=473857&r2=473858
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilder.java Sat Nov 11 19:15:26 2006
@@ -26,6 +26,8 @@
 
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.host.ResourceHost;
 import org.apache.tuscany.spi.builder.BuilderConfigException;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.CompositeComponent;
@@ -35,6 +37,7 @@
 import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
 import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
 import org.apache.tuscany.spi.implementation.java.PojoComponentType;
+import org.apache.tuscany.spi.implementation.java.Resource;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.PropertyValue;
 import org.apache.tuscany.spi.model.ReferenceDefinition;
@@ -51,6 +54,7 @@
 import org.apache.tuscany.core.implementation.system.wire.SystemOutboundWireImpl;
 import org.apache.tuscany.core.injection.MethodEventInvoker;
 import org.apache.tuscany.core.injection.PojoObjectFactory;
+import org.apache.tuscany.core.injection.ResourceObjectFactory;
 
 /**
  * Produces system atomic components from a component definition
@@ -58,15 +62,21 @@
  * @version $$Rev$$ $$Date$$
  */
 public class SystemComponentBuilder extends ComponentBuilderExtension<SystemImplementation> {
+    private ResourceHost host;
 
     protected Class<SystemImplementation> getImplementationType() {
         return SystemImplementation.class;
     }
 
+    @Autowire
+    public void setHost(ResourceHost host) {
+        this.host = host;
+    }
+
     @SuppressWarnings("unchecked")
     public AtomicComponent build(CompositeComponent parent,
-                                    ComponentDefinition<SystemImplementation> definition,
-                                    DeploymentContext deploymentContext) throws BuilderConfigException {
+                                 ComponentDefinition<SystemImplementation> definition,
+                                 DeploymentContext deploymentContext) throws BuilderConfigException {
         PojoComponentType<ServiceDefinition, JavaMappedReference, JavaMappedProperty<?>> componentType =
             definition.getImplementation().getComponentType();
 
@@ -101,6 +111,15 @@
                 configuration.addReferenceSite(reference.getName(), member);
             }
         }
+
+        for (Resource resource : componentType.getResources().values()) {
+            Member member = resource.getMember();
+            if (member != null) {
+                // could be null if the resource is mapped to a constructor
+                configuration.addResourceSite(resource.getName(), member);
+            }
+        }
+
         // setup constructor injection
         ConstructorDefinition<?> ctorDef = componentType.getConstructorDefinition();
         Constructor<?> constr = ctorDef.getConstructor();
@@ -130,6 +149,24 @@
                 component.addOutboundWire(wire);
             }
         }
+
+        // handle resources
+        for (Resource resource : componentType.getResources().values()) {
+            String name = resource.getName();
+            boolean optional = resource.isOptional();
+            Class<Object> type = (Class<Object>) resource.getType();
+            ResourceObjectFactory<Object> factory;
+            String mappedName = resource.getMappedName();
+            if (mappedName == null) {
+                // by type
+                factory = new ResourceObjectFactory<Object>(type, optional, parent, host);
+            } else {
+                factory = new ResourceObjectFactory<Object>(type, mappedName, optional, parent, host);
+            }
+            component.addResourceFactory(name, factory);
+
+        }
+
         return component;
     }
 

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java?view=auto&rev=473858
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java Sat Nov 11 19:15:26 2006
@@ -0,0 +1,64 @@
+package org.apache.tuscany.core.implementation.system.builder;
+
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.component.ScopeContainer;
+import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.component.SystemAtomicComponent;
+import org.apache.tuscany.spi.implementation.java.ConstructorDefinition;
+import org.apache.tuscany.spi.implementation.java.PojoComponentType;
+import org.apache.tuscany.spi.implementation.java.Resource;
+import org.apache.tuscany.spi.model.ComponentDefinition;
+import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+
+import junit.framework.TestCase;
+import org.apache.tuscany.core.implementation.system.model.SystemImplementation;
+import org.easymock.EasyMock;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class SystemComponentBuilderResourceTestCase extends TestCase {
+
+    public void testResourceInjection() throws Exception {
+        ScopeContainer container = EasyMock.createNiceMock(ScopeContainer.class);
+        DeploymentContext ctx = EasyMock.createNiceMock(DeploymentContext.class);
+        ScopeRegistry registry = EasyMock.createMock(ScopeRegistry.class);
+        EasyMock.expect(registry.getScopeContainer(Scope.STATELESS)).andReturn(container);
+        EasyMock.replay(registry);
+        SystemComponentBuilder builder = new SystemComponentBuilder();
+        builder.setScopeRegistry(registry);
+        ConstructorDefinition<Foo> ctorDef = new ConstructorDefinition<SystemComponentBuilderResourceTestCase.Foo>(
+            SystemComponentBuilderResourceTestCase.Foo.class.getConstructor());
+        PojoComponentType type = new PojoComponentType();
+        Resource resource = new Resource();
+        resource.setType(String.class);
+        resource.setName("resource");
+        resource.setMember(SystemComponentBuilderResourceTestCase.Foo.class.getDeclaredField("resource"));
+        type.add(resource);
+        type.setImplementationScope(Scope.STATELESS);
+        type.setConstructorDefinition(ctorDef);
+        SystemImplementation impl = new SystemImplementation();
+        impl.setImplementationClass(SystemComponentBuilderResourceTestCase.Foo.class);
+        impl.setComponentType(type);
+        ComponentDefinition<SystemImplementation> definition =
+            new ComponentDefinition<SystemImplementation>("foo", impl);
+        CompositeComponent parent = EasyMock.createMock(CompositeComponent.class);
+        EasyMock.expect(parent.resolveSystemInstance(String.class)).andReturn("result");
+        EasyMock.replay(parent);
+        SystemAtomicComponent component = (SystemAtomicComponent) builder.build(parent, definition, ctx);
+        SystemComponentBuilderResourceTestCase.Foo foo =
+            (SystemComponentBuilderResourceTestCase.Foo) component.createInstance();
+        assertEquals("result", foo.resource);
+        EasyMock.verify(parent);
+    }
+
+    private static class Foo {
+
+        protected String resource;
+
+        public Foo() {
+        }
+
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemComponentBuilderResourceTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java?view=diff&rev=473858&r1=473857&r2=473858
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/wire/WireObjectFactory.java Sat Nov 11 19:15:26 2006
@@ -20,8 +20,6 @@
 
 import org.apache.tuscany.spi.ObjectCreationException;
 import org.apache.tuscany.spi.ObjectFactory;
-import org.apache.tuscany.spi.wire.RuntimeWire;
-import org.apache.tuscany.spi.wire.WireService;
 
 /**
  * Uses a wire to return an object instance

Modified: incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/WireObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/WireObjectFactoryTestCase.java?view=diff&rev=473858&r1=473857&r2=473858
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/WireObjectFactoryTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/test/java/org/apache/tuscany/spi/wire/WireObjectFactoryTestCase.java Sat Nov 11 19:15:26 2006
@@ -18,10 +18,6 @@
  */
 package org.apache.tuscany.spi.wire;
 
-import org.apache.tuscany.spi.wire.RuntimeWire;
-import org.apache.tuscany.spi.wire.WireService;
-import org.apache.tuscany.spi.wire.WireObjectFactory;
-
 import junit.framework.TestCase;
 import static org.easymock.EasyMock.createMock;
 import static org.easymock.EasyMock.expectLastCall;



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