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 2006/10/04 23:16:01 UTC

svn commit: r453029 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/property/ test/java/org/apache/tuscany/core/property/ test/resources/org/apache/tuscany/core/property/

Author: rfeng
Date: Wed Oct  4 14:16:00 2006
New Revision: 453029

URL: http://svn.apache.org/viewvc?view=rev&rev=453029
Log:
Add some test cases for the property loading

Added:
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java   (with props)
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/
    incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml   (with props)
Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java?view=diff&rev=453029&r1=453028&r2=453029
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/property/PropertyHelper.java Wed Oct  4 14:16:00 2006
@@ -105,7 +105,12 @@
                 try {
                     // $<name>/...
                     int index = source.indexOf('/');
-                    if (index != -1 && source.charAt(0) == '$') {
+                    if (index == -1) {
+                        // Tolerating $prop
+                        source = source + "/";
+                        index = source.length() - 1;
+                    }
+                    if (source.charAt(0) == '$') {
                         String name = source.substring(1, index);
                         Property<?> compositeProp = parent.getProperties().get(name);
                         if (compositeProp == null) {

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java?view=auto&rev=453029
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java Wed Oct  4 14:16:00 2006
@@ -0,0 +1,100 @@
+/*
+ * 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.core.property;
+
+import java.net.URL;
+
+import javax.xml.namespace.NamespaceContext;
+
+import org.apache.tuscany.core.databinding.xml.String2Node;
+import org.apache.tuscany.core.property.PropertyHelper;
+import org.apache.tuscany.spi.deployer.DeploymentContext;
+import org.easymock.EasyMock;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ */
+public class PropertyHelperTestCase extends TestCase {
+    private static final String IPO_XML =
+        "<?xml version=\"1.0\"?>" + "<ipo:purchaseOrder"
+            + "  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+            + "  xmlns:ipo=\"http://www.example.com/IPO\""
+            + "  xsi:schemaLocation=\"http://www.example.com/IPO ipo.xsd\""
+            + "  orderDate=\"1999-12-01\">"
+            + "  <shipTo exportCode=\"1\" xsi:type=\"ipo:UKAddress\">"
+            + "    <name>Helen Zoe</name>"
+            + "    <street>47 Eden Street</street>"
+            + "    <city>Cambridge</city>"
+            + "    <postcode>CB1 1JR</postcode>"
+            + "  </shipTo>"
+            + "  <billTo xsi:type=\"ipo:USAddress\">"
+            + "    <name>Robert Smith</name>"
+            + "    <street>8 Oak Avenue</street>"
+            + "    <city>Old Town</city>"
+            + "    <state>PA</state>"
+            + "    <zip>95819</zip>"
+            + "  </billTo>"
+            + "  <items>"
+            + "    <item partNum=\"833-AA\">"
+            + "      <productName>Lapis necklace</productName>"
+            + "      <quantity>1</quantity>"
+            + "      <USPrice>99.95</USPrice>"
+            + "      <ipo:comment>Want this for the holidays</ipo:comment>"
+            + "      <shipDate>1999-12-05</shipDate>"
+            + "    </item>"
+            + "  </items>"
+            + "</ipo:purchaseOrder>";
+
+    /**
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    public void testXPath() throws Exception {
+        String2Node t = new String2Node();
+        Node node = t.transform(IPO_XML, null);
+        NamespaceContext context = EasyMock.createMock(NamespaceContext.class);
+        EasyMock.expect(context.getNamespaceURI("ipo")).andReturn("http://www.example.com/IPO").anyTimes();
+        EasyMock.replay(context);
+        Document doc = PropertyHelper.evaluate(context, node, "/ipo:purchaseOrder/items");
+        assertNotNull(doc);
+        doc = PropertyHelper.evaluate(context, node, "/ipo:purchaseOrder/billTo");
+        assertNotNull(doc);
+    }
+
+    public void testFile() throws Exception {
+        URL url = getClass().getResource("ipo.xml");
+        Document doc = PropertyHelper.loadFromFile(url.toExternalForm(), null);
+        assertNotNull(doc);
+
+        DeploymentContext context = EasyMock.createMock(DeploymentContext.class);
+        EasyMock.expect(context.getClassLoader()).andReturn(getClass().getClassLoader());
+        EasyMock.replay(context);
+        doc = PropertyHelper.loadFromFile("org/apache/tuscany/core/property/ipo.xml", context);
+        assertNotNull(doc);
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/PropertyHelperTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java?view=auto&rev=453029
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java Wed Oct  4 14:16:00 2006
@@ -0,0 +1,108 @@
+/*
+ * 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.core.property;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.core.property.PropertyObjectFactoryImpl;
+import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.PropertyValue;
+import org.easymock.EasyMock;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@SuppressWarnings("unchecked")
+public class SimplePropertyObjectFactoryTestCase extends TestCase {
+
+    private <T> PropertyValue<T> mock(Class<T> cls, String value) {
+        Document document = EasyMock.createMock(Document.class);
+        Element element = EasyMock.createMock(Element.class);
+        EasyMock.expect(document.getDocumentElement()).andReturn(element);
+        EasyMock.expect(element.getTextContent()).andReturn(value);
+        EasyMock.replay(document, element);
+        return new PropertyValue<T>(null, document);
+    }
+
+    public void testInteger() throws Exception {
+
+        PropertyObjectFactoryImpl factory = new PropertyObjectFactoryImpl();
+        Property<Integer> property = new Property<Integer>();
+        property.setJavaType(Integer.class);
+        PropertyValue<Integer> propertyValue = mock(Integer.class, "1");
+        ObjectFactory<Integer> oFactory = factory.createObjectFactory(property, propertyValue);
+        assertEquals(1, oFactory.getInstance().intValue());
+    }
+
+    public void testPrimitiveInt() throws Exception {
+        PropertyObjectFactoryImpl factory = new PropertyObjectFactoryImpl();
+        Property<Integer> property = new Property<Integer>();
+        property.setJavaType(Integer.TYPE);
+        PropertyValue<Integer> propertyValue = mock(Integer.TYPE, "1");
+        ObjectFactory<Integer> oFactory = factory.createObjectFactory(property, propertyValue);
+        assertEquals(1, oFactory.getInstance().intValue());
+    }
+
+    public void testString() throws Exception {
+        PropertyObjectFactoryImpl factory = new PropertyObjectFactoryImpl();
+        Property<String> property = new Property<String>();
+        property.setJavaType(String.class);
+        PropertyValue<String> propertyValue = mock(String.class, "1");
+        ObjectFactory<String> oFactory = factory.createObjectFactory(property, propertyValue);
+        assertEquals("1", oFactory.getInstance());
+    }
+
+    public void testByteArray() throws Exception {
+        PropertyObjectFactoryImpl factory = new PropertyObjectFactoryImpl();
+        Property<byte[]> property = new Property<byte[]>();
+        property.setJavaType(byte[].class);
+        PropertyValue<byte[]> propertyValue = mock(byte[].class, "TWFu"); // BASE64 for "Man"
+        ObjectFactory<byte[]> oFactory = factory.createObjectFactory(property, propertyValue);
+        byte[] result = oFactory.getInstance();
+        byte[] expected = "Man".getBytes();
+        for (int i = 0; i < result.length; i++) {
+            byte b = result[i];
+            if (b != expected[i]) {
+                fail();
+            }
+        }
+    }
+
+    public void testBoolean() throws Exception {
+        PropertyObjectFactoryImpl factory = new PropertyObjectFactoryImpl();
+        Property<Boolean> property = new Property<Boolean>();
+        property.setJavaType(Boolean.class);
+        PropertyValue<Boolean> propertyValue = mock(Boolean.class, "true");
+        ObjectFactory<Boolean> oFactory = factory.createObjectFactory(property, propertyValue);
+        assertTrue(oFactory.getInstance());
+    }
+
+    public void testPrimitiveBoolean() throws Exception {
+        PropertyObjectFactoryImpl factory = new PropertyObjectFactoryImpl();
+        Property<Boolean> property = new Property<Boolean>();
+        property.setJavaType(Boolean.TYPE);
+        PropertyValue<Boolean> propertyValue = mock(Boolean.TYPE, "true");
+        ObjectFactory<Boolean> oFactory = factory.createObjectFactory(property, propertyValue);
+        assertTrue(oFactory.getInstance());
+    }
+
+}

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/property/SimplePropertyObjectFactoryTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml?view=auto&rev=453029
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml (added)
+++ incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml Wed Oct  4 14:16:00 2006
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<ipo:purchaseOrder
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:ipo="http://www.example.com/IPO"
+  xsi:schemaLocation="http://www.example.com/IPO ipo.xsd"
+  orderDate="1999-12-01">
+
+  <shipTo exportCode="1" xsi:type="ipo:UKAddress">
+    <name>Helen Zoe</name>
+    <street>47 Eden Street</street>
+    <city>Cambridge</city>
+    <postcode>CB1 1JR</postcode>
+  </shipTo>
+
+  <billTo xsi:type="ipo:USAddress">
+    <name>Robert Smith</name>
+    <street>8 Oak Avenue</street>
+    <city>Old Town</city>
+    <state>PA</state>
+    <zip>95819</zip>
+  </billTo>
+
+  <items>
+    <item partNum="833-AA">
+      <productName>Lapis necklace</productName>
+      <quantity>1</quantity>
+      <USPrice>99.95</USPrice>
+      <ipo:comment>Want this for the holidays</ipo:comment>
+      <shipDate>1999-12-05</shipDate>
+    </item>
+  </items>
+</ipo:purchaseOrder>
+

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/kernel/core/src/test/resources/org/apache/tuscany/core/property/ipo.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date



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