2009-05-19 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Tue, 19 May 2009 14:30:11 +0000 (14:30 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Tue, 19 May 2009 14:30:11 +0000 (14:30 -0000)
* XmlSchemaGroupRef.cs : when getting optimized particle, reset was
  incomplete. Patch by Jonas Larsson. Fixed bug #502168.

2009-05-07  Jonas Larsson <jonas.larsson@manodo.se>

* XmlSchemaValidatorTests.cs : added test for bug #501666.

svn path=/trunk/mcs/; revision=134396

mcs/class/System.XML/System.Xml.Schema/ChangeLog
mcs/class/System.XML/System.Xml.Schema/XmlSchemaGroupRef.cs
mcs/class/System.XML/Test/System.Xml/ChangeLog
mcs/class/System.XML/Test/System.Xml/XmlValidatingReaderTests.cs

index 26b9a9fd96904fb3949f2993c0e384c65718be42..80cc8dd64d7bed1860dbc2b1e92368d7b2b8d574 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-19  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlSchemaGroupRef.cs : when getting optimized particle, reset was
+         incomplete. Patch by Jonas Larsson. Fixed bug #502168.
+
 2009-05-11  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XmlSchemaComplexType.cs : make complex content type work like .NET
index b25e7130bc46ce9440d69c0bf955fe83ba0778a2..1c9c3fd817e7c282b5b258971a40cab359efd0c6 100644 (file)
@@ -137,6 +137,7 @@ namespace System.Xml.Schema
                                OptimizedParticle = OptimizedParticle.GetOptimizedParticle (isTop);
                                if (OptimizedParticle != XmlSchemaParticle.Empty && (ValidatedMinOccurs != 1 || ValidatedMaxOccurs != 1)) {
                                        OptimizedParticle = OptimizedParticle.GetShallowClone ();
+                                       OptimizedParticle.OptimizedParticle = null;
                                        OptimizedParticle.MinOccurs = this.MinOccurs;
                                        OptimizedParticle.MaxOccurs = this.MaxOccurs;
                                        OptimizedParticle.CompileOccurence (null, null);
index fe7f64675c56a160aa63c252a6984294bf35a019..48a501ae131a494e75387472c56c8fe534f95563 100644 (file)
@@ -1,3 +1,7 @@
+2009-05-12  Jonas Larsson  <jonas.larsson@manodo.se>
+
+       * XmlValidatingReaderTests.cs : test for bug #502168
+
 2009-05-11  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XmlValidatingReaderTests.cs : test for bug #501814 by Jonas
index 1510f204792f97a2143d09f228ab6113019c79c8..2cf13b34bc17d9adc53711f4139e8df5ae81569a 100644 (file)
@@ -985,5 +985,90 @@ namespace MonoTests.System.Xml
                        doc.Validate (null);\r
                }\r
 #endif\r
+               \r
+#if NET_2_0\r
+               [Test]          \r
+               public void Bug502168 ()\r
+               {\r
+                       string xsd = @"<xs:schema id='Layout'\r
+                               targetNamespace='foo'\r
+                               elementFormDefault='qualified'\r
+                               xmlns='foo'                  \r
+                               xmlns:xs='http://www.w3.org/2001/XMLSchema'>\r
+\r
+                               <xs:element name='Layout' type='Layout' />\r
+                               \r
+                                <xs:complexType name='Layout'>\r
+                                 <xs:group ref='AnyLayoutElement' minOccurs='0' maxOccurs='unbounded' />\r
+                                </xs:complexType>\r
+                               \r
+                                <xs:group name='AnyLayoutElement'>\r
+                                 <xs:choice>\r
+                                  <xs:element name='Layout' type='Layout' />   \r
+                                  <xs:element name='ImageContainer' type='ImageContainer' />\r
+                                  <xs:element name='VideoInstance' type='VideoInstance'/>\r
+                                 </xs:choice>\r
+                                </xs:group>\r
+                               \r
+                                <xs:complexType name='ImageDummy'>\r
+                                </xs:complexType>\r
+                               \r
+                                <xs:complexType name='LayoutElement' abstract='true'>  \r
+                                </xs:complexType>\r
+                               \r
+                                <xs:group name='AnyImageElement'>\r
+                                 <xs:choice>\r
+                                  <xs:element name='ImageDummy' type='ImageDummy' />\r
+                                 </xs:choice>\r
+                                </xs:group>\r
+                               \r
+                                <xs:complexType name='ImageContainer'>\r
+                                 <xs:complexContent>\r
+                                  <xs:extension base='LayoutElement'>\r
+                                   <xs:choice minOccurs='1' maxOccurs='1'>\r
+                                    <xs:element name='Content' type='SingleImage' minOccurs='1' maxOccurs='1'\r
+                               nillable='false'/>\r
+                                   </xs:choice>    \r
+                                  </xs:extension>\r
+                                 </xs:complexContent>\r
+                                </xs:complexType>\r
+                               \r
+                                <xs:complexType name='SingleImage'>\r
+                                 <xs:group ref='AnyImageElement' minOccurs='1' maxOccurs='1'/>\r
+                                </xs:complexType>\r
+                               \r
+                                <xs:complexType name='VideoApplicationFile'>\r
+                                 <xs:complexContent>\r
+                                  <xs:extension base='VideoInstance'>\r
+                                   <xs:attribute name='fileName' type='xs:string' use='optional'/>\r
+                                  </xs:extension>\r
+                                 </xs:complexContent>\r
+                                </xs:complexType>\r
+                               \r
+                                <xs:complexType abstract='true' name='Video'>\r
+                                 <xs:complexContent>\r
+                                  <xs:extension base='LayoutElement'>\r
+                                   <xs:group ref='AnyImageElement' minOccurs='0' maxOccurs='1'/>    \r
+                                  </xs:extension>\r
+                                 </xs:complexContent>\r
+                                </xs:complexType>\r
+                               \r
+                                <xs:complexType abstract='true' name='VideoInstance'>\r
+                                 <xs:complexContent>\r
+                                  <xs:extension base='Video'>\r
+                                   <xs:attribute name='name' type='xs:string' use='optional'/>\r
+                                  </xs:extension>\r
+                                 </xs:complexContent>\r
+                                </xs:complexType>\r
+                               </xs:schema>";\r
+\r
+\r
+                       XmlDocument doc = new XmlDocument ();\r
+                       XmlSchema schema = XmlSchema.Read (XmlReader.Create (new StringReader (xsd)), null);\r
+                       doc.LoadXml (@"<Layout xmlns='foo' />");\r
+                       doc.Schemas.Add(schema);\r
+                       doc.Validate(null);\r
+               }\r
+#endif         \r
        }\r
 }\r