You can subscribe to this list here.
2007 |
Jan
|
Feb
(3) |
Mar
(18) |
Apr
(39) |
May
(15) |
Jun
(12) |
Jul
(3) |
Aug
(23) |
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(21) |
Feb
(23) |
Mar
(33) |
Apr
(8) |
May
(1) |
Jun
(22) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
(6) |
Nov
|
Dec
(11) |
2009 |
Jan
(5) |
Feb
|
Mar
(2) |
Apr
(24) |
May
(36) |
Jun
(18) |
Jul
(2) |
Aug
(3) |
Sep
(9) |
Oct
(3) |
Nov
(1) |
Dec
|
2010 |
Jan
(5) |
Feb
(3) |
Mar
|
Apr
(15) |
May
(24) |
Jun
(11) |
Jul
(8) |
Aug
(34) |
Sep
(42) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
(13) |
Feb
(32) |
Mar
(35) |
Apr
(31) |
May
(33) |
Jun
(30) |
Jul
(32) |
Aug
(31) |
Sep
(30) |
Oct
(31) |
Nov
(32) |
Dec
(31) |
2012 |
Jan
(35) |
Feb
(31) |
Mar
(31) |
Apr
(30) |
May
(31) |
Jun
(34) |
Jul
(23) |
Aug
(30) |
Sep
(30) |
Oct
(29) |
Nov
(30) |
Dec
(32) |
2013 |
Jan
(25) |
Feb
(39) |
Mar
(1) |
Apr
(18) |
May
(1) |
Jun
|
Jul
(1) |
Aug
(20) |
Sep
(41) |
Oct
(32) |
Nov
(9) |
Dec
(31) |
2014 |
Jan
(31) |
Feb
(30) |
Mar
(34) |
Apr
(60) |
May
(31) |
Jun
(28) |
Jul
(32) |
Aug
(28) |
Sep
(26) |
Oct
(32) |
Nov
(43) |
Dec
(115) |
2015 |
Jan
(106) |
Feb
(101) |
Mar
(51) |
Apr
(32) |
May
(63) |
Jun
(18) |
Jul
|
Aug
(18) |
Sep
|
Oct
(1) |
Nov
(84) |
Dec
(63) |
2016 |
Jan
(26) |
Feb
(17) |
Mar
(104) |
Apr
(30) |
May
(6) |
Jun
(30) |
Jul
|
Aug
|
Sep
|
Oct
(3) |
Nov
(48) |
Dec
(22) |
2017 |
Jan
(15) |
Feb
(29) |
Mar
(43) |
Apr
(29) |
May
(25) |
Jun
(28) |
Jul
(62) |
Aug
(35) |
Sep
(35) |
Oct
(72) |
Nov
(10) |
Dec
(4) |
2018 |
Jan
(7) |
Feb
(4) |
Mar
|
Apr
(46) |
May
(20) |
Jun
(12) |
Jul
(9) |
Aug
(42) |
Sep
(4) |
Oct
(17) |
Nov
(32) |
Dec
(31) |
2019 |
Jan
(21) |
Feb
(14) |
Mar
|
Apr
(74) |
May
(25) |
Jun
(43) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
(10) |
2020 |
Jan
(1) |
Feb
|
Mar
(26) |
Apr
(8) |
May
(62) |
Jun
(4) |
Jul
(25) |
Aug
|
Sep
(21) |
Oct
(24) |
Nov
(26) |
Dec
(9) |
2021 |
Jan
|
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(1) |
Oct
(11) |
Nov
(1) |
Dec
(12) |
2022 |
Jan
(47) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(14) |
2023 |
Jan
(3) |
Feb
|
Mar
(60) |
Apr
(9) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2024 |
Jan
(5) |
Feb
|
Mar
|
Apr
(10) |
May
(1) |
Jun
|
Jul
|
Aug
(17) |
Sep
(2) |
Oct
|
Nov
|
Dec
(1) |
2025 |
Jan
|
Feb
|
Mar
(88) |
Apr
(64) |
May
(47) |
Jun
(20) |
Jul
|
Aug
(14) |
Sep
(8) |
Oct
|
Nov
|
Dec
|
From: Stefan B. <bo...@ap...> - 2009-06-02 08:12:30
|
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at ge...@gu.... Project xmlunit has an issue affecting its community integration. This issue affects 19 projects, and has been outstanding for 5 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - commons-jelly-tags-jaxme : Commons Jelly - commons-jelly-tags-jmx : Commons Jelly - commons-jelly-tags-ojb : Commons Jelly - commons-jelly-tags-xmlunit : Commons Jelly - db-ojb : ObjectRelationalBridge - db-ojb-from-packages : ObjectRelationalBridge - db-torque-runtime : Persistence Layer - db-torque-runtime-test : Persistence Layer - jakarta-turbine-jcs : Cache - jgroups : A Reliable Multicast Communication Toolkit for Java - mx4j : OpenSource implementation of a JMX agent - mx4j-remote : OpenSource implementation of a JMX agent - mx4j-tools : OpenSource implementation of a JMX agent - mx4j-tools-from-packaged-jetty : OpenSource implementation of a JMX agent - naming-management : Apache Directory Naming Component - test-ojb : ObjectRelationalBridge - ws-axis-test : Apache eXtensible Interaction System - xml-xindice : native XML database - xmlunit : JUnit extension for XML unit tests. Full details are available at: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -INFO- Failed with reason build failed -INFO- Failed to extract fallback artifacts from Gump Repository The following work was performed: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/gump_work/build_xmlunit_xmlunit.html Work Name: build_xmlunit_xmlunit (Type: Build) Work ended in a state of : Failed Elapsed: 2 secs Command Line: /usr/lib/jvm/java-6-sun/bin/java -Djava.awt.headless=true -Xbootclasspath/p:/srv/gump/public/workspace/xml-commons/java/external/build/xml-apis.jar:/srv/gump/public/workspace/xml-xerces2/build/xercesImpl.jar:/srv/gump/public/workspace/xml-xalan/build/serializer.jar:/srv/gump/public/workspace/xml-xalan/build/xalan-unbundled.jar org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbuild.sysclasspath=only -Dxmlunit.version=02062009 Gump [Working Directory: /srv/gump/public/workspace/xmlunit] CLASSPATH: /usr/lib/jvm/java-6-sun/lib/tools.jar:/srv/gump/public/workspace/xmlunit/build/java/core-classes:/srv/gump/public/workspace/xmlunit/build/java/core-test-classes:/srv/gump/public/workspace/xmlunit/build/java/legacy-classes:/srv/gump/public/workspace/xmlunit/build/java/legacy-test-classes:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/ant/dist/lib/ant-trax.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-nodeps.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/packages/junit3.8.1/junit.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/junit/dist/junit-02062009.jar:/srv/gump/public/workspace/xml-commons/java/external/build/xml-apis-ext.jar --------------------------------------------- [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/core-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/legacy-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/core-test-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/legacy-test-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/test-report [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/dist [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/doc [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/doc/userguide compile-core: [javac] Compiling 8 source files to /srv/gump/public/workspace/xmlunit/build/java/core-classes compile-core-tests: [javac] Compiling 2 source files to /srv/gump/public/workspace/xmlunit/build/java/core-test-classes [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:48: cannot find symbol [javac] symbol : method assertThat(javax.xml.transform.Source,org.hamcrest.Matcher<capture#983 of ? super javax.xml.transform.dom.DOMSource>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(s, is(DOMSource.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:50: cannot find symbol [javac] symbol : method assertThat(java.lang.Object,org.hamcrest.Matcher<capture#474 of ? super org.w3c.dom.Document>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(o, is(Document.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:116: cannot find symbol [javac] symbol : method assertThat(javax.xml.transform.Source,org.hamcrest.Matcher<capture#374 of ? super javax.xml.transform.dom.DOMSource>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(s, is(DOMSource.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:118: cannot find symbol [javac] symbol : method assertThat(java.lang.Object,org.hamcrest.Matcher<capture#754 of ? super org.w3c.dom.Document>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(o, is(Document.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java:64: cannot find symbol [javac] symbol : method assertThat(java.lang.Exception,org.hamcrest.Matcher<capture#94 of ? super net.sf.xmlunit.exceptions.XMLUnitException>) [javac] location: class net.sf.xmlunit.validation.JAXPValidatorTest [javac] assertThat(e, is(XMLUnitException.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java:75: cannot find symbol [javac] symbol : method assertThat(java.lang.Exception,org.hamcrest.Matcher<capture#97 of ? super net.sf.xmlunit.exceptions.XMLUnitException>) [javac] location: class net.sf.xmlunit.validation.JAXPValidatorTest [javac] assertThat(e, is(XMLUnitException.class)); [javac] ^ [javac] 6 errors BUILD FAILED /srv/gump/public/workspace/xmlunit/build.xml:123: Compile failed; see the compiler error output for details. Total time: 2 seconds --------------------------------------------- To subscribe to this information via syndicated feeds: - RSS: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/rss.xml - Atom: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/atom.xml ============================== Gump Tracking Only === Produced by Gump version 2.3. Gump Run 12000002062009, vmgump:vmgump-public:12000002062009 Gump E-mail Identifier (unique within run) #9. -- Apache Gump http://gump.apache.org/ [Instance: vmgump] |
From: Stefan B. <bo...@ap...> - 2009-05-31 08:23:51
|
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at ge...@gu.... Project xmlunit has an issue affecting its community integration. This issue affects 19 projects, and has been outstanding for 2 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - commons-jelly-tags-jaxme : Commons Jelly - commons-jelly-tags-jmx : Commons Jelly - commons-jelly-tags-ojb : Commons Jelly - commons-jelly-tags-xmlunit : Commons Jelly - db-ojb : ObjectRelationalBridge - db-ojb-from-packages : ObjectRelationalBridge - db-torque-runtime : Persistence Layer - db-torque-runtime-test : Persistence Layer - jakarta-turbine-jcs : Cache - jgroups : A Reliable Multicast Communication Toolkit for Java - mx4j : OpenSource implementation of a JMX agent - mx4j-remote : OpenSource implementation of a JMX agent - mx4j-tools : OpenSource implementation of a JMX agent - mx4j-tools-from-packaged-jetty : OpenSource implementation of a JMX agent - naming-management : Apache Directory Naming Component - test-ojb : ObjectRelationalBridge - ws-axis-test : Apache eXtensible Interaction System - xml-xindice : native XML database - xmlunit : JUnit extension for XML unit tests. Full details are available at: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -INFO- Failed with reason build failed -INFO- Failed to extract fallback artifacts from Gump Repository The following work was performed: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/gump_work/build_xmlunit_xmlunit.html Work Name: build_xmlunit_xmlunit (Type: Build) Work ended in a state of : Failed Elapsed: 3 secs Command Line: /usr/lib/jvm/java-6-sun/bin/java -Djava.awt.headless=true -Xbootclasspath/p:/srv/gump/public/workspace/xml-commons/java/external/build/xml-apis.jar:/srv/gump/public/workspace/xml-xerces2/build/xercesImpl.jar:/srv/gump/public/workspace/xml-xalan/build/serializer.jar:/srv/gump/public/workspace/xml-xalan/build/xalan-unbundled.jar org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbuild.sysclasspath=only -Dxmlunit.version=31052009 Gump [Working Directory: /srv/gump/public/workspace/xmlunit] CLASSPATH: /usr/lib/jvm/java-6-sun/lib/tools.jar:/srv/gump/public/workspace/xmlunit/build/java/core-classes:/srv/gump/public/workspace/xmlunit/build/java/core-test-classes:/srv/gump/public/workspace/xmlunit/build/java/legacy-classes:/srv/gump/public/workspace/xmlunit/build/java/legacy-test-classes:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/ant/dist/lib/ant-trax.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-nodeps.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/packages/junit3.8.1/junit.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/junit/dist/junit-31052009.jar:/srv/gump/public/workspace/xml-commons/java/external/build/xml-apis-ext.jar --------------------------------------------- [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/core-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/legacy-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/core-test-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/legacy-test-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/test-report [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/dist [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/doc [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/doc/userguide compile-core: [javac] Compiling 8 source files to /srv/gump/public/workspace/xmlunit/build/java/core-classes compile-core-tests: [javac] Compiling 2 source files to /srv/gump/public/workspace/xmlunit/build/java/core-test-classes [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:48: cannot find symbol [javac] symbol : method assertThat(javax.xml.transform.Source,org.hamcrest.Matcher<capture#983 of ? super javax.xml.transform.dom.DOMSource>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(s, is(DOMSource.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:50: cannot find symbol [javac] symbol : method assertThat(java.lang.Object,org.hamcrest.Matcher<capture#474 of ? super org.w3c.dom.Document>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(o, is(Document.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:116: cannot find symbol [javac] symbol : method assertThat(javax.xml.transform.Source,org.hamcrest.Matcher<capture#374 of ? super javax.xml.transform.dom.DOMSource>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(s, is(DOMSource.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:118: cannot find symbol [javac] symbol : method assertThat(java.lang.Object,org.hamcrest.Matcher<capture#754 of ? super org.w3c.dom.Document>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(o, is(Document.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java:64: cannot find symbol [javac] symbol : method assertThat(java.lang.Exception,org.hamcrest.Matcher<capture#94 of ? super net.sf.xmlunit.exceptions.XMLUnitException>) [javac] location: class net.sf.xmlunit.validation.JAXPValidatorTest [javac] assertThat(e, is(XMLUnitException.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java:75: cannot find symbol [javac] symbol : method assertThat(java.lang.Exception,org.hamcrest.Matcher<capture#428 of ? super net.sf.xmlunit.exceptions.XMLUnitException>) [javac] location: class net.sf.xmlunit.validation.JAXPValidatorTest [javac] assertThat(e, is(XMLUnitException.class)); [javac] ^ [javac] 6 errors BUILD FAILED /srv/gump/public/workspace/xmlunit/build.xml:123: Compile failed; see the compiler error output for details. Total time: 2 seconds --------------------------------------------- To subscribe to this information via syndicated feeds: - RSS: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/rss.xml - Atom: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/atom.xml ============================== Gump Tracking Only === Produced by Gump version 2.3. Gump Run 35000031052009, vmgump:vmgump-public:35000031052009 Gump E-mail Identifier (unique within run) #6. -- Apache Gump http://gump.apache.org/ [Instance: vmgump] |
From: Stefan B. <bo...@ap...> - 2009-05-30 16:07:49
|
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at ge...@gu.... Project xmlunit has an issue affecting its community integration. This issue affects 19 projects. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - commons-jelly-tags-jaxme : Commons Jelly - commons-jelly-tags-jmx : Commons Jelly - commons-jelly-tags-ojb : Commons Jelly - commons-jelly-tags-xmlunit : Commons Jelly - db-ojb : ObjectRelationalBridge - db-ojb-from-packages : ObjectRelationalBridge - db-torque-runtime : Persistence Layer - db-torque-runtime-test : Persistence Layer - jakarta-turbine-jcs : Cache - jgroups : A Reliable Multicast Communication Toolkit for Java - mx4j : OpenSource implementation of a JMX agent - mx4j-remote : OpenSource implementation of a JMX agent - mx4j-tools : OpenSource implementation of a JMX agent - mx4j-tools-from-packaged-jetty : OpenSource implementation of a JMX agent - naming-management : Apache Directory Naming Component - test-ojb : ObjectRelationalBridge - ws-axis-test : Apache eXtensible Interaction System - xml-xindice : native XML database - xmlunit : JUnit extension for XML unit tests. Full details are available at: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -INFO- Failed with reason build failed -DEBUG- Extracted fallback artifacts from Gump Repository The following work was performed: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/gump_work/build_xmlunit_xmlunit.html Work Name: build_xmlunit_xmlunit (Type: Build) Work ended in a state of : Failed Elapsed: 3 secs Command Line: /usr/lib/jvm/java-6-sun/bin/java -Djava.awt.headless=true -Xbootclasspath/p:/srv/gump/public/workspace/xml-commons/java/external/build/xml-apis.jar:/srv/gump/public/workspace/xml-xerces2/build/xercesImpl.jar:/srv/gump/public/workspace/xml-xalan/build/serializer.jar:/srv/gump/public/workspace/xml-xalan/build/xalan-unbundled.jar org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbuild.sysclasspath=only -Dxmlunit.version=30052009 Gump [Working Directory: /srv/gump/public/workspace/xmlunit] CLASSPATH: /usr/lib/jvm/java-6-sun/lib/tools.jar:/srv/gump/public/workspace/xmlunit/build/java/core-classes:/srv/gump/public/workspace/xmlunit/build/java/core-test-classes:/srv/gump/public/workspace/xmlunit/build/java/legacy-classes:/srv/gump/public/workspace/xmlunit/build/java/legacy-test-classes:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/ant/dist/lib/ant-trax.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-nodeps.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/packages/junit3.8.1/junit.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/junit/dist/junit-30052009.jar:/srv/gump/public/workspace/xml-commons/java/external/build/xml-apis-ext.jar --------------------------------------------- [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/core-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/legacy-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/core-test-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/legacy-test-classes [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/test-report [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/dist [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/doc [mkdir] Created dir: /srv/gump/public/workspace/xmlunit/build/java/doc/userguide compile-core: [javac] Compiling 8 source files to /srv/gump/public/workspace/xmlunit/build/java/core-classes compile-core-tests: [javac] Compiling 2 source files to /srv/gump/public/workspace/xmlunit/build/java/core-test-classes [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:48: cannot find symbol [javac] symbol : method assertThat(javax.xml.transform.Source,org.hamcrest.Matcher<capture#983 of ? super javax.xml.transform.dom.DOMSource>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(s, is(DOMSource.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:50: cannot find symbol [javac] symbol : method assertThat(java.lang.Object,org.hamcrest.Matcher<capture#474 of ? super org.w3c.dom.Document>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(o, is(Document.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:116: cannot find symbol [javac] symbol : method assertThat(javax.xml.transform.Source,org.hamcrest.Matcher<capture#374 of ? super javax.xml.transform.dom.DOMSource>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(s, is(DOMSource.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java:118: cannot find symbol [javac] symbol : method assertThat(java.lang.Object,org.hamcrest.Matcher<capture#754 of ? super org.w3c.dom.Document>) [javac] location: class net.sf.xmlunit.builder.InputTest [javac] assertThat(o, is(Document.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java:64: cannot find symbol [javac] symbol : method assertThat(java.lang.Exception,org.hamcrest.Matcher<capture#94 of ? super net.sf.xmlunit.exceptions.XMLUnitException>) [javac] location: class net.sf.xmlunit.validation.JAXPValidatorTest [javac] assertThat(e, is(XMLUnitException.class)); [javac] ^ [javac] /srv/gump/public/workspace/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java:75: cannot find symbol [javac] symbol : method assertThat(java.lang.Exception,org.hamcrest.Matcher<capture#97 of ? super net.sf.xmlunit.exceptions.XMLUnitException>) [javac] location: class net.sf.xmlunit.validation.JAXPValidatorTest [javac] assertThat(e, is(XMLUnitException.class)); [javac] ^ [javac] 6 errors BUILD FAILED /srv/gump/public/workspace/xmlunit/build.xml:123: Compile failed; see the compiler error output for details. Total time: 2 seconds --------------------------------------------- To subscribe to this information via syndicated feeds: - RSS: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/rss.xml - Atom: http://vmgump.apache.org/gump/public/xmlunit/xmlunit/atom.xml ============================== Gump Tracking Only === Produced by Gump version 2.3. Gump Run 32000830052009, vmgump:vmgump-public:32000830052009 Gump E-mail Identifier (unique within run) #4. -- Apache Gump http://gump.apache.org/ [Instance: vmgump] |
From: <bo...@us...> - 2009-05-28 13:07:19
|
Revision: 339 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=339&view=rev Author: bodewig Date: 2009-05-28 13:07:01 +0000 (Thu, 28 May 2009) Log Message: ----------- JAXP implementation of Validator Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/jaxp13/Validator.java Added Paths: ----------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/JAXPValidator.java trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java Added: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/JAXPValidator.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/JAXPValidator.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/JAXPValidator.java 2009-05-28 13:07:01 UTC (rev 339) @@ -0,0 +1,127 @@ +/* + This file is licensed 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 net.sf.xmlunit.validation; + +import java.util.Collections; +import java.util.LinkedList; +import java.util.List; +import javax.xml.transform.Source; +import javax.xml.validation.Schema; +import javax.xml.validation.SchemaFactory; +import net.sf.xmlunit.exceptions.XMLUnitException; +import org.xml.sax.ErrorHandler; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; + +/** + * Validator using the javax.xml.validation namespace. + */ +public class JAXPValidator extends Validator { + private final String language; + private final SchemaFactory factory; + + public JAXPValidator(String language) { + this(language, null); + } + + public JAXPValidator(String language, SchemaFactory factory) { + this.language = language; + this.factory = factory; + } + + private SchemaFactory getFactory() { + return factory == null ? SchemaFactory.newInstance(language) : factory; + } + + @Override public ValidationResult validateSchema() { + ValidationHandler v = new ValidationHandler(); + SchemaFactory f = getFactory(); + f.setErrorHandler(v); + try { + f.newSchema(getSchemaSources()); + } catch (SAXException e) { + if (e instanceof SAXParseException) { + v.error((SAXParseException) e); + } else { + throw new XMLUnitException(e); + } + } finally { + f.setErrorHandler(null); + } + return v.getResult(); + } + + @Override public ValidationResult validateInstance(Source s) { + Schema schema; + try { + schema = getFactory().newSchema(getSchemaSources()); + } catch (SAXException e) { + throw new XMLUnitException("The schema is invalid", e); + } + ValidationHandler v = new ValidationHandler(); + javax.xml.validation.Validator val = schema.newValidator(); + val.setErrorHandler(v); + try { + val.validate(s); + } catch (SAXException e) { + if (e instanceof SAXParseException) { + v.error((SAXParseException) e); + } else { + throw new XMLUnitException(e); + } + } catch (java.io.IOException e) { + throw new XMLUnitException(e); + } + return v.getResult(); + } + + + private static class ValidationHandler implements ErrorHandler { + private List<ValidationProblem> problems = + new LinkedList<ValidationProblem>(); + private boolean valid = true; + // fatal errors are re-thrown by the parser + private SAXParseException lastFatalError = null; + + public void error(SAXParseException e) { + if (e != lastFatalError) { + valid = false; + problems.add(ValidationProblem.fromException(e, + ValidationProblem + .ProblemType.ERROR) + ); + } + } + + public void fatalError(SAXParseException e) { + valid = false; + lastFatalError = e; + problems.add(ValidationProblem.fromException(e, + ValidationProblem + .ProblemType.ERROR)); + } + + public void warning(SAXParseException e) { + problems.add(ValidationProblem.fromException(e, + ValidationProblem + .ProblemType.WARNING)); + } + + private ValidationResult getResult() { + return new ValidationResult(valid, + Collections.unmodifiableList(problems) + ); + } + } +} Property changes on: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/JAXPValidator.java ___________________________________________________________________ Added: svn:eol-style + native Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java 2009-05-27 14:47:22 UTC (rev 338) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java 2009-05-28 13:07:01 UTC (rev 339) @@ -13,6 +13,8 @@ */ package net.sf.xmlunit.validation; +import org.xml.sax.SAXParseException; + /** * A validation "problem" which may be an error or a warning. */ @@ -60,4 +62,15 @@ public String getMessage() { return message; } + + static ValidationProblem fromException(SAXParseException e, + ProblemType type) { + return new ValidationProblem(e.getMessage(), + e.getLineNumber() > 0 + ? e.getLineNumber() : UNKNOWN, + e.getColumnNumber() > 0 + ? e.getColumnNumber() : UNKNOWN, + type); + } + } Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java 2009-05-27 14:47:22 UTC (rev 338) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java 2009-05-28 13:07:01 UTC (rev 339) @@ -55,7 +55,7 @@ } protected Source[] getSchemaSources() { - return sourceLocations; + return sourceLocations == null ? new Source[0] : sourceLocations; } /** Modified: trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/jaxp13/Validator.java =================================================================== --- trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/jaxp13/Validator.java 2009-05-27 14:47:22 UTC (rev 338) +++ trunk/xmlunit/src/main/java-legacy/org/custommonkey/xmlunit/jaxp13/Validator.java 2009-05-28 13:07:01 UTC (rev 339) @@ -38,13 +38,13 @@ import java.util.ArrayList; import java.util.List; -import javax.xml.XMLConstants; import javax.xml.transform.Source; -import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; +import net.sf.xmlunit.exceptions.XMLUnitException; +import net.sf.xmlunit.validation.JAXPValidator; +import net.sf.xmlunit.validation.Languages; +import net.sf.xmlunit.validation.ValidationProblem; import org.custommonkey.xmlunit.exceptions.XMLUnitRuntimeException; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** @@ -56,15 +56,14 @@ * by your SchemaFactory implementation.</p> */ public class Validator { - private final String schemaLanguage; - private final SchemaFactory factory; - private final ArrayList sources = new ArrayList(); + private final ArrayList<Source> sources = new ArrayList<Source>(); + private final JAXPValidator validator; /** * validates using W3C XML Schema 1.0. */ public Validator() { - this(XMLConstants.W3C_XML_SCHEMA_NS_URI, null); + this(Languages.W3C_XML_SCHEMA_NS_URI, null); } /** @@ -93,8 +92,7 @@ * non-null, the first argument will be ignored. */ protected Validator(String schemaLanguage, SchemaFactory factory) { - this.schemaLanguage = schemaLanguage; - this.factory = factory; + validator = new JAXPValidator(schemaLanguage, factory); } /** @@ -102,13 +100,14 @@ */ public void addSchemaSource(Source s) { sources.add(s); + validator.setSchemaSources(sources.toArray(new Source[0])); } /** * Is the given schema definition valid? */ public boolean isSchemaValid() { - return getSchemaErrors().size() == 0; + return validator.validateSchema().isValid(); } /** @@ -117,27 +116,8 @@ * <p>The list contains {@link org.xml.sax.SAXParseException * SAXParseException}s.</p> */ - public List/*<SAXParseException>*/ getSchemaErrors() { - final ArrayList l = new ArrayList(); - try { - parseSchema(new CollectingErrorHandler(l)); - } catch (SAXException e) { - // error should have been recorded in our ErrorHandler, at - // least that's what the Javadocs say "SchemaFactory is - // not allowed to throw SAXException without first - // reporting it to ErrorHandler.". - // - // Unfortunately not all implementations seem to follow - // this rule. In particular using the setup described in - // org.custommonkey.xmlunit.jaxp13.test_Validator#XtestGoodRelaxNGCompactSyntaxIsValid() - // an exception ("SAXParseException: Content is not - // allowed in prolog.") will be thrown that never enters - // our Errorhandler. - if (l.size() == 0) { - l.add(e); - } - } - return l; + public List<SAXParseException> getSchemaErrors() { + return problemToExceptionList(validator.validateSchema().getProblems()); } /** @@ -150,9 +130,12 @@ * javax.xml.validation.Validator#validate validate in * Validator}). */ - public boolean isInstanceValid(Source instance) - throws XMLUnitRuntimeException { - return getInstanceErrors(instance).size() == 0; + public boolean isInstanceValid(Source instance) { + try { + return validator.validateInstance(instance).isValid(); + } catch (XMLUnitException e) { + throw new XMLUnitRuntimeException(e.getMessage(), e.getCause()); + } } /** @@ -167,59 +150,23 @@ * javax.xml.validation.Validator#validate validate in * Validator}). */ - public List/*<SAXParseException>*/ getInstanceErrors(Source instance) - throws XMLUnitRuntimeException { - Schema schema = null; + public List<SAXParseException> getInstanceErrors(Source instance) { try { - schema = parseSchema(null); - } catch (SAXException e) { - throw new XMLUnitRuntimeException("Schema is invalid", e); + return problemToExceptionList(validator.validateInstance(instance). + getProblems()); + } catch (XMLUnitException e) { + throw new XMLUnitRuntimeException(e.getMessage(), e.getCause()); } + } - final ArrayList l = new ArrayList(); - javax.xml.validation.Validator v = schema.newValidator(); - v.setErrorHandler(new CollectingErrorHandler(l)); - try { - v.validate(instance); - } catch (SAXException e) { - // error should have been recorded in our ErrorHandler, - // but better double-check. - if (l.size() == 0) { - l.add(e); - } - } catch (java.io.IOException i) { - throw new XMLUnitRuntimeException("Error reading instance source", - i); + private static List<SAXParseException> + problemToExceptionList(Iterable<ValidationProblem> problems) { + final List<SAXParseException> l = new ArrayList<SAXParseException>(); + for (ValidationProblem p : problems) { + l.add(new SAXParseException(p.getMessage(), + null, null, + p.getLine(), p.getColumn())); } return l; } - - private Schema parseSchema(ErrorHandler h) throws SAXException { - SchemaFactory fac = factory != null ? factory - : SchemaFactory.newInstance(schemaLanguage); - fac.setErrorHandler(h); - try { - return fac.newSchema((Source[]) - sources.toArray(new Source[sources.size()])); - } finally { - fac.setErrorHandler(null); - } - } - - private static final class CollectingErrorHandler implements ErrorHandler { - private final List l; - - CollectingErrorHandler(List l) { - this.l = l; - } - public void error(SAXParseException e) { - l.add(e); - } - public void fatalError(SAXParseException e) { - l.add(e); - } - public void warning(SAXParseException e) { - l.add(e); - } - } } Added: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java =================================================================== --- trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java (rev 0) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java 2009-05-28 13:07:01 UTC (rev 339) @@ -0,0 +1,78 @@ +/* + This file is licensed 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 net.sf.xmlunit.validation; + +import java.io.File; +import javax.xml.transform.stream.StreamSource; +import net.sf.xmlunit.exceptions.XMLUnitException; +import static org.hamcrest.core.Is.*; +import static org.junit.Assert.*; +import org.junit.Test; + +public class JAXPValidatorTest { + + @Test public void shouldSuccessfullyValidateSchema() { + JAXPValidator v = new JAXPValidator(Languages.W3C_XML_SCHEMA_NS_URI); + v.setSchemaSource(new StreamSource(new File("src/tests/resources/Book.xsd"))); + ValidationResult r = v.validateSchema(); + assertTrue(r.isValid()); + assertFalse(r.getProblems().iterator().hasNext()); + } + + @Test public void shouldSuccessfullyValidateInstance() { + JAXPValidator v = new JAXPValidator(Languages.W3C_XML_SCHEMA_NS_URI); + v.setSchemaSource(new StreamSource(new File("src/tests/resources/Book.xsd"))); + ValidationResult r = v.validateInstance(new StreamSource(new File("src/tests/resources/BookXsdGenerated.xml"))); + assertTrue(r.isValid()); + assertFalse(r.getProblems().iterator().hasNext()); + } + + @Test public void shouldFailOnBrokenSchema() { + JAXPValidator v = new JAXPValidator(Languages.W3C_XML_SCHEMA_NS_URI); + v.setSchemaSource(new StreamSource(new File("src/tests/resources/broken.xsd"))); + ValidationResult r = v.validateSchema(); + assertFalse(r.isValid()); + assertTrue(r.getProblems().iterator().hasNext()); + } + + @Test public void shouldFailOnBrokenInstance() { + JAXPValidator v = new JAXPValidator(Languages.W3C_XML_SCHEMA_NS_URI); + v.setSchemaSource(new StreamSource(new File("src/tests/resources/Book.xsd"))); + ValidationResult r = v.validateInstance(new StreamSource(new File("src/tests/resources/invalidBook.xml"))); + assertFalse(r.isValid()); + assertTrue(r.getProblems().iterator().hasNext()); + } + + @Test public void shouldThrowWhenValidatingInstanceAndSchemaIsInvalid() { + JAXPValidator v = new JAXPValidator(Languages.W3C_XML_SCHEMA_NS_URI); + v.setSchemaSource(new StreamSource(new File("src/tests/resources/broken.xsd"))); + try { + v.validateInstance(new StreamSource(new File("src/tests/resources/BookXsdGenerated.xml"))); + fail("should have thrown an exception"); + } catch (Exception e) { + assertThat(e, is(XMLUnitException.class)); + } + } + + @Test public void shouldThrowWhenValidatingInstanceAndSchemaIsNotThere() { + JAXPValidator v = new JAXPValidator(Languages.W3C_XML_SCHEMA_NS_URI); + v.setSchemaSource(new StreamSource(new File("src/tests/resources/foo.xsd"))); + try { + v.validateInstance(new StreamSource(new File("src/tests/resources/BookXsdGenerated.xml"))); + fail("should have thrown an exception"); + } catch (Exception e) { + assertThat(e, is(XMLUnitException.class)); + } + } +} Property changes on: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/validation/JAXPValidatorTest.java ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-27 14:47:28
|
Revision: 338 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=338&view=rev Author: bodewig Date: 2009-05-27 14:47:22 +0000 (Wed, 27 May 2009) Log Message: ----------- merge additional testcase from 1.x branch Modified Paths: -------------- trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DifferenceEngine.java Property Changed: ---------------- trunk/xmlunit/src/tests/java-legacy/ Property changes on: trunk/xmlunit/src/tests/java-legacy ___________________________________________________________________ Modified: svn:mergeinfo - + /branches/xmlunit-1.x/tests/java:337 Modified: trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DifferenceEngine.java =================================================================== --- trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DifferenceEngine.java 2009-05-27 14:27:38 UTC (rev 337) +++ trunk/xmlunit/src/tests/java-legacy/org/custommonkey/xmlunit/test_DifferenceEngine.java 2009-05-27 14:47:22 UTC (rev 338) @@ -877,13 +877,66 @@ assertEquals(7, count[0]); } + /** + * @see http://sourceforge.net/forum/forum.php?thread_id=3284504&forum_id=73274 + */ + public void testNamespaceAttributeDifferences() throws Exception { + String control = "<?xml version = \"1.0\" encoding = \"UTF-8\"?>" + + "<ns0:Message xmlns:ns0 = \"http://mynamespace\">" + + "<ns0:EventHeader>" + + "<ns0:EventID>9999</ns0:EventID>" + + "<ns0:MessageID>1243409665297</ns0:MessageID>" + + "<ns0:MessageVersionID>1.0</ns0:MessageVersionID>" + + "<ns0:EventName>TEST-EVENT</ns0:EventName>" + + "<ns0:BWDomain>TEST</ns0:BWDomain>" + + "<ns0:DateTimeStamp>2009-01-01T12:00:00</ns0:DateTimeStamp>" + + "<ns0:SchemaPayloadRef>anything</ns0:SchemaPayloadRef>" + + "<ns0:MessageURI>anything</ns0:MessageURI>" + + "<ns0:ResendFlag>F</ns0:ResendFlag>" + + "</ns0:EventHeader>" + + "<ns0:EventBody>" + + "<ns0:XMLContent>" + + "<xyz:root xmlns:xyz=\"http://test.com/xyz\">" + + "<xyz:test1>A</xyz:test1>" + + "<xyz:test2>B</xyz:test2>" + + "</xyz:root>" + + "</ns0:XMLContent>" + + "</ns0:EventBody>" + + "</ns0:Message>"; + String test = + "<abc:Message xmlns:abc=\"http://mynamespace\" xmlns:xyz=\"http://test.com/xyz\">" + + "<abc:EventHeader>" + + "<abc:EventID>9999</abc:EventID>" + + "<abc:MessageID>1243409665297</abc:MessageID>" + + "<abc:MessageVersionID>1.0</abc:MessageVersionID>" + + "<abc:EventName>TEST-EVENT</abc:EventName>" + + "<abc:BWDomain>TEST</abc:BWDomain>" + + "<abc:DateTimeStamp>2009-01-01T12:00:00</abc:DateTimeStamp>" + + "<abc:SchemaPayloadRef>anything</abc:SchemaPayloadRef>" + + "<abc:MessageURI>anything</abc:MessageURI>" + + "<abc:ResendFlag>F</abc:ResendFlag>" + + "</abc:EventHeader>" + + "<abc:EventBody>" + + "<abc:XMLContent>" + + "<xyz:root>" + + "<xyz:test1>A</xyz:test1>" + + "<xyz:test2>B</xyz:test2>" + + "</xyz:root>" + + "</abc:XMLContent>" + + "</abc:EventBody>" + + "</abc:Message>"; + listener.tracing = true; + listenToDifferences(control, test); + assertFalse(listener.different); + } + private void listenToDifferences(String control, String test) throws SAXException, IOException { Document controlDoc = XMLUnit.buildControlDocument(control); Document testDoc = XMLUnit.buildTestDocument(test); engine.compare(controlDoc, testDoc, listener, DEFAULT_ELEMENT_QUALIFIER); } - + private void resetListener() { listener = new CollectingDifferenceListener(); @@ -901,13 +954,13 @@ return !afterDifference.isRecoverable(); } } - + private class NeverHaltingComparisonController implements ComparisonController { public boolean haltComparison(Difference afterDifference) { return false; } } - + private class CollectingDifferenceListener implements DifferenceListener { public String expected; public String actual; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-27 14:27:40
|
Revision: 337 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=337&view=rev Author: bodewig Date: 2009-05-27 14:27:38 +0000 (Wed, 27 May 2009) Log Message: ----------- Add unit test for forum thread Modified Paths: -------------- branches/xmlunit-1.x/tests/java/org/custommonkey/xmlunit/test_DifferenceEngine.java Modified: branches/xmlunit-1.x/tests/java/org/custommonkey/xmlunit/test_DifferenceEngine.java =================================================================== --- branches/xmlunit-1.x/tests/java/org/custommonkey/xmlunit/test_DifferenceEngine.java 2009-05-25 15:43:57 UTC (rev 336) +++ branches/xmlunit-1.x/tests/java/org/custommonkey/xmlunit/test_DifferenceEngine.java 2009-05-27 14:27:38 UTC (rev 337) @@ -877,13 +877,66 @@ assertEquals(7, count[0]); } + /** + * @see http://sourceforge.net/forum/forum.php?thread_id=3284504&forum_id=73274 + */ + public void testNamespaceAttributeDifferences() throws Exception { + String control = "<?xml version = \"1.0\" encoding = \"UTF-8\"?>" + + "<ns0:Message xmlns:ns0 = \"http://mynamespace\">" + + "<ns0:EventHeader>" + + "<ns0:EventID>9999</ns0:EventID>" + + "<ns0:MessageID>1243409665297</ns0:MessageID>" + + "<ns0:MessageVersionID>1.0</ns0:MessageVersionID>" + + "<ns0:EventName>TEST-EVENT</ns0:EventName>" + + "<ns0:BWDomain>TEST</ns0:BWDomain>" + + "<ns0:DateTimeStamp>2009-01-01T12:00:00</ns0:DateTimeStamp>" + + "<ns0:SchemaPayloadRef>anything</ns0:SchemaPayloadRef>" + + "<ns0:MessageURI>anything</ns0:MessageURI>" + + "<ns0:ResendFlag>F</ns0:ResendFlag>" + + "</ns0:EventHeader>" + + "<ns0:EventBody>" + + "<ns0:XMLContent>" + + "<xyz:root xmlns:xyz=\"http://test.com/xyz\">" + + "<xyz:test1>A</xyz:test1>" + + "<xyz:test2>B</xyz:test2>" + + "</xyz:root>" + + "</ns0:XMLContent>" + + "</ns0:EventBody>" + + "</ns0:Message>"; + String test = + "<abc:Message xmlns:abc=\"http://mynamespace\" xmlns:xyz=\"http://test.com/xyz\">" + + "<abc:EventHeader>" + + "<abc:EventID>9999</abc:EventID>" + + "<abc:MessageID>1243409665297</abc:MessageID>" + + "<abc:MessageVersionID>1.0</abc:MessageVersionID>" + + "<abc:EventName>TEST-EVENT</abc:EventName>" + + "<abc:BWDomain>TEST</abc:BWDomain>" + + "<abc:DateTimeStamp>2009-01-01T12:00:00</abc:DateTimeStamp>" + + "<abc:SchemaPayloadRef>anything</abc:SchemaPayloadRef>" + + "<abc:MessageURI>anything</abc:MessageURI>" + + "<abc:ResendFlag>F</abc:ResendFlag>" + + "</abc:EventHeader>" + + "<abc:EventBody>" + + "<abc:XMLContent>" + + "<xyz:root>" + + "<xyz:test1>A</xyz:test1>" + + "<xyz:test2>B</xyz:test2>" + + "</xyz:root>" + + "</abc:XMLContent>" + + "</abc:EventBody>" + + "</abc:Message>"; + listener.tracing = true; + listenToDifferences(control, test); + assertFalse(listener.different); + } + private void listenToDifferences(String control, String test) throws SAXException, IOException { Document controlDoc = XMLUnit.buildControlDocument(control); Document testDoc = XMLUnit.buildTestDocument(test); engine.compare(controlDoc, testDoc, listener, DEFAULT_ELEMENT_QUALIFIER); } - + private void resetListener() { listener = new CollectingDifferenceListener(); @@ -901,13 +954,13 @@ return !afterDifference.isRecoverable(); } } - + private class NeverHaltingComparisonController implements ComparisonController { public boolean haltComparison(Difference afterDifference) { return false; } } - + private class CollectingDifferenceListener implements DifferenceListener { public String expected; public String actual; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-25 15:44:05
|
Revision: 336 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=336&view=rev Author: bodewig Date: 2009-05-25 15:43:57 +0000 (Mon, 25 May 2009) Log Message: ----------- typo Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java 2009-05-25 15:43:26 UTC (rev 335) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java 2009-05-25 15:43:57 UTC (rev 336) @@ -16,7 +16,7 @@ import javax.xml.XMLConstants; /** - * Contants for the languages supported by XMLUnit's schema + * Constants for the languages supported by XMLUnit's schema * validation. More languages may be supported depending on your JAXP * environment. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-25 15:43:31
|
Revision: 335 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=335&view=rev Author: bodewig Date: 2009-05-25 15:43:26 +0000 (Mon, 25 May 2009) Log Message: ----------- whitespace Modified Paths: -------------- trunk/xmlunit/src/main/net-core/validation/Languages.cs trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs trunk/xmlunit/src/main/net-core/validation/Validator.cs Modified: trunk/xmlunit/src/main/net-core/validation/Languages.cs =================================================================== --- trunk/xmlunit/src/main/net-core/validation/Languages.cs 2009-05-25 15:42:30 UTC (rev 334) +++ trunk/xmlunit/src/main/net-core/validation/Languages.cs 2009-05-25 15:43:26 UTC (rev 335) @@ -17,16 +17,16 @@ /// Constants for the languages supported by XMLUnit's schema /// validation. /// </summary> -public static class Languages { + public static class Languages { - /// <summary>W3C XML Schema.</summary> - public const string W3C_XML_SCHEMA_NS_URI = - "http://www.w3.org/2001/XMLSchema"; + /// <summary>W3C XML Schema.</summary> + public const string W3C_XML_SCHEMA_NS_URI = + "http://www.w3.org/2001/XMLSchema"; - /// <summary>DTD.</summary> - public const string XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml"; + /// <summary>DTD.</summary> + public const string XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml"; - /// <summary>XDR.</summary> - public const string XDR_NS_URI = "xmlunit:validation:XDR"; + /// <summary>XDR.</summary> + public const string XDR_NS_URI = "xmlunit:validation:XDR"; + } } -} Modified: trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs =================================================================== --- trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs 2009-05-25 15:42:30 UTC (rev 334) +++ trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs 2009-05-25 15:43:26 UTC (rev 335) @@ -18,55 +18,55 @@ /// <summary> /// A validation "problem" which may be an error or a warning. /// </summary> -public class ValidationProblem { - public const int UNKNOWN = -1; + public class ValidationProblem { + public const int UNKNOWN = -1; - private readonly int line, column; - private readonly XmlSeverityType type; - private readonly string message; + private readonly int line, column; + private readonly XmlSeverityType type; + private readonly string message; - public ValidationProblem(string message, int line, int column, - XmlSeverityType type) { - this.message = message; - this.line = line; - this.column = column; - this.type = type; - } + public ValidationProblem(string message, int line, int column, + XmlSeverityType type) { + this.message = message; + this.line = line; + this.column = column; + this.type = type; + } - /// <summary> - /// The line where the problem occured or UNKNOWN. - /// </summary> - public int Line { - get { - return line; + /// <summary> + /// The line where the problem occured or UNKNOWN. + /// </summary> + public int Line { + get { + return line; + } } - } - /// <summary> - /// The column where the problem occured or UNKNOWN. - /// </summary> - public int Column { - get { - return column; + /// <summary> + /// The column where the problem occured or UNKNOWN. + /// </summary> + public int Column { + get { + return column; + } } - } - /// <summary> - /// Whether this is an error or a warning. - /// </summary> - public XmlSeverityType Type { - get { - return type; + /// <summary> + /// Whether this is an error or a warning. + /// </summary> + public XmlSeverityType Type { + get { + return type; + } } - } - /// <summary> - /// The problem's message. - /// </summary> - public string Message { - get { - return message; + /// <summary> + /// The problem's message. + /// </summary> + public string Message { + get { + return message; + } } } } -} Modified: trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs =================================================================== --- trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs 2009-05-25 15:42:30 UTC (rev 334) +++ trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs 2009-05-25 15:43:26 UTC (rev 335) @@ -19,32 +19,32 @@ /// <summary> /// The result of a validation. /// </summary> -public class ValidationResult { - private readonly bool valid; - private readonly IEnumerable<ValidationProblem> problems; + public class ValidationResult { + private readonly bool valid; + private readonly IEnumerable<ValidationProblem> problems; - public ValidationResult(bool valid, IEnumerable<ValidationProblem> problems) { - this.valid = valid; - this.problems = problems; - } + public ValidationResult(bool valid, IEnumerable<ValidationProblem> problems) { + this.valid = valid; + this.problems = problems; + } - /// <summary> - /// Has the validation been successful? - /// </summary> - public bool Valid { - get { - return valid; + /// <summary> + /// Has the validation been successful? + /// </summary> + public bool Valid { + get { + return valid; + } } - } - /// <summary> - /// Retrieves the problems that have been found. - /// </summary> - public IEnumerable<ValidationProblem> Problems { - get { - return problems; + /// <summary> + /// Retrieves the problems that have been found. + /// </summary> + public IEnumerable<ValidationProblem> Problems { + get { + return problems; + } } } } -} Modified: trunk/xmlunit/src/main/net-core/validation/Validator.cs =================================================================== --- trunk/xmlunit/src/main/net-core/validation/Validator.cs 2009-05-25 15:42:30 UTC (rev 334) +++ trunk/xmlunit/src/main/net-core/validation/Validator.cs 2009-05-25 15:43:26 UTC (rev 335) @@ -21,88 +21,88 @@ /// Validates a piece of XML against a schema given in a supported /// language or the defintion of such a schema itself. /// </summary> -public class Validator { - private readonly ValidationType language; - private string schemaURI; - private ISource[] sourceLocations; + public class Validator { + private readonly ValidationType language; + private string schemaURI; + private ISource[] sourceLocations; - private Validator(ValidationType language) { - this.language = language; - } + private Validator(ValidationType language) { + this.language = language; + } - /// <summary> - /// The URI (or for example the System ID in case of a DTD) that - /// identifies the schema to validate or use during validation. - /// </summary> - public virtual string SchemaURI { - set { - schemaURI = value; + /// <summary> + /// The URI (or for example the System ID in case of a DTD) that + /// identifies the schema to validate or use during validation. + /// </summary> + public virtual string SchemaURI { + set { + schemaURI = value; + } + get { + return schemaURI; + } } - get { - return schemaURI; + + /// <summary> + /// Where to find the schema. + /// </summary> + public virtual ISource[] SchemaSources { + set { + if (value != null) { + sourceLocations = new ISource[value.Length]; + Array.Copy(value, 0, sourceLocations, 0, value.Length); + } else { + sourceLocations = null; + } + } + get { + return sourceLocations; + } } - } - /// <summary> - /// Where to find the schema. - /// </summary> - public virtual ISource[] SchemaSources { - set { - if (value != null) { - sourceLocations = new ISource[value.Length]; - Array.Copy(value, 0, sourceLocations, 0, value.Length); - } else { - sourceLocations = null; + /// <summary> + /// Where to find the schema. + /// </summary> + public ISource SchemaSource { + set { + SchemaSources = value == null ? null : new ISource[] {value}; + } } + + /// <summary> + /// Validates a schema. + /// </summary> + public virtual ValidationResult ValidateSchema() { + throw new NotImplementedException(); } - get { - return sourceLocations; - } - } - /// <summary> - /// Where to find the schema. - /// </summary> - public ISource SchemaSource { - set { - SchemaSources = value == null ? null : new ISource[] {value}; + /// <summary> + /// Validates an instance against the schema. + /// </summary> + public virtual ValidationResult ValidateInstance(ISource instance) { + throw new NotImplementedException(); } - } - /// <summary> - /// Validates a schema. - /// </summary> - public virtual ValidationResult ValidateSchema() { - throw new NotImplementedException(); - } - /// <summary> - /// Validates an instance against the schema. - /// </summary> - public virtual ValidationResult ValidateInstance(ISource instance) { - throw new NotImplementedException(); - } + private static readonly IDictionary<string, ValidationType> types; + static Validator() { + types = new Dictionary<string, ValidationType>(); + types[Languages.W3C_XML_SCHEMA_NS_URI] = ValidationType.Schema; + types[Languages.XML_DTD_NS_URI] = ValidationType.DTD; + types[Languages.XDR_NS_URI] = ValidationType.XDR; + } - private static readonly IDictionary<string, ValidationType> types; - - static Validator() { - types = new Dictionary<string, ValidationType>(); - types[Languages.W3C_XML_SCHEMA_NS_URI] = ValidationType.Schema; - types[Languages.XML_DTD_NS_URI] = ValidationType.DTD; - types[Languages.XDR_NS_URI] = ValidationType.XDR; - } - - /// <summary> - /// Factory that obtains a Validator instance based on the schema language. - /// </summary> - public static Validator ForLanguage(string language) { - ValidationType t; - if (types.TryGetValue(language, out t)) { - return new Validator(t); + /// <summary> + /// Factory that obtains a Validator instance based on the schema language. + /// </summary> + public static Validator ForLanguage(string language) { + ValidationType t; + if (types.TryGetValue(language, out t)) { + return new Validator(t); + } + // TODO pick a better exception type + throw new NotImplementedException(); } - // TODO pick a better exception type - throw new NotImplementedException(); } } -} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-25 15:42:43
|
Revision: 334 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=334&view=rev Author: bodewig Date: 2009-05-25 15:42:30 +0000 (Mon, 25 May 2009) Log Message: ----------- validation infrastructure .NET style Added Paths: ----------- trunk/xmlunit/src/main/net-core/validation/ trunk/xmlunit/src/main/net-core/validation/Languages.cs trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs trunk/xmlunit/src/main/net-core/validation/Validator.cs Copied: trunk/xmlunit/src/main/net-core/validation/Languages.cs (from rev 333, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java) =================================================================== --- trunk/xmlunit/src/main/net-core/validation/Languages.cs (rev 0) +++ trunk/xmlunit/src/main/net-core/validation/Languages.cs 2009-05-25 15:42:30 UTC (rev 334) @@ -0,0 +1,32 @@ +/* + This file is licensed 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. +*/ +namespace net.sf.xmlunit.validation { + + /// <summary> + /// Constants for the languages supported by XMLUnit's schema + /// validation. + /// </summary> +public static class Languages { + + /// <summary>W3C XML Schema.</summary> + public const string W3C_XML_SCHEMA_NS_URI = + "http://www.w3.org/2001/XMLSchema"; + + /// <summary>DTD.</summary> + public const string XML_DTD_NS_URI = "http://www.w3.org/TR/REC-xml"; + + /// <summary>XDR.</summary> + public const string XDR_NS_URI = "xmlunit:validation:XDR"; +} +} Property changes on: trunk/xmlunit/src/main/net-core/validation/Languages.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: svn:eol-style + native Copied: trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs (from rev 333, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java) =================================================================== --- trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs (rev 0) +++ trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs 2009-05-25 15:42:30 UTC (rev 334) @@ -0,0 +1,72 @@ +/* + This file is licensed 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. +*/ +using System.Xml.Schema; + +namespace net.sf.xmlunit.validation { + + /// <summary> + /// A validation "problem" which may be an error or a warning. + /// </summary> +public class ValidationProblem { + public const int UNKNOWN = -1; + + private readonly int line, column; + private readonly XmlSeverityType type; + private readonly string message; + + public ValidationProblem(string message, int line, int column, + XmlSeverityType type) { + this.message = message; + this.line = line; + this.column = column; + this.type = type; + } + + /// <summary> + /// The line where the problem occured or UNKNOWN. + /// </summary> + public int Line { + get { + return line; + } + } + + /// <summary> + /// The column where the problem occured or UNKNOWN. + /// </summary> + public int Column { + get { + return column; + } + } + + /// <summary> + /// Whether this is an error or a warning. + /// </summary> + public XmlSeverityType Type { + get { + return type; + } + } + + /// <summary> + /// The problem's message. + /// </summary> + public string Message { + get { + return message; + } + } +} +} Property changes on: trunk/xmlunit/src/main/net-core/validation/ValidationProblem.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: svn:eol-style + native Copied: trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs (from rev 333, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationResult.java) =================================================================== --- trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs (rev 0) +++ trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs 2009-05-25 15:42:30 UTC (rev 334) @@ -0,0 +1,50 @@ +/* + This file is licensed 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. +*/ + +using System.Collections.Generic; + +namespace net.sf.xmlunit.validation { + + /// <summary> + /// The result of a validation. + /// </summary> +public class ValidationResult { + private readonly bool valid; + private readonly IEnumerable<ValidationProblem> problems; + + public ValidationResult(bool valid, IEnumerable<ValidationProblem> problems) { + this.valid = valid; + this.problems = problems; + } + + /// <summary> + /// Has the validation been successful? + /// </summary> + public bool Valid { + get { + return valid; + } + } + + /// <summary> + /// Retrieves the problems that have been found. + /// </summary> + public IEnumerable<ValidationProblem> Problems { + get { + return problems; + } + } +} +} + Property changes on: trunk/xmlunit/src/main/net-core/validation/ValidationResult.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: svn:eol-style + native Copied: trunk/xmlunit/src/main/net-core/validation/Validator.cs (from rev 333, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java) =================================================================== --- trunk/xmlunit/src/main/net-core/validation/Validator.cs (rev 0) +++ trunk/xmlunit/src/main/net-core/validation/Validator.cs 2009-05-25 15:42:30 UTC (rev 334) @@ -0,0 +1,108 @@ +/* + This file is licensed 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. +*/ +using System; +using System.Collections.Generic; +using System.Xml; + +namespace net.sf.xmlunit.validation { + + /// <summary> + /// Validates a piece of XML against a schema given in a supported + /// language or the defintion of such a schema itself. + /// </summary> +public class Validator { + private readonly ValidationType language; + private string schemaURI; + private ISource[] sourceLocations; + + private Validator(ValidationType language) { + this.language = language; + } + + /// <summary> + /// The URI (or for example the System ID in case of a DTD) that + /// identifies the schema to validate or use during validation. + /// </summary> + public virtual string SchemaURI { + set { + schemaURI = value; + } + get { + return schemaURI; + } + } + + /// <summary> + /// Where to find the schema. + /// </summary> + public virtual ISource[] SchemaSources { + set { + if (value != null) { + sourceLocations = new ISource[value.Length]; + Array.Copy(value, 0, sourceLocations, 0, value.Length); + } else { + sourceLocations = null; + } + } + get { + return sourceLocations; + } + } + + /// <summary> + /// Where to find the schema. + /// </summary> + public ISource SchemaSource { + set { + SchemaSources = value == null ? null : new ISource[] {value}; + } + } + + /// <summary> + /// Validates a schema. + /// </summary> + public virtual ValidationResult ValidateSchema() { + throw new NotImplementedException(); + } + + /// <summary> + /// Validates an instance against the schema. + /// </summary> + public virtual ValidationResult ValidateInstance(ISource instance) { + throw new NotImplementedException(); + } + + + private static readonly IDictionary<string, ValidationType> types; + + static Validator() { + types = new Dictionary<string, ValidationType>(); + types[Languages.W3C_XML_SCHEMA_NS_URI] = ValidationType.Schema; + types[Languages.XML_DTD_NS_URI] = ValidationType.DTD; + types[Languages.XDR_NS_URI] = ValidationType.XDR; + } + + /// <summary> + /// Factory that obtains a Validator instance based on the schema language. + /// </summary> + public static Validator ForLanguage(string language) { + ValidationType t; + if (types.TryGetValue(language, out t)) { + return new Validator(t); + } + // TODO pick a better exception type + throw new NotImplementedException(); + } +} +} Property changes on: trunk/xmlunit/src/main/net-core/validation/Validator.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-25 15:05:38
|
Revision: 333 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=333&view=rev Author: bodewig Date: 2009-05-25 15:05:35 +0000 (Mon, 25 May 2009) Log Message: ----------- validation infrastructure Added Paths: ----------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationResult.java trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java Added: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java 2009-05-25 15:05:35 UTC (rev 333) @@ -0,0 +1,50 @@ +/* + This file is licensed 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 net.sf.xmlunit.validation; + +import javax.xml.XMLConstants; + +/** + * Contants for the languages supported by XMLUnit's schema + * validation. More languages may be supported depending on your JAXP + * environment. + */ +public final class Languages { + private Languages() {} + + /** + * W3C XML Schema. + * + * @see javax.xml.XMLConstants#W3C_XML_SCHEMA_NS_URI + */ + public static final String W3C_XML_SCHEMA_NS_URI = + XMLConstants.W3C_XML_SCHEMA_NS_URI; + + /** + * DTD + * + * @see javax.xml.XMLConstants#XML_DTD_NS_URI + */ + public static final String XML_DTD_NS_URI = XMLConstants.XML_DTD_NS_URI; + + /** + * RELAX NG + * + * <p>This is most likely only supported if you use additional + * libraries and configure JAXP to use them.</p> + * + * @see javax.xml.XMLConstants#RELAXNG_NS_URI + */ + public static final String RELAXNG_NS_URI = XMLConstants.RELAXNG_NS_URI; +} Property changes on: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Languages.java ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java 2009-05-25 15:05:35 UTC (rev 333) @@ -0,0 +1,63 @@ +/* + This file is licensed 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 net.sf.xmlunit.validation; + +/** + * A validation "problem" which may be an error or a warning. + */ +public class ValidationProblem { + public static enum ProblemType {ERROR, WARNING}; + + public static final int UNKNOWN = -1; + + private final int line, column; + private final ProblemType type; + private final String message; + + public ValidationProblem(String message, int line, int column, + ProblemType type) { + this.message = message; + this.line = line; + this.column = column; + this.type = type; + } + + /** + * The line where the problem occured or {@link #UNKNOWN UNKNOWN}. + */ + public int getLine() { + return line; + } + + /** + * The column where the problem occured or {@link #UNKNOWN UNKNOWN}. + */ + public int getColumn() { + return column; + } + + /** + * Whether this is an error or a warning. + */ + public ProblemType getType() { + return type; + } + + /** + * The problem's message. + */ + public String getMessage() { + return message; + } +} Property changes on: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationProblem.java ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationResult.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationResult.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationResult.java 2009-05-25 15:05:35 UTC (rev 333) @@ -0,0 +1,41 @@ +/* + This file is licensed 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 net.sf.xmlunit.validation; + +/** + * The result of a validation. + */ +public class ValidationResult { + private final boolean valid; + private final Iterable<ValidationProblem> problems; + + public ValidationResult(boolean valid, Iterable<ValidationProblem> problems) { + this.valid = valid; + this.problems = problems; + } + + /** + * Has the validation been successful? + */ + public boolean isValid() { + return valid; + } + + /** + * Retrieves the problems that have been found. + */ + public Iterable<ValidationProblem> getProblems() { + return problems; + } +} Property changes on: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/ValidationResult.java ___________________________________________________________________ Added: svn:eol-style + native Added: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java 2009-05-25 15:05:35 UTC (rev 333) @@ -0,0 +1,83 @@ +/* + This file is licensed 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 net.sf.xmlunit.validation; + +import javax.xml.transform.Source; + +/** + * Validates a piece of XML against a schema given in a supported + * language or the defintion of such a schema itself. + */ +public abstract class Validator { + private String schemaURI; + private Source[] sourceLocations; + + /** + * The URI (or for example the System ID in case of a DTD) that + * identifies the schema to validate or use during validation. + */ + public void setSchemaURI(String uri) { + this.schemaURI = uri; + } + + protected String getSchemaURI() { + return schemaURI; + } + + /** + * Where to find the schema. + */ + public void setSchemaSources(Source[] s) { + if (s != null) { + sourceLocations = new Source[s.length]; + System.arraycopy(s, 0, sourceLocations, 0, s.length); + } else { + sourceLocations = null; + } + } + + /** + * Where to find the schema. + */ + public final void setSchemaSource(Source s) { + setSchemaSources(s == null ? null : new Source[] {s}); + } + + protected Source[] getSchemaSources() { + return sourceLocations; + } + + /** + * Validates a schema. + * + * @throws UnsupportedOperationException if the language's + * implementation doesn't support schema validation + */ + public abstract ValidationResult validateSchema(); + + /** + * Validates an instance against the schema. + */ + public abstract ValidationResult validateInstance(Source instance); + + + /** + * Factory that obtains a Validator instance based on the schema language. + * + * @see Languages + */ + public static Validator forLanguage(String language) { + return null; + } +} \ No newline at end of file Property changes on: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/validation/Validator.java ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-20 15:55:32
|
Revision: 332 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=332&view=rev Author: bodewig Date: 2009-05-20 15:55:23 +0000 (Wed, 20 May 2009) Log Message: ----------- whitespace Modified Paths: -------------- trunk/xmlunit/src/tests/net-core/builder/InputTest.cs Modified: trunk/xmlunit/src/tests/net-core/builder/InputTest.cs =================================================================== --- trunk/xmlunit/src/tests/net-core/builder/InputTest.cs 2009-05-20 15:47:19 UTC (rev 331) +++ trunk/xmlunit/src/tests/net-core/builder/InputTest.cs 2009-05-20 15:55:23 UTC (rev 332) @@ -19,88 +19,88 @@ namespace net.sf.xmlunit.builder { -[TestFixture] -public class InputTest { + [TestFixture] + public class InputTest { - private const string TEST_FILE = "../../../src/tests/resources/test1.xml"; + private const string TEST_FILE = "../../../src/tests/resources/test1.xml"; - private static XmlDocument Parse(ISource s) { - XmlDocument d = new XmlDocument(); - d.Load(s.Reader); - return d; - } + private static XmlDocument Parse(ISource s) { + XmlDocument d = new XmlDocument(); + d.Load(s.Reader); + return d; + } - [Test] public void ShouldParseADocument() { - XmlDocument d = Parse(Input.FromFile(TEST_FILE).Build()); - AllIsWellFor(Input.FromDocument(d).Build()); - } + [Test] public void ShouldParseADocument() { + XmlDocument d = Parse(Input.FromFile(TEST_FILE).Build()); + AllIsWellFor(Input.FromDocument(d).Build()); + } - [Test] public void ShouldParseAnExistingFileByName() { - AllIsWellFor(Input.FromFile(TEST_FILE).Build()); - } + [Test] public void ShouldParseAnExistingFileByName() { + AllIsWellFor(Input.FromFile(TEST_FILE).Build()); + } - [Test] public void ShouldParseAnExistingFileFromStream() { - using (FileStream fs = new FileStream(TEST_FILE, FileMode.Open, - FileAccess.Read)) { - AllIsWellFor(Input.FromStream(fs).Build()); + [Test] public void ShouldParseAnExistingFileFromStream() { + using (FileStream fs = new FileStream(TEST_FILE, FileMode.Open, + FileAccess.Read)) { + AllIsWellFor(Input.FromStream(fs).Build()); + } } - } - [Test] public void ShouldParseAnExistingFileFromReader() { - using (StreamReader r = new StreamReader(TEST_FILE)) { - AllIsWellFor(Input.FromReader(r).Build()); + [Test] public void ShouldParseAnExistingFileFromReader() { + using (StreamReader r = new StreamReader(TEST_FILE)) { + AllIsWellFor(Input.FromReader(r).Build()); + } } - } - [Test] public void ShouldParseString() { - AllIsWellFor(Input.FromMemory(Encoding.UTF8.GetString(ReadTestFile())) - .Build()); - } + [Test] public void ShouldParseString() { + AllIsWellFor(Input.FromMemory(Encoding.UTF8.GetString(ReadTestFile())) + .Build()); + } - [Test] public void ShouldParseBytes() { - AllIsWellFor(Input.FromMemory(ReadTestFile()).Build()); - } + [Test] public void ShouldParseBytes() { + AllIsWellFor(Input.FromMemory(ReadTestFile()).Build()); + } - [Ignore("looks as if file-URIs didn't work, revisit")] - [Test] public void ShouldParseFileFromURIString() { - AllIsWellFor(Input.FromURI("file:" + TEST_FILE).Build()); - } + [Ignore("looks as if file-URIs didn't work, revisit")] + [Test] public void ShouldParseFileFromURIString() { + AllIsWellFor(Input.FromURI("file:" + TEST_FILE).Build()); + } - [Ignore("looks as if file-URIs didn't work, revisit")] - [Test] public void ShouldParseFileFromURI() { - AllIsWellFor(Input.FromURI(new Uri("file:" + TEST_FILE)).Build()); - } + [Ignore("looks as if file-URIs didn't work, revisit")] + [Test] public void ShouldParseFileFromURI() { + AllIsWellFor(Input.FromURI(new Uri("file:" + TEST_FILE)).Build()); + } - [Test] public void ShouldParseATransformation() { - ISource input = Input.FromMemory("<animal>furry</animal>").Build(); - ISource s = Input.ByTransforming(input) - .WithStylesheet(Input.FromFile("../../../src/tests/resources/animal.xsl") - .Build()) - .Build(); - Assert.That(s, Is.Not.Null); - XmlDocument d = Parse(s); - Assert.That(d, Is.Not.Null); - Assert.That(d.DocumentElement.Name, Is.EqualTo("furry")); - } + [Test] public void ShouldParseATransformation() { + ISource input = Input.FromMemory("<animal>furry</animal>").Build(); + ISource s = Input.ByTransforming(input) + .WithStylesheet(Input.FromFile("../../../src/tests/resources/animal.xsl") + .Build()) + .Build(); + Assert.That(s, Is.Not.Null); + XmlDocument d = Parse(s); + Assert.That(d, Is.Not.Null); + Assert.That(d.DocumentElement.Name, Is.EqualTo("furry")); + } - private static void AllIsWellFor(ISource s) { - Assert.That(s, Is.Not.Null); - XmlDocument d = Parse(s); - Assert.That(d, Is.Not.Null); - Assert.That(d.DocumentElement.Name, Is.EqualTo("animal")); - } + private static void AllIsWellFor(ISource s) { + Assert.That(s, Is.Not.Null); + XmlDocument d = Parse(s); + Assert.That(d, Is.Not.Null); + Assert.That(d.DocumentElement.Name, Is.EqualTo("animal")); + } - private static byte[] ReadTestFile() { - using (FileStream fs = new FileStream(TEST_FILE, FileMode.Open, - FileAccess.Read)) - using (MemoryStream ms = new MemoryStream()) { - byte[] buffer = new byte[1024]; - int read = -1; - while ((read = fs.Read(buffer, 0, buffer.Length)) > 0) { - ms.Write(buffer, 0, read); + private static byte[] ReadTestFile() { + using (FileStream fs = new FileStream(TEST_FILE, FileMode.Open, + FileAccess.Read)) + using (MemoryStream ms = new MemoryStream()) { + byte[] buffer = new byte[1024]; + int read = -1; + while ((read = fs.Read(buffer, 0, buffer.Length)) > 0) { + ms.Write(buffer, 0, read); + } + return ms.ToArray(); + } } - return ms.ToArray(); - } } -} } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-20 15:47:31
|
Revision: 331 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=331&view=rev Author: bodewig Date: 2009-05-20 15:47:19 +0000 (Wed, 20 May 2009) Log Message: ----------- port input builder test to .NET Modified Paths: -------------- trunk/xmlunit/xmlunit.nant.build Added Paths: ----------- trunk/xmlunit/src/tests/net-core/ trunk/xmlunit/src/tests/net-core/builder/ trunk/xmlunit/src/tests/net-core/builder/InputTest.cs Copied: trunk/xmlunit/src/tests/net-core/builder/InputTest.cs (from rev 329, trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java) =================================================================== --- trunk/xmlunit/src/tests/net-core/builder/InputTest.cs (rev 0) +++ trunk/xmlunit/src/tests/net-core/builder/InputTest.cs 2009-05-20 15:47:19 UTC (rev 331) @@ -0,0 +1,106 @@ +/* + This file is licensed 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. +*/ +using System; +using System.IO; +using System.Text; +using System.Xml; +using NUnit.Framework; + +namespace net.sf.xmlunit.builder { + +[TestFixture] +public class InputTest { + + private const string TEST_FILE = "../../../src/tests/resources/test1.xml"; + + private static XmlDocument Parse(ISource s) { + XmlDocument d = new XmlDocument(); + d.Load(s.Reader); + return d; + } + + [Test] public void ShouldParseADocument() { + XmlDocument d = Parse(Input.FromFile(TEST_FILE).Build()); + AllIsWellFor(Input.FromDocument(d).Build()); + } + + [Test] public void ShouldParseAnExistingFileByName() { + AllIsWellFor(Input.FromFile(TEST_FILE).Build()); + } + + [Test] public void ShouldParseAnExistingFileFromStream() { + using (FileStream fs = new FileStream(TEST_FILE, FileMode.Open, + FileAccess.Read)) { + AllIsWellFor(Input.FromStream(fs).Build()); + } + } + + [Test] public void ShouldParseAnExistingFileFromReader() { + using (StreamReader r = new StreamReader(TEST_FILE)) { + AllIsWellFor(Input.FromReader(r).Build()); + } + } + + [Test] public void ShouldParseString() { + AllIsWellFor(Input.FromMemory(Encoding.UTF8.GetString(ReadTestFile())) + .Build()); + } + + [Test] public void ShouldParseBytes() { + AllIsWellFor(Input.FromMemory(ReadTestFile()).Build()); + } + + [Ignore("looks as if file-URIs didn't work, revisit")] + [Test] public void ShouldParseFileFromURIString() { + AllIsWellFor(Input.FromURI("file:" + TEST_FILE).Build()); + } + + [Ignore("looks as if file-URIs didn't work, revisit")] + [Test] public void ShouldParseFileFromURI() { + AllIsWellFor(Input.FromURI(new Uri("file:" + TEST_FILE)).Build()); + } + + [Test] public void ShouldParseATransformation() { + ISource input = Input.FromMemory("<animal>furry</animal>").Build(); + ISource s = Input.ByTransforming(input) + .WithStylesheet(Input.FromFile("../../../src/tests/resources/animal.xsl") + .Build()) + .Build(); + Assert.That(s, Is.Not.Null); + XmlDocument d = Parse(s); + Assert.That(d, Is.Not.Null); + Assert.That(d.DocumentElement.Name, Is.EqualTo("furry")); + } + + private static void AllIsWellFor(ISource s) { + Assert.That(s, Is.Not.Null); + XmlDocument d = Parse(s); + Assert.That(d, Is.Not.Null); + Assert.That(d.DocumentElement.Name, Is.EqualTo("animal")); + } + + private static byte[] ReadTestFile() { + using (FileStream fs = new FileStream(TEST_FILE, FileMode.Open, + FileAccess.Read)) + using (MemoryStream ms = new MemoryStream()) { + byte[] buffer = new byte[1024]; + int read = -1; + while ((read = fs.Read(buffer, 0, buffer.Length)) > 0) { + ms.Write(buffer, 0, read); + } + return ms.ToArray(); + } + } +} +} \ No newline at end of file Property changes on: trunk/xmlunit/src/tests/net-core/builder/InputTest.cs ___________________________________________________________________ Added: svn:mergeinfo + Added: svn:eol-style + native Modified: trunk/xmlunit/xmlunit.nant.build =================================================================== --- trunk/xmlunit/xmlunit.nant.build 2009-05-20 15:24:44 UTC (rev 330) +++ trunk/xmlunit/xmlunit.nant.build 2009-05-20 15:47:19 UTC (rev 331) @@ -4,8 +4,10 @@ overwrite="false"/> <property name="core.src.dir" value="${base.dir}/src/main/net-core" overwrite="false"/> <property name="legacy.src.dir" value="${base.dir}/src/main/net-legacy" overwrite="false"/> - <property name="tests.src.dir" value="${base.dir}/src/tests/net-legacy" + <property name="core.tests.src.dir" value="${base.dir}/src/tests/net-core" overwrite="false"/> + <property name="legacy.tests.src.dir" value="${base.dir}/src/tests/net-legacy" + overwrite="false"/> <property name="build.dir" value="${base.dir}/build/net" overwrite="false"/> <property name="bin.dir" value="${build.dir}/bin" overwrite="false"/> @@ -56,14 +58,25 @@ </csc> <csc target="library" - output="${bin.dir}/${project::get-name()}.tests.dll" + output="${bin.dir}/${project::get-name()}-core.tests.dll" debug="true" verbose="${csc.verbose}"> <references basedir="${bin.dir}"> <include name="${project::get-name()}-core.dll"/> + <include name="${nunit.v2.assembly}"/> + </references> + <sources basedir="${core.tests.src.dir}"> + <include name="**/*.cs"/> + </sources> + </csc> + <csc target="library" + output="${bin.dir}/${project::get-name()}-legacy.tests.dll" + debug="true" verbose="${csc.verbose}"> + <references basedir="${bin.dir}"> + <include name="${project::get-name()}-core.dll"/> <include name="${project::get-name()}-legacy.dll"/> <include name="${nunit.v2.assembly}"/> </references> - <sources basedir="${tests.src.dir}"> + <sources basedir="${legacy.tests.src.dir}"> <include name="*.cs"/> <exclude name="AllTests.cs"/> </sources> @@ -73,7 +86,8 @@ <target name="test" description="run all tests" depends="compile"> <nunit2> <formatter type="Plain"/> - <test assemblyname="${bin.dir}/${project::get-name()}.tests.dll"/> + <test assemblyname="${bin.dir}/${project::get-name()}-core.tests.dll"/> + <test assemblyname="${bin.dir}/${project::get-name()}-legacy.tests.dll"/> </nunit2> </target> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-20 15:24:55
|
Revision: 330 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=330&view=rev Author: bodewig Date: 2009-05-20 15:24:44 +0000 (Wed, 20 May 2009) Log Message: ----------- upgrade to NUnit 2.5 Modified Paths: -------------- trunk/xmlunit/lib/nunit.framework.dll trunk/xmlunit/src/main/net-legacy/XmlAssertion.cs trunk/xmlunit/src/tests/net-legacy/DiffConfigurationTests.cs trunk/xmlunit/src/tests/net-legacy/ValidatorTests.cs trunk/xmlunit/src/tests/net-legacy/XmlAssertionTests.cs Modified: trunk/xmlunit/lib/nunit.framework.dll =================================================================== (Binary files differ) Modified: trunk/xmlunit/src/main/net-legacy/XmlAssertion.cs =================================================================== --- trunk/xmlunit/src/main/net-legacy/XmlAssertion.cs 2009-05-20 14:12:07 UTC (rev 329) +++ trunk/xmlunit/src/main/net-legacy/XmlAssertion.cs 2009-05-20 15:24:44 UTC (rev 330) @@ -2,7 +2,7 @@ using NUnit.Framework; using System.IO; - public class XmlAssertion : Assertion { + public class XmlAssertion : Assert { public static void AssertXmlEquals(TextReader controlTextReader, TextReader testTextReader) { AssertXmlEquals(new XmlDiff(controlTextReader, testTextReader)); } Modified: trunk/xmlunit/src/tests/net-legacy/DiffConfigurationTests.cs =================================================================== --- trunk/xmlunit/src/tests/net-legacy/DiffConfigurationTests.cs 2009-05-20 14:12:07 UTC (rev 329) +++ trunk/xmlunit/src/tests/net-legacy/DiffConfigurationTests.cs 2009-05-20 15:24:44 UTC (rev 330) @@ -21,7 +21,7 @@ new XmlDiff("", "").OptionalDescription); } - [Test] + [Test][Ignore("seems to fail because of schema location")] public void DefaultConfiguredToUseValidatingParser() { DiffConfiguration diffConfiguration = new DiffConfiguration(); Assert.AreEqual(DiffConfiguration.DEFAULT_USE_VALIDATING_PARSER, Modified: trunk/xmlunit/src/tests/net-legacy/ValidatorTests.cs =================================================================== --- trunk/xmlunit/src/tests/net-legacy/ValidatorTests.cs 2009-05-20 14:12:07 UTC (rev 329) +++ trunk/xmlunit/src/tests/net-legacy/ValidatorTests.cs 2009-05-20 15:24:44 UTC (rev 330) @@ -8,10 +8,11 @@ [TestFixture] public class ValidatorTests { - public static readonly string VALID_FILE = ".\\..\\src\\tests\\resources\\BookXsdGenerated.xml"; - public static readonly string INVALID_FILE = ".\\..\\src\\tests\\resources\\invalidBook.xml"; + public static readonly string VALID_FILE = "..\\..\\..\\src\\tests\\resources\\BookXsdGenerated.xml"; + public static readonly string INVALID_FILE = "..\\..\\..\\src\\tests\\resources\\invalidBook.xml"; - [Test] public void XsdValidFileIsValid() { + [Test][Ignore("seems to fail because of schema location")] + public void XsdValidFileIsValid() { PerformAssertion(VALID_FILE, true); } @@ -26,6 +27,7 @@ } } + [Ignore("validation seems to return the last error on .Net 2.0, need to double check")] [Test] public void XsdInvalidFileIsNotValid() { Validator validator = PerformAssertion(INVALID_FILE, false); Assert.IsFalse(validator.IsValid); Modified: trunk/xmlunit/src/tests/net-legacy/XmlAssertionTests.cs =================================================================== --- trunk/xmlunit/src/tests/net-legacy/XmlAssertionTests.cs 2009-05-20 14:12:07 UTC (rev 329) +++ trunk/xmlunit/src/tests/net-legacy/XmlAssertionTests.cs 2009-05-20 15:24:44 UTC (rev 330) @@ -48,6 +48,7 @@ Assert.IsTrue(caughtException); } + [Ignore("validation seems to return the last error on .Net 2.0, need to double check")] [Test] public void AssertXmlValidTrueForValidFile() { StreamReader reader = GetStreamReader(ValidatorTests.VALID_FILE); try { @@ -123,18 +124,18 @@ } [Test] public void AssertXslTransformResultsWorksWithXmlInput() { - StreamReader xsl = GetStreamReader(".\\..\\src\\tests\\resources\\animal.xsl"); + StreamReader xsl = GetStreamReader("..\\..\\..\\src\\tests\\resources\\animal.xsl"); XmlInput xslt = new XmlInput(xsl); - StreamReader xml = GetStreamReader(".\\..\\src\\tests\\resources\\testAnimal.xml"); + StreamReader xml = GetStreamReader("..\\..\\..\\src\\tests\\resources\\testAnimal.xml"); XmlInput xmlToTransform = new XmlInput(xml); XmlInput expectedXml = new XmlInput("<dog/>"); XmlAssertion.AssertXslTransformResults(xslt, xmlToTransform, expectedXml); } [Test] public void AssertXslTransformResultsCatchesFalsePositive() { - StreamReader xsl = GetStreamReader(".\\..\\src\\tests\\resources\\animal.xsl"); + StreamReader xsl = GetStreamReader("..\\..\\..\\src\\tests\\resources\\animal.xsl"); XmlInput xslt = new XmlInput(xsl); - StreamReader xml = GetStreamReader(".\\..\\src\\tests\\resources\\testAnimal.xml"); + StreamReader xml = GetStreamReader("..\\..\\..\\src\\tests\\resources\\testAnimal.xml"); XmlInput xmlToTransform = new XmlInput(xml); XmlInput expectedXml = new XmlInput("<cat/>"); bool caughtException = true; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-20 14:12:15
|
Revision: 329 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=329&view=rev Author: bodewig Date: 2009-05-20 14:12:07 +0000 (Wed, 20 May 2009) Log Message: ----------- cosmetics Modified Paths: -------------- trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java Modified: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java =================================================================== --- trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java 2009-05-20 14:09:41 UTC (rev 328) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java 2009-05-20 14:12:07 UTC (rev 329) @@ -17,8 +17,8 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileReader; +import java.net.URI; import java.net.URL; -import java.net.URI; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Source; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-20 14:09:49
|
Revision: 328 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=328&view=rev Author: bodewig Date: 2009-05-20 14:09:41 +0000 (Wed, 20 May 2009) Log Message: ----------- Java tests for input builder Modified Paths: -------------- trunk/xmlunit/build.xml Added Paths: ----------- trunk/xmlunit/lib/junit-4.6.jar trunk/xmlunit/src/tests/java-core/ trunk/xmlunit/src/tests/java-core/net/ trunk/xmlunit/src/tests/java-core/net/sf/ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java Modified: trunk/xmlunit/build.xml =================================================================== --- trunk/xmlunit/build.xml 2009-05-18 16:03:06 UTC (rev 327) +++ trunk/xmlunit/build.xml 2009-05-20 14:09:41 UTC (rev 328) @@ -30,7 +30,8 @@ <property name="lib.dir" value="${build.dir}/lib"/> <property name="core.out.dir" value="${build.dir}/core-classes"/> <property name="legacy.out.dir" value="${build.dir}/legacy-classes"/> - <property name="test.out.dir" value="${build.dir}/test-classes"/> + <property name="coretest.out.dir" value="${build.dir}/core-test-classes"/> + <property name="legacytest.out.dir" value="${build.dir}/legacy-test-classes"/> <property name="userguide.out.dir" value="${build.dir}/ug-classes"/> <property name="test.report.dir" value="${build.dir}/test-report"/> <property name="dist.dir" value="${build.dir}/dist"/> @@ -56,7 +57,8 @@ <mkdir dir="${lib.dir}"/> <mkdir dir="${core.out.dir}"/> <mkdir dir="${legacy.out.dir}"/> - <mkdir dir="${test.out.dir}"/> + <mkdir dir="${coretest.out.dir}"/> + <mkdir dir="${legacytest.out.dir}"/> <mkdir dir="${test.report.dir}"/> <mkdir dir="${dist.dir}"/> <mkdir dir="${docs.dir}"/> @@ -69,7 +71,8 @@ <fileset dir="${lib.dir}"/> <fileset dir="${core.out.dir}"/> <fileset dir="${legacy.out.dir}"/> - <fileset dir="${test.out.dir}"/> + <fileset dir="${coretest.out.dir}"/> + <fileset dir="${legacytest.out.dir}"/> <fileset dir="${test.report.dir}"/> <fileset dir="${dist.dir}"/> <fileset dir="${docs.dir}"/> @@ -86,55 +89,71 @@ </javac> </target> - <target name="compile" depends="compile-core" + <target name="compile-legacy" depends="compile-core" description="compiles legacy sources and tests"> <javac srcdir="${src.dir}/java-legacy" destdir="${legacy.out.dir}" debug="${javac.debug}" target="${javac.target}" source="${javac.source}"> <classpath> <pathelement location="${core.out.dir}"/> <pathelement path="${java.class.path}"/> - <fileset dir="lib" includes="*.jar"/> + <fileset dir="lib" includes="junit-3*.jar"/> </classpath> <exclude name="**/*XPathRegexAssert.java" unless="regexp.present"/> </javac> - <javac srcdir="${test.dir}/java-legacy" destdir="${test.out.dir}" + </target> + + <target name="compile-legacy-tests" depends="compile-legacy" + description="Compiles the test for XMLUnit 1.x"> + <javac srcdir="${test.dir}/java-legacy" destdir="${legacytest.out.dir}" debug="${javac.debug}" target="${javac.target}" source="${javac.source}"> <classpath> <pathelement location="${core.out.dir}"/> <pathelement location="${legacy.out.dir}"/> <pathelement path="${java.class.path}"/> - <fileset dir="lib" includes="*.jar"/> + <fileset dir="lib" includes="junit-3*.jar"/> </classpath> <exclude name="**/*XPathRegexAssert.java" unless="regexp.present"/> </javac> </target> - <target name="test" depends="compile" - description="runs the tests"> + <target name="compile-core-tests" depends="compile-core" + description="Compiles the test for XMLUnit2"> + <javac srcdir="${test.dir}/java-core" destdir="${coretest.out.dir}" + debug="${javac.debug}" target="${javac.target}" + source="${javac.source}"> + <classpath> + <pathelement location="${core.out.dir}"/> + <pathelement path="${java.class.path}"/> + <fileset dir="lib" includes="junit-4*.jar"/> + </classpath> + </javac> + </target> + + <target name="compile" depends="compile-core,compile-legacy"/> + <target name="compile-tests" + depends="compile-core-tests,compile-legacy-tests"/> + + <target name="test" depends="compile-tests" description="runs the tests"> <junit printsummary="yes" haltonfailure="no" fork="${junit.fork}" forkMode="perBatch" failureproperty="tests.failed"> <sysproperty key="basedir" value="${basedir}"/> <sysproperty key="user.dir" value="${basedir}"/> - <!-- - <sysproperty key="javax.xml.parsers.DocumentBuilderFactory" - value="org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"/> - <sysproperty key="javax.xml.parsers.SAXParserFactory" - value="org.apache.xerces.jaxp.SAXParserFactoryImpl"/> - <sysproperty key="javax.xml.transform.TransformerFactory" - value="org.apache.xalan.processor.TransformerFactoryImpl"/> - --> <classpath> <pathelement location="${core.out.dir}"/> <pathelement location="${legacy.out.dir}"/> - <pathelement location="${test.out.dir}"/> + <pathelement location="${legacytest.out.dir}"/> + <pathelement location="${coretest.out.dir}"/> <pathelement path="${java.class.path}"/> - <fileset dir="lib" includes="*.jar"/> + <fileset dir="lib" includes="junit-4*.jar"/> </classpath> <formatter type="xml"/> <batchtest todir="${test.report.dir}"> <fileset dir="${test.dir}/java-legacy"> <include name="**/test_*.java"/> </fileset> + <fileset dir="${test.dir}/java-core"> + <include name="**/*Test.java"/> + </fileset> </batchtest> </junit> Added: trunk/xmlunit/lib/junit-4.6.jar =================================================================== (Binary files differ) Property changes on: trunk/xmlunit/lib/junit-4.6.jar ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java =================================================================== --- trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java (rev 0) +++ trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java 2009-05-20 14:09:41 UTC (rev 328) @@ -0,0 +1,144 @@ +/* + This file is licensed 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 net.sf.xmlunit.builder; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileReader; +import java.net.URL; +import java.net.URI; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXSource; +import org.w3c.dom.Document; +import static org.hamcrest.core.Is.*; +import static org.hamcrest.core.IsNull.*; +import static org.junit.Assert.*; +import org.junit.Test; + +public class InputTest { + + private static final String TEST_FILE = "src/tests/resources/test1.xml"; + + private static Document parse(Source s) throws Exception { + DocumentBuilder b = + DocumentBuilderFactory.newInstance().newDocumentBuilder(); + return b.parse(SAXSource.sourceToInputSource(s)); + } + + @Test public void shouldParseADocument() throws Exception { + Document d = parse(Input.fromFile(TEST_FILE).build()); + // it looks as if SAXSource.sourceToInputSource cannot deal + // with a DOMSource, so we cannot use the parse method + Source s = Input.fromDocument(d).build(); + assertThat(s, is(DOMSource.class)); + Object o = ((DOMSource) s).getNode(); + assertThat(o, is(Document.class)); + Document d2 = (Document) o; + assertThat(d2, notNullValue()); + assertThat(d2.getDocumentElement().getTagName(), is("animal")); + } + + @Test public void shouldParseAnExistingFileByName() throws Exception { + allIsWellFor(Input.fromFile(TEST_FILE).build()); + } + + @Test public void shouldParseAnExistingFileByFile() throws Exception { + allIsWellFor(Input.fromFile(new File(TEST_FILE)).build()); + } + + @Test public void shouldParseAnExistingFileFromStream() throws Exception { + FileInputStream is = null; + try { + is = new FileInputStream(TEST_FILE); + allIsWellFor(Input.fromStream(is).build()); + } finally { + if (is != null) { + is.close(); + } + } + } + + @Test public void shouldParseAnExistingFileFromReader() throws Exception { + FileReader r = null; + try { + r = new FileReader(TEST_FILE); + allIsWellFor(Input.fromReader(r).build()); + } finally { + if (r != null) { + r.close(); + } + } + } + + @Test public void shouldParseString() throws Exception { + allIsWellFor(Input.fromMemory(new String(readTestFile(), "UTF-8")) + .build()); + } + + @Test public void shouldParseBytes() throws Exception { + allIsWellFor(Input.fromMemory(readTestFile()).build()); + } + + @Test public void shouldParseFileFromURIString() throws Exception { + allIsWellFor(Input.fromURI("file:" + TEST_FILE).build()); + } + + @Test public void shouldParseFileFromURI() throws Exception { + allIsWellFor(Input.fromURI(new URI("file:" + TEST_FILE)).build()); + } + + @Test public void shouldParseFileFromURL() throws Exception { + allIsWellFor(Input.fromURL(new URL("file:" + TEST_FILE)).build()); + } + + @Test public void shouldParseATransformation() throws Exception { + Source input = Input.fromMemory("<animal>furry</animal>").build(); + Source s = Input.byTransforming(input) + .withStylesheet(Input.fromFile("src/tests/resources/animal.xsl") + .build()) + .build(); + // again, transformed is a DOMSource, cannot use parse() + assertThat(s, is(DOMSource.class)); + Object o = ((DOMSource) s).getNode(); + assertThat(o, is(Document.class)); + Document d2 = (Document) o; + assertThat(d2, notNullValue()); + assertThat(d2.getDocumentElement().getTagName(), is("furry")); + } + + private static void allIsWellFor(Source s) throws Exception { + assertThat(s, notNullValue()); + Document d = parse(s); + assertThat(d, notNullValue()); + assertThat(d.getDocumentElement().getTagName(), is("animal")); + } + + private static byte[] readTestFile() throws Exception { + FileInputStream is = new FileInputStream(TEST_FILE); + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int read = -1; + while ((read = is.read(buffer)) >= 0) { + if (read > 0) { + bos.write(buffer, 0, read); + } + } + is.close(); + return bos.toByteArray(); + } +} \ No newline at end of file Property changes on: trunk/xmlunit/src/tests/java-core/net/sf/xmlunit/builder/InputTest.java ___________________________________________________________________ Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 16:03:09
|
Revision: 327 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=327&view=rev Author: bodewig Date: 2009-05-18 16:03:06 +0000 (Mon, 18 May 2009) Log Message: ----------- missing using statement, no idea why it compiled before Modified Paths: -------------- trunk/xmlunit/src/main/net-core/builder/Input.cs Modified: trunk/xmlunit/src/main/net-core/builder/Input.cs =================================================================== --- trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 16:01:31 UTC (rev 326) +++ trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 16:03:06 UTC (rev 327) @@ -14,6 +14,7 @@ using System.IO; using System.Xml; using System.Xml.Xsl; +using net.sf.xmlunit.exceptions; using net.sf.xmlunit.input; namespace net.sf.xmlunit.builder { @@ -127,7 +128,7 @@ ms); } return FromMemory(ms.ToArray()).Build(); - } catch (Exception ex) { + } catch (System.Exception ex) { throw new XMLUnitException(ex); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 16:01:34
|
Revision: 326 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=326&view=rev Author: bodewig Date: 2009-05-18 16:01:31 +0000 (Mon, 18 May 2009) Log Message: ----------- whitespace Modified Paths: -------------- trunk/xmlunit/src/main/net-core/builder/Input.cs Modified: trunk/xmlunit/src/main/net-core/builder/Input.cs =================================================================== --- trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 16:00:49 UTC (rev 325) +++ trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 16:01:31 UTC (rev 326) @@ -116,17 +116,17 @@ public ISource Build() { try { - XslCompiledTransform t = new XslCompiledTransform(); - if (styleSheet != null) { - t.Load(styleSheet.Reader); - } - MemoryStream ms = new MemoryStream(); - using (ms) { - t.Transform(source.Reader, - args, - ms); - } - return FromMemory(ms.ToArray()).Build(); + XslCompiledTransform t = new XslCompiledTransform(); + if (styleSheet != null) { + t.Load(styleSheet.Reader); + } + MemoryStream ms = new MemoryStream(); + using (ms) { + t.Transform(source.Reader, + args, + ms); + } + return FromMemory(ms.ToArray()).Build(); } catch (Exception ex) { throw new XMLUnitException(ex); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 16:00:53
|
Revision: 325 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=325&view=rev Author: bodewig Date: 2009-05-18 16:00:49 +0000 (Mon, 18 May 2009) Log Message: ----------- wrap exception into our own type Modified Paths: -------------- trunk/xmlunit/src/main/net-core/builder/Input.cs Modified: trunk/xmlunit/src/main/net-core/builder/Input.cs =================================================================== --- trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 15:59:09 UTC (rev 324) +++ trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 16:00:49 UTC (rev 325) @@ -115,6 +115,7 @@ } public ISource Build() { + try { XslCompiledTransform t = new XslCompiledTransform(); if (styleSheet != null) { t.Load(styleSheet.Reader); @@ -126,6 +127,9 @@ ms); } return FromMemory(ms.ToArray()).Build(); + } catch (Exception ex) { + throw new XMLUnitException(ex); + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 15:59:15
|
Revision: 324 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=324&view=rev Author: bodewig Date: 2009-05-18 15:59:09 +0000 (Mon, 18 May 2009) Log Message: ----------- self assignment Modified Paths: -------------- trunk/xmlunit/src/main/net-core/builder/Input.cs Modified: trunk/xmlunit/src/main/net-core/builder/Input.cs =================================================================== --- trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 15:58:23 UTC (rev 323) +++ trunk/xmlunit/src/main/net-core/builder/Input.cs 2009-05-18 15:59:09 UTC (rev 324) @@ -97,7 +97,7 @@ source = s; } public ITransformationBuilder WithStylesheet(ISource s) { - this.styleSheet = styleSheet; + this.styleSheet = s; return this; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 15:58:28
|
Revision: 323 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=323&view=rev Author: bodewig Date: 2009-05-18 15:58:23 +0000 (Mon, 18 May 2009) Log Message: ----------- add a base exception class Added Paths: ----------- trunk/xmlunit/src/main/net-core/exceptions/ trunk/xmlunit/src/main/net-core/exceptions/XMLUnitException.cs Copied: trunk/xmlunit/src/main/net-core/exceptions/XMLUnitException.cs (from rev 321, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java) =================================================================== --- trunk/xmlunit/src/main/net-core/exceptions/XMLUnitException.cs (rev 0) +++ trunk/xmlunit/src/main/net-core/exceptions/XMLUnitException.cs 2009-05-18 15:58:23 UTC (rev 323) @@ -0,0 +1,47 @@ +/* + This file is licensed 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. +*/ +using System; + +namespace net.sf.xmlunit.exceptions { + + /// <summary> + /// Base class of any Exception thrown within XMLUnit. + /// </summary> + public class XMLUnitException : Exception { + /// <summary> + /// Inititializes the exception. + /// </summary> + /// <param name="message">the detail message</param> + /// <param name="cause">the root cause of the exception</param> + public XMLUnitException(string message, Exception cause) : + base(message, cause) { + } + + /// <summary> + /// Inititializes an exception without cause. + /// </summary> + /// <param name="message">the detail message</param> + public XMLUnitException(string message) : + base(message, null) { + } + + ///<summary> + /// Inititializes an exception using the wrapped exception's message. + ///</summary> + /// <param name="cause">the root cause of the exception</param> + public XMLUnitException(Exception cause) : + base(cause != null ? cause.Message : null, cause) { + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 15:54:51
|
Revision: 322 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=322&view=rev Author: bodewig Date: 2009-05-18 15:54:41 +0000 (Mon, 18 May 2009) Log Message: ----------- fix javadocs Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java 2009-05-18 15:47:07 UTC (rev 321) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java 2009-05-18 15:54:41 UTC (rev 322) @@ -39,7 +39,7 @@ /** * Inititializes an exception using the wrapped exception's message. * - * @param message the detail message + * @param cause the root cause of the exception */ public XMLUnitException(Throwable cause) { this(cause != null ? cause.getMessage() : null, cause); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 15:47:12
|
Revision: 321 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=321&view=rev Author: bodewig Date: 2009-05-18 15:47:07 +0000 (Mon, 18 May 2009) Log Message: ----------- typos Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java 2009-05-18 15:40:13 UTC (rev 320) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java 2009-05-18 15:47:07 UTC (rev 321) @@ -18,7 +18,7 @@ */ public class XMLUnitException extends RuntimeException { /** - * Inititializes the exeption. + * Inititializes the exception. * * @param message the detail message * @param cause the root cause of the exception @@ -28,7 +28,7 @@ } /** - * Inititializes an exeption without cause. + * Inititializes an exception without cause. * * @param message the detail message */ @@ -37,7 +37,7 @@ } /** - * Inititializes an exeption using the wrapped exception's message. + * Inititializes an exception using the wrapped exception's message. * * @param message the detail message */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bo...@us...> - 2009-05-18 15:40:17
|
Revision: 320 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=320&view=rev Author: bodewig Date: 2009-05-18 15:40:13 +0000 (Mon, 18 May 2009) Log Message: ----------- rename XMLUnitRuntimeException to XMLUnitException Modified Paths: -------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/builder/Input.java trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/ConfigurationException.java Added Paths: ----------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java Removed Paths: ------------- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitRuntimeException.java Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/builder/Input.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/builder/Input.java 2009-05-12 12:31:40 UTC (rev 319) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/builder/Input.java 2009-05-18 15:40:13 UTC (rev 320) @@ -32,7 +32,7 @@ import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import net.sf.xmlunit.exceptions.ConfigurationException; -import net.sf.xmlunit.exceptions.XMLUnitRuntimeException; +import net.sf.xmlunit.exceptions.XMLUnitException; import org.w3c.dom.Document; public class Input { @@ -117,7 +117,7 @@ } } } catch (IOException ex) { - throw new XMLUnitRuntimeException(ex); + throw new XMLUnitException(ex); } } @@ -188,7 +188,7 @@ } catch (javax.xml.transform.TransformerConfigurationException e) { throw new ConfigurationException(e); } catch (javax.xml.transform.TransformerException e) { - throw new XMLUnitRuntimeException(e); + throw new XMLUnitException(e); } } } Modified: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/ConfigurationException.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/ConfigurationException.java 2009-05-12 12:31:40 UTC (rev 319) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/ConfigurationException.java 2009-05-18 15:40:13 UTC (rev 320) @@ -17,7 +17,7 @@ * Exception thrown when anything inside JAXP throws a * *ConfigurationException. */ -public class ConfigurationException extends XMLUnitRuntimeException { +public class ConfigurationException extends XMLUnitException { public ConfigurationException(Throwable cause) { super(cause); } Copied: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java (from rev 319, trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitRuntimeException.java) =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java (rev 0) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java 2009-05-18 15:40:13 UTC (rev 320) @@ -0,0 +1,47 @@ +/* + This file is licensed 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 net.sf.xmlunit.exceptions; + +/** + * Base class of any Exception thrown within XMLUnit. + */ +public class XMLUnitException extends RuntimeException { + /** + * Inititializes the exeption. + * + * @param message the detail message + * @param cause the root cause of the exception + */ + public XMLUnitException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Inititializes an exeption without cause. + * + * @param message the detail message + */ + public XMLUnitException(String message) { + this(message, null); + } + + /** + * Inititializes an exeption using the wrapped exception's message. + * + * @param message the detail message + */ + public XMLUnitException(Throwable cause) { + this(cause != null ? cause.getMessage() : null, cause); + } +} \ No newline at end of file Property changes on: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitException.java ___________________________________________________________________ Added: svn:mergeinfo + Added: svn:eol-style + native Deleted: trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitRuntimeException.java =================================================================== --- trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitRuntimeException.java 2009-05-12 12:31:40 UTC (rev 319) +++ trunk/xmlunit/src/main/java-core/net/sf/xmlunit/exceptions/XMLUnitRuntimeException.java 2009-05-18 15:40:13 UTC (rev 320) @@ -1,47 +0,0 @@ -/* - This file is licensed 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 net.sf.xmlunit.exceptions; - -/** - * Base class of any Exception thrown within XMLUnit. - */ -public class XMLUnitRuntimeException extends RuntimeException { - /** - * Inititializes the exeption. - * - * @param message the detail message - * @param cause the root cause of the exception - */ - public XMLUnitRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - /** - * Inititializes an exeption without cause. - * - * @param message the detail message - */ - public XMLUnitRuntimeException(String message) { - this(message, null); - } - - /** - * Inititializes an exeption using the wrapped exception's message. - * - * @param message the detail message - */ - public XMLUnitRuntimeException(Throwable cause) { - this(cause != null ? cause.getMessage() : null, cause); - } -} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: SourceForge.net <no...@so...> - 2009-05-15 02:20:27
|
Bugs item #1952324, was opened at 2008-04-26 15:45 Message generated for change (Comment added) made by sf-robot You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=377768&aid=1952324&group_id=23187 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: None Group: .NET 0.3.1 >Status: Closed Resolution: Wont Fix Priority: 5 Private: No Submitted By: Steve Wagner (ciroque) Assigned to: Nobody/Anonymous (nobody) Summary: Specific Version reference to nunit.framework.dll Initial Comment: Apparently the library was compiled such that it requires version 2.4.6 of the NUnit Framework assembly. We have upgraded to 2.4.7 and rolling back is not a viable option. While I can rebuild the sasembly it would get quite tedious to do that with every upgrade of the library. Thanks! ---------------------------------------------------------------------- >Comment By: SourceForge Robot (sf-robot) Date: 2009-05-15 02:20 Message: This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker). ---------------------------------------------------------------------- Comment By: Stefan Bodewig (bodewig) Date: 2009-04-30 14:25 Message: As long as NUnit has a strong name, there isn't much we can do - except for telling people to compile their own version of XMLUnit. XMLUnit 0.4 is compiled against 2.4.8. ---------------------------------------------------------------------- Comment By: Stefan Bodewig (bodewig) Date: 2008-06-05 11:20 Message: Logged In: YES user_id=113148 Originator: NO XMLUnit 0.3.1 has been compiled against NUnit 2.4.6 and we get the "hard reference" to it because NUnit 2.4.x is strongly named (2.2.x hasn't been that#s why XMLUnit 0.3 never showed the same symptoms). In theory a binding redirect should work, in practice it doesn't work for me. See http://sourceforge.net/mailarchive/forum.php?thread_name=y1u4p8garz2.fsf%40v30161.1blu.de&forum_name=nunit-users ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=377768&aid=1952324&group_id=23187 |
From: <bo...@us...> - 2009-05-12 12:31:44
|
Revision: 319 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=319&view=rev Author: bodewig Date: 2009-05-12 12:31:40 +0000 (Tue, 12 May 2009) Log Message: ----------- preference for stronger algorithms Modified Paths: -------------- trunk/xmlunit/KEYS Modified: trunk/xmlunit/KEYS =================================================================== --- trunk/xmlunit/KEYS 2009-05-12 10:56:37 UTC (rev 318) +++ trunk/xmlunit/KEYS 2009-05-12 12:31:40 UTC (rev 319) @@ -192,393 +192,393 @@ LJQ5BACA1YilTeXRJqwFsNlpcxCHwlULD4QUVP496prQWf1B7Z6g0KvLGrQsO0Vn Jcn+fEqukysTJixSXCPebosltd4RalJIupVYkp4w6MJ7biaDAlLuNhDcI/AiXTmV dXUedVXIaM8I3Ne23gucwbAyc0Hvb+3cSAKRhl/azFQhuHBvlrQjU3RlZmFuIEJv -ZGV3aWcgPGJvZGV3aWdAYXBhY2hlLm9yZz6IYgQTEQIAGgULBwoDBAMVAwIDFgIB -AheAAhkBBQI7EiJPABIHZUdQRwABAQkQohFa4V9ri3KPOACfdr6cV41veYBlBHiV -FxfLcX7x5OEAniK4u3g2jpNQH3E0ROubdj/RO+RTiEYEEBECAAYFAjw+1Y8ACgkQ -gQRkT1GJhQSdkgCeM6RDHUF/E334TtiLPgw7GpmNJSkAoNCLQCW/9VHrV+ZHsodn -XUnaD4dIiJkEEwECAAYFAj513wwACgkQPo+38viDQdknZAPlHNiMnR+LUavo2yOY -iJT+W9+8+qNs2grYDZ+WSYujaWT2NJrUCYXQRM6gKDyFlkcJvHI9lF2yYMkVetll -ZVN1TJkeEdtbHncNHcdq+ZUQR0NkFKTF9d1K7UI2rfWxt1y6a13TcUjpJXzbtw/O -XX9EZSI6QQt4rSFlvci9J3mIRgQTEQIABgUCPnXawQAKCRDu0eo5ImHQc0W4AJ9v -uq4wlkc6TmmmZPF/gZVLluHcTgCeItrnvzyS11xkIETk6v4b7K4gaiiIPwMFED51 -qhr9b4jGIdCnGxECRAUAoOaVZW5CdZ9oYr3PwI/i8RJN+JfJAKCmd/XIlYOCpa9Q -c4C855pM8NFw6YhGBBARAgAGBQI+d6QQAAoJEBU/oM11pnaSL+sAn1DTHmbhITeE -w0ZSgyBLQw2ZhcM5AJ0ZrRBbZ9lbgHXBKOJQiLpWBj4XsYhGBBARAgAGBQI+yi6W -AAoJENvSRfyzsqEsF/AAoNXq7Cp/0AwEmWvhoTjmtY6eVYB5AKCMFhBUdYWNXVya -lPTq8ThswNUnr4hGBBMRAgAGBQI+jc4sAAoJEMppOXSBA6N+kUoAn1Nj6YqarQg0 -sL2KrFsQROM3A6fSAKCyl40SpfVJSO33fYuPci9dHp+QCIhXBBMRAgAXBQI7EiJO -BQsHCgMEAxUDAgMWAgECF4AACgkQohFa4V9ri3IsngCfbIpJDWj6UgXY7rBH8To1 -2BgB+RIAn3jw72WJzplAtShVTmuMlRFS+FUNiEYEEBECAAYFAj6sazwACgkQqywx -6dYpjwFkeQCeOkJrnO5r2hWDhX4ACPPLObZvXLIAnR0VHAgkEH1W/t7B4zdDYdBB -Zrd5iEYEEBECAAYFAkGS8mMACgkQ5BNhMwyqaLQs9ACgio5zJcieYLppigvSYLBf -ubUVrXUAnRKZJ6MACpH6fpoz2vkc2dh69tbSiEYEEBECAAYFAkLFMoEACgkQm/Ij -RS/ii88aCQCfd1cIawDqpkYU86f3JEjcN85ntFcAni0m8WR6s+bkh3fd+EIrSRsr -u3uQiEYEEBECAAYFAkLfRQIACgkQQeoJoFeTSY8XxQCdFd+XEWqyDkCx37gaIQAG -4dHpwiUAoOZ/K5OHyTJCNFaBUDtpCh7hL8TPiEYEEBECAAYFAkLfkncACgkQAQVm -vOQTY5L3SgCgiEi5/1vYvJrKoAdl0hRWU57ieUIAn2n08BQfMZJQ439aNW/CnIK8 -jPBPiEYEEBECAAYFAkLgNdAACgkQc84u+4QI91XdNQCgoBB1ebohIflinAPlvI37 -pFHuu0MAoJ4yMtbKZMaq0xIBnxV9c5uu99tGiEYEEhECAAYFAkLerWMACgkQi5Yp -Q/wkPzxD7ACgqKnyeb/fjVS8vov4FePxeLju4msAn1SCGaiF9gEf+qIaZUnjcT7J -DJ96iJwEEwECAAYFAkLerG8ACgkQMaY9luwUC4Ea9gP/WON+0xIWOvWP7mKkg/+X -0ukW+mbjE426qKtG/B0vNrTKpElmz8ttR+oajqbg20LazoEUuA9ZXjLPfsdWA+vF -kxgV6qIdtxYPMamPm7ytEBOmgMowYXUftGteqM5fxLlceHiwdUlynG2fmtMqvPnd -2OCezSFRx3W6nvAiIjoLZpCInAQTAQIABgUCQt7H0wAKCRA34/Rf7mXjIcAUA/4n -DlQbnToSSDOZkFj1CoGL8TjsVgzrO3r3S3x38uQQTFAE/AGBY4mtHgNcYmiJaC2h -N1Y+mlEGu/80Rjv185ZfJsFEerU6Y/9tRJJ1So9AAe5AmvGpD9ysXae5geB+k+ep -IMSuf9WMeTRUCbQs9ufGZLV5a8jqstv+btcrzNaY9oicBBMBAgAGBQJC32x4AAoJ -EJrNPMCpn3XdRBkD/iNi0Y6A3afDG9ZL/K4JrOPgHUFWC/DgAEBme4AY62agUsT0 -uXlz+Mu1Ps2E0t26ejScuVMMvqpXg7iJ2+3yKzsnX0ySEXW6/696XEpe3TFn1iVO -mMElPKxakn3t/jr6SDepo9jqD5P5CJR4GsDsG3iKIisWdDf81ZXpf86y7A5eiEYE -ExECAAYFAkLeuuUACgkQMsnkzjZCy0vmSQCdHGC6jOEVo96yyospTq7bL+EEeioA -oNMKIZy5qFLXXZbSNvsj7mDRg2c8iEYEExECAAYFAkLfbHoACgkQUI6uxTAtpWhY -hQCaAvqVBsTX5s4c+sTOo06BNMdzHIUAoIwpThAKq936Szy/3Gfv8K3gs5NOiEYE -ExECAAYFAkLfbHwACgkQ3bpkuiwxLS9z8ACfYeocOK4J204xwbXgEdUJQyvHK2UA -oKz2AF1I2b8Ebu7vTUZLNFV1QMtwiEYEExECAAYFAkLgyTgACgkQXP03+sx4yJNb -EgCfRcj6QKHVHQtYVXdCYKUbrj97wAoAnimqV15cvz1siDjUK9K/aTskGwajiEYE -ExECAAYFAkLg7MsACgkQybWm7OLXdN8UoQCdFfqef8My1xhn6mLd9WTLLaIewTQA -nRXGh/Af4hVG0KwtZcJEA464nCoJiEYEExECAAYFAkLg7TwACgkQW5aAEOBPmol+ -JwCeLxZjKNisjgP4AxV5BCKR+5SU9NoAoIwPF/7B2NmGNR0t3EZze8wpNhQ0iEYE -ExECAAYFAkLg7V8ACgkQN/aP9QFa/IqerACfafKJi4s8LYV2JxNfQKHgmRXzeIIA -oNBHOzukDCdxIvmYJfamItnCP45giEYEExECAAYFAkLiYm8ACgkQbZiNF4cxXDH8 -HwCgq8P29CwMX7PKhRmY3T32APsOaMEAnjdd/WvzVBFtTcJFWkH6iF4L8EQpiEYE -ExECAAYFAkLjVb4ACgkQEy5J1OQe3H56DACcDPfWLO5cDkeKFCvIP8mc4p4KkfkA -oJITROldIRxXqUiML1oTJxieuHJfiEYEExECAAYFAkLjZNoACgkQdcqio/ObN1CI -tACgsJhqBxeZTaSrRVNk3aj6ciAJrgEAoIxPXYTvIpnWBr4/WMbN0jpV0TGEiEYE -EBECAAYFAkLkbxIACgkQjON2uBzUhh/gZQCbBpIqkCEuIbd6tqChz3PzcIGiZbgA -njluBFHl4l1/NHtP9fEYCgl8nbCviEYEEBECAAYFAkLkkr4ACgkQBJE0Quobo42f -+QCgjtO6EOdDRiruCi6gKvwM1a2eRwcAn0XUELm5AZezL5E0rEfIM2FBiMi5iEYE -EBECAAYFAkLlwh0ACgkQYRlqLjM+ToS9pwCfUEgO834XY/clWzkw/VLBfe7MLZQA -mwdz0nleOHYWFBrnYgEz53d4MxUPiEYEEBECAAYFAkLqY/QACgkQsr68QBUpJK/o -MQCfc7M9KpApCWW7eE22PlLoN1sPK+4AoJdwE8TsDM2Pmehk9K+uHIx6FoRviEYE -ExECAAYFAkLj7WcACgkQMoZOQZyFIitClACfWpH0+V/N6vuucWZ7bsMm2BcmM3oA -n3fF5qqovlog4/PcgvKCToNEF8uWiEYEExECAAYFAkLlELcACgkQUnkvr5l4r4YU -ZwCgg7vJpDpUXnuNvgc5RHgG7UYhRQYAoIEKHsrswh6XzVn5yQRkfjdB/A0OiEYE -ExECAAYFAkLlEaQACgkQa3OhBipiP3JA4QCffb8NgQssOQXaVR0dSwPCeU2nQPUA -n15EAjykVZsUi2tZWqEM08SNOKI9iEYEExECAAYFAkLmmWIACgkQaOuMdvjqKWd7 -AQCbBpwyitQ77kd9KIT6y95Im1vmWt8AnAnkNTBctVtMfwddYTG+xLkaOllOiEYE -ExECAAYFAkLnYVAACgkQbpR1lMFSQxqIRACffQqUXTgOa4hyHYQBUwrlGEqmWt4A -nRMXVGhd47loS27MmiEiWwDlkNjJiEYEEBECAAYFAkOHn54ACgkQZjW2wN6IXdOr -9gCgh2fn26W0DSL5WZATvvQkwZeJNiMAnR6+0AlUK8uFSFIVhl+RZMnY+XFwiEYE -EBECAAYFAkWdnk0ACgkQIYJJVs5BnI/0SgCeKCw39INy9ISFunlAojYgSInHfokA -n2vU8q4JNjg13qNeclZN9kmN9mbWiEYEEBECAAYFAkY44sMACgkQFUWz/uIi3k+q -vACffppBpoY82MEvDV7c4/6cjw544CQAoJAPCdZA/LRqICJm0iFbDrwhsSb6iEYE -EBECAAYFAkY4558ACgkQY9CtrpESA+QrAACglRB/VdEmovbyWdMDmsTdyw4kha4A -n0uKwZeKHfBR3cC2s7MvqqmMoz9jiEUEEBECAAYFAkY8kyoACgkQmHDv8/EvYHIk -CgCYgXQZTJ8VmHwSX3pXOxnMhp7mbACeIPXwcPvmfP709nfgQ8/GpT2z9ISIRgQT -EQIABgUCRjkasQAKCRDh4fKwmQ7UqhZKAJ9iraDBstzeXPMtst3x+ZXdLQm7cgCf -WDDgaQOa8CoM5/+7WCtkyasP6BiIRgQTEQIABgUCRjxQRwAKCRBMBCgYMRo95eP4 -AKCuEQU6fjPy/cPEiqhGH23J2YEr7gCfS8vBTEU4sRbOomTEuINPxb96OZmIRgQT -EQIABgUCRj2gkgAKCRAuuUaCiIF0AgOBAJ0bJmFzA9WkG5FmfaP4ieG9+SCbXACg -w+2wcOA/B94LKRtjhJT6j6zSiDmIRgQQEQIABgUCRj4VvwAKCRA+Km/CXymIJIvc -AJ9QSE4mCQldVnpbYwLTCk+xHDqhcQCggT9P3/rHIzIvv1tJ+A1ZJPvXOcqIRgQQ -EQIABgUCRj3WeAAKCRD1wmAWTO7XXwpbAJ4mr2IxFtx0ppkefxx0l0TJ6cFkrQCd -EFbc+aMxRKhK9SCAWi3mq1UqEWiIRgQQEQIABgUCRj31AAAKCRCgctTQQ1jFhByK -AJ9SIielTuD3StxPQpBkAkYP6Ld88ACgg1oPX9ryJA7YuhMD7byXQsETzD+IRgQQ -EQIABgUCRj4FxQAKCRACpaYFC35s+k/GAJ9/VDyw2vNzk1xjcu/QZCa3gGI2zgCf -eG8klJ78bAGknzxBlK3XtmoNqASISgQQEQIACgUCRjj3hAMFAzwACgkQc92MFgFT -AjVJogCeL+3FTTVR5snJx9qbGQsgv23ZaT0An2Hy1CcXVklcYBF7LbnbAgbe1Hpf -iEYEEBECAAYFAkZAtkMACgkQbQvHOkBYGDePegCbBe6rmz9/kYDV7w5pvwnugVsv -biEAniTfLW7NW8z1SRBWf6lMH3clGAs8iEYEEBECAAYFAkZMRFMACgkQHyEjw2vY -cqB22gCg1np1JYFYPqCB3ekZts3K+pn7RkwAnRWd6HmtjRolZdrZfkqQDJKmd5zv -iEYEEBECAAYFAkZMfQEACgkQD0UKJmIQv8DJYgCfW0C9rDAToLU+0BKLYCiWwtFJ -98MAn2HvQ3CDhv8WTm+av36lETLqhjnfiEYEEBECAAYFAkZSb1kACgkQMsHW7w8U -O8GGZwCg0l2T1O/OpOECXs/vYE2649wNTaYAoLrUpLKYev8uHAfc53lZ6LE0h1T0 -iEYEEBECAAYFAkZSb2AACgkQy66+OaRsTKHZbwCdFSloWJh3uuTLk87aSt4uYeZr -KToAoIrN7epZxeu9n9e6hqVOLz85zc3TiEYEEBECAAYFAkZe1aoACgkQmobXzNGq -6mD+cwCg3k4BRrRi6pjrY/UggHjhiHWSD1YAniDQn1MVB620Ik2cVL7hR1V0ZL6b -iEYEEBECAAYFAkalTCwACgkQOb5RoQhMkROqQwCdHhIdklVR341azVFBO6aGArSO -P2QAn0WtSIiqaLTEQ57+ir62FxRYBQdWiEYEEBECAAYFAkatzFQACgkQM81nM69e -xFIdRgCfSGft6KIZ+CTEPIGr8lp8oOpNaHMAn1NCXZTJOW+r0G5ply4hlu8UXC4A -iQEcBBABAgAGBQJHwH2YAAoJEBllhVDDEQYRZ4cH/3XnLW6UAdDd4k0xl2lUAj9g -B7ITUbejCwvnFqUyKAE9P38boBHNfc6cliQUOz4ITWDPhiinbjNnJHglp9vK0o4R -/tFFyGImIvbmu1C8lyO2BJPgF2yMNrBgZhx0+IkAG3R4iy9JFIDGgddjLQSP4TX3 -uRUFUXEAhHzGA//XP4tnC3CisvOsuoc6ZjyZGSt/HUzZoKf+wsdJlfabiK3QpD8l -SOw8KEZF54JUC8uaYGuBGs7ih4FcO+Aqb52UAx4/+13eEdAognVF2HbaiI+G2jEe -kyAwD0bP3DWyg+9fGBtnwtDMj0OrHklvA8qoHxAMvXHIGhxjqZBOFehh8DNEB6SI -RgQQEQIABgUCScqH2QAKCRDJx5JOUQR9Zj6WAJwOtRlhq45DedrYNH54QIJSFw3X -JQCfQI9fZl6zmKWSm1nJqXRC+awKmwyIRgQQEQIABgUCSc/UtQAKCRAkwaN4agF7 -F75XAJ0TyTdCMGIZGCooM/xr3w+qvyZLgACg0W8O9WOf0qwSVgynmh2vQggUiyKI -RgQQEQIABgUCSdI2jwAKCRCusBoVO3x1sZHiAKClsXinnJfHMQYewFPqy16zr//f -4ACgulnu+ObADHMquuGCw4BLwrvqMIK0IFN0ZWZhbiBCb2Rld2lnIDxib2Rld2ln -QGJvc3QuZGU+iF8EExECABcFAjsSOYEFCwcKAwQDFQMCAxYCAQIXgAASCRCiEVrh -X2uLcgdlR1BHAAEByboAoNoD/9Jgm/alxfAYELz05LMa/HLeAKDWTHqq7rMkppZo -TUv2gWpVzrk5RIhGBBARAgAGBQI8PtWVAAoJEIEEZE9RiYUE0LMAn22/u01Lo3Bo -5lDxxHSkayUkYq25AKCm20yaGFGtTDJW4Rdz50pfut1AwoiZBBMBAgAGBQI+dd8P -AAoJED6Pt/L4g0HZWboD4gPGJi0y93+Zp37uFGgpe8PkB10HVLCe9B0l7R7BK0UF -hnFl004td2RWeALAAnOI8ZlxCahwQdUys34zF77c5fQ8Rn7co46wBSL59Oi/bG9/ -wRYqBf13SWL2ITK1UDgzRznZrds9MLQqSL8oBjebyg28CZPBYH10FKigUUMwiEYE -ExECAAYFAj512scACgkQ7tHqOSJh0HOu5gCcDO9Ou8NA2+gChoNAn6j/J2owDxkA -nA0Q5AMezP7rKdsw+hCYqZSp8QhIiD8DBRA+daoh/W+IxiHQpxsRAiSnAJ4id/ij -cLliSH/EGh1UiaunYK9zLwCgyfeZ7mnhKXauba2NXFMlm3axSvuIRgQQEQIABgUC -PnekGgAKCRAVP6DNdaZ2kikaAKCJMBE/oJ/4ko7FRpUWvQv0MLmhRwCgjEXsPmY5 -Ur8AVynVzE2TcEu12reIRgQQEQIABgUCPsouMgAKCRDb0kX8s7KhLABsAKCU2ntX -Y/DhTnvki6igzrvttl/ynACfZTZNwePs9imtT6phGTInelrsXLKIRgQTEQIABgUC -Po3ONQAKCRDKaTl0gQOjflg/AJ4khT+aic33qc/iMmMC5+URcxt6ZQCgleruhUJi -44Kpav9PdVbQMzdb52eIRgQQEQIABgUCQZLz6wAKCRDkE2EzDKpotDZHAJ4xwN/h -tv44yNFQnACTYsc322HjZACfTd9WoxRkRWY6tVd9YgumNc0swMiIRgQQEQIABgUC -QsUyhgAKCRCb8iNFL+KLz+ClAJ99ddEJ5l/VW/mKHvTITZleDSv+uwCglgqx3HQr -lqp+gTPKIEKPkjjom+GIagQwEQIAKgUCQuE4ECMdIFRoaXMgd2FzIGEgam9iIGFk -ZHJlc3MgYW5kIEkgcXVpdAAKCRCiEVrhX2uLcvEYAKCJD7CVpr2Iw657kO6G3Is8 -xKa6IgCgiStyJgU5/dUEEPQctZ8ZVZSrHNGIRgQQEQIABgUCQt9FDAAKCRBB6gmg -V5NJj+d2AJ9QRCXhFzmee7cbhlfejg7LBsXsMQCfce2/Wz+if56L7WaZLpn893CA -zu+InAQTAQIABgUCQt6scQAKCRAxpj2W7BQLgXUkA/96klgNlfh+VTSxrwCUW1JE -5j87qDeJWrnN5ibVYPd7TE45hNeWQie2RgWGpsHNlDekVh9aZuHMJb9NzRGKAAJ2 -augQQuvDKt8sge+ydRMXsLkAvpK4VBmobqqgyO0cV3ooMyizawMRndVcMbVu5b6G -kdj2tZEko/Nv9KBJ61MJ64icBBMBAgAGBQJC3sfZAAoJEDfj9F/uZeMhrGYEAKJg -LDFku3GdpF/BI4GQBKqadLygF3Igq9Np310sTcLOI2ARb4B18Tvq9CyR4PEvdlVC -5uEpaJozgHthTadjGTgg1WmiTWqG31s3U+zL5NLdK+k8qqrxGLzFzhk8PB1wJwIm -JcvLmJHm3HeIGycdEzn4swgmD4uI6p39mcGyCCONiJwEEwECAAYFAkLfbHkACgkQ -ms08wKmfdd2sxAP/e8W2cqyypPqYHs05nTxNzD5wLl72ABWvljfdf5mA97sEl3q4 -8234j3sUN1Uk6c21NlK+eRBn8Lv1ihyLTJkACgdiXNFvi1eC4vLhQMGOPcGW8+wI -4olmsqftvG+2hNt4eCMead6IjAK7LNKgDWEBjGI+WIOvC5UJBO50cNXGOXWIRgQT -EQIABgUCQt667QAKCRAyyeTONkLLSxJgAJ9faCKziDmN6nQeMoAECTfVvIdTRACg -jnb3h8sc54gcosIh28qb7uBUuf6IRgQTEQIABgUCQt9sewAKCRBQjq7FMC2laDoH -AJ9VC11NFs0+BAYWoZBJSUEnjn3F9gCgsqGPrxhTBkHlWAh4iiumq31tZHaIRgQT -EQIABgUCQt9sfQAKCRDdumS6LDEtL3hJAKCEHj7lHAZHRk7LLbFQDh7oiY7plACg -iORbBhF3VWn1JCglbk51Kq5hJy2IRgQTEQIABgUCQuDJOwAKCRBc/Tf6zHjIk6wA -AJ4qjf2FNE1VXK+PnL2iFP1h7f8L4wCfbtoQqsaDE1vCrnSobEUT6nfqPt+IRgQT -EQIABgUCQuDszAAKCRDJtabs4td03yLQAKCz5pbjUWdyEHQr85R0He3QuDiLkgCg -z6XQ/LFLdcmwDAj4lsKbRpHdUDyIRgQTEQIABgUCQuDtQAAKCRBbloAQ4E+aiRuo -AJwLeKfpT6aqNLBvrusHnNNjROFi5wCgjhXup7RcdMNTDBY6BGj83NHuTU6IRgQT -EQIABgUCQuJibwAKCRBtmI0XhzFcMZwOAKCLkKunJnUNy7QgowvTkV+/DyU+FgCf -ScvQFzMSj1Gk1ViDbK0n5i2MpQWIRgQTEQIABgUCQuNVwAAKCRATLknU5B7cfur2 -AJ9XnFPKjlIPsbrZVJRuNh96py7FfACgoC5yGwyRq9hYK3SMGGAu5MmQWpSIRgQT -EQIABgUCQuNk2wAKCRB1yqKj85s3UB1kAKClSCLmqecNSlVeFOwlSijhTjzmxgCg -5eYxuHJo4wf2D2d1gWbloc8xt/2IRgQQEQIABgUCQuRvFAAKCRCM43a4HNSGH1Jz -AKCoUQuAh01aTLbbUS4WCMrOAQblagCfdwFlsT48wWEBnJSFAiXaEcRtUkiIRgQQ -EQIABgUCQuSSxwAKCRAEkTRC6hujjcShAJ9EK1u8wehMaZLt2ZnexHICPhbtagCg -kN+i7LXBnm1IwlP5cGbmgW3BJRKIRgQQEQIABgUCQuXCIAAKCRBhGWouMz5OhEAf -AJsHEwc1jK9tiYBvWRMS3zJ0XrrShgCffOyuZlrBNeuO9s8T9WkL7/vCnOmIRgQQ -EQIABgUCQupj+AAKCRCyvrxAFSkkrxWDAJ9oJHjkm3MWfPS/iMK6iipoUaAfzQCf -YFygT+mws9MQIZEMoTi/sk0AOcKIRgQTEQIABgUCQuPtagAKCRAyhk5BnIUiKxsG -AJ4mMBcsZ/PlqEN2CjOoNits7PFYbwCeLuEXDDEcUAh7jb46wvrHB5EPjp+IRgQT -EQIABgUCQuUQtwAKCRBSeS+vmXivhlvNAJ4wGMXMO8EgWYrlU0i+9wrd6N0M/ACg -vODXK0oKDcDQ55t8xf2evmJA7HCIRgQTEQIABgUCQuURpQAKCRBrc6EGKmI/cl6+ -AJ4kaPB7Ois5KuLwhbEwmpO3e07OQQCgw1kJOjcCZwogIWG1222By45k1YCIRgQT -EQIABgUCQuaZYgAKCRBo64x2+OopZ+DxAJ91h0aGRvukGqAWEafe4nnT6xj9CACf -U91kJ9G1WB2T8lW/fkXt8mnlrUKIRgQTEQIABgUCQudhVwAKCRBulHWUwVJDGgmC -AJ9DsO7lkpvuigmPoIX6d7vufFW5iACeMsXW1nX0DWf6E9pPgDaeZ+dba1GIRgQQ -EQIABgUCQ4efngAKCRBmNbbA3ohd09++AJ9GFjNIUutctozuFNreIeS2xATWJQCf -TUwt6nd4R13f5U0+iOsTwWVX6h2IRgQQEQIABgUCQ4efngAKCRBmNbbA3ohd06v2 -AKCHZ+fbpbQNIvlZkBO+9CTBl4k2IwCdHr7QCVQry4VIUhWGX5Fkydj5cXCJARwE -EAECAAYFAkfAfZgACgkQGWWFUMMRBhFLagf6AqFi2y+DPg+duogX5hHslLpeRVXb -qEqX9bB2BzzinUhTmmRpEpiVnCkTd69scXh/ZVTECfA2zBYV67gp3eitUB7CDSeL -ZwqQCIz42uF5ADq9oj+j6uf8pPmsk9qO4VZcr7mUwJ4tDy6znG7Qg5H7y4HRRQ8c -wodDIa2jpLdQ+v9+fms4Nq5j/IJRmHjT7Ha6n78arpl8DlBtjjG0dpmKfBB9n68M -biFLX19yIxO98X/nEoDCk6DuLX79Ratt4jEr08YCyJ4PfAqJKUy+F5jrKnp3G/qj -6H2N72vHZLzoZRfZjBzbpN3V9rPossxQauoRqmU5M9wFDnBoqyszMMU+KokBHAQQ -AQIABgUCR8B9mAAKCRAZZYVQwxEGEWeHB/915y1ulAHQ3eJNMZdpVAI/YAeyE1G3 -owsL5xalMigBPT9/G6ARzX3OnJYkFDs+CE1gz4Yop24zZyR4JafbytKOEf7RRchi -JiL25rtQvJcjtgST4BdsjDawYGYcdPiJABt0eIsvSRSAxoHXYy0Ej+E197kVBVFx -AIR8xgP/1z+LZwtworLzrLqHOmY8mRkrfx1M2aCn/sLHSZX2m4it0KQ/JUjsPChG -ReeCVAvLmmBrgRrO4oeBXDvgKm+dlAMeP/td3hHQKIJ1Rdh22oiPhtoxHpMgMA9G -z9w1soPvXxgbZ8LQzI9Dqx5JbwPKqB8QDL1xyBocY6mQThXoYfAzRAektCpTdGVm -YW4gQm9kZXdpZyA8c3RlZmFuLmJvZGV3aWdAZnJlZW5ldC5kZT6IXAQTEQIAHAUC -PmiBXAIbAwQLBwMCAxUCAwMWAgECHgECF4AACgkQohFa4V9ri3JPKACfXhFOr4gM -MIQwEGvUb6J/X4asuzIAnje2H9T1r/jSVi1NbIEtQfbpmyQXiJkEEwECAAYFAj51 -3w8ACgkQPo+38viDQdmGkgPnUYJfHlDrQ2jYJWuPDve9n4pV9OvyIllKyLdfULjs -LWXw4Jm+fMQJgWr2GEov1ZYIyS2+rGDZpbz/vxaBVbgqM8TPdiXzxwU8AFq4k+Em -4fKXR58ByLSJjvLLza61spNHJennEUFp3tTpEsr4bNuuaoRYhtiKzTqNuoC+0x+I -RgQTEQIABgUCPnXaxwAKCRDu0eo5ImHQc5lcAJ9FOoAL4uHMuqHXrrxsEVPJvEJ2 -/ACggaOR62EziUqcqpdm/1Zy3P4T22iIPwMFED51qjj9b4jGIdCnGxECWssAoKnk -R63bWGCFDB5YJtfZJ+nQq3TAAKD1bzG/kITQpIHsT2vCY1yBmlWbBYhGBBARAgAG -BQI+d6QaAAoJEBU/oM11pnaS+9IAn0kFlXAzOhhu4r5fglMVuw5bTAd0AKCtYRX2 -ESU/+tsE8vuXWtsMCGeI5YhGBBARAgAGBQI+yi67AAoJENvSRfyzsqEsSccAoKqG -39X2y6xoQa56nviF5iCj/oTFAJwLKx9GyKEUbSM9f/IQ7AsZPhHT54hGBBMRAgAG -BQI+jc41AAoJEMppOXSBA6N+xYgAn1HbGamcXTDYSFjn3U5ik2vQa8nuAKC/uUM0 -1gsdn+71EiAkmrjlH6H9MIhGBBARAgAGBQJCuAqrAAoJEIEEZE9RiYUE0MUAn3cW -FVW03CDuMuA7TSUqTf/eWARWAKC/GjQnPZ0+g7NbDw68ZSY3k8WuuohGBBARAgAG -BQJBkvP5AAoJEOQTYTMMqmi0GIQAn1mpdHz/wV++rSU2Qn7R32slfNdpAKDJPqpn -mcN4MUmk90yZEeHAdJmrhIhGBBARAgAGBQJCxTKGAAoJEJvyI0Uv4ovP3YUAn1z8 -L1EnLdIYttWrT1zs0E89Lz4BAJ4sFzcSq2NO3OZsEQfh9F6CrUe3UohGBBARAgAG -BQJC30UMAAoJEEHqCaBXk0mPIUgAoOF/OCzco+n/3sGJ57m0+aqGLOwjAJ9bC86B -2hRvkaZlGm/ne3TzCgFGnohGBBARAgAGBQJC4DXTAAoJEHPOLvuECPdVsEoAn2hq -8w0JUtfJpu3SmMUkFZLBFm3+AJ48pxmjHXjoBJGpokXw4i9Cfb56BoibBBMBAgAG -BQJC3qxxAAoJEDGmPZbsFAuBGDUD93nHzcDWR6AuDxDvaDp1xR8oJZHojeZ9sWSR -QffiNJKF07vvdjGbygqiWbQmtTM9qBnAxEiBpSpJemBhvGTKivPkb9H88KQe2jqo -wDO3IJorIVMT+eUFB+4pn5c+kFLD/IhG7ohZ2rBIc47L62FFuD19esxvMcVelrBF -q67ZV4KInAQTAQIABgUCQt7H2QAKCRA34/Rf7mXjIY9vBADqrguzlNOJFkWvEkgd -VXCCH2TP3OUuPZ9JQtbJfbkg1nn1hCnMITapNJlEE3yyjB7kEpBkmUtyKv3VSwOD -spfis/ps6zJRIne/2R5xqtT38Hf/sYucoMZUceipFAoCLYOqkKJKwTpYM0401dUp -uxp1y8Lq5N0SDtTW9fKMNs9jioicBBMBAgAGBQJC32x5AAoJEJrNPMCpn3Xdek0E -ANLj3wh2FCukydsfSzqgjFDpkVjiBxbTtCep86flaLMrF3H0idckGCjMUf/JostB -sjwCpL2VlCtvhwl5ZgIzm8luceHupq2iC5hvUN0IjKuIXMLbZP7DE+Lfcvw82nKt -8JNPpjosXiMhysQZms2XfuNP6f/Ey8J5jaB2Z2JCYWJBiEYEExECAAYFAkLeuu0A -CgkQMsnkzjZCy0vBrgCglfCttIxFGqVTLTq/nhPnRFMHX9YAoM4Z05oTuPFxGWS4 -RzxCzCb3vpsAiEYEExECAAYFAkLfbHsACgkQUI6uxTAtpWgipACfTBzbyb7Vc0jr -2FZDiXJFUSBCoEYAnR+ySWmedkcJWESStqRstD8T72mOiEYEExECAAYFAkLfbH0A -CgkQ3bpkuiwxLS/5RACgm88lpYDxy0bYF9/ubFbvqCw6i9YAnjrQoOLRBtQ4QmIP -R+T/9HReOeSciEYEExECAAYFAkLgyTwACgkQXP03+sx4yJNXxQCffoccUBWO51YI -EM0mbsqpnKHtawoAn2xTiDgo3TjtbRJskADuw+QnATQLiEYEExECAAYFAkLg7MwA -CgkQybWm7OLXdN8bPwCfeKtfQWKm8i+KuFJTIoMTvAN65QQAn2A9G1wtEN4Vzg6H -fnTvtgus32rRiEYEExECAAYFAkLg7UAACgkQW5aAEOBPmonAkwCfeF3l1lE2WijQ -F0BmPMfqvkyA2UcAnRQzuc7PWyP0nydGoJvfEUHByVs7iEYEExECAAYFAkLiYm8A -CgkQbZiNF4cxXDEC6gCgqICh/djzt1i6uadJAOztZc/zxl0AnjR1OaM2JxR+wqK3 -loSTEKX1uOpBiEYEExECAAYFAkLjVcAACgkQEy5J1OQe3H7rRwCeJWLmLyPzpg3n -r65j7AxqGRJeDfUAnRT2Oa85dAM02wgdYlj3FejPuNFziEYEExECAAYFAkLjZNsA -CgkQdcqio/ObN1DA+gCeOaeMarEJDPbZjaN3y/Pf5PB/Cv0AoMGPjPSTGt/iHJ2a -Arfyd0ME/R52iEYEEBECAAYFAkLkbxQACgkQjON2uBzUhh+lnQCfVbPGF5UWlzFb -xK+xKmY2DbKXb5wAnjpoAxffSRO1PZlQUHgWlS+NaeCziEYEEBECAAYFAkLkkscA -CgkQBJE0Quobo40fbACgo9YCJXu5Hpoc/SVp3rHCYmTuEMYAoIt2q6rPL/Jbbkik -bRqausEnFstziEYEEBECAAYFAkLlwiAACgkQYRlqLjM+ToRP8wCeOVAIpaG+q9G7 -uJgVCyDZ0JbjjfIAoJgg+NrBfhNeOBuu5mS1PSGDztQ+iEYEEBECAAYFAkLqY/gA -CgkQsr68QBUpJK8HfwCfWgNlYNLBWmn/nejlx0m6NstT2CsAnRdhsusv6RbcKNoV -UudxGG4Xm3nGiEYEExECAAYFAkLj7WoACgkQMoZOQZyFIiv6jQCeMior8Tg4msrR -c+FfXfj5Uln03d4An3RTaHKU+Sv4SgEecXlW0RYlVa6eiEYEExECAAYFAkLlELcA -CgkQUnkvr5l4r4ZC9gCbB5X0rL/DtpGptiNO12DdTQqzsMMAoOWpJFg3W7zAr7al -Vjqlx0t1vS4KiEYEExECAAYFAkLlEaUACgkQa3OhBipiP3LYawCgiuQqhVay7FE8 -e05Za69seQwF4CYAnAxBVNyvXu/1aeAuSi3iC6tywvFoiEYEExECAAYFAkLmmWIA -CgkQaOuMdvjqKWfdbQCdHfDneYM+nWXT/oYOqohamLvk8iQAn1LLJhkLiCMOa9/b -iF24zKt+MjaHiEYEExECAAYFAkLnYVcACgkQbpR1lMFSQxog0ACgp/m7d/NdNP0w -605VyrJWCdogeG8An2E+FpFBQgyvJaD6klzDRNNYLc71iEYEEBECAAYFAkOHn54A -CgkQZjW2wN6IXdNgDgCfUVMGJZV/D1QEdnwrTkRmMb37KR4AnRLDWMsKtq4qKXQj -YbmuLNdHa1EQiEYEEBECAAYFAkY44sgACgkQFUWz/uIi3k8H/ACgmKEdToiBaw1w -AMXXKjj+8PTU880AnjTWDVjV2fZnj8iXaOK7MTx01gMRiEYEEBECAAYFAkY456IA -CgkQY9CtrpESA+QXcACcCFtUvEcmTT5ezAsMsWPbRJAqtwoAnjFdqKAoBDkPr85/ -VI89GhfttMRdiEYEEBECAAYFAkY8kyoACgkQmHDv8/EvYHLdewCgo42arxjKFiq+ -lp9b11fuTqvimDkAn1KOSLRaqubUBhfEBgZzx9kh6wh/iEYEExECAAYFAkY5GrkA -CgkQ4eHysJkO1KqIOgCdHwUD/IZcQB3qA/QCiKjIwePp7QoAoIB2fFdQH95LA33w -SR5XBI+mIEsbiEYEExECAAYFAkY8UEcACgkQTAQoGDEaPeX5dgCfY6TPlbpJpsrK -KtQaMXfSWv0E/xUAoIGqw9ZHnQ7y9wbSUMuSnW25b7rdiEYEExECAAYFAkY9oJIA -CgkQLrlGgoiBdAJMWQCgirz2diHoCbFyrBAV5iKWgP4Ua/QAnjWVrS+SKzUlQgMz -cU07zHDlVs1kiEYEEBECAAYFAkY91ngACgkQ9cJgFkzu119zGQCcCwwCeGu9A1U9 -Amz8/nKxBModdnsAoIavFQWLkVD3egS5YEarD/Edwx9UiEYEEBECAAYFAkY99QUA -CgkQoHLU0ENYxYRKfgCeMfNpqkkRohgWFz/f2EhGbmfR2X0An2UBeqbP5hBKokpD -9xyF0pst2FIZiEYEEBECAAYFAkY+BcUACgkQAqWmBQt+bPrGDwCfUQUaIJ4jUL7s -FQOojnGU+mzpYHkAn1xSgTyDWKkT9C0JVhw5SEPnfLFjiEYEExECAAYFAkY/BjEA -CgkQA/aMvd6IhKCNuwCgvN28t3l3yYAMxkMUuL3LA8uTikEAoK3bfHFYDA1KPlb6 -48YsvpHQgRvoiEoEEBECAAoFAkY494cDBQM8AAoJEHPdjBYBUwI1PekAnR36SmoX -YYegiEUSKxHCjHQnnYnbAJ9zmdCCloaaDIyqh2qr5x2jJscjHYhGBBARAgAGBQJG -QLZMAAoJEG0LxzpAWBg3YX4An2XrLaazjvwgpUwVEj9KCHAq9FYBAJ4khHqEJHjp -BjQioqGQfL2Z/NqI9ohGBBARAgAGBQJGTERTAAoJEB8hI8Nr2HKg6F0Anjm/ExEy -BoePXnjwORS20+/Rx1gdAJ0aVz/9sdWcnDCVQXP/U7ixfAO21ohGBBARAgAGBQJG -TH0BAAoJEA9FCiZiEL/A7x8Anjgvd31Atoy8y9wjvxowEkfbLZ1KAJ973Fhgy5i9 -/2oSWKGKX/tr/2nrwIhGBBARAgAGBQJGUm9ZAAoJEDLB1u8PFDvBEgMAn3Gjh6BS -BWjqH83sDmcwG5Pd1nqMAKDLY5za4VhiEa8ECBCkeoRJl/iy44hGBBARAgAGBQJG -Um9gAAoJEMuuvjmkbEyhglQAoL+JREGW7kkrFkmpQnoPaTNi6ji1AKDFOm+kNYqq -sYgzw54D89t1QmpOQIhGBBARAgAGBQJGXtWqAAoJEJqG18zRqupgx3wAoMcKQRL6 -tnmUztp7C5X7+i46ScZAAJ948yxdrkvg4qMDezOdydmRxzpaXohGBBARAgAGBQJG -pUwuAAoJEDm+UaEITJETPdoAoIVf/V5humFKY/Yph+AeSGDod/VTAKC2NmslQ2e6 -Gw8ZEr4Wih52zcxq0YhGBBARAgAGBQJGrcxXAAoJEDPNZzOvXsRS8j0AoLVDN8Wk -RLiuBvr7qWrNhg7Ylb1LAKC1mSGqxofl69FmIiCXOMeZ+A8mN4kBHAQQAQIABgUC -R8B9mAAKCRAZZYVQwxEGESOgCADhwUA+q0JhWkR/Q1zt5yKrGlQsYtpQI64N8xmL -PWRKReLgWIMAptJ+twYA+YuH7wCJBsgP7U8oi2x9azlmO4HMnDa2gXs4pJbE0pRI -mhP5JqkYauzepvLBlZGLzZ1zCpLE/JmaxB8tc40lF4/CBbLj5EE2+jfyPWEplyV/ -zEwjjDXAkxSzfhdp70EYyguGm4n6M4KgbgkTdxR1/uG+HIkq0yHGsCJhViZWW6tK -G00XcLOGrm2bzQlv2bXCVlEWC9QTqb/ZdbA+ONLSWdmegEVVnQeUx3jtvRg67yJ5 -LXA2CSq2lHAGoEEfZc4ziRHmn+5Pusk33Jq/rPV8QSCZXlMbiEYEEBECAAYFAknK -h9kACgkQyceSTlEEfWbGtwCePr57kk5WrDbIcRgYgvl37P2JRF8AoJHpjz2MwXPO -/asQ9sCsLE54aa6utCRTdGVmYW4gQm9kZXdpZyA8c3RlZmFuQHNhbWFmbG9zdC5k -ZT6IXgQTEQIAHgUCQpxp5QIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAAKCRCiEVrh -X2uLcsktAJ9XkWAsu0zJ293dGa+Yban+Zr1V9ACg3b9Petds6ebqQZoiHRopckbb -OLqIRgQQEQIABgUCQrgKqwAKCRCBBGRPUYmFBP0VAKCPH0b7S+TylV1uBuYcYnWI -b/RJzwCeJvRTMPnWNjVz+CVOvVzJTH4ol5mIRgQQEQIABgUCQsUyhgAKCRCb8iNF -L+KLz3iqAKCXRZWdGjBVbj3IBFl3kvh3xF2gsgCcD3H79mbVDRNMxpGArFQ1hqQF -zleIRgQQEQIABgUCQt9FDAAKCRBB6gmgV5NJjzHQAJ9IfkjKkiEuFxUhznsghAQ8 -bsBWnACgoT0kWSB3iUepLIDoWhhGtDIS5FSInAQTAQIABgUCQt6scQAKCRAxpj2W -7BQLgebOBACAFFpEKETO3ZHbjMnPogACNr6EZCQxzGTIXrXSyWQs68VcH54wUOA4 -yk3cGpfH2pgAxYjaHejTJRvDKvGrPGlKHgCZFy4+wHzo17pW9J1aKk2sUWlT67sn -DVdMun/i8WxD9yz299cXR6iCxPfP2HIMEqbsxWJaXITo7drWSjO35YicBBMBAgAG -BQJC3sfZAAoJEDfj9F/uZeMhRawEAM9wfn9sBIsFzQRQbAO+ll83f8ki++A4Anj6 -DXQ4xRmClUxqahL1BjxxeQhE+Qomq1IebDJr0Se34XB0g3J7bzr/i9QmEwEqnDJf -WVobv1Ugjy+1jzErlZBhm8hnCI+zPnrWKLk0n78vzJ5RrnVaTTV+OW5r4rdVZ86y -KYHtpVSoiJwEEwECAAYFAkLfbHkACgkQms08wKmfdd0HDQP8DDD+1FQU8PPPe+Ku -f2bJOO7Ycrej4JF1I/Gbs2HH3xXgOZsRv6WJ41M/ovxJLYrpVqQA2YF/Gxwguwrf -4lPk+4spFdabguiJK0d2/KZAtnLsjIzdYcoY01IKGT3xkPwIDErNFSmxX6bKCUeP -cFNHYZ6dDBHFFcYVTsdo/wbAe6aIRgQTEQIABgUCQt6wsgAKCRD9b4jGIdCnG30U -AKDCxsPZksKIcvj7tbHQEwm+PV5+DwCg7PorUCgIvTIWnID8zRWDBG4ACXaIRgQT -EQIABgUCQt667QAKCRAyyeTONkLLS/d2AJwM7BQIQgqLA0qA75R2EjHFXQKZWACg -o7iaANHxIRc/Nw19j8CxNbWJRJ6IRgQTEQIABgUCQt9sewAKCRBQjq7FMC2laIx3 -AJsF0Hjrm4N21EwdrmhS9PHKQL2KdgCgjlus2GyuCzafgb9JHVhBDrhelkmIRgQT -EQIABgUCQt9sfQAKCRDdumS6LDEtL7MWAKC6rQU6ZjSS6gVnwswutaqBwfwtvwCg -v2mMGJf2hnYVaNNqV5WIFAuycmOIRgQTEQIABgUCQuDJOwAKCRBc/Tf6zHjIk9Tl -AJ9dbM2HowI5oD6hGSnADhI2dKfBrQCg4O9WtFiRzLqC1TgCAsbigqy+JDiIRgQT -EQIABgUCQuDszAAKCRDJtabs4td0311pAJ9L3yUe7GUeDqMzd3WLWatclf7ruQCe -OenA9nhyKgHASeEK/ZXQXDDBW0uIRgQTEQIABgUCQuDtQAAKCRBbloAQ4E+aibNV -AJ4wnAfcA/rtUs3+Hu9nNn8ar/2Q5wCfe6W+k9yHjd7hZWnYHdnCkAZkOMeIRgQT -EQIABgUCQuJibwAKCRBtmI0XhzFcMezQAKCnk+So0Anm4kLDwl+srHvIB7b6jACg -qROBN5MeEGXQm+Gan2VSt+nvTZ+IRgQTEQIABgUCQuNVwAAKCRATLknU5B7cflR0 -AKCTAlfhPFwHPXnBo+5IROopwNQnsQCgh2vHS9VRZRt5I9isNDaNf1biCQmIRgQT -EQIABgUCQuNk2wAKCRB1yqKj85s3UK9XAKCELi7ymxtLxdwYfdfV3dxd63mV2wCg -jgaUlQqFXjx5mXnRsgy4S6cS9yuIRgQQEQIABgUCQuRvFAAKCRCM43a4HNSGH5/s -AJ9JVHMVwBwHD8PN3DQq8hHEumn8twCfVQSXooNY2P744K+8k6lLO8nOH6GIRgQQ -EQIABgUCQuSSxwAKCRAEkTRC6hujjb+qAJ0Z+AoGDYe122wRAOYAKayl9f9e0QCe -Ketoll6NZ+Rm/NKbFJGP6fYywIuIRgQQEQIABgUCQuXCIAAKCRBhGWouMz5OhDd7 -AJ40l37cLZcSxfPt3M7/aOPgVGpa5wCfciaEynzuHDfIQD/vtXrZb2m0+NeIRgQQ -EQIABgUCQupj+AAKCRCyvrxAFSkkrwQsAJwM8IqtXQk/TBiQi6Fyq/HHm5/zvACg -5atZV8F+r7jVRhT1SJ+FaVsaQDiIRgQTEQIABgUCQuPtagAKCRAyhk5BnIUiKwuy -AJwOljL2++fVQ0BSKRvFSvS+fSu3KACeJxsOhbyCd3o3rqwaVeY5FFi+Fm+IRgQT -EQIABgUCQuUQtwAKCRBSeS+vmXivhv0OAJ0Sg/UEnB/IAoqjHzKoBivCMYDtrQCf -VY3IDKRHbbLNfWBSDERWCTpHXtiIRgQTEQIABgUCQuURpQAKCRBrc6EGKmI/cqGB -AKDEgTewzt6TjmCkI9RrYjF46a9H4wCeJPh4bmTymcfwRGn60h0a9Mz1mKaIRgQT -EQIABgUCQuaZYgAKCRBo64x2+OopZ3lEAJ9w4EWAgRUMxf0Ud1zoygYDQedAgQCe -JPHSbk62Ej11NljNGN1zdwzRHuSIRgQTEQIABgUCQudhVwAKCRBulHWUwVJDGkOf -AKCgQM+50dTktJDaDd8gVOGBKRiSIgCgkT9gdtDac0m9s2IHAqktk0mc0U+IRgQQ -EQIABgUCQ4efngAKCRBmNbbA3ohd05uvAKCjMnn4GpnZhjWFS7iN0LIXgxm5PwCf -YodjKF5zSbIROx79dJ41Gg0/VxWIRgQQEQIABgUCRjjiyAAKCRAVRbP+4iLeTznP -AKCaIUKdiySarhu//zEVn67y9q/szACcDUob1L2ac1R1FHB9XE4fTf/PV1KIRgQQ -EQIABgUCRjjnogAKCRBj0K2ukRID5FlVAJoDhc0dijUvPmOKILkX6fG5g73DugCe -PsOrjW+YIc5+T9qeVMzHyfm2opuIRgQQEQIABgUCRjyTKgAKCRCYcO/z8S9gctnJ -AKCc7DZ7JzXgaB4ImiwB2dyGMFUC8QCgitOFKEw1y4+V1dNN3kZYL4P/M/uIRgQT -EQIABgUCRjkauQAKCRDh4fKwmQ7UqvVYAJ9BjHLDyGmR56xKlKF3qVq1+jAmgwCf -QR+0qbVWaSIaVS1DCg8yUr2txOeIRgQTEQIABgUCRjxQRwAKCRBMBCgYMRo95VO1 -AKCewEwAscfj9VfTxswF6BL6zNj8rACfW/3kG7zPI2dSjWJzGYPQYPAa0smIRgQT -EQIABgUCRj2gkgAKCRAuuUaCiIF0AjxRAKCu9kiQfvVmSrVZb9HK8Mazhut+hwCf -Y5guSOz96KH5dJ2585cm5wPyT5mIRgQQEQIABgUCRj3WeAAKCRD1wmAWTO7XX04y -AJ4/ZvOfsexCgIQRuoREg1/D9bniKgCfTcKh9dLFkPjlD3yIw/NCc1L0/ruIRgQQ -EQIABgUCRj31BQAKCRCgctTQQ1jFhJmBAJ0TPZlIksq1EnAYtTTSb/tHpXxNUACf -d/m3jaTHdJljRXGI7UBsVHnL0nWIRgQQEQIABgUCRj4FxQAKCRACpaYFC35s+iQn -AJ0eGzB7NIQtXLEgyuphyW0nBppVrQCcDj6tm1MCKXA7f4zV1R0u30jrUeCISgQQ -EQIACgUCRjj3hwMFAzwACgkQc92MFgFTAjV92QCeI+02yLkSqmdJlMBVfVE9joT/ -pBAAnjJlywot38PS8FtodliCfNvqn6VIiEYEEBECAAYFAkZAtkwACgkQbQvHOkBY -GDcfVwCfbS6bS20V1ElnuQBAofsmi0yjbzoAn3eztrDQIrh+/BkXIJo7IF0Ny+gV -iEYEEBECAAYFAkZMRFMACgkQHyEjw2vYcqBPqACg1jy6peePfEuvYJEKfJBNG7FV -wPwAn3y5/eBtZdRefj90FeIiS3dr3D3siEYEEBECAAYFAkZMfQEACgkQD0UKJmIQ -v8AfLQCfeHzJB6tJdA4bjPEcJKi0sMFceCwAnAovkjdUhF2aJrpK2cr4bZhm5Rbh -iEYEEBECAAYFAkZSb1kACgkQMsHW7w8UO8FdFACfSFzmzz3lZmB+qclUq7q+YVgd -3hYAnRyNi3iYLUVrk746XsvzWcv8UonRiEYEEBECAAYFAkZSb2AACgkQy66+OaRs -TKE0LgCfYZfXtB9Er7iKXoDfhNuuDIdKmqQAniGNC3piLBCggMPpJ5vQp2KsptvJ -iEYEEBECAAYFAkZe1aoACgkQmobXzNGq6mC8pQCfeV2ib+Ymo/KQ+jYsr1BxYVFC -OmsAoO312vLgv8Q46hucGIq9aN2isEnEiEYEEBECAAYFAkalTC4ACgkQOb5RoQhM -kRPl4wCfebfolpLZYdGk48JuUwd2shtkicwAoMGAdNOSoXynI/6/b9jsxQl8qmwZ -iEYEEBECAAYFAkatzFcACgkQM81nM69exFIBlgCg0CUQ1h61lCLBjE9+/Kvskrh1 -QAgAn0gXeq1NKEuepDB6hQo7fVZrSpF8iQEcBBABAgAGBQJHwH2YAAoJEBllhVDD -EQYR8ZEIALAYFxipk7FfpDbEnUrTI237QugKjpvrX9n7CdHxJLnwOBr1g2/e/RMg -oJHH8yqP8iQPGMfZXCVLM6ME/EoUQAVT0M0I1QsBVxTIXyPqQIzCv6zibLYyEXDl -QDNVB4hqdhozzxyjGruqbn75zfb8mlTMoj9lElNhVIdcUOVL2xHkBy6g/YpmuZb/ -pt4HXBOUyWkmFK8zBMxhXw5bOuOP2zSJk9rZt7wdKNj3iC+/+936yXZzqWFuUOq0 -RX61RtW8e3SJfowGFBd728snsiD0IFLTXor62aBfBJ5yiGKFUBM8LQ27FcJasfo7 -a8SiBbJOO/OsyQ1lRvLS85kM+XZDXZaIRgQQEQIABgUCScqH2QAKCRDJx5JOUQR9 -Zlt8AKCAMAc8652qgKVPdH0XJbzoq6ykNwCgkTboPY7d+GFyEwNCHk+0PAmkPru0 -KFN0ZWZhbiBCb2Rld2lnIDxzdGVmYW4uYm9kZXdpZ0BlcG9zdC5kZT6IdwQwEQIA -NwUCQsVK6jAdIEkgbm8gbG9uZ2VyIGhhdmUgYWNjZXNzIHRvIHRoYXQgZW1haWwg -YWRkcmVzcy4ACgkQohFa4V9ri3LW7wCdEc6hdCr094a8LG+chTd+OzGxfFUAnR3F -vtuG8sv367Knk0ybMnpOM/4hiEYEEBECAAYFAj53pBoACgkQFT+gzXWmdpL1ewCe -OSe7lOufhc3mfTXs7eSvqECt89oAn0VM+YgQHbfdVp32YE7Ht6N6GPf0iJkEEwEC -AAYFAj513w8ACgkQPo+38viDQdkP7QPmPZXPi7m6wRiLofsTlHCbBrR+ehWoSSqC -mHQjN1DGRtamGE6X8QbMIttD+NLp+uTx8j/E0sGUdPnWkky6fwt1f3AYeoAgCXNv -PoewsC6mZn3FMdEo6vJc43FmhsUfumOtunvGNBnXdM8GSCJ+RBS/ASMjRrECF12/ -14xwgyyIVwQTEQIAFwUCPD7aNgULBwoDBAMVAwIDFgIBAheAAAoJEKIRWuFfa4ty -s/4AoND5QhEdyVIypBvCUHv5SCaAKcd/AKDFthtZTrjF+eEYlktPLRtI9zjeE4hG -BBMRAgAGBQI+jc41AAoJEMppOXSBA6N+jAIAoIcAeCIKt2QBPnAthnUk4DhlmM7F -AKCA0Iz9ZutXGb2l+p8s7hhF3+Y9L4hGBBMRAgAGBQI+ddrHAAoJEO7R6jkiYdBz -i84AnRddvByuDodl5KaCSdpe6k9aYkLqAJoC/ud28X0M478KlmacVVjb+PqzBIg/ -AwUQPnWqLv1viMYh0KcbEQJ6DwCff918LRigFUyEvYj04C12so87JNUAn0RNFw+P -1/SR9Mr/JQmOzJVhlwdriEYEEBECAAYFAkLFMoYACgkQm/IjRS/ii8+wZwCfRvfW -6NyBoAp7oS9ILRHNYh2GbhsAnRYGs1hSaGK4rGxm/fmqxj+DvqI2iQEcBBABAgAG -BQJHwH2YAAoJEBllhVDDEQYRqFAH/28B/f92MsQX9ZRJG1v9EDGVx1U+pcE16a7i -plCP4QuUR6uA2EUe9fptzZfX2iT2nr2XgCB3x2NHf0rzNpTAM3OtqKQhXdvS3EWz -WqR8UaDf6dxKN57B4QONRIhuImf3m9DWFNwIr3oOtO25Q+tG7YcZen/zbwU5O23C -EakNsysxGEHn/3BPjRyA1FE7NVLrAmxFu8LXBUD9y3HNNetM4WlucnObqw5cBFsZ -MtnGcVLs3suTAsxwrnBo7jq/DbZVvzUZtEkGdV7LpSWkivSrq0+h9Gzug8EcYTjr -dR6LFA5xGan6R9zrSe4mxe7vja10fmGEdIOQIapgO/iOWDR83MG5AQ0EOxIiVBAE -AM1SlkvEK5MrMnW0ybtv9eMCG89gqIvd2gBnpcAsF0sX+dCaWHWNy5HL3dBak/G3 -BJ8+NzAksfL5Srm0LVKcfVjBiG+IsbUoSyeJQGuhSZXYcnIc/3Z8Ujcs+TfFurG8 -uHU1cWnNK5aMYwDrqxmp4Ru0zLYHw4tHBBKF0cgFaCsjAAMFA/49aSZuDaatppSa -BOzCt7wIYCsGBxX5ZibrJqr0gLUbhXU9eaWzCawOWwCvpQN0lTjoYVkwiLZaYUkd -qsSQgHAU3jjKlIuaIRXApEkTb8Jg7R/vNAdwXoZRLBCjZPGd5qGtnIezsZ2+lxFx -+bRieUL8fUInemXwWl8e23PMisgm+IhOBBgRAgAGBQI7EiJUABIJEKIRWuFfa4ty -B2VHUEcAAQENMgCgnc22kj8TfjktU6u4SUUqud25ZZcAn0B2b0zPjKjGuiwdKSnk -FbNcFS3g -=LIse +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 +b0zPjKjGuiwdKSnkFbNcFS3g +=UxMc -----END PGP PUBLIC KEY BLOCK----- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |