[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlbeans-dev
Subject:    [PATCH 2 of 2] imported patch user-types-test.patch
From:       wleggette () cleversafe ! com
Date:       2009-04-02 3:55:45
Message-ID: 8087234c303e87ad4a91.1238644545 () terrence ! local
[Download RAW message or body]

# HG changeset patch
# User wleggette
# Date 1238644343 18000
# Branch clean
# Node ID 8087234c303e87ad4a915d9b4543ae27306e5a60
# Parent  1a589b49b118349cf54ebeee8f036ac32bfbe9dc
imported patch user-types-test.patch

diff -r 1a589b49b118 -r 8087234c303e test/cases/xbean/usertype/averageCase/po.xsd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/cases/xbean/usertype/averageCase/po.xsd	Wed Apr 01 22:52:23 2009 -0500
@@ -0,0 +1,62 @@
+<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Michael Kintzer (BEA \
Systems) --> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+xmlns:po="http://xbean.usertype/averageCase/PurchaseOrder"
+targetNamespace="http://xbean.usertype/averageCase/PurchaseOrder"
+elementFormDefault="qualified"
+>
+	<xsd:annotation>
+		<xsd:documentation xml:lang="en">
+   Purchase order schema for Example.com.
+   Copyright 2000 Example.com. All rights reserved.
+  </xsd:documentation>
+	</xsd:annotation>
+	<xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/>
+	<xsd:element name="comment" type="xsd:string"/>
+	<xsd:complexType name="PurchaseOrderType">
+		<xsd:sequence>
+			<xsd:element name="shipTo" type="po:USAddress"/>
+			<xsd:element name="billTo" type="po:USAddress"/>
+			<xsd:element ref="po:comment" minOccurs="0"/>
+			<xsd:element name="items" type="po:Items"/>
+		</xsd:sequence>
+		<xsd:attribute name="orderDate" type="xsd:date"/>
+	</xsd:complexType>
+	<xsd:complexType name="USAddress">
+		<xsd:sequence>
+			<xsd:element name="name" type="xsd:string" nillable="true"/>
+			<xsd:element name="street" type="xsd:string"/>
+			<xsd:element name="city" type="xsd:string"/>
+			<xsd:element name="state" type="xsd:string"/>
+			<xsd:element name="zip" type="xsd:decimal"/>
+		</xsd:sequence>
+		<xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/>
+	</xsd:complexType>
+	<xsd:complexType name="Items">
+		<xsd:sequence>
+			<xsd:element name="item" minOccurs="0" maxOccurs="unbounded">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="productName" type="xsd:string"/>
+						<xsd:element name="quantity">
+							<xsd:simpleType>
+								<xsd:restriction base="xsd:positiveInteger">
+									<xsd:maxExclusive value="100"/>
+								</xsd:restriction>
+							</xsd:simpleType>
+						</xsd:element>
+						<xsd:element name="USPrice" type="xsd:decimal"/>
+						<xsd:element ref="po:comment" minOccurs="0"/>
+						<xsd:element name="shipDate" type="xsd:date" minOccurs="0"/>
+					</xsd:sequence>
+					<xsd:attribute name="partNum" type="po:SKU" use="required"/>
+				</xsd:complexType>
+			</xsd:element>
+		</xsd:sequence>
+	</xsd:complexType>
+	<!-- Stock Keeping Unit, a code for identifying products -->
+	<xsd:simpleType name="SKU">
+		<xsd:restriction base="xsd:string">
+			<xsd:pattern value="\d{3}-[A-Z]{2}"/>
+		</xsd:restriction>
+	</xsd:simpleType>
+</xsd:schema>
diff -r 1a589b49b118 -r 8087234c303e \
                test/cases/xbean/usertype/averageCase/po.xsdconfig
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/cases/xbean/usertype/averageCase/po.xsdconfig	Wed Apr 01 22:52:23 2009 \
-0500 @@ -0,0 +1,21 @@
+<!-- Copyright 2004 The Apache Software Foundation
+
+     Licensed 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. -->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config"
+xmlns:po="http://xbean.usertype/averageCase/PurchaseOrder">
+
+    <xb:usertype name="po:SKU" \
javaname="xmlobject.usertype.averageCase.existing.SKU"> +        \
<xb:staticHandler>xmlobject.usertype.averageCase.existing.SKUHandler</xb:staticHandler>
 +    </xb:usertype>
+
+</xb:config>
\ No newline at end of file
diff -r 1a589b49b118 -r 8087234c303e \
                test/cases/xbean/usertype/multipleItems/company.xsd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/cases/xbean/usertype/multipleItems/company.xsd	Wed Apr 01 22:52:23 2009 \
-0500 @@ -0,0 +1,40 @@
+<xsd:schema targetNamespace="http://xbean.usertype/multipleItems/company"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" \
xmlns:company="http://xbean.usertype/multipleItems/company"> +	<xsd:element \
name="company" type="company:CompanyType" /> +	<xsd:complexType name="CompanyType">
+		<xsd:sequence>
+			<xsd:element name="departments" type="company:DepartmentType"
+				maxOccurs="unbounded" />
+		</xsd:sequence>
+
+		<xsd:anyAttribute namespace="http://www.omg.org/XMI"
+			processContents="lax" />
+	</xsd:complexType>
+	<xsd:element name="department" type="company:DepartmentType" />
+	<xsd:complexType name="DepartmentType">
+		<xsd:sequence>
+			<xsd:element name="consultant" type="company:ConsultantType"
+				maxOccurs="unbounded" />
+		</xsd:sequence>
+		<xsd:anyAttribute namespace="http://www.omg.org/XMI"
+			processContents="lax" />
+	</xsd:complexType>
+	<xsd:complexType name="ConsultantType">
+		<xsd:sequence>
+			<xsd:element name="room" type="company:Room" maxOccurs="unbounded" />
+		</xsd:sequence>
+		<xsd:attribute name="name" type="xsd:string" />
+		<xsd:attribute name="age" type="xsd:integer" />
+		<xsd:anyAttribute namespace="http://www.omg.org/XMI"
+			processContents="lax" />
+
+
+	</xsd:complexType>
+
+
+	<xsd:simpleType name="Room">
+		<xsd:restriction base="xsd:string">
+			<xsd:pattern value="\d{3}-[A-Z]{2}" />
+		</xsd:restriction>
+	</xsd:simpleType>
+</xsd:schema>
diff -r 1a589b49b118 -r 8087234c303e \
                test/cases/xbean/usertype/multipleItems/company.xsdconfig
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/cases/xbean/usertype/multipleItems/company.xsdconfig	Wed Apr 01 22:52:23 \
2009 -0500 @@ -0,0 +1,21 @@
+<!-- Copyright 2004 The Apache Software Foundation
+
+     Licensed 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. -->
+<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config"
+xmlns:company="http://xbean.usertype/multipleItems/company">
+
+    <xb:usertype name="company:Room" \
javaname="xmlobject.usertype.multipleItems.existing.Room"> +        \
<xb:staticHandler>xmlobject.usertype.multipleItems.existing.RoomHandler</xb:staticHandler>
 +    </xb:usertype>
+
+</xb:config>
\ No newline at end of file
diff -r 1a589b49b118 -r 8087234c303e \
                test/src/xmlobject/usertype/averageCase/checkin/AverageTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/src/xmlobject/usertype/averageCase/checkin/AverageTest.java	Wed Apr 01 \
22:52:23 2009 -0500 @@ -0,0 +1,104 @@
+/*   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed 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 xmlobject.usertype.averageCase.checkin;
+
+
+import java.math.BigDecimal;
+
+import javax.xml.stream.XMLOutputFactory;
+
+import junit.framework.TestCase;
+
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
+
+import usertype.xbean.averageCase.purchaseOrder.Items;
+import usertype.xbean.averageCase.purchaseOrder.PurchaseOrderDocument;
+import usertype.xbean.averageCase.purchaseOrder.PurchaseOrderType;
+import xmlobject.usertype.averageCase.existing.SKU;
+
+
+
+
+public class AverageTest extends TestCase{
+
+        public  AverageTest(String s){
+            super(s);
+        }
+
+	public void test(){
+
+         PurchaseOrderDocument poDoc ;
+
+         poDoc= PurchaseOrderDocument.Factory.newInstance();
+         PurchaseOrderType po=poDoc.addNewPurchaseOrder();
+         int LEN=20;
+
+         Items.Item[] it= new Items.Item[LEN];
+         for (int i=0; i< LEN; i++){
+                it[i]=Items.Item.Factory.newInstance();
+                it[i].setUSPrice(new BigDecimal(""+ 2 ));
+                it[i].setPartNum(new SKU(i, "AB"));
+         }
+         Items items= Items.Factory.newInstance();
+            items.setItemArray(it);
+         po.setItems(items);
+       //  System.out.println("poDoc: " + poDoc);
+
+	     for (int i=0; i< LEN; i++){
+	         assertEquals(i, it[i].getPartNum().getDigits());
+	         assertEquals("AB", it[i].getPartNum().getLetters());
+	     }
+	 
+
+    }
+	
+	public void testBadInput() throws XmlException{
+	 
+	    StringBuffer sb = new StringBuffer();
+	    sb.append("<purchaseOrder \
xmlns=\"http://xbean.usertype/averageCase/PurchaseOrder\">"); +	    \
sb.append("<items><item partNum=\"000-AB\"><USPrice>2</USPrice></item>"); +	    \
sb.append("<item partNum=\"0013-AB\"><USPrice>2</USPrice></item>"); +	    \
sb.append("</items></purchaseOrder>"); +	    
+	    PurchaseOrderDocument poDocument = \
PurchaseOrderDocument.Factory.parse(sb.toString()); +	    
+	    PurchaseOrderType po = poDocument.getPurchaseOrder();
+	    
+	    Items.Item[] it = po.getItems().getItemArray();
+	    assertEquals(2, it.length);
+	    
+	    
+	    SKU sku = it[0].getPartNum();
+	    
+	    assertEquals(0, sku.getDigits());
+	    assertEquals("AB", sku.getLetters());
+	    
+	    try {
+	        
+	        sku = it[1].getPartNum();
+	        fail("Invalid SKU format should have failed");
+	        
+	    } catch (XmlValueOutOfRangeException e) {
+	        
+	        // test passed
+	    }
+	    
+	    
+	}
+
+
+}
diff -r 1a589b49b118 -r 8087234c303e \
                test/src/xmlobject/usertype/averageCase/existing/SKU.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/src/xmlobject/usertype/averageCase/existing/SKU.java	Wed Apr 01 22:52:23 \
2009 -0500 @@ -0,0 +1,44 @@
+package xmlobject.usertype.averageCase.existing;
+
+
+public class SKU
+{
+    
+    private int digits;
+    private String letters;
+    
+    
+    public SKU()
+    {
+        
+    }
+    public SKU(int digits, String letters)
+    {
+        setDigits(digits);
+        setLetters(letters);
+    }
+    public int getDigits()
+    {
+        return digits;
+    }
+    public void setDigits(int digits)
+    {
+        if (digits > 999 || digits < 0)
+            throw new IllegalArgumentException("bad digits");
+        this.digits = digits;
+    }
+    public String getLetters()
+    {
+        return letters;
+    }
+    public void setLetters(String letters)
+    {
+        if (letters == null || letters.length() != 2)
+            throw new IllegalArgumentException("bad letters");
+        this.letters = letters;
+    }
+    
+    
+    
+
+}
diff -r 1a589b49b118 -r 8087234c303e \
                test/src/xmlobject/usertype/averageCase/existing/SKUHandler.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/src/xmlobject/usertype/averageCase/existing/SKUHandler.java	Wed Apr 01 \
22:52:23 2009 -0500 @@ -0,0 +1,42 @@
+package xmlobject.usertype.averageCase.existing;
+
+import org.apache.xmlbeans.SimpleValue;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
+
+public class SKUHandler
+{
+
+    public static void encodeSKU(SKU obj, SimpleValue target)
+    {
+        String digits;
+        if (obj.getDigits() < 10)
+            digits = "00" + Integer.toString(obj.getDigits());
+        else if (obj.getDigits() < 100)
+            digits = "0" + Integer.toString(obj.getDigits());
+        else
+            digits = Integer.toString(obj.getDigits());
+        target.setStringValue(digits + "-" + obj.getLetters());
+    }
+    
+    
+    public static SKU decodeSKU(SimpleValue obj) throws XmlValueOutOfRangeException
+    {
+        String encoded = obj.getStringValue();
+        if (encoded.length() != 6)
+            throw new XmlValueOutOfRangeException("Invalid SKU format: " + encoded);
+        
+        SKU sku = new SKU();
+        try
+        {
+            sku.setDigits(Integer.parseInt(encoded.substring(0,3)));
+        } catch (NumberFormatException e) {
+            throw new XmlValueOutOfRangeException("Invalid SKU format: " + encoded);
+        } catch (IllegalArgumentException e) {
+            throw new XmlValueOutOfRangeException("Invalid SKU format: " + encoded);
+        }
+        
+        sku.setLetters(encoded.substring(4,6));
+        return sku;
+    }
+    
+}
diff -r 1a589b49b118 -r 8087234c303e \
                test/src/xmlobject/usertype/multipleItems/checkin/AverageTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/src/xmlobject/usertype/multipleItems/checkin/AverageTest.java	Wed Apr 01 \
22:52:23 2009 -0500 @@ -0,0 +1,224 @@
+/*   Copyright 2004 The Apache Software Foundation
+ *
+ *   Licensed 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 xmlobject.usertype.multipleItems.checkin;
+
+
+import java.math.BigInteger;
+
+import junit.framework.TestCase;
+
+import org.apache.xmlbeans.XmlException;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
+
+import usertype.xbean.multipleItems.company.CompanyDocument;
+import usertype.xbean.multipleItems.company.CompanyType;
+import usertype.xbean.multipleItems.company.ConsultantType;
+import usertype.xbean.multipleItems.company.DepartmentType;
+import xmlobject.usertype.multipleItems.existing.Room;
+
+
+
+
+public class AverageTest extends TestCase{
+
+        public  AverageTest(String s){
+            super(s);
+        }
+        
+        public void test() {
+            
+            CompanyDocument doc;
+            
+            doc = CompanyDocument.Factory.newInstance();
+            
+            CompanyType company = doc.addNewCompany();
+            
+            DepartmentType dept = company.addNewDepartments();
+            
+            
+            ConsultantType cons = dept.addNewConsultant();
+            
+            cons.setName("Joe Smith");
+            cons.setAge(BigInteger.valueOf(100));
+            
+            int LEN=20;
+            
+            for (int i=0; i < LEN; i++) {
+                cons.addRoom(new Room(i, "AB"));
+            }
+            
+            System.out.println(doc.xmlText());
+            
+            Room[] rooms = cons.getRoomArray();
+            
+            for (int i=0; i < LEN; i++) {
+                assertEquals(i, rooms[i].getDigits());
+                assertEquals("AB", rooms[i].getLetters());
+            }
+        }
+        
+
+        public void testArrayGetSet() {
+            
+            CompanyDocument doc;
+            
+            doc = CompanyDocument.Factory.newInstance();
+            
+            CompanyType company = doc.addNewCompany();
+            
+            DepartmentType dept = company.addNewDepartments();
+            
+            
+            ConsultantType cons = dept.addNewConsultant();
+            
+            cons.setName("Joe Smith");
+            cons.setAge(BigInteger.valueOf(100));
+            
+            int LEN=20;
+            
+            Room[] rooms = new Room[LEN];
+            
+            for (int i=0; i < LEN; i++) {
+                rooms[i] = new Room(i, "AB");
+            }
+            
+            cons.setRoomArray(rooms);
+            
+            rooms = cons.getRoomArray();
+            for (int i=0; i < LEN; i++) {
+                assertEquals(i, rooms[i].getDigits());
+                assertEquals("AB", rooms[i].getLetters());
+            }
+            
+            
+        }
+
+        public void testIthGetSet() {
+            
+            CompanyDocument doc;
+            
+            doc = CompanyDocument.Factory.newInstance();
+            
+            CompanyType company = doc.addNewCompany();
+            
+            DepartmentType dept = company.addNewDepartments();
+            
+            
+            ConsultantType cons = dept.addNewConsultant();
+            
+            cons.setName("Joe Smith");
+            cons.setAge(BigInteger.valueOf(100));
+            
+            
+            int LEN=20;
+            
+            for (int i=0; i < LEN; i++) {
+                cons.addNewRoom();
+            }
+            
+            
+            for (int i=0; i < LEN; i++) {
+                cons.setRoomArray(i, new Room(i, "AB"));
+            }
+            
+            for (int i=0; i < LEN; i++) {
+                assertEquals(i, cons.getRoomArray(i).getDigits());
+                assertEquals("AB", cons.getRoomArray(i).getLetters());
+            }
+            
+            
+        }
+
+	
+	public void testBadInput() throws XmlException{
+	 
+	    StringBuffer sb = new StringBuffer();
+	    sb.append("<com:company \
xmlns:com=\"http://xbean.usertype/multipleItems/company\">"); +	    \
sb.append("<departments><consultant name=\"Joe Smith\" age=\"100\">"); +	    \
sb.append("<room>000-AB</room><room>0001-AB</room><room>002-AB</room>"); +	    \
sb.append("</consultant></departments></com:company>"); +	    
+	    CompanyDocument doc = CompanyDocument.Factory.parse(sb.toString());
+	    
+	    CompanyType company = doc.getCompany();
+	    
+	    ConsultantType cons = company.getDepartmentsArray(0).getConsultantArray(0);
+	    assertEquals(3, cons.xgetRoomArray().length);
+	    
+	    try
+	    {
+	        cons.getRoomArray();
+	        fail("Invalid Room format should have failed");
+	    
+        } catch (XmlValueOutOfRangeException e) {
+            
+            // test passed
+        }
+	    
+	}
+
+	
+
+    public void testBadInputGetIthBad() throws XmlException{
+     
+        StringBuffer sb = new StringBuffer();
+        sb.append("<com:company \
xmlns:com=\"http://xbean.usertype/multipleItems/company\">"); +        \
sb.append("<departments><consultant name=\"Joe Smith\" age=\"100\">"); +        \
sb.append("<room>000-AB</room><room>0001-AB</room><room>002-AB</room>"); +        \
sb.append("</consultant></departments></com:company>"); +        
+        CompanyDocument doc = CompanyDocument.Factory.parse(sb.toString());
+        
+        CompanyType company = doc.getCompany();
+        
+        ConsultantType cons = company.getDepartmentsArray(0).getConsultantArray(0);
+        assertEquals(3, cons.xgetRoomArray().length);
+        
+        try
+        {
+            cons.getRoomArray(1);
+            fail("Invalid Room format should have failed");
+        } catch (XmlValueOutOfRangeException e) {
+            
+            // test passed
+        }
+        
+    }
+    
+
+    public void testBadInputGetIthGood() throws XmlException{
+     
+        StringBuffer sb = new StringBuffer();
+        sb.append("<com:company \
xmlns:com=\"http://xbean.usertype/multipleItems/company\">"); +        \
sb.append("<departments><consultant name=\"Joe Smith\" age=\"100\">"); +        \
sb.append("<room>000-AB</room><room>0001-AB</room><room>002-AB</room>"); +        \
sb.append("</consultant></departments></com:company>"); +        
+        CompanyDocument doc = CompanyDocument.Factory.parse(sb.toString());
+        
+        CompanyType company = doc.getCompany();
+        
+        ConsultantType cons = company.getDepartmentsArray(0).getConsultantArray(0);
+        assertEquals(3, cons.xgetRoomArray().length);
+        
+        assertEquals(0, cons.getRoomArray(0).getDigits());
+        assertEquals("AB", cons.getRoomArray(0).getLetters());
+        assertEquals(2, cons.getRoomArray(2).getDigits());
+        assertEquals("AB", cons.getRoomArray(2).getLetters());
+        
+    }
+
+}
diff -r 1a589b49b118 -r 8087234c303e \
                test/src/xmlobject/usertype/multipleItems/existing/Room.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/src/xmlobject/usertype/multipleItems/existing/Room.java	Wed Apr 01 \
22:52:23 2009 -0500 @@ -0,0 +1,44 @@
+package xmlobject.usertype.multipleItems.existing;
+
+
+public class Room
+{
+    
+    private int digits;
+    private String letters;
+    
+    
+    public Room()
+    {
+        
+    }
+    public Room(int digits, String letters)
+    {
+        setDigits(digits);
+        setLetters(letters);
+    }
+    public int getDigits()
+    {
+        return digits;
+    }
+    public void setDigits(int digits)
+    {
+        if (digits > 999 || digits < 0)
+            throw new IllegalArgumentException("bad digits");
+        this.digits = digits;
+    }
+    public String getLetters()
+    {
+        return letters;
+    }
+    public void setLetters(String letters)
+    {
+        if (letters == null || letters.length() != 2)
+            throw new IllegalArgumentException("bad letters");
+        this.letters = letters;
+    }
+    
+    
+    
+
+}
diff -r 1a589b49b118 -r 8087234c303e \
                test/src/xmlobject/usertype/multipleItems/existing/RoomHandler.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/src/xmlobject/usertype/multipleItems/existing/RoomHandler.java	Wed Apr 01 \
22:52:23 2009 -0500 @@ -0,0 +1,42 @@
+package xmlobject.usertype.multipleItems.existing;
+
+import org.apache.xmlbeans.SimpleValue;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
+
+public class RoomHandler
+{
+
+    public static void encodeRoom(Room obj, SimpleValue target)
+    {
+        String digits;
+        if (obj.getDigits() < 10)
+            digits = "00" + Integer.toString(obj.getDigits());
+        else if (obj.getDigits() < 100)
+            digits = "0" + Integer.toString(obj.getDigits());
+        else
+            digits = Integer.toString(obj.getDigits());
+        target.setStringValue(digits + "-" + obj.getLetters());
+    }
+    
+    
+    public static Room decodeRoom(SimpleValue obj) throws \
XmlValueOutOfRangeException +    {
+        String encoded = obj.getStringValue();
+        if (encoded.length() != 6)
+            throw new XmlValueOutOfRangeException("Invalid Room format: " + \
encoded); +        
+        Room sku = new Room();
+        try
+        {
+            sku.setDigits(Integer.parseInt(encoded.substring(0,3)));
+        } catch (NumberFormatException e) {
+            throw new XmlValueOutOfRangeException("Invalid Room format: " + \
encoded); +        } catch (IllegalArgumentException e) {
+            throw new XmlValueOutOfRangeException("Invalid Room format: " + \
encoded); +        }
+        
+        sku.setLetters(encoded.substring(4,6));
+        return sku;
+    }
+    
+}
diff -r 1a589b49b118 -r 8087234c303e testbuild.xml
--- a/testbuild.xml	Sun Mar 15 02:36:29 2009 -0500
+++ b/testbuild.xml	Wed Apr 01 22:52:23 2009 -0500
@@ -256,7 +256,8 @@
         ${build.dir.test.schemas}/xbean/xmlobject/store,
         ${build.dir.test.schemas}/xbean/xmltokensource,
         ${build.dir.test.schemas}/xbean/ValidatingStream,
-        ${build.dir.test.schemas}/xbean/scomp"/>
+        ${build.dir.test.schemas}/xbean/scomp,
+        ${build.dir.test.schemas}/xbean/usertype"/>
     <!-- comma separated list of directories containing schemas that *must* be \
separately  compiled -->
     <property name="schema.standalone"
@@ -571,7 +572,7 @@
     <!-- NOTE: This target depends on build.schemas, but we do not
                explicitly put it on the depends list. -->
 
-    <target name="build.tests" depends="init, build.test.tools, \
build.xpath,extensions.build" +    <target name="build.tests" depends="init, \
build.test.tools, build.xpath,extensions.build,usertype.build"  description="Build \
the tests">  
         <javac srcdir="${xbeans.test.src}"
@@ -646,6 +647,12 @@
                 <antcall target="extensions.build"/>
             </then>
         </if>
+        <if>
+            <isset property="compile.usertype"/>
+            <then>
+                <antcall target="usertype.build"/>
+            </then>
+        </if>
         <antcall target="build.xmlcases"/>
         <antcall target="build.xsdcases"/>
 
@@ -708,6 +715,37 @@
 
         </foreachloop>
     </target>
+    <!--User type feature-->
+    <target name="usertype.build" depends="init">
+        <echo message="Building user types"/>
+        <foreachloop
+            param="case" trim="true">
+            <path>
+                <dirset dir="${xbeans.test.src}/xmlobject/usertype/">
+                    <include name="*"/>
+                </dirset>
+            </path>
+            <loop>
+                <basename property="testcase" path="${case}"/>
+                
+                <available \
file="${build.dir.test.schemas.lib}/usertype_${testcase}.jar" \
property="usertypejar.exists"/> +                <echo message="JAR \
${build.dir.test.schemas.lib}/usertype_${testcase}.jar, Exists: \
${usertypejar.exists}"/> +                <if>
+                    <isfalse value="${usertypejar.exists}"/>
+                    <then>
+                        <java classname="${schema.compiler}"
+                            classpathref="build.classpath"
+                            fork="true">
+                            <arg line="-out \
${build.dir.test.schemas.lib}/usertype_${testcase}.jar +                            \
${case}/existing +                            \
${xbeans.test.cases}/xbean/usertype/${testcase}" +                                />
+                        </java>
+                    </then>
+                </if>
+            </loop>
+        </foreachloop>
+    </target>
 
     <!--test xmlbeans task-->
     <target name="xmlbean-test" depends="init">
@@ -733,6 +771,7 @@
             ${schema.standalone}/SimpleRailCarrierWaybillInterchange_V40_LX.xsd,
             ${schema.standalone}/TerminalOperationsAndIntermodalRampActivity_V40_LX.xsd,"/>
  <property name="compile.extensions" value="true"/>
+        <property name="compile.usertype" value="true"/>
 
         <property name="includes.for.compile"
             value="**/xmlobject/**/*.java"/>
@@ -830,7 +869,7 @@
     </target>
 
     <!-- FREQ Target -->
-    <target name="build.area.checkin" depends="clean.tests,extensions.build">
+    <target name="build.area.checkin" \
depends="clean.tests,extensions.build,usertype.build">  <property \
name="includes.for.compile"  value="**/checkin/**/*.java,
                    **/common/**/*.java"/>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic