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/08/01 08:25:11 UTC

svn commit: r561673 - in /incubator/tuscany/java/sca/modules: core-spi/src/main/java/org/apache/tuscany/sca/core/ core/src/main/java/org/apache/tuscany/sca/core/invocation/ core/src/test/java/org/apache/tuscany/sca/core/ host-embedded/src/main/java/org...

Author: rfeng
Date: Tue Jul 31 23:25:09 2007
New Revision: 561673

URL: http://svn.apache.org/viewvc?view=rev&rev=561673
Log:
Apply the patch for TUSCANY-1492. I made some changes so that the Cglib proxy is packaged in the implementation-java-runtime.

Added:
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java   (with props)
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java   (with props)
Modified:
    incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKProxyService.java
    incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactory.java
    incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistryTestCase.java
    incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
    incubator/tuscany/java/sca/modules/implementation-java-runtime/pom.xml
    incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java
    incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringModuleActivator.java

Modified: incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java (original)
+++ incubator/tuscany/java/sca/modules/core-spi/src/main/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistry.java Tue Jul 31 23:25:09 2007
@@ -19,15 +19,17 @@
 
 package org.apache.tuscany.sca.core;
 
+import java.lang.reflect.Modifier;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
-
+import java.util.Set;
 
 /**
- * Default implementation of a registry to hold all the Tuscany core extension 
- * points. As the point of contact for all extension artifacts this registry 
- * allows loaded extensions to find all other parts of the system and 
- * register themselves appropriately. 
+ * Default implementation of a registry to hold all the Tuscany core extension
+ * points. As the point of contact for all extension artifacts this registry
+ * allows loaded extensions to find all other parts of the system and register
+ * themselves appropriately.
  * 
  * @version $Rev$ $Date$
  */
@@ -37,17 +39,19 @@
     /**
      * Add an extension point to the registry. This default implementation
      * stores extensions against the interfaces that they implement.
+     * 
      * @param extensionPoint The instance of the extension point
-     */    
+     */
     public void addExtensionPoint(Object extensionPoint) {
-        Class[] interfaces = extensionPoint.getClass().getInterfaces();
-        for (int i = 0; i < interfaces.length; i++) {
-            extensionPoints.put(interfaces[i], extensionPoint);
+        Set<Class> interfaces = getAllInterfaces(extensionPoint.getClass());
+        for (Class i : interfaces) {
+            extensionPoints.put(i, extensionPoint);
         }
     }
 
     /**
      * Get the extension point by the interface that it implements
+     * 
      * @param extensionPointType The lookup key (extension point interface)
      * @return The instance of the extension point
      */
@@ -57,12 +61,41 @@
 
     /**
      * Remove an extension point based on the interface that it implements
+     * 
      * @param extensionPoint The extension point to remove
      */
     public void removeExtensionPoint(Object extensionPoint) {
-        Class[] interfaces = extensionPoint.getClass().getInterfaces();
-        for (int i = 0; i < interfaces.length; i++) {
-            extensionPoints.remove(interfaces[i]);
+        Set<Class> interfaces = getAllInterfaces(extensionPoint.getClass());
+        for (Class i : interfaces) {
+            extensionPoints.remove(i);
+        }
+    }
+
+    /**
+     * Returns the set of interfaces implemented by the given class and its
+     * ancestors or a blank set if none
+     */
+    private static Set<Class> getAllInterfaces(Class clazz) {
+        Set<Class> implemented = new HashSet<Class>();
+        getAllInterfaces(clazz, implemented);
+        return implemented;
+    }
+
+    private static void getAllInterfaces(Class clazz, Set<Class> implemented) {
+        Class[] interfaces = clazz.getInterfaces();
+        for (Class interfaze : interfaces) {
+            String name = interfaze.getName();
+            if (name.startsWith("java.") || name.startsWith("javax.")) {
+                continue;
+            }
+            if (Modifier.isPublic(interfaze.getModifiers())) {
+                implemented.add(interfaze);
+            }
+        }
+        Class<?> superClass = clazz.getSuperclass();
+        // Object has no superclass so check for null
+        if (superClass != null && !superClass.equals(Object.class)) {
+            getAllInterfaces(superClass, implemented);
         }
     }
 

Added: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java?view=auto&rev=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java Tue Jul 31 23:25:09 2007
@@ -0,0 +1,150 @@
+/*
+ * 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.sca.core.invocation;
+
+import java.util.List;
+
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
+import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.Conversation;
+
+public class DefaultProxyFactoryExtensionPoint implements ProxyFactoryExtensionPoint {
+    private InterfaceContractMapper interfaceContractMapper;
+    private MessageFactory messageFactory;
+    
+    private ProxyFactory interfaceFactory;
+    private ProxyFactory classFactory;
+
+    public DefaultProxyFactoryExtensionPoint() {
+        this(new MessageFactoryImpl(), new InterfaceContractMapperImpl());
+    }
+
+    public DefaultProxyFactoryExtensionPoint(MessageFactory messageFactory, InterfaceContractMapper mapper) {
+        this.interfaceContractMapper = mapper;
+        this.messageFactory = messageFactory;
+        interfaceFactory = new JDKProxyService(messageFactory, mapper);
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint#getClassProxyFactory()
+     */
+    public ProxyFactory getClassProxyFactory() {
+        return classFactory;
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint#getInterfaceProxyFactory()
+     */
+    public ProxyFactory getInterfaceProxyFactory() {
+        return interfaceFactory;
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint#setClassProxyFactory(org.apache.tuscany.sca.core.invocation.ProxyFactory)
+     */
+    public void setClassProxyFactory(ProxyFactory factory) {
+        this.classFactory = factory;
+
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint#setInterfaceProxyFactory(org.apache.tuscany.sca.core.invocation.ProxyFactory)
+     */
+    public void setInterfaceProxyFactory(ProxyFactory factory) {
+        this.interfaceFactory = factory;
+
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#cast(java.lang.Object)
+     */
+    public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
+        if (interfaceFactory.isProxyClass(target.getClass())) {
+            return (R) interfaceFactory.cast(target);
+        } else if (classFactory != null && classFactory.isProxyClass(target.getClass())) {
+            return (R) classFactory.cast(target);
+        } else {
+            throw new IllegalArgumentException("The target is not a callable proxy");
+        }
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#createCallbackProxy(java.lang.Class,
+     *      java.util.List)
+     */
+    public Object createCallbackProxy(Class<?> interfaze, List<RuntimeWire> wires) throws ProxyCreationException {
+        if (interfaze.isInterface()) {
+            return interfaceFactory.createCallbackProxy(interfaze, wires);
+        } else {
+            return classFactory.createCallbackProxy(interfaze, wires);
+        }
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#createProxy(java.lang.Class,
+     *      org.apache.tuscany.sca.runtime.RuntimeWire,
+     *      org.osoa.sca.Conversation)
+     */
+    public <T> T createProxy(Class<T> interfaze, RuntimeWire wire, Conversation conversation)
+        throws ProxyCreationException {
+        if (interfaze.isInterface()) {
+            return interfaceFactory.createProxy(interfaze, wire, conversation);
+        } else {
+            return classFactory.createProxy(interfaze, wire, conversation);
+        }
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#createProxy(java.lang.Class,
+     *      org.apache.tuscany.sca.runtime.RuntimeWire)
+     */
+    public <T> T createProxy(Class<T> interfaze, RuntimeWire wire) throws ProxyCreationException {
+        if (interfaze.isInterface()) {
+            return interfaceFactory.createProxy(interfaze, wire);
+        } else {
+            return classFactory.createProxy(interfaze, wire);
+        }
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#isProxyClass(java.lang.Class)
+     */
+    public boolean isProxyClass(Class<?> clazz) {
+        return interfaceFactory.isProxyClass(clazz) || (classFactory != null && classFactory.isProxyClass(clazz));
+    }
+
+    /**
+     * @return the interfaceContractMapper
+     */
+    public InterfaceContractMapper getInterfaceContractMapper() {
+        return interfaceContractMapper;
+    }
+
+    /**
+     * @return the messageFactory
+     */
+    public MessageFactory getMessageFactory() {
+        return messageFactory;
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/DefaultProxyFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKProxyService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKProxyService.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKProxyService.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/JDKProxyService.java Tue Jul 31 23:25:09 2007
@@ -85,4 +85,11 @@
         //        }
 
     }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#isProxyClass(java.lang.Class)
+     */
+    public boolean isProxyClass(Class<?> clazz) {
+        return Proxy.isProxyClass(clazz);
+    }
 }

Modified: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactory.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactory.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactory.java Tue Jul 31 23:25:09 2007
@@ -68,5 +68,12 @@
      * @throws IllegalArgumentException if the object supplied is not a proxy
      */
     <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException;
+    
+    /**
+     * Test if a given class is a generated proxy class by this factory
+     * @param clazz A java class or interface
+     * @return true if the class is a generated proxy class by this factory 
+     */
+    boolean isProxyClass(Class<?> clazz);
 
 }

Added: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java?view=auto&rev=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java (added)
+++ incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java Tue Jul 31 23:25:09 2007
@@ -0,0 +1,58 @@
+/*
+ * 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.sca.core.invocation;
+
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+
+/**
+ * The extension point to plug in proxy factories
+ * @version $Rev$ $Date$
+ */
+public interface ProxyFactoryExtensionPoint extends ProxyFactory {
+    /**
+     * Get the proxy factory for java interfaces
+     * @return
+     */
+    ProxyFactory getInterfaceProxyFactory();
+
+    /**
+     * Get the proxy factory for java classes
+     * @return
+     */
+    ProxyFactory getClassProxyFactory();
+
+    /**
+     * Set the proxy factory for java interfaces
+     * @param factory
+     */
+    void setInterfaceProxyFactory(ProxyFactory factory);
+
+    /**
+     * Set the proxy factory for java classes
+     * @param factory
+     */
+    void setClassProxyFactory(ProxyFactory factory);
+    
+    /**
+     * @return the interfaceContractMapper
+     */
+    InterfaceContractMapper getInterfaceContractMapper();
+
+}

Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/core/src/main/java/org/apache/tuscany/sca/core/invocation/ProxyFactoryExtensionPoint.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistryTestCase.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistryTestCase.java (original)
+++ incubator/tuscany/java/sca/modules/core/src/test/java/org/apache/tuscany/sca/core/DefaultExtensionPointRegistryTestCase.java Tue Jul 31 23:25:09 2007
@@ -37,7 +37,7 @@
         assertNull(registry.getExtensionPoint(MyRegistry.class));
     }
 
-    private static interface MyRegistry {
+    public static interface MyRegistry {
         void doSomething();
     }
 

Modified: incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java (original)
+++ incubator/tuscany/java/sca/modules/host-embedded/src/main/java/org/apache/tuscany/sca/host/embedded/impl/ReallySmallRuntimeBuilder.java Tue Jul 31 23:25:09 2007
@@ -82,8 +82,8 @@
 import org.apache.tuscany.sca.contribution.service.impl.PackageTypeDescriberImpl;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.invocation.ExtensibleWireProcessor;
-import org.apache.tuscany.sca.core.invocation.JDKProxyService;
 import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.core.invocation.DefaultProxyFactoryExtensionPoint;
 import org.apache.tuscany.sca.core.runtime.ActivationException;
 import org.apache.tuscany.sca.core.runtime.CompositeActivator;
 import org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl;
@@ -110,10 +110,11 @@
 
 public class ReallySmallRuntimeBuilder {
 
-    public static ProxyFactory createProxyFactory(ExtensionPointRegistry registry, InterfaceContractMapper mapper, MessageFactory messageFactory) {
+    public static ProxyFactory createProxyFactory(ExtensionPointRegistry registry,
+                                                  InterfaceContractMapper mapper,
+                                                  MessageFactory messageFactory) {
 
-        // Create a proxy factory
-        ProxyFactory proxyFactory = new JDKProxyService(messageFactory, mapper);
+        ProxyFactory proxyFactory = new DefaultProxyFactoryExtensionPoint(messageFactory, mapper);
 
         // FIXME Pass these around differently as they are not extension points
         registry.addExtensionPoint(proxyFactory);
@@ -141,11 +142,11 @@
 
         // Add the SCABindingProcessor extension
         PolicyFactory policyFactory = registry.getExtensionPoint(PolicyFactory.class);
-        SCABindingProcessor scaBindingProcessor = new SCABindingProcessor(assemblyFactory,
-                                                                          policyFactory,
-                                                                          scaBindingFactory);
-        StAXArtifactProcessorExtensionPoint processors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
-        processors.addArtifactProcessor(scaBindingProcessor);       
+        SCABindingProcessor scaBindingProcessor =
+            new SCABindingProcessor(assemblyFactory, policyFactory, scaBindingFactory);
+        StAXArtifactProcessorExtensionPoint processors =
+            registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
+        processors.addArtifactProcessor(scaBindingProcessor);
 
         // Create a provider factory extension point
         ProviderFactoryExtensionPoint providerFactories = new DefaultProviderFactoryExtensionPoint();
@@ -153,11 +154,9 @@
         providerFactories.addProviderFactory(new RuntimeSCABindingProviderFactory());
 
         // Create the composite activator
-        CompositeActivator compositeActivator = new CompositeActivatorImpl(
-                                                                           assemblyFactory, scaBindingFactory,
-                                                                           mapper, scopeRegistry,
-                                                                           workScheduler, wireProcessor,
-                                                                           providerFactories);
+        CompositeActivator compositeActivator =
+            new CompositeActivatorImpl(assemblyFactory, scaBindingFactory, mapper, scopeRegistry, workScheduler,
+                                       wireProcessor, providerFactories);
 
         return compositeActivator;
     }
@@ -167,7 +166,7 @@
      * 
      * @throws ActivationException
      */
-    public static ContributionService createContributionService(ClassLoader classLoader, 
+    public static ContributionService createContributionService(ClassLoader classLoader,
                                                                 ExtensionPointRegistry registry,
                                                                 ContributionFactory contributionFactory,
                                                                 AssemblyFactory assemblyFactory,
@@ -182,16 +181,18 @@
         registry.addExtensionPoint(staxProcessors);
 
         // Create and register STAX processors for SCA assembly XML
-        ExtensibleStAXArtifactProcessor staxProcessor = 
+        ExtensibleStAXArtifactProcessor staxProcessor =
             new ExtensibleStAXArtifactProcessor(staxProcessors, xmlFactory, XMLOutputFactory.newInstance());
-        staxProcessors.addArtifactProcessor(new CompositeProcessor(contributionFactory, assemblyFactory, policyFactory, mapper, staxProcessor));
+        staxProcessors.addArtifactProcessor(new CompositeProcessor(contributionFactory, assemblyFactory, policyFactory,
+                                                                   mapper, staxProcessor));
         staxProcessors.addArtifactProcessor(new ComponentTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
-        staxProcessors.addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
+        staxProcessors
+            .addArtifactProcessor(new ConstrainingTypeProcessor(assemblyFactory, policyFactory, staxProcessor));
         //Register STAX processors for Contribution Metadata 
-        staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory,contributionFactory, staxProcessor));
+        staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory,
+                                                                              staxProcessor));
         staxProcessors.addArtifactProcessor(new JavaImportProcessor());
-        staxProcessors.addArtifactProcessor(new JavaExportProcessor());        
-
+        staxProcessors.addArtifactProcessor(new JavaExportProcessor());
 
         // Create URL artifact processor extension point
         URLArtifactProcessorExtensionPoint documentProcessors = new DefaultURLArtifactProcessorExtensionPoint();
@@ -217,14 +218,15 @@
         // Create Contribution Model Resolver extension point
         ModelResolverExtensionPoint modelResolverExtensionPoint = new DefaultModelResolverExtensionPoint();
         registry.addExtensionPoint(modelResolverExtensionPoint);
-        
+
         modelResolverExtensionPoint.addResolver(Composite.class, CompositeModelResolver.class);
         modelResolverExtensionPoint.addResolver(ConstrainingType.class, ConstrainingTypeModelResolver.class);
         modelResolverExtensionPoint.addResolver(ClassReference.class, ClassReferenceModelResolver.class);
-        
+
         //FIXME Deprecate and remove this
         //Create contribution postProcessor extension point
-        DefaultContributionPostProcessorExtensionPoint contributionPostProcessors = new DefaultContributionPostProcessorExtensionPoint();
+        DefaultContributionPostProcessorExtensionPoint contributionPostProcessors =
+            new DefaultContributionPostProcessorExtensionPoint();
         ContributionPostProcessor postProcessor = new ExtensibleContributionPostProcessor(contributionPostProcessors);
         registry.addExtensionPoint(contributionPostProcessors);
 
@@ -241,22 +243,21 @@
         }
 
         ExtensibleURLArtifactProcessor documentProcessor = new ExtensibleURLArtifactProcessor(documentProcessors);
-        
-        ContributionService contributionService = new ContributionServiceImpl(repository, packageProcessor,
-                                                                              documentProcessor, staxProcessor, postProcessor, 
-                                                                              modelResolverExtensionPoint, assemblyFactory,
-                                                                              contributionFactory, xmlFactory);
+
+        ContributionService contributionService =
+            new ContributionServiceImpl(repository, packageProcessor, documentProcessor, staxProcessor, postProcessor,
+                                        modelResolverExtensionPoint, assemblyFactory, contributionFactory, xmlFactory);
         return contributionService;
     }
 
     public static ScopeRegistry createScopeRegistry(ExtensionPointRegistry registry) {
         ScopeRegistry scopeRegistry = new ScopeRegistryImpl();
-        ScopeContainerFactory[] factories = new ScopeContainerFactory[] {new CompositeScopeContainerFactory(),
-                                                                         new StatelessScopeContainerFactory(),
-                                                                         new RequestScopeContainerFactory(),
-         new ConversationalScopeContainerFactory(null),
-        // new HttpSessionScopeContainer(monitor)
-        };
+        ScopeContainerFactory[] factories =
+            new ScopeContainerFactory[] {new CompositeScopeContainerFactory(), new StatelessScopeContainerFactory(),
+                                         new RequestScopeContainerFactory(),
+                                         new ConversationalScopeContainerFactory(null),
+            // new HttpSessionScopeContainer(monitor)
+            };
         for (ScopeContainerFactory f : factories) {
             scopeRegistry.register(f);
         }
@@ -309,11 +310,11 @@
             if (reader != null) {
                 reader.close();
             }
-            
-            if (is != null){
+
+            if (is != null) {
                 try {
                     is.close();
-                } catch( IOException ioe) {
+                } catch (IOException ioe) {
                     //ignore
                 }
             }
@@ -338,11 +339,12 @@
     /**
      * Parse a service declaration in the form class;attr=value,attr=value and
      * return a map of attributes
+     * 
      * @param declaration
      * @return a map of attributes
      */
     public static Map<String, String> parseServiceDeclaration(String declaration) {
-        Map<String, String> attributes = new HashMap<String, String>(); 
+        Map<String, String> attributes = new HashMap<String, String>();
         StringTokenizer tokens = new StringTokenizer(declaration);
         String className = tokens.nextToken(";");
         if (className != null) {

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/pom.xml?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/pom.xml Tue Jul 31 23:25:09 2007
@@ -38,31 +38,36 @@
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-interface</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
-        </dependency>        
+        </dependency>
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-assembly-xml</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
-        </dependency>        
+        </dependency>
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-implementation-java</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
-        </dependency>        
+        </dependency>
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-implementation-java-xml</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
-        </dependency>                        
+        </dependency>
         <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-contribution-impl</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
         </dependency>
-	<dependency>
+        <dependency>
             <groupId>org.apache.tuscany.sca</groupId>
             <artifactId>tuscany-databinding</artifactId>
             <version>1.0-incubating-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>cglib</groupId>
+            <artifactId>cglib</artifactId>
+            <version>2.1_3</version>
+        </dependency>        
     </dependencies>
 </project>

Added: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java?view=auto&rev=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java (added)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java Tue Jul 31 23:25:09 2007
@@ -0,0 +1,118 @@
+/*
+ * 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.sca.implementation.java.invocation;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+import net.sf.cglib.proxy.Enhancer;
+import net.sf.cglib.proxy.Factory;
+import net.sf.cglib.proxy.MethodInterceptor;
+import net.sf.cglib.proxy.MethodProxy;
+
+import org.apache.tuscany.sca.core.invocation.JDKCallbackInvocationHandler;
+import org.apache.tuscany.sca.core.invocation.JDKInvocationHandler;
+import org.apache.tuscany.sca.core.invocation.MessageFactoryImpl;
+import org.apache.tuscany.sca.core.invocation.ProxyCreationException;
+import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.interfacedef.InterfaceContractMapper;
+import org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl;
+import org.apache.tuscany.sca.invocation.MessageFactory;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
+import org.osoa.sca.CallableReference;
+import org.osoa.sca.Conversation;
+
+/**
+ * The implementation of a wire service that uses cglib dynamic proxies
+ * 
+ * @version $Rev$ $Date$
+ */
+@SuppressWarnings("unused")
+public class CglibProxyFactory implements ProxyFactory {
+    private InterfaceContractMapper contractMapper;
+    private MessageFactory messageFactory;
+
+    public CglibProxyFactory() {
+        this(new MessageFactoryImpl(), new InterfaceContractMapperImpl());
+    }
+
+    public CglibProxyFactory(MessageFactory messageFactory, InterfaceContractMapper mapper) {
+        this.contractMapper = mapper;
+        this.messageFactory = messageFactory;
+
+    }
+
+    public <T> T createProxy(Class<T> interfaze, RuntimeWire wire) throws ProxyCreationException {
+        return createProxy(interfaze, wire, null);
+    }
+
+    /**
+     * create the proxy with cglib. use the same JDKInvocationHandler as
+     * JDKProxyService.
+     */
+    public <T> T createProxy(final Class<T> interfaze, final RuntimeWire wire, final Conversation conversation)
+        throws ProxyCreationException {
+        Enhancer enhancer = new Enhancer();
+        enhancer.setSuperclass(interfaze);
+        enhancer.setCallback(new MethodInterceptor() {
+            public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
+                throws Throwable {
+                JDKInvocationHandler invocationHandler = new JDKInvocationHandler(messageFactory, interfaze, wire);
+                invocationHandler.setConversation(conversation);
+                Object result = invocationHandler.invoke(proxy, method, args);
+                return result;
+            }
+        });
+        Object proxy = enhancer.create();
+        return interfaze.cast(proxy);
+    }
+
+    /**
+     * create the callback proxy with cglib. use the same
+     * JDKCallbackInvocationHandler as JDKProxyService.
+     */
+    public Object createCallbackProxy(Class<?> interfaze, final List<RuntimeWire> wires) throws ProxyCreationException {
+        Enhancer enhancer = new Enhancer();
+        enhancer.setSuperclass(interfaze);
+        enhancer.setCallback(new MethodInterceptor() {
+            public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy)
+                throws Throwable {
+                JDKCallbackInvocationHandler invocationHandler =
+                    new JDKCallbackInvocationHandler(messageFactory, wires);
+                Object result = invocationHandler.invoke(proxy, method, args);
+                return result;
+            }
+        });
+        Object proxy = enhancer.create();
+        return interfaze.cast(proxy);
+    }
+
+    public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
+        throw new UnsupportedOperationException();
+    }
+
+    /**
+     * @see org.apache.tuscany.sca.core.invocation.ProxyFactory#isProxyClass(java.lang.Class)
+     */
+    public boolean isProxyClass(Class<?> clazz) {
+        return Factory.class.isAssignableFrom(clazz);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/invocation/CglibProxyFactory.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-java-runtime/src/main/java/org/apache/tuscany/sca/implementation/java/module/JavaRuntimeModuleActivator.java Tue Jul 31 23:25:09 2007
@@ -27,8 +27,7 @@
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ModelFactoryExtensionPoint;
 import org.apache.tuscany.sca.core.ModuleActivator;
-import org.apache.tuscany.sca.core.invocation.JDKProxyService;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint;
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.databinding.TransformerExtensionPoint;
 import org.apache.tuscany.sca.databinding.impl.MediatorImpl;
@@ -57,6 +56,7 @@
 import org.apache.tuscany.sca.implementation.java.introspect.impl.ResourceProcessor;
 import org.apache.tuscany.sca.implementation.java.introspect.impl.ScopeProcessor;
 import org.apache.tuscany.sca.implementation.java.introspect.impl.ServiceProcessor;
+import org.apache.tuscany.sca.implementation.java.invocation.CglibProxyFactory;
 import org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationProviderFactory;
 import org.apache.tuscany.sca.implementation.java.xml.JavaImplementationProcessor;
 import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
@@ -64,6 +64,7 @@
 import org.apache.tuscany.sca.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector;
 import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospector;
 import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospectorExtensionPoint;
+import org.apache.tuscany.sca.invocation.MessageFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint;
 
@@ -91,7 +92,9 @@
         
         JavaInterfaceFactory javaFactory = new DefaultJavaInterfaceFactory();
         
-        JDKProxyService proxyFactory = (JDKProxyService) registry.getExtensionPoint(ProxyFactory.class);
+        MessageFactory messageFactory = factories.getFactory(MessageFactory.class);
+        ProxyFactoryExtensionPoint proxyFactory = registry.getExtensionPoint(ProxyFactoryExtensionPoint.class);
+        proxyFactory.setClassProxyFactory(new CglibProxyFactory(messageFactory, proxyFactory.getInterfaceContractMapper()));
         
         JavaInterfaceIntrospectorExtensionPoint interfaceVisitors = registry.getExtensionPoint(JavaInterfaceIntrospectorExtensionPoint.class);
         JavaInterfaceIntrospector interfaceIntrospector = new ExtensibleJavaInterfaceIntrospector(javaFactory, interfaceVisitors);

Modified: incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringModuleActivator.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringModuleActivator.java?view=diff&rev=561673&r1=561672&r2=561673
==============================================================================
--- incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringModuleActivator.java (original)
+++ incubator/tuscany/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringModuleActivator.java Tue Jul 31 23:25:09 2007
@@ -19,29 +19,23 @@
 
 package org.apache.tuscany.sca.implementation.spring;
 
-import java.util.Map;
-
 import org.apache.tuscany.sca.assembly.AssemblyFactory;
 import org.apache.tuscany.sca.assembly.DefaultAssemblyFactory;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint;
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 import org.apache.tuscany.sca.core.ModuleActivator;
-import org.apache.tuscany.sca.core.invocation.JDKProxyService;
-import org.apache.tuscany.sca.core.invocation.ProxyFactory;
+import org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint;
 import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint;
 import org.apache.tuscany.sca.databinding.TransformerExtensionPoint;
-import org.apache.tuscany.sca.databinding.Mediator;
 import org.apache.tuscany.sca.databinding.impl.MediatorImpl;
 import org.apache.tuscany.sca.implementation.java.context.JavaPropertyValueObjectFactory;
 import org.apache.tuscany.sca.implementation.java.introspect.DefaultJavaClassIntrospectorExtensionPoint;
 import org.apache.tuscany.sca.implementation.java.introspect.JavaClassIntrospectorExtensionPoint;
-import org.apache.tuscany.sca.implementation.java.invocation.JavaImplementationProviderFactory;
-
 import org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory;
 import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory;
+import org.apache.tuscany.sca.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector;
 import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospector;
 import org.apache.tuscany.sca.interfacedef.java.introspect.JavaInterfaceIntrospectorExtensionPoint;
-import org.apache.tuscany.sca.interfacedef.java.introspect.ExtensibleJavaInterfaceIntrospector;
 import org.apache.tuscany.sca.policy.DefaultPolicyFactory;
 import org.apache.tuscany.sca.policy.PolicyFactory;
 import org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint;
@@ -80,9 +74,7 @@
      */
     public void start(ExtensionPointRegistry registry) {
 
-        DataBindingExtensionPoint dataBindingRegistry = registry.getExtensionPoint(DataBindingExtensionPoint.class);
-                
-        JDKProxyService proxyFactory = (JDKProxyService) registry.getExtensionPoint(ProxyFactory.class);
+        ProxyFactoryExtensionPoint proxyFactory = registry.getExtensionPoint(ProxyFactoryExtensionPoint.class);
 
         // TODO: could the runtime have a default PropertyValueObjectFactory in the registry
         DataBindingExtensionPoint dataBindings = registry.getExtensionPoint(DataBindingExtensionPoint.class);



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