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/04/10 10:00:52 UTC

svn commit: r527051 - in /incubator/tuscany/java/sca/modules: assembly/src/main/java/org/apache/tuscany/assembly/util/ core/src/main/java/org/apache/tuscany/core/builder/ core/src/main/java/org/apache/tuscany/core/deployer/ implementation-java-runtime/...

Author: rfeng
Date: Tue Apr 10 01:00:51 2007
New Revision: 527051

URL: http://svn.apache.org/viewvc?view=rev&rev=527051
Log:
Bring up the java calculator component

Modified:
    incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/util/CompositeUtil.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/java/bootstrap/RuntimeJavaModuleActivator.java
    incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/processor/HeuristicPojoProcessor.java
    incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java
    incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationDefinition.java

Modified: incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/util/CompositeUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/util/CompositeUtil.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/util/CompositeUtil.java (original)
+++ incubator/tuscany/java/sca/modules/assembly/src/main/java/org/apache/tuscany/assembly/util/CompositeUtil.java Tue Apr 10 01:00:51 2007
@@ -146,7 +146,7 @@
                 }
             }
             for (Reference reference : references.values()) {
-                if (!cservices.containsKey(reference.getName())) {
+                if (!creferences.containsKey(reference.getName())) {
                     ComponentReference componentReference = assemblyFactory.createComponentReference();
                     componentReference.setName(reference.getName());
                     componentReference.setReference(reference);

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/builder/BuilderRegistryImpl.java Tue Apr 10 01:00:51 2007
@@ -43,6 +43,7 @@
 import org.apache.tuscany.spi.component.ComponentManager;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.component.ServiceBinding;
@@ -58,6 +59,7 @@
 public class BuilderRegistryImpl implements BuilderRegistry {
     private ScopeRegistry scopeRegistry;
     private ComponentManager componentManager;
+    private Map<SCAObject, Object> models = new HashMap<SCAObject, Object>();
 
     private final Map<Class<? extends Implementation>, ComponentBuilder> componentBuilders = new HashMap<Class<? extends Implementation>, ComponentBuilder>();
     private final Map<Class<? extends Binding>, BindingBuilder<? extends Binding>> bindingBuilders = new HashMap<Class<? extends Binding>, BindingBuilder<? extends Binding>>();
@@ -99,6 +101,7 @@
             throw new NoRegisteredBuilderException("No builder registered for implementation", name);
         }
         Component component = componentBuilder.build(componentDef, context);
+        models.put(component, componentDef);
         assert component != null;
         Map<String, Property> properties = new HashMap<String, Property>();
         for (Property p : componentDef.getProperties()) {
@@ -195,6 +198,13 @@
 
         }
         return reference;
+    }
+
+    /**
+     * @return the models
+     */
+    public Map<SCAObject, Object> getModels() {
+        return models;
     }
 
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/core/deployer/DeployerImpl.java Tue Apr 10 01:00:51 2007
@@ -19,28 +19,54 @@
 package org.apache.tuscany.core.deployer;
 
 import java.net.URI;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
+import java.util.Map;
 
+import javax.xml.namespace.QName;
 import javax.xml.stream.XMLInputFactory;
 
+import org.apache.tuscany.assembly.ComponentReference;
+import org.apache.tuscany.assembly.ComponentService;
 import org.apache.tuscany.assembly.Composite;
+import org.apache.tuscany.assembly.Contract;
+import org.apache.tuscany.assembly.Implementation;
+import org.apache.tuscany.assembly.Multiplicity;
+import org.apache.tuscany.assembly.SCABinding;
 import org.apache.tuscany.assembly.impl.DefaultAssemblyFactory;
+import org.apache.tuscany.core.builder.BuilderRegistryImpl;
+import org.apache.tuscany.core.builder.ComponentNotFoundException;
+import org.apache.tuscany.core.builder.WireCreationException;
+import org.apache.tuscany.core.wire.InvocationChainImpl;
+import org.apache.tuscany.core.wire.InvokerInterceptor;
+import org.apache.tuscany.core.wire.WireImpl;
+import org.apache.tuscany.core.wire.WireUtils;
+import org.apache.tuscany.interfacedef.Operation;
 import org.apache.tuscany.spi.Scope;
 import org.apache.tuscany.spi.builder.Builder;
 import org.apache.tuscany.spi.builder.BuilderException;
 import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
+import org.apache.tuscany.spi.builder.WiringException;
+import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.component.ComponentManager;
+import org.apache.tuscany.spi.component.Invocable;
 import org.apache.tuscany.spi.component.RegistrationException;
 import org.apache.tuscany.spi.component.SCAObject;
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.deployer.Deployer;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.resolver.ResolutionException;
+import org.apache.tuscany.spi.wire.InvocationChain;
+import org.apache.tuscany.spi.wire.Wire;
 import org.osoa.sca.annotations.Reference;
 
+import com.sun.jndi.toolkit.ctx.ComponentDirContext;
+
 /**
  * Default implementation of Deployer.
  * 
@@ -95,6 +121,11 @@
         Collection<Component> components = deploymentContext.getComponents().values();
         for (Component toRegister : components) {
             try {
+                Map<SCAObject, Object> models = ((BuilderRegistryImpl)builder).getModels();
+                Object model = models.get(toRegister);
+                if (model instanceof org.apache.tuscany.assembly.Component) {
+                    connect(models, (org.apache.tuscany.assembly.Component)model);
+                }
                 componentManager.register(toRegister);
             } catch (RegistrationException e) {
                 throw new BuilderInstantiationException("Error registering component", e);
@@ -116,4 +147,160 @@
         return builder.build(componentDefinition, deploymentContext);
     }
 
+    public static org.apache.tuscany.assembly.Reference getReference(Implementation type, String name) {
+        for (org.apache.tuscany.assembly.Reference ref : type.getReferences()) {
+            if (ref.getName().equals(name)) {
+                return ref;
+            }
+        }
+        return null;
+    }
+
+    public void connect(Map<SCAObject, Object> models, org.apache.tuscany.assembly.Component definition)
+        throws WiringException {
+        Component source = getComponent(models, definition);
+        if (source == null) {
+            throw new ComponentNotFoundException("Source not found", URI.create(definition.getName()));
+        }
+
+        for (ComponentReference ref : definition.getReferences()) {
+            List<Wire> wires = new ArrayList<Wire>();
+            String refName = ref.getName();
+            org.apache.tuscany.assembly.Reference refDefinition = getReference(definition.getImplementation(), refName);
+            assert refDefinition != null;
+            List<ComponentService> services = ref.getTargets();
+            for (ComponentService service : services) {
+                org.apache.tuscany.assembly.Component targetCompoent = service.getBinding(SCABinding.class)
+                    .getComponent();
+                Component target = getComponent(models, targetCompoent);
+                URI targetUri = URI.create(target.getUri() + "#" + service.getName());
+                if (target == null && (refDefinition.getMultiplicity() == Multiplicity.ZERO_ONE || refDefinition
+                        .getMultiplicity() == Multiplicity.ZERO_N)) {
+                    // a non-required reference, just skip
+                    continue;
+                }
+                if (target == null) {
+                    throw new ComponentNotFoundException("Target not found", targetUri);
+                }
+                URI sourceURI = URI.create(source.getUri() + "#" + refName);
+                Wire wire = createWire(sourceURI, targetUri, refDefinition, Wire.LOCAL_BINDING);
+                try {
+                    attachInvokers(refName, wire, source, target);
+                } catch (TargetInvokerCreationException e) {
+                    throw new WireCreationException("Error creating invoker", sourceURI, targetUri, e);
+                }
+                /*
+                 * if (postProcessorRegistry != null) {
+                 * postProcessorRegistry.process(wire); }
+                 */
+                optimize(source, target, wire);
+                wires.add(wire);
+                if (!wire.getCallbackInvocationChains().isEmpty()) {
+                    target.attachCallbackWire(wire);
+                }
+            }
+            if (wires.size() > 1) {
+                // attach as a multiplicity
+                source.attachWires(wires);
+            } else if (wires.size() == 1) {
+                // attach as a single wire
+                Wire wire = wires.get(0);
+                source.attachWire(wire);
+            }
+        }
+    }
+
+    private Component getComponent(Map<SCAObject, Object> models, org.apache.tuscany.assembly.Component definition) {
+        Component source = null;
+        for (Map.Entry<SCAObject, Object> e : models.entrySet()) {
+            if (e.getValue() == definition) {
+                source = (Component)e.getKey();
+            }
+        }
+        return source;
+    }
+
+    protected Wire createWire(URI sourceURI, URI targetUri, Contract contract, QName bindingType) {
+        Wire wire = new WireImpl(bindingType);
+        wire.setSourceContract(contract);
+        wire.setTargetContract(contract);
+        wire.setSourceUri(sourceURI);
+        wire.setTargetUri(targetUri);
+        for (Operation operation : contract.getInterface().getOperations()) {
+            InvocationChain chain = new InvocationChainImpl(operation);
+            /*
+             * if (operation.isNonBlocking()) { chain.addInterceptor(new
+             * NonBlockingInterceptor(scheduler, workContext)); }
+             */
+            chain.addInterceptor(new InvokerInterceptor());
+            wire.addInvocationChain(operation, chain);
+
+        }
+        if (contract.getCallbackInterface() != null) {
+            for (Operation operation : contract.getCallbackInterface().getOperations()) {
+                InvocationChain chain = new InvocationChainImpl(operation);
+                /*
+                 * if (operation.isNonBlocking()) { chain.addInterceptor(new
+                 * NonBlockingInterceptor(scheduler, workContext)); }
+                 */
+                chain.addInterceptor(new InvokerInterceptor());
+                wire.addCallbackInvocationChain(operation, chain);
+            }
+        }
+        return wire;
+    }
+
+    private void attachInvokers(String name, Wire wire, Invocable source, Invocable target)
+        throws TargetInvokerCreationException {
+        // TODO section will deleted be replaced when we cut-over to the
+        // physical marshallers
+        for (InvocationChain chain : wire.getInvocationChains().values()) {
+            chain.setTargetInvoker(target.createTargetInvoker(name, chain.getOperation(), false));
+        }
+        for (InvocationChain chain : wire.getCallbackInvocationChains().values()) {
+            chain.setTargetInvoker(source.createTargetInvoker(null, chain.getOperation(), true));
+        }
+    }
+
+    protected void optimize(Component source, Component target, Wire wire) {
+        boolean optimizableScopes = isOptimizable(source.getScope(), target.getScope());
+        if (optimizableScopes && target.isOptimizable() && WireUtils.isOptimizable(wire)) {
+            wire.setOptimizable(true);
+            wire.setTarget((AtomicComponent)target);
+        } else {
+            wire.setOptimizable(false);
+        }
+    }
+
+    protected boolean isOptimizable(Scope pReferrer, Scope pReferee) {
+        if (pReferrer == Scope.UNDEFINED || pReferee == Scope.UNDEFINED
+            || pReferrer == Scope.CONVERSATION
+            || pReferee == Scope.CONVERSATION) {
+            return false;
+        }
+        if (pReferee == pReferrer) {
+            return true;
+        } else if (pReferrer == Scope.STATELESS) {
+            return true;
+        } else if (pReferee == Scope.STATELESS) {
+            return false;
+        } else if (pReferrer == Scope.REQUEST && pReferee == Scope.SESSION) {
+            return true;
+        } else if (pReferrer == Scope.REQUEST && pReferee == Scope.COMPOSITE) {
+            return true;
+        } else if (pReferrer == Scope.REQUEST && pReferee == Scope.SYSTEM) {
+            return true;
+        } else if (pReferrer == Scope.SESSION && pReferee == Scope.COMPOSITE) {
+            return true;
+        } else if (pReferrer == Scope.SESSION && pReferee == Scope.SYSTEM) {
+            return true;
+        } else // noinspection SimplifiableIfStatement
+        if (pReferrer == Scope.SYSTEM && pReferee == Scope.COMPOSITE) {
+            // case where a service context points to a composite scoped
+            // component
+            return true;
+        } else {
+            return pReferrer == Scope.COMPOSITE && pReferee == Scope.SYSTEM;
+        }
+    }
 }

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoAtomicComponent.java Tue Apr 10 01:00:51 2007
@@ -28,28 +28,22 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
 
-import org.apache.tuscany.api.annotation.Resource;
+import org.apache.tuscany.assembly.Multiplicity;
+import org.apache.tuscany.assembly.Reference;
 import org.apache.tuscany.core.component.ComponentContextImpl;
 import org.apache.tuscany.core.component.ComponentContextProvider;
-import org.apache.tuscany.core.component.InstanceFactory;
 import org.apache.tuscany.core.component.ServiceReferenceImpl;
-import org.apache.tuscany.core.component.scope.ReflectiveInstanceWrapper;
 import org.apache.tuscany.core.injection.ArrayMultiplicityObjectFactory;
 import org.apache.tuscany.core.injection.CallbackWireObjectFactory;
 import org.apache.tuscany.core.injection.ConversationIDObjectFactory;
-import org.apache.tuscany.core.injection.EventInvoker;
 import org.apache.tuscany.core.injection.FieldInjector;
 import org.apache.tuscany.core.injection.Injector;
 import org.apache.tuscany.core.injection.InvalidAccessorException;
 import org.apache.tuscany.core.injection.ListMultiplicityObjectFactory;
 import org.apache.tuscany.core.injection.MethodInjector;
-import org.apache.tuscany.core.injection.NoAccessorException;
 import org.apache.tuscany.core.injection.NoMultiplicityTypeException;
 import org.apache.tuscany.core.injection.ObjectCallbackException;
-import org.apache.tuscany.core.injection.PojoObjectFactory;
-import org.apache.tuscany.implementation.java.impl.ConstructorDefinition;
 import org.apache.tuscany.implementation.java.impl.JavaElement;
 import org.apache.tuscany.implementation.java.impl.Parameter;
 import org.apache.tuscany.implementation.java.processor.JavaIntrospectionHelper;
@@ -67,8 +61,6 @@
 import org.osoa.sca.ComponentContext;
 import org.osoa.sca.ServiceReference;
 import org.osoa.sca.annotations.ConversationID;
-import org.osoa.sca.annotations.Property;
-import org.osoa.sca.annotations.Reference;
 
 /**
  * Base implementation of an
@@ -207,6 +199,24 @@
                 ObjectFactory<?> factory = new CallbackWireObjectFactory(element.getType(), proxyService, wires);
                 configuration.getInjectionSites().add(element);
                 configuration.setObjectFactory(element, factory);
+            }
+        }
+        for (Reference ref : configuration.getDefinition().getReferences()) {
+            JavaElement element = configuration.getDefinition().getReferenceMembers().get(ref.getName());
+            if (element != null) {
+                configuration.getInjectionSites().add(element);
+                List<Wire> wireList = wires.get(ref.getName());
+                if (ref.getMultiplicity() == Multiplicity.ONE_N || ref.getMultiplicity() == Multiplicity.ZERO_N) {
+                    List<ObjectFactory<?>> factories = new ArrayList<ObjectFactory<?>>();
+                    for (int i = 0; i < wireList.size(); i++) {
+                        ObjectFactory<?> factory = createWireFactory(element.getType(), wireList.get(i));
+                        factories.add(factory);
+                    }
+                    configuration.setObjectFactories(element, factories);
+                } else {
+                    ObjectFactory<?> factory = createWireFactory(element.getType(), wireList.get(0));
+                    configuration.setObjectFactory(element, factory);
+                }
             }
         }
         super.start();

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/PojoConfiguration.java Tue Apr 10 01:00:51 2007
@@ -72,7 +72,7 @@
             .getDestroyMethod());
         injectionSites = new ArrayList<JavaElement>();
     }
-    
+
     public void setName(URI name) {
         this.name = name;
     }
@@ -90,11 +90,19 @@
     }
 
     public EventInvoker<Object> getInitInvoker() {
-        return new MethodEventInvoker<Object>(definition.getInitMethod());
+        if (definition.getInitMethod() != null) {
+            return new MethodEventInvoker<Object>(definition.getInitMethod());
+        } else {
+            return null;
+        }
     }
 
     public EventInvoker<Object> getDestroyInvoker() {
-        return new MethodEventInvoker<Object>(definition.getDestroyMethod());
+        if (definition.getDestroyMethod() != null) {
+            return new MethodEventInvoker<Object>(definition.getDestroyMethod());
+        } else {
+            return null;
+        }
     }
 
     public ProxyService getProxyService() {
@@ -164,7 +172,7 @@
                     throw new AssertionError(String.valueOf(element));
                 }
             } else {
-                injectors[i++] = createMultiplicityInjector(element, (List<ObjectFactory<?>>)factories);
+                injectors[i++] = createMultiplicityInjector(element, (List<ObjectFactory<?>>)obj);
             }
         }
         return injectors;

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/java/bootstrap/RuntimeJavaModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/java/bootstrap/RuntimeJavaModuleActivator.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/java/bootstrap/RuntimeJavaModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/core/implementation/java/bootstrap/RuntimeJavaModuleActivator.java Tue Apr 10 01:00:51 2007
@@ -42,6 +42,8 @@
 import org.apache.tuscany.implementation.java.processor.ScopeProcessor;
 import org.apache.tuscany.implementation.java.processor.ServiceProcessor;
 import org.apache.tuscany.implementation.java.xml.JavaImplementationProcessor;
+import org.apache.tuscany.interfacedef.java.introspection.JavaInterfaceProcessorRegistry;
+import org.apache.tuscany.interfacedef.java.introspection.impl.JavaInterfaceProcessorRegistryImpl;
 import org.apache.tuscany.services.spi.contribution.StAXArtifactProcessorRegistry;
 import org.apache.tuscany.spi.bootstrap.ExtensionPointRegistry;
 import org.apache.tuscany.spi.bootstrap.ModuleActivator;
@@ -59,14 +61,17 @@
         Map<Class, Object> map = new HashMap<Class, Object>();
         map.put(ProxyService.class, new JDKProxyService());
         map.put(IntrospectionRegistry.class, new IntrospectionRegistryImpl());
+        map.put(JavaInterfaceProcessorRegistry.class, new JavaInterfaceProcessorRegistryImpl());
         return map;
     }
-    
 
     /**
      * @see org.apache.tuscany.spi.bootstrap.ModuleActivator#start(org.apache.tuscany.spi.bootstrap.ExtensionPointRegistry)
      */
     public void start(ExtensionPointRegistry registry) {
+        JavaInterfaceProcessorRegistry javaInterfaceProcessorRegistry = registry
+            .getExtensionPoint(JavaInterfaceProcessorRegistry.class);
+
         IntrospectionRegistry introspectionRegistry = registry.getExtensionPoint(IntrospectionRegistry.class);
         ImplementationProcessorExtension[] extensions = new ImplementationProcessorExtension[] {new ConstructorProcessor(),
                                                                                                 new AllowsPassByReferenceProcessor(),
@@ -85,11 +90,15 @@
         };
         for (ImplementationProcessorExtension e : extensions) {
             e.setRegistry(introspectionRegistry);
+            e.setInterfaceProcessorRegistry(javaInterfaceProcessorRegistry);
             introspectionRegistry.registerProcessor(e);
         }
-        
-        StAXArtifactProcessorRegistry artifactProcessorRegistry = registry.getExtensionPoint(StAXArtifactProcessorRegistry.class);
-        artifactProcessorRegistry.addArtifactProcessor(new JavaImplementationProcessor());
+
+        StAXArtifactProcessorRegistry artifactProcessorRegistry = registry
+            .getExtensionPoint(StAXArtifactProcessorRegistry.class);
+        JavaImplementationProcessor javaImplementationProcessor = new JavaImplementationProcessor();
+        javaImplementationProcessor.setIntrospectionRegistry(introspectionRegistry);
+        artifactProcessorRegistry.addArtifactProcessor(javaImplementationProcessor);
 
         BuilderRegistry builderRegistry = registry.getExtensionPoint(BuilderRegistry.class);
         JavaComponentBuilder builder = new JavaComponentBuilder();
@@ -99,7 +108,6 @@
         builderRegistry.register(JavaImplementation.class, builder);
 
     }
-    
 
     public void stop(ExtensionPointRegistry registry) {
     }

Modified: incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/processor/HeuristicPojoProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/processor/HeuristicPojoProcessor.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/processor/HeuristicPojoProcessor.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-xml/src/main/java/org/apache/tuscany/implementation/java/processor/HeuristicPojoProcessor.java Tue Apr 10 01:00:51 2007
@@ -587,7 +587,7 @@
     }
 
     public org.apache.tuscany.assembly.Service createService(Class<?> interfaze) throws InvalidInterfaceException {
-        org.apache.tuscany.assembly.Service service = factory.createComponentService();
+        org.apache.tuscany.assembly.Service service = factory.createService();
         service.setName(interfaze.getSimpleName());
         interfaceProcessorRegistry.introspect(service, interfaze);
         Interface javaInterface = service.getInterface();

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/DefaultJavaImplementationFactory.java Tue Apr 10 01:00:51 2007
@@ -34,7 +34,7 @@
     }
 
     public JavaImplementation createJavaImplementation() {
-        JavaImplementation javaImplementation = new JavaImplementationImpl();
+        JavaImplementation javaImplementation = new JavaImplementationDefinition();
         return javaImplementation;
     }
 

Modified: incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationDefinition.java?view=diff&rev=527051&r1=527050&r2=527051
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationDefinition.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java/src/main/java/org/apache/tuscany/implementation/java/impl/JavaImplementationDefinition.java Tue Apr 10 01:00:51 2007
@@ -26,12 +26,14 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tuscany.implementation.java.JavaImplementation;
+
 /**
  * A component type specialization for POJO implementations
  *
  * @version $$Rev$$ $$Date$$
  */
-public class JavaImplementationDefinition extends JavaImplementationImpl {
+public class JavaImplementationDefinition extends JavaImplementationImpl implements JavaImplementation {
     private ConstructorDefinition<?> constructorDefinition;
     private Map<Constructor, ConstructorDefinition> constructors = new HashMap<Constructor, ConstructorDefinition>();
     private Method initMethod;



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