Author: rfeng
Date: Mon Sep 24 08:45:40 2007
New Revision: 578859

URL: http://svn.apache.org/viewvc?rev=578859&view=rev
Log:
Add a test case for TUSCANY-1788

Added:
    incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd   (with props)
Modified:
    
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java

Modified: 
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java?rev=578859&r1=578858&r2=578859&view=diff
==============================================================================
--- 
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java
 (original)
+++ 
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLStreamHelperTestCase.java
 Mon Sep 24 08:45:40 2007
@@ -19,9 +19,14 @@
  */
 package org.apache.tuscany.sdo.test;
 
-import java.io.*;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.StringReader;
+import java.io.StringWriter;
 import java.net.URL;
-import java.util.*;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLInputFactory;
@@ -34,10 +39,12 @@
 import junit.framework.Assert;
 import junit.framework.TestCase;
 
-import org.apache.tuscany.sdo.api.XMLStreamHelper;
 import org.apache.tuscany.sdo.api.SDOUtil;
+import org.apache.tuscany.sdo.api.XMLStreamHelper;
+
 import commonj.sdo.DataObject;
-import commonj.sdo.helper.*;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XMLDocument;
 
 public class XMLStreamHelperTestCase extends TestCase {
 
@@ -160,6 +167,25 @@
         streamWriter.flush();
         //System.out.println(writer);
         assertTrue(writer.toString().indexOf("<symbol>fbnt</symbol>") != -1);
+    }
+    
+    // Test case for TUSCANY-1788
+    public void testXSIType() throws Exception {
+        URL ipo = getClass().getResource("/ipo.xsd");
+        hc.getXSDHelper().define(ipo.openStream(), ipo.toString());
+        DataObject d = 
hc.getDataFactory().create("http://www.example.com/IPO";, "PurchaseOrderType");
+        DataObject billTo = 
hc.getDataFactory().create("http://www.example.com/IPO";, "USAddress");
+        billTo.setString("city", "San Jose");
+        billTo.setString("state", "CA");
+        d.setDataObject("billTo", billTo);
+        XMLDocument ipoDoc = hc.getXMLHelper().createDocument(d, 
"http://www.example.com/IPO";, "purchaseOrder");
+        final StringWriter writer = new StringWriter();
+        final XMLStreamWriter xmlWriter = 
outputFactory.createXMLStreamWriter(writer);
+        streamHelper.save(ipoDoc, xmlWriter, null);
+        xmlWriter.close();
+        String xml = writer.toString();
+        
assertTrue(xml.indexOf("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"";)
 != -1);
+        assertTrue(xml.indexOf("xsi:type") != -1);
     }
 
     protected void tearDown() throws Exception {

Added: incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd?rev=578859&view=auto
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd (added)
+++ incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd Mon Sep 24 
08:45:40 2007
@@ -0,0 +1,136 @@
+<!--
+ * 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.    
+-->
+<schema targetNamespace="http://www.example.com/IPO";
+       xmlns="http://www.w3.org/2001/XMLSchema";
+       xmlns:ipo="http://www.example.com/IPO";>
+
+       <annotation>
+               <documentation xml:lang="en">
+                       International Purchase order schema for Example.com
+                       Copyright 2000 Example.com. All rights reserved.
+               </documentation>
+       </annotation>
+
+
+       <element name="purchaseOrder" type="ipo:PurchaseOrderType" />
+
+       <element name="comment" type="string" />
+
+       <complexType name="PurchaseOrderType">
+               <sequence>
+                       <element name="shipTo" type="ipo:Address" />
+                       <element name="billTo" type="ipo:Address" />
+                       <element ref="ipo:comment" minOccurs="0" />
+                       <element name="items" type="ipo:Items" />
+               </sequence>
+               <attribute name="orderDate" type="date" />
+       </complexType>
+
+       <complexType name="Items">
+               <sequence>
+                       <element name="item" minOccurs="0" 
maxOccurs="unbounded">
+                               <complexType>
+                                       <sequence>
+                                               <element name="productName" 
type="string" />
+                                               <element name="quantity">
+                                                       <simpleType>
+                                                               <restriction 
base="positiveInteger">
+                                                                       
<maxExclusive value="100" />
+                                                               </restriction>
+                                                       </simpleType>
+                                               </element>
+                                               <element name="USPrice" 
type="decimal" />
+                                               <element ref="ipo:comment" 
minOccurs="0" />
+                                               <element name="shipDate" 
type="date"
+                                                       minOccurs="0" />
+                                       </sequence>
+                                       <attribute name="partNum" type="ipo:SKU"
+                                               use="required" />
+                               </complexType>
+                       </element>
+               </sequence>
+       </complexType>
+
+       <simpleType name="SKU">
+               <restriction base="string">
+                       <pattern value="\d{3}-[A-Z]{2}" />
+               </restriction>
+       </simpleType>
+
+       <complexType name="Address">
+               <sequence>
+                       <element name="name" type="string" />
+                       <element name="street" type="string" />
+                       <element name="city" type="string" />
+               </sequence>
+       </complexType>
+
+       <complexType name="USAddress">
+               <complexContent>
+                       <extension base="ipo:Address">
+                               <sequence>
+                                       <element name="state" 
type="ipo:USState" />
+                                       <element name="zip" 
type="positiveInteger" />
+                               </sequence>
+                       </extension>
+               </complexContent>
+       </complexType>
+
+       <complexType name="UKAddress">
+               <complexContent>
+                       <extension base="ipo:Address">
+                               <sequence>
+                                       <element name="postcode" 
type="ipo:UKPostcode" />
+                               </sequence>
+                               <attribute name="exportCode" 
type="positiveInteger"
+                                       fixed="1" />
+                       </extension>
+               </complexContent>
+       </complexType>
+
+       <!-- other Address derivations for more countries -->
+
+       <simpleType name="USState">
+               <restriction base="string">
+                       <enumeration value="AK" />
+                       <enumeration value="AL" />
+                       <enumeration value="AR" />
+                       <enumeration value="CA" />
+                       <enumeration value="PA" />
+                       <!-- and so on ... -->
+               </restriction>
+       </simpleType>
+
+       <simpleType name="Postcode">
+               <restriction base="string">
+                       <length value="7" fixed="true" />
+               </restriction>
+       </simpleType>
+
+
+       <simpleType name="UKPostcode">
+               <restriction base="ipo:Postcode">
+                       <pattern value="[A-Z]{2}\d\s\d[A-Z]{2}" />
+               </restriction>
+       </simpleType>
+
+
+
+</schema>
+

Propchange: incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sdo/impl/src/test/resources/ipo.xsd
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to