Author: jmarino
Date: Fri Oct 6 16:10:24 2006
New Revision: 453804
URL: http://svn.apache.org/viewvc?view=rev&rev=453804
Log:
genericize PropertyObjectFactory
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/PropertyObjectFactory.java
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java?view=diff&rev=453804&r1=453803&r2=453804
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/ComponentLoader.java
Fri Oct 6 16:10:24 2006
@@ -21,6 +21,7 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;
+import java.lang.reflect.Type;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
@@ -186,6 +187,7 @@
return (Implementation<?>) o;
}
+ @SuppressWarnings("unchecked")
protected void loadProperty(XMLStreamReader reader,
DeploymentContext deploymentContext,
ComponentDefinition<?> componentDefinition)
throws XMLStreamException,
@@ -193,28 +195,28 @@
String name = reader.getAttributeValue(null, PROPERTY_NAME_ATTR);
Implementation<?> implementation =
componentDefinition.getImplementation();
ComponentType<?, ?, ?> componentType =
implementation.getComponentType();
- Property<?> property = componentType.getProperties().get(name);
+ Property<Type> property =
(Property<Type>)componentType.getProperties().get(name);
if (property == null) {
throw new UndefinedPropertyException(name);
} else if (OverrideOptions.NO.equals(property.getOverride())) {
throw new NotOverridablePropertyException(name);
}
- PropertyValue<?> propertyValue = null;
+ PropertyValue<Type> propertyValue;
String source = reader.getAttributeValue(null, PROPERTY_SOURCE_ATTR);
String file = reader.getAttributeValue(null, PROPERTY_FILE_ATTR);
if (source != null || file != null) {
- propertyValue = new PropertyValue(name, source, file);
+ propertyValue = new PropertyValue<Type>(name, source, file);
LoaderUtil.skipToEndElement(reader);
} else {
try {
DocumentBuilder documentBuilder =
DOMHelper.newDocumentBuilder();
Document value = StAXUtil.createPropertyValue(reader,
property.getXmlType(), documentBuilder);
- propertyValue = new PropertyValue(name, value);
+ propertyValue = new PropertyValue<Type>(name, value);
} catch (ParserConfigurationException e) {
throw new LoaderException(e);
}
}
- ObjectFactory objectFactory =
propertyFactory.createObjectFactory(property, propertyValue);
+ ObjectFactory<Type> objectFactory =
propertyFactory.createObjectFactory(property, propertyValue);
// propertyValue.setValueFactory(new
SimplePropertyObjectFactory(property, propertyValue.getValue()));
propertyValue.setValueFactory(objectFactory);
componentDefinition.add(propertyValue);
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java?view=diff&rev=453804&r1=453803&r2=453804
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/JNDIPropertyFactory.java
Fri Oct 6 16:10:24 2006
@@ -22,29 +22,29 @@
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import org.apache.tuscany.core.injection.JNDIObjectFactory;
import org.apache.tuscany.spi.ObjectFactory;
import org.apache.tuscany.spi.loader.LoaderException;
import org.apache.tuscany.spi.loader.PropertyObjectFactory;
import org.apache.tuscany.spi.model.Property;
import org.apache.tuscany.spi.model.PropertyValue;
+import org.apache.tuscany.core.injection.JNDIObjectFactory;
+
/**
- * A StAXPropertyFactory that creates property values by looking them up in the
- * default JNDI InitialContext. <p/> This can be used to locate resources in a
- * J2EE environment and inject them as configuration properties. For example,
to
- * access a database a component could write:
- * <code> &at;Property DataSource myDB; </code> and configure with <code>
+ * A StAXPropertyFactory that creates property values by looking them up in
the default JNDI InitialContext. <p/> This
+ * can be used to locate resources in a J2EE environment and inject them as
configuration properties. For example, to
+ * access a database a component could write: <code> &at;Property DataSource
myDB; </code> and configure with <code>
* <properties>
<v:myDb>java:comp/env/jdbc/MyDatabase</v:myDB> </properties>
</code>
- *
+ *
* @version $Rev$ $Date$
*/
public class JNDIPropertyFactory implements PropertyObjectFactory {
- public ObjectFactory createObjectFactory(Property property, PropertyValue
value) throws LoaderException {
+ public <T> ObjectFactory<T> createObjectFactory(Property<T> property,
PropertyValue<T> value)
+ throws LoaderException {
String text = value.getValue().getDocumentElement().getTextContent();
try {
Context context = new InitialContext();
- return new JNDIObjectFactory(context, text);
+ return new JNDIObjectFactory<T>(context, text);
} catch (NamingException e) {
throw new LoaderException(e);
}
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java?view=diff&rev=453804&r1=453803&r2=453804
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
Fri Oct 6 16:10:24 2006
@@ -24,25 +24,26 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-
import javax.xml.stream.XMLStreamException;
-import org.apache.tuscany.core.injection.SingletonObjectFactory;
import org.apache.tuscany.spi.ObjectFactory;
import org.apache.tuscany.spi.loader.LoaderException;
import org.apache.tuscany.spi.loader.PropertyObjectFactory;
import org.apache.tuscany.spi.model.Property;
import org.apache.tuscany.spi.model.PropertyValue;
+import org.apache.tuscany.core.injection.SingletonObjectFactory;
+
/**
* Implementation of StAXPropertyFactory that interprets the XML as
- *
+ *
* @version $Rev$ $Date$
*/
@SuppressWarnings("unchecked")
public class StringParserPropertyFactory implements PropertyObjectFactory {
- public ObjectFactory createObjectFactory(Property property, PropertyValue
value) throws LoaderException {
+ public <T> ObjectFactory<T> createObjectFactory(Property<T> property,
PropertyValue<T> value)
+ throws LoaderException {
String text = value.getValue().getDocumentElement().getTextContent();
return new SingletonObjectFactory(createInstance(text,
property.getJavaType()));
}
@@ -61,7 +62,7 @@
byte[] instance = new byte[text.length() >> 1];
for (int i = 0; i < instance.length; i++) {
instance[i] =
- (byte)(Character.digit(text.charAt(i << 1), 16) << 4 |
Character.digit(text
+ (byte) (Character.digit(text.charAt(i << 1), 16) << 4 |
Character.digit(text
.charAt((i << 1) + 1), 16));
}
return type.cast(instance);
@@ -104,7 +105,7 @@
if (editor != null) {
try {
editor.setAsText(text);
- return (T)editor.getValue();
+ return (T) editor.getValue();
} catch (IllegalArgumentException e) {
// FIXME we should throw something better
throw new LoaderException(e);
@@ -132,7 +133,7 @@
byte[] instance = new byte[text.length() >> 1];
for (int i = 0; i < instance.length; i++) {
instance[i] =
- (byte)(Character.digit(text.charAt(i << 1), 16) << 4 |
Character.digit(text
+ (byte) (Character.digit(text.charAt(i << 1), 16) << 4 |
Character.digit(text
.charAt((i << 1) + 1), 16));
}
return new SingletonObjectFactory<T>(type.cast(instance));
@@ -175,7 +176,7 @@
if (editor != null) {
try {
editor.setAsText(text);
- return new SingletonObjectFactory<T>((T)editor.getValue());
+ return new SingletonObjectFactory<T>((T) editor.getValue());
} catch (IllegalArgumentException e) {
// FIXME we should throw something better
throw new LoaderException(e);
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java?view=diff&rev=453804&r1=453803&r2=453804
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyObjectFactoryImpl.java
Fri Oct 6 16:10:24 2006
@@ -56,7 +56,7 @@
}
@SuppressWarnings("unchecked")
- public ObjectFactory createObjectFactory(Property property, PropertyValue
value) {
+ public <T> ObjectFactory<T> createObjectFactory(Property<T> property,
PropertyValue<T> value) {
if (mediator == null) {
return new SimplePropertyObjectFactory(property, value.getValue());
}
Modified:
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java?view=diff&rev=453804&r1=453803&r2=453804
==============================================================================
---
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java
(original)
+++
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/loader/StringParserPropertyFactoryTestCase.java
Fri Oct 6 16:10:24 2006
@@ -33,7 +33,7 @@
*/
public class StringParserPropertyFactoryTestCase extends TestCase {
- private <T> PropertyValue<T> mock(Class<T> cls, String value) {
+ private <T> PropertyValue<T> mock(String value) {
Document document = EasyMock.createMock(Document.class);
Element element = EasyMock.createMock(Element.class);
EasyMock.expect(document.getDocumentElement()).andReturn(element);
@@ -47,7 +47,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<Integer> property = new Property<Integer>();
property.setJavaType(Integer.class);
- PropertyValue<Integer> propertyValue = mock(Integer.class, "1");
+ PropertyValue<Integer> propertyValue = mock("1");
ObjectFactory<Integer> oFactory =
factory.createObjectFactory(property, propertyValue);
assertEquals(1, oFactory.getInstance().intValue());
}
@@ -56,7 +56,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<Integer> property = new Property<Integer>();
property.setJavaType(Integer.TYPE);
- PropertyValue<Integer> propertyValue = mock(Integer.TYPE, "1");
+ PropertyValue<Integer> propertyValue = mock("1");
ObjectFactory<Integer> oFactory =
factory.createObjectFactory(property, propertyValue);
assertEquals(1, oFactory.getInstance().intValue());
}
@@ -65,7 +65,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<String> property = new Property<String>();
property.setJavaType(String.class);
- PropertyValue<String> propertyValue = mock(String.class, "1");
+ PropertyValue<String> propertyValue = mock("1");
ObjectFactory<String> oFactory = factory.createObjectFactory(property,
propertyValue);
assertEquals("1", oFactory.getInstance());
}
@@ -74,7 +74,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<byte[]> property = new Property<byte[]>();
property.setJavaType(byte[].class);
- PropertyValue<byte[]> propertyValue = mock(byte[].class, "1");
+ PropertyValue<byte[]> propertyValue = mock("1");
ObjectFactory<byte[]> oFactory = factory.createObjectFactory(property,
propertyValue);
byte[] result = oFactory.getInstance();
byte[] expected = "1".getBytes();
@@ -90,7 +90,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<Boolean> property = new Property<Boolean>();
property.setJavaType(Boolean.class);
- PropertyValue<Boolean> propertyValue = mock(Boolean.class, "true");
+ PropertyValue<Boolean> propertyValue = mock("true");
ObjectFactory<Boolean> oFactory =
factory.createObjectFactory(property, propertyValue);
assertTrue(oFactory.getInstance());
}
@@ -99,7 +99,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<Boolean> property = new Property<Boolean>();
property.setJavaType(Boolean.TYPE);
- PropertyValue<Boolean> propertyValue = mock(Boolean.TYPE, "true");
+ PropertyValue<Boolean> propertyValue = mock("true");
ObjectFactory<Boolean> oFactory =
factory.createObjectFactory(property, propertyValue);
assertTrue(oFactory.getInstance());
}
@@ -108,7 +108,7 @@
StringParserPropertyFactory factory = new
StringParserPropertyFactory();
Property<Foo> property = new Property<Foo>();
property.setJavaType(Foo.class);
- PropertyValue<Foo> propertyValue = mock(Foo.class, "test");
+ PropertyValue<Foo> propertyValue = mock("test");
ObjectFactory<Foo> oFactory = factory.createObjectFactory(property,
propertyValue);
assertEquals("test", oFactory.getInstance().getFoo());
}
Modified:
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/PropertyObjectFactory.java
URL:
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/PropertyObjectFactory.java?view=diff&rev=453804&r1=453803&r2=453804
==============================================================================
---
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/PropertyObjectFactory.java
(original)
+++
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/loader/PropertyObjectFactory.java
Fri Oct 6 16:10:24 2006
@@ -24,24 +24,21 @@
/**
* A factory that will create an ObjectFactory for a property
- *
+ *
* @version $Rev$ $Date$
*/
public interface PropertyObjectFactory {
/**
- * Return an ObjectFactory for instances of a property defined in an XML.
- * The ObjectFactory must return instances that can safely be supplied to
- * component implementations. If the instance is mutable and isolation
- * between components is required, then the factory must clone or otherwise
- * protect the implementation from unexpected modifications by other
- * implementation instances.
- *
- * @param property the Property definition that the resulting ObjectFactory
- * must be able to assign to
+ * Return an ObjectFactory for instances of a property defined in an XML.
The ObjectFactory must return instances
+ * that can safely be supplied to component implementations. If the
instance is mutable and isolation between
+ * components is required, then the factory must clone or otherwise
protect the implementation from unexpected
+ * modifications by other implementation instances.
+ *
+ * @param property the Property definition that the resulting
ObjectFactory must be able to assign to
* @param propertyValue The component configuration of the property
- * @return an ObjectFactory that can produce instances that can be assigned
- * to the supplied Property
+ * @return an ObjectFactory that can produce instances that can be
assigned to the supplied Property
* @throws LoaderException if there is a problem creating the ObjectFactory
*/
- ObjectFactory createObjectFactory(Property property, PropertyValue
propertyValue) throws LoaderException;
+ <T> ObjectFactory<T> createObjectFactory(Property<T> property,
PropertyValue<T> propertyValue)
+ throws LoaderException;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]