You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by me...@apache.org on 2007/03/13 00:01:49 UTC

svn commit: r517451 - in /incubator/tuscany/java/sca/kernel: core/src/main/java/org/apache/tuscany/core/builder/physical/ core/src/main/java/org/apache/tuscany/core/component/instancefactory/ core/src/main/java/org/apache/tuscany/core/component/instanc...

Author: meerajk
Date: Mon Mar 12 16:01:48 2007
New Revision: 517451

URL: http://svn.apache.org/viewvc?view=rev&rev=517451
Log:
fixed build error

Added:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/DefaultPhysicalComponentBuilderRegistry.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderException.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderRegistry.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/DefaultIFProviderBuilderRegistry.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveIFProviderDefinitionMarshaller.java
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java
    incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
    incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/PhysicalComponentBuilderRegistry.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/DefaultPhysicalComponentBuilderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/DefaultPhysicalComponentBuilderRegistry.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/DefaultPhysicalComponentBuilderRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/DefaultPhysicalComponentBuilderRegistry.java Mon Mar 12 16:01:48 2007
@@ -29,32 +29,34 @@
 
 /**
  * Default map-based implementation of the physical component builder registry.
- * <p/> TODO may be we can factor out all the registries into a parameterized
- * one.
- * 
+ * <p/>
+ * TODO may be we can factor out all the registries into a parameterized one.
+ *
  * @version $Rev$ $Date$
  */
 public class DefaultPhysicalComponentBuilderRegistry implements PhysicalComponentBuilderRegistry {
 
     // Internal cache
-    private Map<Class<?>, PhysicalComponentBuilder<? extends PhysicalComponentDefinition, ? extends Component>> registry =
-        new ConcurrentHashMap<Class<?>, PhysicalComponentBuilder<? extends PhysicalComponentDefinition, ? extends Component>>();
+    private Map<Class<?>,
+        PhysicalComponentBuilder<? extends PhysicalComponentDefinition, ? extends Component>> registry =
+        new ConcurrentHashMap<Class<?>,
+            PhysicalComponentBuilder<? extends PhysicalComponentDefinition, ? extends Component>>();
 
     /**
      * Registers a physical component builder.
-     * 
-     * @param <PCD> Type of the physical component definition.
+     *
+     * @param <PCD>           Type of the physical component definition.
      * @param definitionClass Class of the physical component definition.
-     * @param builder Builder for the physical component definition.
+     * @param builder         Builder for the physical component definition.
      */
-    public <PCD extends PhysicalComponentDefinition> void register(Class<PCD> definitionClass,
-                                                                   PhysicalComponentBuilder<PCD, ?> builder) {
+    public <PCD extends PhysicalComponentDefinition,
+        C extends Component> void register(Class<?> definitionClass, PhysicalComponentBuilder<PCD, C> builder) {
         registry.put(definitionClass, builder);
     }
 
     /**
      * Builds a physical component from component definition.
-     * 
+     *
      * @param componentDefinition Component definition.
      * @return Component to be built.
      */

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilder.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilder.java Mon Mar 12 16:01:48 2007
@@ -16,5 +16,5 @@
      * @param cl Classloader to use.
      * @return Instance factory provider.
      */
-    IFP build(IFPD ifpd, ClassLoader cl);
+    IFP build(IFPD ifpd, ClassLoader cl) throws IFProviderBuilderException;
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderException.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderException.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderException.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderException.java Mon Mar 12 16:01:48 2007
@@ -9,5 +9,21 @@
  */
 @SuppressWarnings("serial")
 public class IFProviderBuilderException extends TuscanyException {
+    
+    /**
+     * Initializes the message.
+     * @param message Initializes the message.
+     */
+    public IFProviderBuilderException(String message) {
+        super(message);
+    }
+    
+    /**
+     * Initializes the causer.
+     * @param cause Initializes the cause.
+     */
+    public IFProviderBuilderException(Throwable cause) {
+        super(cause);
+    }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderRegistry.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/IFProviderBuilderRegistry.java Mon Mar 12 16:01:48 2007
@@ -6,23 +6,27 @@
 /**
  * Registry for instance factory builders.
  * 
- * @version $Revision$ $Date$
+ * @version $Revision$ $Date: 2007-03-12 22:26:18 +0000 (Mon, 12 Mar
+ *          2007) $
  */
 public interface IFProviderBuilderRegistry {
 
     /**
-     * 
      * Registers an instance factory provider builder.
      * 
      * @param ifpdClass Instance factory provider definition class.
      * @param builder Instance factory provider builder.
      */
-    <IFPD extends InstanceFactoryProviderDefinition> void register(Class<IFPD> ifpdClass, IFProviderBuilder<?, IFPD> builder);
-    
+    <IFPD extends InstanceFactoryProviderDefinition> void register(Class<IFPD> ifpdClass,
+                                                                   IFProviderBuilder<?, IFPD> builder);
+
     /**
      * Builds an instnace factory provider from a definition.
+     * 
      * @param providerDefinition Provider definition.
+     * @param cl Clasloader to use.
      * @return Instance factory provider.
      */
-    InstanceFactoryProvider build(InstanceFactoryProviderDefinition providerDefinition);
+    InstanceFactoryProvider build(InstanceFactoryProviderDefinition providerDefinition, ClassLoader cl)
+        throws IFProviderBuilderException;
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/DefaultIFProviderBuilderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/DefaultIFProviderBuilderRegistry.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/DefaultIFProviderBuilderRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/DefaultIFProviderBuilderRegistry.java Mon Mar 12 16:01:48 2007
@@ -5,11 +5,9 @@
 
 import org.apache.tuscany.core.component.InstanceFactoryProvider;
 import org.apache.tuscany.core.component.instancefactory.IFProviderBuilder;
+import org.apache.tuscany.core.component.instancefactory.IFProviderBuilderException;
 import org.apache.tuscany.core.component.instancefactory.IFProviderBuilderRegistry;
-import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
-import org.apache.tuscany.spi.component.Component;
 import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
-import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
 
 /**
  * Default implementation of the registry.
@@ -23,11 +21,22 @@
         new ConcurrentHashMap<Class<?>, IFProviderBuilder<? extends InstanceFactoryProvider, ? extends InstanceFactoryProviderDefinition>>();
 
     /**
-     * Builds the IF provider.
+     * Builds an instnace factory provider from a definition.
+     * 
+     * @param providerDefinition Provider definition.
+     * @param cl Clasloader to use.
+     * @return Instance factory provider.
      */
-    public InstanceFactoryProvider build(InstanceFactoryProviderDefinition providerDefinition) {
+    @SuppressWarnings("unchecked")
+    public InstanceFactoryProvider build(InstanceFactoryProviderDefinition providerDefinition, ClassLoader cl)
+        throws IFProviderBuilderException {
+        
+        IFProviderBuilder builder = registry.get(providerDefinition.getClass());
+        if(builder == null) {
+            throw new IFProviderBuilderException("No registered builder for " + providerDefinition.getClass());
+        }
         // TODO Auto-generated method stub
-        return null;
+        return builder.build(providerDefinition, cl);
     }
 
     /**

Added: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java?view=auto&rev=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java Mon Mar 12 16:01:48 2007
@@ -0,0 +1,73 @@
+package org.apache.tuscany.core.component.instancefactory.impl;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.tuscany.core.component.ReflectiveInstanceFactoryProvider;
+import org.apache.tuscany.core.component.instancefactory.IFProviderBuilderException;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSite;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSiteType;
+import org.apache.tuscany.core.model.physical.instancefactory.ReflectiveIFProviderDefinition;
+
+/**
+ * IF provider builder for reflective IF provider.
+ */
+public class ReflectiveIFProviderBuilder extends
+    AbstractIFProviderBuilder<ReflectiveInstanceFactoryProvider, ReflectiveIFProviderDefinition> {
+
+    @Override
+    protected Class<ReflectiveIFProviderDefinition> getIfpdClass() {
+        return ReflectiveIFProviderDefinition.class;
+    }
+
+    public ReflectiveInstanceFactoryProvider build(ReflectiveIFProviderDefinition ifpd, ClassLoader cl) throws IFProviderBuilderException {
+        
+        try {
+            
+            Class implClass = cl.loadClass(ifpd.getImplementationClass());
+            
+            Class[] ctrArgs = new Class[ifpd.getConstructorArguments().size()];
+            int i = 0;
+            for(String ctrArgClass : ifpd.getConstructorArguments()) {
+                ctrArgs[i++] = cl.loadClass(ctrArgClass);
+            }
+            Constructor ctr = implClass.getDeclaredConstructor(ctrArgs);
+            
+            Method initMethod = null;
+            String initMethodName = ifpd.getInitMethod();
+            if(initMethodName != null) {
+                initMethod = implClass.getDeclaredMethod(initMethodName);
+            }
+            
+            Method destroyMethod = null;
+            String destroyMethodName = ifpd.getDestroyMethod();
+            if(destroyMethod != null) {
+                destroyMethod = implClass.getDeclaredMethod(destroyMethodName);
+            }
+            
+            List<URI> ctrInjectSites = ifpd.getConstructorNames();
+            
+            Map<URI, Member> injectionSites = new HashMap<URI, Member>();
+            for(InjectionSite injectionSite : ifpd.getInjectionSites()) {
+                if(injectionSite.getType() == InjectionSiteType.FIELD) {
+                } else if(injectionSite.getType() == InjectionSiteType.METHOD) {
+                    
+                }
+            }
+            
+            // TODO Auto-generated method stub
+            return null;
+            
+        } catch(ClassNotFoundException ex) {
+            throw new IFProviderBuilderException(ex);
+        } catch (NoSuchMethodException ex) {
+            throw new IFProviderBuilderException(ex);
+        }
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/instancefactory/impl/ReflectiveIFProviderBuilder.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveIFProviderDefinitionMarshaller.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveIFProviderDefinitionMarshaller.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveIFProviderDefinitionMarshaller.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/marshaller/extensions/instancefactory/ReflectiveIFProviderDefinitionMarshaller.java Mon Mar 12 16:01:48 2007
@@ -74,6 +74,9 @@
     
     // Injection site URI
     public static final String INJECTION_SITE_URI = "uri";
+    
+    // Injection site name
+    public static final String INJECTION_SITE_NAME = "name";
 
     // QName for the root element
     private static final QName QNAME =
@@ -103,6 +106,7 @@
             } else if(INJECTION_SITE.equals(name)) {
                 InjectionSite injectionSite = new InjectionSite();
                 injectionSite.setType(InjectionSiteType.valueOf(reader.getAttributeValue(null, INJECTION_SITE_TYPE)));
+                injectionSite.setName(reader.getAttributeValue(null, INJECTION_SITE_NAME));
                 injectionSite.setInjectionClass(reader.getAttributeValue(null, INJECTION_SITE_CLASS));
                 injectionSite.setUri(new URI(reader.getAttributeValue(null, INJECTION_SITE_URI)));
                 modelObject.addInjectionSite(injectionSite);
@@ -154,6 +158,7 @@
             for(InjectionSite injectionSite : modelObject.getInjectionSites()) {
                 writer.writeStartElement(QNAME.getPrefix(), INJECTION_SITE, QNAME.getNamespaceURI());
                 writer.writeAttribute(INJECTION_SITE_TYPE, injectionSite.getType().name());
+                writer.writeAttribute(INJECTION_SITE_NAME, injectionSite.getName());
                 writer.writeAttribute(INJECTION_SITE_CLASS, injectionSite.getInjectionClass());
                 writer.writeAttribute(INJECTION_SITE_URI, injectionSite.getUri().toASCIIString());
                 writer.writeEndElement();

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSite.java Mon Mar 12 16:01:48 2007
@@ -34,6 +34,9 @@
     
     // URI
     private URI uri;
+    
+    // Name
+    private String name;
 
     /**
      * Gets the class of the injected reference.
@@ -81,6 +84,22 @@
      */
     public void setUri(URI uri) {
         this.uri = uri;
+    }
+
+    /**
+     * Gets the name.
+     * @return Name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name.
+     * @param name Name.
+     */
+    public void setName(String name) {
+        this.name = name;
     }
 
 }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/marshall/javaChangeSet.xml Mon Mar 12 16:01:48 2007
@@ -40,8 +40,8 @@
 			<reflect:constructorArgument>java.lang.Long</reflect:constructorArgument>
 			<reflect:constructorInjectionName>xy#z</reflect:constructorInjectionName>
 			<reflect:constructorInjectionName>ab#c</reflect:constructorInjectionName>
-			<reflect:injectionSite type="FIELD" class="com.acme.Bar" uri="A#B"/>
-			<reflect:injectionSite type="METHOD" class="com.acme.Bar" uri="D#E"/>
+			<reflect:injectionSite type="FIELD" class="com.acme.Bar" uri="A#B" name="abc"/>
+			<reflect:injectionSite type="METHOD" class="com.acme.Bar" uri="D#E" name="xyz"/>
 		</reflect:instanceFactoryProvider>
 	</java:component>
 	

Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/PhysicalComponentBuilderRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/PhysicalComponentBuilderRegistry.java?view=diff&rev=517451&r1=517450&r2=517451
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/PhysicalComponentBuilderRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/PhysicalComponentBuilderRegistry.java Mon Mar 12 16:01:48 2007
@@ -24,24 +24,25 @@
 
 /**
  * A registry of physical component builders.
- * 
+ *
  * @version $Rev$ $Date$
  */
 public interface PhysicalComponentBuilderRegistry {
 
     /**
      * Registers a physical component builder.
-     * 
-     * @param <PCD> Type of the physical component definition.
+     *
+     * @param <PCD>           Type of the physical component definition.
      * @param definitionClass Class of the physical component definition.
-     * @param builder Builder for the physical component definition.
+     * @param builder         Builder for the physical component definition.
      */
-    <PCD extends PhysicalComponentDefinition> void register(Class<PCD> definitionClass,
-                                                            PhysicalComponentBuilder<PCD, ?> builder);
+    <PCD extends PhysicalComponentDefinition, C extends Component>
+        void register(Class<?> definitionClass,
+                      PhysicalComponentBuilder<PCD, C> builder);
 
     /**
      * Builds a physical component from component definition.
-     * 
+     *
      * @param componentDefinition Component definition.
      * @return Component to be built.
      */



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