You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by gn...@apache.org on 2009/04/10 15:23:44 UTC
svn commit: r763927 [4/4] - in /geronimo/sandbox/gnodet/blueprint: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/felix/ src/main/java/org/apache/felix/blueprint/
src/main/java/org/apache/felix/bl...
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/ParserTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/ParserTest.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/ParserTest.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/ParserTest.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,113 @@
+package org.apache.felix.blueprint;
+
+import java.net.URL;
+import java.util.Map;
+import java.util.Set;
+import java.util.List;
+
+import junit.framework.TestCase;
+import org.osgi.service.blueprint.reflect.ComponentMetadata;
+import org.osgi.service.blueprint.reflect.LocalComponentMetadata;
+import org.osgi.service.blueprint.reflect.ConstructorInjectionMetadata;
+import org.osgi.service.blueprint.reflect.ParameterSpecification;
+import org.osgi.service.blueprint.reflect.TypedStringValue;
+import org.osgi.service.blueprint.reflect.NullValue;
+import org.osgi.service.blueprint.reflect.ReferenceValue;
+import org.osgi.service.blueprint.reflect.ArrayValue;
+import org.osgi.service.blueprint.reflect.ComponentValue;
+import org.osgi.service.blueprint.namespace.ComponentDefinitionRegistry;
+import org.apache.felix.blueprint.parser.Parser;
+import org.apache.felix.blueprint.reflect.LocalComponentMetadataImpl;
+
+/**
+ * TODO: constructor injection
+ * TODO: Dependency#setMethod
+ */
+public class ParserTest extends TestCase {
+
+ public void testParseComponent() throws Exception {
+ Parser parser = parse("/test-simple-component.xml");
+ ComponentDefinitionRegistry registry = parser.getRegistry();
+ assertNotNull(registry);
+ ComponentMetadata component = registry.getComponentDefinition("pojoA");
+ assertNotNull(component);
+ assertEquals("pojoA", component.getName());
+ Set<String> deps = component.getExplicitDependencies();
+ assertNotNull(deps);
+ assertEquals(2, deps.size());
+ assertTrue(deps.contains("pojoB"));
+ assertTrue(deps.contains("pojoC"));
+ assertTrue(component instanceof LocalComponentMetadata);
+ LocalComponentMetadata local = (LocalComponentMetadata) component;
+ assertEquals("org.apache.felix.blueprint.pojos.PojoA", local.getClassName());
+ ConstructorInjectionMetadata cns = local.getConstructorInjectionMetadata();
+ assertNotNull(cns);
+ List<ParameterSpecification> params = cns.getParameterSpecifications();
+ assertNotNull(params);
+ assertEquals(6, params.size());
+ ParameterSpecification param = params.get(0);
+ assertNotNull(param);
+ assertEquals(0, param.getIndex());
+ assertNull(param.getTypeName());
+ assertNotNull(param.getValue());
+ assertTrue(param.getValue() instanceof TypedStringValue);
+ assertEquals("val0", ((TypedStringValue) param.getValue()).getStringValue());
+ assertNull(((TypedStringValue) param.getValue()).getTypeName());
+ param = params.get(1);
+ assertNotNull(param);
+ assertEquals(2, param.getIndex());
+ assertNull(param.getTypeName());
+ assertNotNull(param.getValue());
+ assertTrue(param.getValue() instanceof ReferenceValue);
+ assertEquals("val1", ((ReferenceValue) param.getValue()).getComponentName());
+ param = params.get(2);
+ assertNotNull(param);
+ assertEquals(1, param.getIndex());
+ assertNull(param.getTypeName());
+ assertNotNull(param.getValue());
+ assertTrue(param.getValue() instanceof NullValue);
+ param = params.get(3);
+ assertNotNull(param);
+ assertEquals(3, param.getIndex());
+ assertEquals("java.lang.String", param.getTypeName());
+ assertNotNull(param.getValue());
+ assertTrue(param.getValue() instanceof TypedStringValue);
+ assertEquals("val3", ((TypedStringValue) param.getValue()).getStringValue());
+ assertNull(((TypedStringValue) param.getValue()).getTypeName());
+ param = params.get(4);
+ assertNotNull(param);
+ assertEquals(4, param.getIndex());
+ assertNull(param.getTypeName());
+ assertNotNull(param.getValue());
+ assertTrue(param.getValue() instanceof ArrayValue);
+ ArrayValue array = (ArrayValue) param.getValue();
+ assertNull(array.getValueType());
+ assertNotNull(array.getArray());
+ assertEquals(3, array.getArray().length);
+ assertTrue(array.getArray()[0] instanceof TypedStringValue);
+ assertTrue(array.getArray()[1] instanceof ComponentValue);
+ assertTrue(array.getArray()[2] instanceof NullValue);
+ param = params.get(5);
+ assertNotNull(param);
+ assertEquals(5, param.getIndex());
+ assertNull(param.getTypeName());
+ assertNotNull(param.getValue());
+ assertTrue(param.getValue() instanceof ReferenceValue);
+ assertEquals("pojoB", ((ReferenceValue) param.getValue()).getComponentName());
+ }
+
+ public void testParse() throws Exception {
+ Parser parser = new Parser();
+ parser.parse(new URL[] { getClass().getResource("/test.xml") });
+ ComponentDefinitionRegistry registry = parser.getRegistry();
+ assertNotNull(registry);
+
+ }
+
+
+ protected Parser parse(String name) throws Exception {
+ Parser parser = new Parser();
+ parser.parse(new URL[] { getClass().getResource(name) });
+ return parser;
+ }
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/convert/ConversionServiceImplTest.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,95 @@
+package org.apache.felix.blueprint.convert;
+
+import java.net.URI;
+import java.net.URL;
+import java.math.BigInteger;
+import java.util.Properties;
+import java.io.ByteArrayOutputStream;
+
+import junit.framework.TestCase;
+import org.osgi.service.blueprint.convert.ConversionService;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Apr 8, 2009
+ * Time: 10:26:20 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ConversionServiceImplTest extends TestCase {
+
+ private ConversionService service;
+
+ protected void setUp() {
+ service = new ConversionServiceImpl();
+ }
+
+ public void testConvertSimpleTypes() throws Exception {
+ assertEquals(123, service.convert("123", int.class));
+ assertEquals(123, service.convert("123", Integer.class));
+ assertEquals(123l, service.convert("123", long.class));
+ assertEquals(123l, service.convert("123", Long.class));
+ assertEquals((short) 123, service.convert("123", short.class));
+ assertEquals((short) 123, service.convert("123", Short.class));
+ assertEquals(1.5f, service.convert("1.5", float.class));
+ assertEquals(1.5f, service.convert("1.5", Float.class));
+ assertEquals(1.5, service.convert("1.5", double.class));
+ assertEquals(1.5, service.convert("1.5", Double.class));
+ }
+
+ public void testConvertCharacter() throws Exception {
+ assertEquals('c', service.convert("c", char.class));
+ assertEquals('c', service.convert("c", Character.class));
+ // TODO: check the following tests
+// assertEquals('\n', service.convert("\\n", char.class));
+// assertEquals('\n', service.convert("\\n", Character.class));
+ }
+
+ public void testConvertBoolean() throws Exception {
+ assertEquals(Boolean.TRUE, service.convert("true", Boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("yes", Boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("on", Boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("TRUE", Boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("YES", Boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("ON", Boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("true", boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("yes", boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("on", boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("TRUE", boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("YES", boolean.class));
+ assertEquals(Boolean.TRUE, service.convert("ON", boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("false", Boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("no", Boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("off", Boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("FALSE", Boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("NO", Boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("OFF", Boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("false", boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("no", boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("off", boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("FALSE", boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("NO", boolean.class));
+ assertEquals(Boolean.FALSE, service.convert("OFF", boolean.class));
+ }
+
+ public void testConvertOther() throws Exception {
+ assertEquals(URI.create("urn:test"), service.convert("urn:test", URI.class));
+ assertEquals(new URL("file://test"), service.convert("file://test", URL.class));
+ assertEquals(new BigInteger("12345"), service.convert("12345", BigInteger.class));
+
+ }
+
+ public void testConvertProperties() throws Exception {
+ Properties props = new Properties();
+ props.setProperty("key", "value");
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ props.store(baos, null);
+ props = (Properties) service.convert(baos.toString(), Properties.class);
+ assertEquals(1, props.size());
+ assertEquals("value", props.getProperty("key"));
+ }
+
+ public void testConvertLocale() throws Exception {
+ // TODO
+ }
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterA.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterA.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterA.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterA.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,19 @@
+package org.apache.felix.blueprint.pojos;
+
+import java.io.File;
+
+import org.osgi.service.blueprint.convert.Converter;
+
+public class ConverterA implements Converter {
+
+ public Object convert(Object source) throws Exception {
+ if (source instanceof String) {
+ return new File((String) source);
+ }
+ throw new Exception("Unable to convert from " + (source != null ? source.getClass().getName() : "<null>") + " to " + File.class.getName());
+ }
+
+ public Class getTargetClass() {
+ return File.class;
+ }
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterB.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterB.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterB.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ConverterB.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,20 @@
+package org.apache.felix.blueprint.pojos;
+
+import java.io.File;
+import java.net.URI;
+
+import org.osgi.service.blueprint.convert.Converter;
+
+public class ConverterB implements Converter {
+
+ public Object convert(Object source) throws Exception {
+ if (source instanceof String) {
+ return new URI((String) source);
+ }
+ throw new Exception("Unable to convert from " + (source != null ? source.getClass().getName() : "<null>") + " to " + URI.class.getName());
+ }
+
+ public Class getTargetClass() {
+ return URI.class;
+ }
+}
\ No newline at end of file
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/InterfaceA.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/InterfaceA.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/InterfaceA.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/InterfaceA.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,11 @@
+package org.apache.felix.blueprint.pojos;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Apr 7, 2009
+ * Time: 9:41:27 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface InterfaceA {
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ListenerA.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ListenerA.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ListenerA.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/ListenerA.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,21 @@
+package org.apache.felix.blueprint.pojos;
+
+import org.osgi.framework.ServiceReference;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Apr 3, 2009
+ * Time: 11:42:58 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ListenerA {
+
+ public void bind(ServiceReference ref) {
+
+ }
+
+ public void unbind(ServiceReference ref) {
+
+ }
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoA.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoA.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoA.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoA.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,28 @@
+package org.apache.felix.blueprint.pojos;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Mar 26, 2009
+ * Time: 6:16:31 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class PojoA implements InterfaceA {
+
+ private PojoB pojob;
+
+ public PojoA() {
+ }
+
+ public PojoA(PojoB pojob) {
+ this.pojob = pojob;
+ }
+
+ public PojoB getPojob() {
+ return pojob;
+ }
+
+ public void setPojob(PojoB pojob) {
+ this.pojob = pojob;
+ }
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoB.java
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoB.java?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoB.java (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/java/org/apache/felix/blueprint/pojos/PojoB.java Fri Apr 10 13:23:41 2009
@@ -0,0 +1,30 @@
+package org.apache.felix.blueprint.pojos;
+
+import java.net.URI;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: gnodet
+ * Date: Mar 26, 2009
+ * Time: 6:16:58 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class PojoB {
+
+ private URI uri;
+
+ public PojoB() {
+ }
+
+ public PojoB(URI uri) {
+ this.uri = uri;
+ }
+
+ public URI getUri() {
+ return uri;
+ }
+
+ public void setUri(URI uri) {
+ this.uri = uri;
+ }
+}
Added: geronimo/sandbox/gnodet/blueprint/src/test/resources/test-simple-component.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/resources/test-simple-component.xml?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/resources/test-simple-component.xml (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/resources/test-simple-component.xml Fri Apr 10 13:23:41 2009
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 ../../main/resources/org/apache/felix/blueprint/blueprint.xsd">
+
+ <component id="pojoA" class="org.apache.felix.blueprint.pojos.PojoA" depends-on=" pojoB , pojoC ,">
+ <constructor-arg value="val0"/>
+ <constructor-arg ref="val1" index="2"/>
+ <constructor-arg index="1">
+ <description>null value</description>
+ <null/>
+ </constructor-arg>
+ <constructor-arg type="java.lang.String">
+ <value>val3</value>
+ </constructor-arg>
+ <constructor-arg>
+ <array>
+ <value>val0</value>
+ <component class="java.lang.String"/>
+ <null/>
+ </array>
+ </constructor-arg>
+ <constructor-arg>
+ <ref component="pojoB"/>
+ </constructor-arg>
+ <property name="prop1" ref="pojoB"/>
+ <property name="prop2" value="value" />
+ <property name="prop3">
+ <description>property</description>
+ <value>val</value>
+ </property>
+ </component>
+
+</components>
\ No newline at end of file
Added: geronimo/sandbox/gnodet/blueprint/src/test/resources/test.xml
URL: http://svn.apache.org/viewvc/geronimo/sandbox/gnodet/blueprint/src/test/resources/test.xml?rev=763927&view=auto
==============================================================================
--- geronimo/sandbox/gnodet/blueprint/src/test/resources/test.xml (added)
+++ geronimo/sandbox/gnodet/blueprint/src/test/resources/test.xml Fri Apr 10 13:23:41 2009
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 ../../main/resources/org/apache/felix/blueprint/blueprint.xsd"
+ default-availability="mandatory">
+
+ <description>
+ This is a parsing test application
+ </description>
+
+ <type-converters>
+ <component class="org.apache.felix.blueprint.pojos.ConverterA"/>
+ <ref component="converterB"/>
+ </type-converters>
+
+ <component id="pojoA" class="org.apache.felix.blueprint.pojos.PojoA">
+ <property name="pojob" ref="pojoB"/>
+ </component>
+
+ <component id="pojoAcns" class="org.apache.felix.blueprint.pojos.PojoA">
+ <constructor-arg ref="pojoB"/>
+ </component>
+
+ <component id="pojoB" class="org.apache.felix.blueprint.pojos.PojoB">
+ <property name="uri" value="urn:myuri"/>
+ </component>
+
+ <component id="pojoBcns" class="org.apache.felix.blueprint.pojos.PojoB">
+ <constructor-arg value="urn:myuri"/>
+ </component>
+
+ <component id="converterB" class="org.apache.felix.blueprint.pojos.ConverterB"/>
+
+ <reference id="refA" filter="(key=prop)" interface="org.apache.felix.blueprint.pojos.InterfaceA"/>
+
+ <reference id="refB" availability="optional">
+ <interfaces>
+ <value>org.apache.felix.blueprint.pojos.InterfaceA</value>
+ </interfaces>
+ <listener ref="listenerA" bind-method="bind" unbind-method="unbind"/>
+ </reference>
+
+ <service interface="org.apache.felix.blueprint.pojos.InterfaceA" ref="pojoA"/>
+
+ <component id="listenerA" class="org.apache.felix.blueprint.pojos.ListenerA"/>
+
+ <ref-list availability="optional" member-type="service-instance"/>
+
+</components>
\ No newline at end of file