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 2007/03/18 19:49:20 UTC

svn commit: r519666 - in /incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation: POJOPhysicalComponentBuilder.java java/JavaPhysicalComponentBuilder.java system/builder/SystemPhysicalComponentBuilder.java

Author: jboynes
Date: Sun Mar 18 11:49:19 2007
New Revision: 519666

URL: http://svn.apache.org/viewvc?view=rev&rev=519666
Log:
create common base class for builders of POJO-based implementations

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java?view=auto&rev=519666
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java Sun Mar 18 11:49:19 2007
@@ -0,0 +1,53 @@
+/*
+ * 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.    
+ */
+package org.apache.tuscany.core.implementation;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Init;
+
+import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
+import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilderRegistry;
+import org.apache.tuscany.spi.component.Component;
+import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
+import org.apache.tuscany.core.implementation.system.model.SystemPhysicalComponentDefinition;
+
+/**
+ * Base class for PhysicalComponentBuilders that build components based on POJOs.
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class POJOPhysicalComponentBuilder<PCD extends PhysicalComponentDefinition, C extends Component>
+    implements PhysicalComponentBuilder<PCD, C> {
+
+    private final PhysicalComponentBuilderRegistry builderRegistry;
+    private final ScopeRegistry scopeRegistry;
+
+    protected POJOPhysicalComponentBuilder(
+        @Reference(name = "builderRegistry")PhysicalComponentBuilderRegistry builderRegistry,
+        @Reference(name = "scopeRegistry")ScopeRegistry scopeRegistry) {
+        this.builderRegistry = builderRegistry;
+        this.scopeRegistry = scopeRegistry;
+    }
+
+    @Init
+    void init() {
+        builderRegistry.register(SystemPhysicalComponentDefinition.class, this);
+    }
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java?view=diff&rev=519666&r1=519665&r2=519666
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java Sun Mar 18 11:49:19 2007
@@ -25,35 +25,33 @@
 
 import org.osoa.sca.annotations.Reference;
 
+import org.apache.tuscany.core.component.InstanceFactoryProvider;
+import org.apache.tuscany.core.implementation.POJOPhysicalComponentBuilder;
+import org.apache.tuscany.core.injection.CallbackWireObjectFactory2;
+import org.apache.tuscany.core.injection.InstanceObjectFactory;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
+import static org.apache.tuscany.core.model.physical.instancefactory.InjectionSource.ValueSourceType.CALLBACK;
+import static org.apache.tuscany.core.model.physical.instancefactory.InjectionSource.ValueSourceType.REFERENCE;
+import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
+import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireSourceDefinition;
+import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireTargetDefinition;
+import org.apache.tuscany.core.wire.WireObjectFactory2;
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilderRegistry;
-import org.apache.tuscany.spi.builder.physical.WireAttacher;
 import org.apache.tuscany.spi.builder.physical.WireAttachException;
+import org.apache.tuscany.spi.builder.physical.WireAttacher;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.component.WorkContext;
-import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
 import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
 import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.ProxyService;
 import org.apache.tuscany.spi.wire.Wire;
 
-import org.apache.tuscany.core.component.InstanceFactoryProvider;
-import org.apache.tuscany.core.injection.CallbackWireObjectFactory2;
-import org.apache.tuscany.core.injection.InstanceObjectFactory;
-import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
-import static org.apache.tuscany.core.model.physical.instancefactory.InjectionSource.ValueSourceType.CALLBACK;
-import static org.apache.tuscany.core.model.physical.instancefactory.InjectionSource.ValueSourceType.REFERENCE;
-import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
-import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireSourceDefinition;
-import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireTargetDefinition;
-import org.apache.tuscany.core.wire.WireObjectFactory2;
-
 /**
  * The physical component builder for Java implementation types. Responsible for creating the Component runtime artifact
  * from a physical component definition
@@ -63,30 +61,22 @@
  * @param <GROUP> the component group id type
  */
 public class JavaPhysicalComponentBuilder<T, GROUP>
-    implements PhysicalComponentBuilder<JavaPhysicalComponentDefinition<T, GROUP>, JavaComponent<T, GROUP>>,
-    WireAttacher<JavaComponent, JavaPhysicalWireSourceDefinition, JavaPhysicalWireTargetDefinition> {
+    extends POJOPhysicalComponentBuilder<JavaPhysicalComponentDefinition<T, GROUP>, JavaComponent<T, GROUP>>
+    implements WireAttacher<JavaComponent, JavaPhysicalWireSourceDefinition, JavaPhysicalWireTargetDefinition> {
 
     // Classloader registry
     private ClassLoaderRegistry classLoaderRegistry;
 
-    // Scope registry
-    private ScopeRegistry scopeRegistry;
-
     private WorkContext workContext;
 
     private ProxyService proxyService;
 
-    /**
-     * Injects builder registry.
-     *
-     * @param registry PhysicalComponentBuilder registry.
-     */
-    @Reference
-    public void setBuilderRegistry(PhysicalComponentBuilderRegistry registry) {
-        registry.register(JavaPhysicalComponentDefinition.class, this);
+    public JavaPhysicalComponentBuilder(
+        @Reference(name = "builderRegistry")PhysicalComponentBuilderRegistry builderRegistry,
+        @Reference(name = "scopeRegistry")ScopeRegistry scopeRegistry) {
+        super(builderRegistry, scopeRegistry);
     }
 
-
     @Reference
     public void setWorkContext(WorkContext workContext) {
         this.workContext = workContext;
@@ -98,6 +88,16 @@
     }
 
     /**
+     * Injects classloader registry.
+     *
+     * @param classLoaderRegistry Class loader registry.
+     */
+    @Reference
+    public void setClassLoaderRegistry(ClassLoaderRegistry classLoaderRegistry) {
+        this.classLoaderRegistry = classLoaderRegistry;
+    }
+
+    /**
      * Builds a component from its physical component definition.
      *
      * @param componentDefinition Physical component definition of the component to be built.
@@ -110,33 +110,11 @@
         InstanceFactoryProvider<T> provider = componentDefinition.getProvider();
         JavaComponent<T, GROUP> component = new JavaComponent<T, GROUP>(componentId, provider, null, null, 0, -1, -1);
 
-        setScopeContainer(componentDefinition, component);
-
         setInstanceFactoryClass(componentDefinition, component);
 
         return component;
     }
 
-    /**
-     * Injects classloader registry.
-     *
-     * @param classLoaderRegistry Class loader registry.
-     */
-    @Reference
-    public void setClassLoaderRegistry(ClassLoaderRegistry classLoaderRegistry) {
-        this.classLoaderRegistry = classLoaderRegistry;
-    }
-
-    /**
-     * Injects scope registry.
-     *
-     * @param scopeRegistry Scope registry.
-     */
-    @Reference
-    public void setScopeRegistry(ScopeRegistry scopeRegistry) {
-        this.scopeRegistry = scopeRegistry;
-    }
-
     /*
      * Sets the instance factory class.
      */
@@ -151,15 +129,6 @@
         Class<InstanceFactory<?>> instanceFactoryClass = null;
         component.setInstanceFactoryClass(instanceFactoryClass);
 */
-    }
-
-    /*
-     * Set the scope container.
-     */
-    private void setScopeContainer(JavaPhysicalComponentDefinition componentDefinition, JavaComponent component) {
-        Scope scope = componentDefinition.getScope();
-        ScopeContainer scopeContainer = scopeRegistry.getScopeContainer(scope);
-        component.setScopeContainer(scopeContainer);
     }
 
     /**

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java?view=diff&rev=519666&r1=519665&r2=519666
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java Sun Mar 18 11:49:19 2007
@@ -20,14 +20,13 @@
 
 import java.net.URI;
 
-import org.osoa.sca.annotations.Reference;
-import org.osoa.sca.annotations.Init;
 import org.osoa.sca.annotations.EagerInit;
+import org.osoa.sca.annotations.Reference;
 
 import org.apache.tuscany.core.component.InstanceFactoryProvider;
+import org.apache.tuscany.core.implementation.POJOPhysicalComponentBuilder;
 import org.apache.tuscany.core.implementation.system.component.SystemComponent;
 import org.apache.tuscany.core.implementation.system.model.SystemPhysicalComponentDefinition;
-import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
 import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilderRegistry;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
@@ -37,22 +36,12 @@
  */
 @EagerInit
 public class SystemPhysicalComponentBuilder<T, GROUP>
-    implements PhysicalComponentBuilder<SystemPhysicalComponentDefinition<T, GROUP>, SystemComponent<T, GROUP>> {
-
-    private final PhysicalComponentBuilderRegistry builderRegistry;
-    private final ScopeRegistry scopeRegistry;
-
+    extends POJOPhysicalComponentBuilder<SystemPhysicalComponentDefinition<T, GROUP>, SystemComponent<T, GROUP>> {
 
     public SystemPhysicalComponentBuilder(
         @Reference(name = "builderRegistry")PhysicalComponentBuilderRegistry builderRegistry,
         @Reference(name = "scopeRegistry")ScopeRegistry scopeRegistry) {
-        this.builderRegistry = builderRegistry;
-        this.scopeRegistry = scopeRegistry;
-    }
-
-    @Init
-    void init() {
-        builderRegistry.register(SystemPhysicalComponentDefinition.class, this);
+        super(builderRegistry, scopeRegistry);
     }
 
     public SystemComponent<T, GROUP> build(SystemPhysicalComponentDefinition<T, GROUP> definition) {



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