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$
+ */
[EMAIL PROTECTED]("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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to