You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xmlbeans.apache.org by ce...@apache.org on 2005/03/31 22:11:41 UTC

svn commit: r159634 - in xmlbeans/trunk/test: cases/xbean/scomp/derivation/facets/ src/compile/scomp/som/common/ src/scomp/derivation/extension/detailed/ src/scomp/derivation/restriction/facets/detailed/ src/scomp/substGroup/restriction/detailed/

Author: cezar
Date: Thu Mar 31 12:11:39 2005
New Revision: 159634

URL: http://svn.apache.org/viewcvs?view=rev&rev=159634
Log:
Contributed by Rajiv Balachandran - implemented some scomp facet/restriction tests

Modified:
    xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/FacetRestriction.xsd
    xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/Facets.xsd
    xmlbeans/trunk/test/src/compile/scomp/som/common/SomTestBase.java
    xmlbeans/trunk/test/src/scomp/derivation/extension/detailed/ComplexContentExtensionTest.java
    xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetRestrictionTest.java
    xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetsTest.java
    xmlbeans/trunk/test/src/scomp/substGroup/restriction/detailed/Final.java

Modified: xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/FacetRestriction.xsd
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/FacetRestriction.xsd?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/FacetRestriction.xsd (original)
+++ xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/FacetRestriction.xsd Thu Mar 31 12:11:39 2005
@@ -57,12 +57,19 @@
            </xs:restriction>
        </xs:simpleType>
 
-    <xs:simpleType name="WST">
-           <xs:restriction base="base:WST">
+    <xs:simpleType name="WSTReplace">
+           <xs:restriction base="base:WSTPreserve">
                <xs:whiteSpace value="replace"/>
            </xs:restriction>
        </xs:simpleType>
 
+    <xs:simpleType name="WSTCollapse">
+           <xs:restriction base="base:WSTPreserve">
+               <xs:whiteSpace value="collapse"/>
+           </xs:restriction>
+       </xs:simpleType>
+
+
      <xs:simpleType name="EnumT">
            <xs:restriction base="base:EnumT">
                <xs:enumeration value="a"/>
@@ -82,7 +89,8 @@
     <xs:element name="LengthElt" type="xs:integer"/>
     <xs:element name="MinMaxLengthElt" type="MinMaxLengthT"/>
     <xs:element name="DigitsElt" type="DigitsT"/>
-    <xs:element name="WSElt" type="WST"/>
+    <xs:element name="WSReplaceElt" type="WSTReplace"/>
+    <xs:element name="WSCollapseElt" type="WSTCollapse" />
     <xs:element name="EnumElt" type="EnumT"/>
     <xs:element name="PatternElt" type="PatternT"/>
 

Modified: xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/Facets.xsd
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/Facets.xsd?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/Facets.xsd (original)
+++ xmlbeans/trunk/test/cases/xbean/scomp/derivation/facets/Facets.xsd Thu Mar 31 12:11:39 2005
@@ -55,9 +55,9 @@
            </xs:restriction>
        </xs:simpleType>
 
-    <xs:simpleType name="WST">
+    <xs:simpleType name="WSTPreserve">
            <xs:restriction base="xs:string">
-               <xs:whiteSpace value="replace"/>
+               <xs:whiteSpace value="preserve"/>
            </xs:restriction>
        </xs:simpleType>
 
@@ -82,7 +82,7 @@
     <xs:element name="LengthElt" type="LengthT"/>
     <xs:element name="MinMaxLengthElt" type="MinMaxLengthT"/>
     <xs:element name="DigitsElt" type="DigitsT"/>
-    <xs:element name="WSElt" type="WST"/>
+    <xs:element name="WSPreserveElt" type="WSTPreserve"/>
     <xs:element name="EnumElt" type="EnumT"/>
     <xs:element name="PatternElt" type="PatternT"/>
 

Modified: xmlbeans/trunk/test/src/compile/scomp/som/common/SomTestBase.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/src/compile/scomp/som/common/SomTestBase.java?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/src/compile/scomp/som/common/SomTestBase.java (original)
+++ xmlbeans/trunk/test/src/compile/scomp/som/common/SomTestBase.java Thu Mar 31 12:11:39 2005
@@ -320,6 +320,10 @@
         }
         catch (IllegalStateException ise)
         {
+            System.out.println("Msg is:");
+            ise.getMessage();
+            System.out.println("Msg is:");
+            ise.printStackTrace();
             return false;
         }
         return true;

Modified: xmlbeans/trunk/test/src/scomp/derivation/extension/detailed/ComplexContentExtensionTest.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/src/scomp/derivation/extension/detailed/ComplexContentExtensionTest.java?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/src/scomp/derivation/extension/detailed/ComplexContentExtensionTest.java (original)
+++ xmlbeans/trunk/test/src/scomp/derivation/extension/detailed/ComplexContentExtensionTest.java Thu Mar 31 12:11:39 2005
@@ -21,10 +21,9 @@
 import xbean.scomp.derivation.complexExtension.SequenceExtensionT;
 
 import java.math.BigInteger;
+import java.util.Iterator;
 
-import org.apache.xmlbeans.XmlInteger;
-import org.apache.xmlbeans.XmlString;
-import org.apache.xmlbeans.XmlErrorCodes;
+import org.apache.xmlbeans.*;
 
 /**
  *
@@ -144,9 +143,183 @@
 
     }
 
-    public void testAllExtension() {
-        fail("Compile Time test");
+    /**
+     * The follwing are test for the 'final' attribute used in a base type that affects extenstion/restriction
+     * They are negative tests and test for #all, restriction, extenstion and 'extenstion restriction' values
+     */
+    public void testFinalAll() {
+        String inputXsd = "    <xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
+                "    <xsd:complexType name=\"BaseProductTypeFinalAll\" final=\"#all\">\n" +
+                "        <xsd:sequence>\n" +
+                "            <xsd:element name=\"number\" type=\"xsd:integer\" />\n" +
+                "            <xsd:element name=\"name\" type=\"xsd:string\" minOccurs=\"0\" />\n" +
+                "        </xsd:sequence>\n" +
+                "    </xsd:complexType>\n" +
+                "\n" +
+                "    <xsd:complexType name=\"ProductTypeExtension\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:extension base=\"BaseProductTypeFinalAll\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"subcategory\" type=\"xsd:string\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:extension>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>    \n" +
+                "\n" +
+                "    <xsd:complexType name=\"ProductTypeRestriction\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:restriction base=\"BaseProductTypeFinalAll\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"number\" type=\"xsd:integer\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:restriction>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>    \n" +
+                "\n" +
+                "    </xsd:schema>";
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            //assertEquals(2, xme.getErrors().size());
+
+            Iterator itr = xme.getErrors().iterator();
+            XmlError eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+
+            eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+
+        }
+    }
+
+    public void testFinalExtension() {
+        String inputXsd = "    <xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
+                "    <xsd:complexType name=\"BaseProductTypeFinalExtension\" final=\"extension\">\n" +
+                "        <xsd:sequence>\n" +
+                "            <xsd:element name=\"number\" type=\"xsd:integer\" />\n" +
+                "            <xsd:element name=\"name\" type=\"xsd:string\" minOccurs=\"0\" />\n" +
+                "        </xsd:sequence>\n" +
+                "    </xsd:complexType>\n" +
+                "\n" +
+                "    <xsd:complexType name=\"ProductTypeExtension\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:extension base=\"BaseProductTypeFinalExtension\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"subcategory\" type=\"xsd:string\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:extension>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>    \n" +
+                "\n" +
+                "    </xsd:schema>";
+
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(xme.getErrors().size(), 1);
+
+            XmlError eacherr = (XmlError) xme.getErrors().iterator().next();
+            System.out.println("error:" + eacherr.getErrorCode());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+        }
+    }
+
+    public void testFinalRestriction() {
+        String inputXsd = "    <xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
+                "    <xsd:complexType name=\"BaseProductTypeFinalRestriction\" final=\"restriction\">\n" +
+                "        <xsd:sequence>\n" +
+                "            <xsd:element name=\"number\" type=\"xsd:integer\" />\n" +
+                "            <xsd:element name=\"name\" type=\"xsd:string\" />\n" +
+                "        </xsd:sequence>\n" +
+                "    </xsd:complexType>\n" +
+                "\n" +
+                "    <xsd:complexType name=\"ProductTypeRestriction\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:restriction base=\"BaseProductTypeFinalRestriction\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"number\" type=\"xsd:integer\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:restriction>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>    " +
+                "    </xsd:schema>";
+
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(1, xme.getErrors().size());
+
+            XmlError eacherr = (XmlError) xme.getErrors().iterator().next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+        }
+    }
+
+    public void testFinalRestrExt() {
+        String inputXsd = "    <xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
+                "    <xsd:complexType name=\"BaseProductTypeFinalAll\" final=\"restriction extension\">\n" +
+                "        <xsd:sequence>\n" +
+                "            <xsd:element name=\"number\" type=\"xsd:integer\" />\n" +
+                "            <xsd:element name=\"name\" type=\"xsd:string\" minOccurs=\"0\" />\n" +
+                "        </xsd:sequence>\n" +
+                "    </xsd:complexType>\n" +
+                "\n" +
+                "    <xsd:complexType name=\"ProductTypeExtension\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:extension base=\"BaseProductTypeFinalAll\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"subcategory\" type=\"xsd:string\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:extension>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>    \n" +
+                "\n" +
+                "    <xsd:complexType name=\"ProductTypeRestriction\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:restriction base=\"BaseProductTypeFinalAll\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"number\" type=\"xsd:integer\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:restriction>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>    \n" +
+                "\n" +
+                "    </xsd:schema>";
+
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(2, xme.getErrors().size());
+
+            Iterator itr = xme.getErrors().iterator();
+            XmlError eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+
+            eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+        }
     }
 
-   
 }

Modified: xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetRestrictionTest.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetRestrictionTest.java?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetRestrictionTest.java (original)
+++ xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetRestrictionTest.java Thu Mar 31 12:11:39 2005
@@ -204,8 +204,35 @@
 
        }
 
-     public void testWSElt() throws Throwable {
-        fail("do this test");
+    public void testWSElt() throws Throwable {
+
+        // whiteSpace="replace" case
+        WSReplaceEltDocument doc = WSReplaceEltDocument.Factory.parse("<WSReplaceElt " +
+                "xmlns=\"http://xbean/scomp/derivation/facets/FacetRestriction\">" +
+                " This is a    test.\nThe resulting string should convert tabs \t, line feeds \n  and carriage returns into a single space \n" +
+                "</WSReplaceElt>");
+
+        // whiteSpace="collapse " case
+        WSCollapseEltDocument doc2 = WSCollapseEltDocument.Factory.parse("<WSCollapseElt " +
+                "xmlns=\"http://xbean/scomp/derivation/facets/FacetRestriction\">" +
+                " This is a    test.\nThe resulting string should convert tabs \t, line feeds \n  and carriage returns into a single space \n" +
+                "</WSCollapseElt>");
+
+        try {
+            assertTrue(doc.validate(validateOptions));
+            assertTrue(doc2.validate(validateOptions));
+        }
+        catch (Throwable t) {
+            showErrors();
+            throw t;
+        }
+
+        String replaceExpected = " This is a    test. The resulting string should convert tabs  , line feeds    and carriage returns into a single space  ";
+        assertEquals(replaceExpected, doc.getWSReplaceElt());
+
+        String collapseExpected = "This is a test. The resulting string should convert tabs , line feeds and carriage returns into a single space";
+        assertEquals(collapseExpected, doc2.getWSCollapseElt());
+
     }
 
    public void testEnumElt() throws Throwable {

Modified: xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetsTest.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetsTest.java?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetsTest.java (original)
+++ xmlbeans/trunk/test/src/scomp/derivation/restriction/facets/detailed/FacetsTest.java Thu Mar 31 12:11:39 2005
@@ -16,15 +16,23 @@
 
 import scomp.common.BaseCase;
 import xbean.scomp.derivation.facets.facets.*;
+import xbean.scomp.derivation.facets.facets.DigitsEltDocument;
+import xbean.scomp.derivation.facets.facets.EnumEltDocument;
+import xbean.scomp.derivation.facets.facets.EnumT;
+import xbean.scomp.derivation.facets.facets.LengthEltDocument;
+import xbean.scomp.derivation.facets.facets.MinMaxExclusiveDateEltDocument;
+import xbean.scomp.derivation.facets.facets.MinMaxExclusiveEltDocument;
+import xbean.scomp.derivation.facets.facets.MinMaxInclusiveDateEltDocument;
+import xbean.scomp.derivation.facets.facets.MinMaxInclusiveEltDocument;
+import xbean.scomp.derivation.facets.facets.MinMaxLengthEltDocument;
+import xbean.scomp.derivation.facets.facets.PatternEltDocument;
 
 import java.math.BigDecimal;
 import java.util.Calendar;
 import java.util.GregorianCalendar;
-import java.util.Date;
 import java.util.TimeZone;
 
 import org.apache.xmlbeans.XmlErrorCodes;
-import org.apache.xmlbeans.XmlOptions;
 
 /**
  */
@@ -210,7 +218,22 @@
     }
 
     public void testWSElt() throws Throwable {
-        fail("do this test");
+        WSPreserveEltDocument doc = WSPreserveEltDocument.Factory.parse("<WSPreserveElt " +
+                "xmlns=\"http://xbean/scomp/derivation/facets/Facets\">" +
+                "This is a\ttest.\nThe resulting string should preserve all whitespace     tabs and carriage returns as is\n" +
+                "</WSPreserveElt>");
+
+
+        try {
+            assertTrue(doc.validate(validateOptions));
+        }
+        catch (Throwable t) {
+            showErrors();
+            throw t;
+        }
+
+        String expected = "This is a\ttest.\nThe resulting string should preserve all whitespace     tabs and carriage returns as is\n";
+        assertEquals(expected, doc.getWSPreserveElt());
     }
 
     public void testEnumElt() throws Throwable {

Modified: xmlbeans/trunk/test/src/scomp/substGroup/restriction/detailed/Final.java
URL: http://svn.apache.org/viewcvs/xmlbeans/trunk/test/src/scomp/substGroup/restriction/detailed/Final.java?view=diff&r1=159633&r2=159634
==============================================================================
--- xmlbeans/trunk/test/src/scomp/substGroup/restriction/detailed/Final.java (original)
+++ xmlbeans/trunk/test/src/scomp/substGroup/restriction/detailed/Final.java Thu Mar 31 12:11:39 2005
@@ -14,12 +14,145 @@
  */
 package scomp.substGroup.restriction.detailed;
 
-import junit.framework.TestCase;
+import org.apache.xmlbeans.*;
+import scomp.common.BaseCase;
+
+import java.util.List;
+import java.util.Iterator;
+
 
 /**
  */
-public class Final extends TestCase{
-    public void testRun(){
-       fail("Compile time test"); 
+public class Final extends BaseCase {
+
+    /**
+     * The follwing are test for the 'final' attribute used in a base in substitution groups
+     * They are negative tests and test for #all, restriction, extenstion and 'extenstion restriction' values
+     */
+    public void testFinalAll() {
+        String inputXsd = constructInputXsdString("#all");
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(2, xme.getErrors().size());
+
+            Iterator itr = xme.getErrors().iterator();
+            XmlError eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+
+            eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+        }
+
+    }
+
+    public void testFinalExtRestr() {
+        String inputXsd = constructInputXsdString("extension restriction");
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(2, xme.getErrors().size());
+
+            Iterator itr = xme.getErrors().iterator();
+            XmlError eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+
+            eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+        }
+
+    }
+
+    public void testFinalRestriction() {
+        String inputXsd = constructInputXsdString("restriction");
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(1, xme.getErrors().size());
+
+            Iterator itr = xme.getErrors().iterator();
+            XmlError eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+        }
+    }
+
+    public void testFinalExtension() {
+        String inputXsd = constructInputXsdString("extension");
+        try {
+            XmlObject xobj = XmlObject.Factory.parse(inputXsd);
+            XmlObject[] compInput = new XmlObject[]{xobj};
+            XmlBeans.compileXmlBeans(null, null, compInput, null, XmlBeans.getBuiltinTypeSystem(), null, null);
+        }
+        catch (XmlException xme) {
+            assertEquals(1, xme.getErrors().size());
+
+            Iterator itr = xme.getErrors().iterator();
+            XmlError eacherr = (XmlError) itr.next();
+            System.out.println("Err:" + eacherr.getMessage());
+            assertNotNull(eacherr.getErrorCode());
+            assertEquals("cvc-3.4.6", eacherr.getErrorCode());
+
+        }
+    }
+
+
+    private String constructInputXsdString(String sFinalAttributeValue) {
+        return ("    <xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
+                "\n" +
+                "    <xsd:element name=\"Product\" type=\"BaseProductType\" final=\"" + sFinalAttributeValue + "\"/>\n" +
+                "\n" +
+                "    <xsd:complexType name=\"BaseProductType\">\n" +
+                "        <xsd:sequence>\n" +
+                "            <xsd:element name=\"number\" type=\"xsd:integer\" />\n" +
+                "            <xsd:element name=\"name\" type=\"xsd:string\" minOccurs=\"0\" />\n" +
+                "            <xsd:element name=\"size\" type=\"xsd:integer\" minOccurs=\"0\" />\n" +
+                "        </xsd:sequence>\n" +
+                "    </xsd:complexType>\n" +
+                "\n" +
+                "    <xsd:element name=\"Shirt\" type=\"ShirtType\" substitutionGroup=\"Product\" />\n" +
+                "\n" +
+                "    <xsd:complexType name=\"ShirtType\">\n" +
+                "        <xsd:complexContent>\n" +
+                "            <xsd:extension base=\"BaseProductType\">\n" +
+                "                <xsd:sequence>\n" +
+                "                    <xsd:element name=\"color\" type=\"xsd:string\"/>\n" +
+                "                </xsd:sequence>\n" +
+                "            </xsd:extension>\n" +
+                "        </xsd:complexContent>\n" +
+                "    </xsd:complexType>\n" +
+                "\n" +
+                "        <xsd:element name=\"Hat\" type=\"HatType\" substitutionGroup=\"Product\" />\n" +
+                "\n" +
+                "        <xsd:complexType name=\"HatType\">\n" +
+                "            <xsd:complexContent>\n" +
+                "                <xsd:restriction base=\"BaseProductType\">\n" +
+                "                    <xsd:sequence>\n" +
+                "                        <xsd:element name=\"number\" type=\"xsd:integer\"/>\n" +
+                "                    </xsd:sequence>\n" +
+                "                </xsd:restriction>\n" +
+                "            </xsd:complexContent>\n" +
+                "        </xsd:complexType>\n" +
+                "\n" +
+                "    </xsd:schema>");
     }
 }
+



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