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