apply changes from com.github.pjfanning:xmlbeans
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1824564 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5543eb9de8
commit
1f0cf7d6e2
@ -1,3 +1,20 @@
|
|||||||
|
Changes in V2.6.4 since V2.6.3
|
||||||
|
|
||||||
|
* Remove Piccolo support
|
||||||
|
* Apply XML Entity Expansion security checks
|
||||||
|
|
||||||
|
Changes in V2.6.3 since V2.6.2
|
||||||
|
|
||||||
|
* ArrayIndexOutOfBoundsException when writing CDATA (https://issues.apache.org/jira/browse/XMLBEANS-404)
|
||||||
|
|
||||||
|
Changes in V2.6.2 since V2.6.1
|
||||||
|
|
||||||
|
* Duplicate classes in jar (https://issues.apache.org/jira/browse/XMLBEANS-499)
|
||||||
|
|
||||||
|
Changes in V2.6.1 since V2.6.0
|
||||||
|
|
||||||
|
* Fix for Unicode Surrogate chars being lost when writing XML (https://bz.apache.org/bugzilla/show_bug.cgi?id=54084 & https://issues.apache.org/jira/browse/XMLBEANS-332)
|
||||||
|
|
||||||
Changes in V2.6.0 since V2.5.0
|
Changes in V2.6.0 since V2.5.0
|
||||||
|
|
||||||
* Add new xml option CopyUseNewSynchronizationDomain used for copy.
|
* Add new xml option CopyUseNewSynchronizationDomain used for copy.
|
||||||
|
24
xmlbeans/README.md
Normal file
24
xmlbeans/README.md
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# xmlbeans
|
||||||
|
|
||||||
|
[![Build Status](https://travis-ci.org/pjfanning/xmlbeans.svg?branch=trunk)](https://travis-ci.org/pjfanning/xmlbeans)
|
||||||
|
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.pjfanning/xmlbeans/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.pjfanning/xmlbeans)
|
||||||
|
|
||||||
|
Latest source from ```http://svn.apache.org/repos/asf/xmlbeans/trunk/```. Some changes have been made to get the build working.
|
||||||
|
|
||||||
|
The core use case is to help users of Apache Poi, which depends on the no longer maintained Apache XMLBeans library.
|
||||||
|
|
||||||
|
* Release 2.6.1 includes a fix for an issue where Unicode Surrogate chars were replaced with `?` chars ?when outputting files - https://bz.apache.org/bugzilla/show_bug.cgi?id=54084
|
||||||
|
* fixes an issue affecting usage on Android: https://issues.apache.org/jira/browse/XMLBEANS-499
|
||||||
|
|
||||||
|
## Sample
|
||||||
|
|
||||||
|
https://github.com/pjfanning/poi-xmlbeans-patch-test
|
||||||
|
|
||||||
|
## Build
|
||||||
|
```
|
||||||
|
./xbeanenv.sh
|
||||||
|
ant
|
||||||
|
ant checkintest
|
||||||
|
```
|
||||||
|
|
||||||
|
Output jar is found at ```build/lib/xbean.jar```
|
@ -15,11 +15,11 @@
|
|||||||
-->
|
-->
|
||||||
<project name="Xbean" default="default" basedir=".">
|
<project name="Xbean" default="default" basedir=".">
|
||||||
|
|
||||||
<property name="build.compiler" value="javac1.4"/>
|
<property name="build.compiler" value="javac1.6"/>
|
||||||
<property name="javac.source" value="1.4"/>
|
<property name="javac.source" value="1.6"/>
|
||||||
<property name="javac.target" value="1.4"/>
|
<property name="javac.target" value="1.6"/>
|
||||||
|
|
||||||
<property name="version.base" value="2.6.0"/>
|
<property name="version.base" value="2.6.4"/>
|
||||||
<property name="version.rc" value=""/>
|
<property name="version.rc" value=""/>
|
||||||
|
|
||||||
<!-- manifest entries -->
|
<!-- manifest entries -->
|
||||||
@ -128,39 +128,6 @@
|
|||||||
<copy file="external/lib/saxon9-dom.jar" tofile="build/lib/saxon9-dom.jar"/>
|
<copy file="external/lib/saxon9-dom.jar" tofile="build/lib/saxon9-dom.jar"/>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="jsr173-bundle.downloaded">
|
|
||||||
<condition property="jsr173-bundle.exists">
|
|
||||||
<available file="external/lib/jsr173_1.0_api_bundle.jar"/>
|
|
||||||
</condition>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="jsr173-bundle.jar"
|
|
||||||
depends="jsr173-bundle.downloaded, dirs"
|
|
||||||
unless="jsr173-bundle.exists">
|
|
||||||
<get dest="external/lib/jsr173_1.0_api_bundle.jar"
|
|
||||||
src="http://www.apache.org/dist/java-repository/xmlbeans/jars/jsr173_1.0_api_bundle.jar"
|
|
||||||
verbose="true" usetimestamp="true" ignoreerrors="true"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="jsr173_1.0.jars.extracted">
|
|
||||||
<condition property="jsr173_1.0.jars.exist">
|
|
||||||
<available file="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</condition>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="jsr173_1.0.jars"
|
|
||||||
depends="jsr173-bundle.jar, jsr173_1.0.jars.extracted"
|
|
||||||
unless="jsr173_1.0.jars.exist">
|
|
||||||
<unjar src="external/lib/jsr173_1.0_api_bundle.jar" dest="external/lib" >
|
|
||||||
<patternset>
|
|
||||||
<include name="jsr173_1.0_api.jar"/>
|
|
||||||
</patternset>
|
|
||||||
</unjar>
|
|
||||||
|
|
||||||
<!-- copy jsr173 API jar and license files to build/lib -->
|
|
||||||
<copy file="external/lib/jsr173_1.0_api.jar" tofile="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<!-- get resolver.jar -->
|
<!-- get resolver.jar -->
|
||||||
<target name="check.xcresolver.zip">
|
<target name="check.xcresolver.zip">
|
||||||
<condition property="xcresolver.zip.exists">
|
<condition property="xcresolver.zip.exists">
|
||||||
@ -353,12 +320,8 @@
|
|||||||
<fileset dir="build/lib">
|
<fileset dir="build/lib">
|
||||||
<include name="xbean.jar"/>
|
<include name="xbean.jar"/>
|
||||||
<include name="xmlpublic.jar"/>
|
<include name="xmlpublic.jar"/>
|
||||||
<include name="xmlbeans-qname.jar"/>
|
|
||||||
<include name="xbean_xpath.jar"/>
|
<include name="xbean_xpath.jar"/>
|
||||||
<include name="resolver.jar"/>
|
<include name="resolver.jar"/>
|
||||||
<include name="jsr173_1.0_api.jar"/>
|
|
||||||
<include name="BEA Binary RI License (JSR 173).1(Clean).txt"/>
|
|
||||||
<include name="README(jsr_173 api and ri).txt"/>
|
|
||||||
</fileset>
|
</fileset>
|
||||||
</copy>
|
</copy>
|
||||||
|
|
||||||
@ -488,7 +451,7 @@
|
|||||||
store.classes, saaj_api.classes,
|
store.classes, saaj_api.classes,
|
||||||
marshal.classes, xpath.classes, oldxbean.jar, xsdschema.classes,
|
marshal.classes, xpath.classes, oldxbean.jar, xsdschema.classes,
|
||||||
xmlinputstream.classes, resolver.jar, xbean_xpath.jar,
|
xmlinputstream.classes, resolver.jar, xbean_xpath.jar,
|
||||||
piccolo.classes, tools.classes, jamsupport.classes">
|
tools.classes, jamsupport.classes">
|
||||||
<jar jarfile="build/lib/xbean.jar" index="true">
|
<jar jarfile="build/lib/xbean.jar" index="true">
|
||||||
<fileset dir="build/classes/xmlpublic"
|
<fileset dir="build/classes/xmlpublic"
|
||||||
excludes="javax/**"/>
|
excludes="javax/**"/>
|
||||||
@ -509,7 +472,6 @@
|
|||||||
<fileset dir="build/classes/marshal"/>
|
<fileset dir="build/classes/marshal"/>
|
||||||
<fileset dir="build/classes/repackage"/>
|
<fileset dir="build/classes/repackage"/>
|
||||||
<fileset dir="build/classes/jam"/>
|
<fileset dir="build/classes/jam"/>
|
||||||
<fileset dir="build/classes/piccolo"/>
|
|
||||||
<fileset dir="build/classes/tools"/>
|
<fileset dir="build/classes/tools"/>
|
||||||
<fileset file="LICENSE.txt"/>
|
<fileset file="LICENSE.txt"/>
|
||||||
<fileset file="NOTICE.txt"/>
|
<fileset file="NOTICE.txt"/>
|
||||||
@ -523,10 +485,6 @@
|
|||||||
</section>
|
</section>
|
||||||
</manifest>
|
</manifest>
|
||||||
</jar>
|
</jar>
|
||||||
<jar jarfile="build/lib/xmlbeans-qname.jar">
|
|
||||||
<fileset dir="build/classes/xmlpublic"
|
|
||||||
includes="javax/xml/namespace/QName.class,javax/xml/namespace/NamespaceContext.class"/>
|
|
||||||
</jar>
|
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- build XMLInputStream interface ============================================= -->
|
<!-- build XMLInputStream interface ============================================= -->
|
||||||
@ -545,12 +503,10 @@
|
|||||||
|
|
||||||
<!-- xmlpublic target ============================================== -->
|
<!-- xmlpublic target ============================================== -->
|
||||||
|
|
||||||
<target name="xmlpublic.classes" depends="dirs, jsr173_1.0.jars">
|
<target name="xmlpublic.classes" depends="dirs">
|
||||||
<mkdir dir="build/classes/xmlpublic"/>
|
<mkdir dir="build/classes/xmlpublic"/>
|
||||||
<javac srcdir="src/xmlpublic" sourcepath="src/xmlinputstream" destdir="build/classes/xmlpublic" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/xmlpublic" sourcepath="src/xmlinputstream" destdir="build/classes/xmlpublic" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath>
|
<classpath/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</classpath>
|
|
||||||
</javac>
|
</javac>
|
||||||
|
|
||||||
<!-- Need properties files for XmlError -->
|
<!-- Need properties files for XmlError -->
|
||||||
@ -586,7 +542,6 @@
|
|||||||
<mkdir dir="build/classes/typestore"/>
|
<mkdir dir="build/classes/typestore"/>
|
||||||
<javac srcdir="src/typestore" destdir="build/classes/typestore" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/typestore" destdir="build/classes/typestore" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
<pathelement location="build/classes/common"/>
|
<pathelement location="build/classes/common"/>
|
||||||
@ -597,11 +552,10 @@
|
|||||||
|
|
||||||
<!-- common target ============================================= -->
|
<!-- common target ============================================= -->
|
||||||
|
|
||||||
<target name="common.classes" depends="dirs, xmlpublic.classes, xmlinputstream.classes, jsr173_1.0.jars">
|
<target name="common.classes" depends="dirs, xmlpublic.classes, xmlinputstream.classes">
|
||||||
<mkdir dir="build/classes/common"/>
|
<mkdir dir="build/classes/common"/>
|
||||||
<javac srcdir="src/common" destdir="build/classes/common" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/common" destdir="build/classes/common" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
@ -639,7 +593,7 @@
|
|||||||
|
|
||||||
<target name="typeimpl.classes" depends="dirs, store.classes,
|
<target name="typeimpl.classes" depends="dirs, store.classes,
|
||||||
repackage.classes, xmlpublic.classes, typeholder.template, typestore.classes, xsdschema.classes,
|
repackage.classes, xmlpublic.classes, typeholder.template, typestore.classes, xsdschema.classes,
|
||||||
configschema.classes, toolschema.classes, jsr173_1.0.jars, jam.classes">
|
configschema.classes, toolschema.classes, jam.classes">
|
||||||
<mkdir dir="build/classes/typeimpl"/>
|
<mkdir dir="build/classes/typeimpl"/>
|
||||||
<javac destdir="build/classes/typeimpl" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac destdir="build/classes/typeimpl" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
@ -655,7 +609,6 @@
|
|||||||
<pathelement location="build/classes/xmlschema"/>
|
<pathelement location="build/classes/xmlschema"/>
|
||||||
<pathelement location="build/classes/toolschema"/>
|
<pathelement location="build/classes/toolschema"/>
|
||||||
<pathelement location="build/classes/jam"/>
|
<pathelement location="build/classes/jam"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</classpath>
|
</classpath>
|
||||||
|
|
||||||
<src path="src/typeimpl"/>
|
<src path="src/typeimpl"/>
|
||||||
@ -681,7 +634,6 @@
|
|||||||
<mkdir dir="build/classes/xmlcomp"/>
|
<mkdir dir="build/classes/xmlcomp"/>
|
||||||
<javac srcdir="src/xmlcomp" destdir="build/classes/xmlcomp" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/xmlcomp" destdir="build/classes/xmlcomp" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
<pathelement location="build/classes/common"/>
|
<pathelement location="build/classes/common"/>
|
||||||
@ -691,17 +643,17 @@
|
|||||||
<pathelement location="build/classes/configschema"/>
|
<pathelement location="build/classes/configschema"/>
|
||||||
<pathelement location="build/classes/toolschema"/>
|
<pathelement location="build/classes/toolschema"/>
|
||||||
<pathelement location="build/classes/xsdschema"/>
|
<pathelement location="build/classes/xsdschema"/>
|
||||||
|
<pathelement location="build/classes/typestore"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
</javac>
|
</javac>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- marshal target =============================================== -->
|
<!-- marshal target =============================================== -->
|
||||||
|
|
||||||
<target name="marshal.classes" depends="dirs, typeimpl.classes, xmlpublic.classes, jsr173_1.0.jars">
|
<target name="marshal.classes" depends="dirs, typeimpl.classes, xmlpublic.classes">
|
||||||
<mkdir dir="build/classes/marshal"/>
|
<mkdir dir="build/classes/marshal"/>
|
||||||
<javac srcdir="src/marshal" destdir="build/classes/marshal" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/marshal" destdir="build/classes/marshal" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath>
|
<classpath>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/configschema"/>
|
<pathelement location="build/classes/configschema"/>
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
@ -738,17 +690,15 @@
|
|||||||
<!-- store target ============================================== -->
|
<!-- store target ============================================== -->
|
||||||
|
|
||||||
<target name="store.classes"
|
<target name="store.classes"
|
||||||
depends="dirs, common.classes, xmlpublic.classes, typestore.classes, saaj_api.classes, piccolo.classes">
|
depends="dirs, common.classes, xmlpublic.classes, typestore.classes, saaj_api.classes">
|
||||||
<mkdir dir="build/classes/store"/>
|
<mkdir dir="build/classes/store"/>
|
||||||
<javac srcdir="src/store" destdir="build/classes/store" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/store" destdir="build/classes/store" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath id="store.compile.path">
|
<classpath id="store.compile.path">
|
||||||
<pathelement location="build/classes/typestore"/>
|
<pathelement location="build/classes/typestore"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
<pathelement location="build/classes/common"/>
|
<pathelement location="build/classes/common"/>
|
||||||
<pathelement location="build/classes/saaj_api"/>
|
<pathelement location="build/classes/saaj_api"/>
|
||||||
<pathelement location="build/classes/piccolo"/>
|
|
||||||
</classpath>
|
</classpath>
|
||||||
</javac>
|
</javac>
|
||||||
</target>
|
</target>
|
||||||
@ -756,18 +706,16 @@
|
|||||||
<!-- tools target ============================================== -->
|
<!-- tools target ============================================== -->
|
||||||
|
|
||||||
<target name="tools.classes"
|
<target name="tools.classes"
|
||||||
depends="dirs, common.classes, xmlpublic.classes, typestore.classes, saaj_api.classes, piccolo.classes,
|
depends="dirs, common.classes, xmlpublic.classes, typestore.classes, saaj_api.classes,
|
||||||
typeimpl.classes, xmlcomp.classes">
|
typeimpl.classes, xmlcomp.classes">
|
||||||
<mkdir dir="build/classes/tools"/>
|
<mkdir dir="build/classes/tools"/>
|
||||||
<javac srcdir="src/tools" destdir="build/classes/tools" source="${javac.source}" target="${javac.target}" debug="on">
|
<javac srcdir="src/tools" destdir="build/classes/tools" source="${javac.source}" target="${javac.target}" debug="on">
|
||||||
<classpath id="tools.compile.path">
|
<classpath id="tools.compile.path">
|
||||||
<pathelement location="build/classes/typestore"/>
|
<pathelement location="build/classes/typestore"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
<pathelement location="build/classes/common"/>
|
<pathelement location="build/classes/common"/>
|
||||||
<pathelement location="build/classes/saaj_api"/>
|
<pathelement location="build/classes/saaj_api"/>
|
||||||
<pathelement location="build/classes/piccolo"/>
|
|
||||||
<pathelement location="build/classes/typeimpl"/>
|
<pathelement location="build/classes/typeimpl"/>
|
||||||
<pathelement location="build/classes/xmlcomp"/>
|
<pathelement location="build/classes/xmlcomp"/>
|
||||||
</classpath>
|
</classpath>
|
||||||
@ -784,13 +732,11 @@
|
|||||||
|
|
||||||
<path id="bootstrap.run.path">
|
<path id="bootstrap.run.path">
|
||||||
<pathelement location="build/private/lib/oldxbean.jar"/>
|
<pathelement location="build/private/lib/oldxbean.jar"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
</path>
|
</path>
|
||||||
|
|
||||||
<path id="bootstrap.compile.path">
|
<path id="bootstrap.compile.path">
|
||||||
<pathelement location="build/classes/xmlpublic"/>
|
<pathelement location="build/classes/xmlpublic"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</path>
|
</path>
|
||||||
|
|
||||||
<property name="bootstrap.compile.path" refid="bootstrap.compile.path"/>
|
<property name="bootstrap.compile.path" refid="bootstrap.compile.path"/>
|
||||||
@ -834,7 +780,7 @@
|
|||||||
</condition>
|
</condition>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="xmlschema.classes" depends="xmlschema.check, xmlpublic.classes, oldxbean.jar, jsr173_1.0.jars" unless="xmlschema.notRequired">
|
<target name="xmlschema.classes" depends="xmlschema.check, xmlpublic.classes, oldxbean.jar" unless="xmlschema.notRequired">
|
||||||
<delete dir="build/classes/xmlschema"/>
|
<delete dir="build/classes/xmlschema"/>
|
||||||
<delete dir="build/src/xmlschema"/>
|
<delete dir="build/src/xmlschema"/>
|
||||||
<java classname="${bootstrap_schema_compiler}" classpathref="bootstrap.run.path" fork="true" failonerror="true">
|
<java classname="${bootstrap_schema_compiler}" classpathref="bootstrap.run.path" fork="true" failonerror="true">
|
||||||
@ -919,7 +865,6 @@
|
|||||||
<property name="repackage_arg" value=""/>
|
<property name="repackage_arg" value=""/>
|
||||||
<property name="schema_compiler" value="org.apache.xmlbeans.impl.tool.SchemaCompiler"/>
|
<property name="schema_compiler" value="org.apache.xmlbeans.impl.tool.SchemaCompiler"/>
|
||||||
<property name="bootstrap_schema_compiler" value="org.apache.xmlbeans.impl.tool.SchemaCompiler"/>
|
<property name="bootstrap_schema_compiler" value="org.apache.xmlbeans.impl.tool.SchemaCompiler"/>
|
||||||
<property name="piccolo_package_name" value="org.apache.xmlbeans.impl.piccolo"/>
|
|
||||||
<property name="jam_package_name" value="org.apache.xmlbeans.impl.jam"/>
|
<property name="jam_package_name" value="org.apache.xmlbeans.impl.jam"/>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
@ -1063,7 +1008,6 @@
|
|||||||
<pathelement location="build/classes/common"/>
|
<pathelement location="build/classes/common"/>
|
||||||
<pathelement location="external/lib/junit.jar"/>
|
<pathelement location="external/lib/junit.jar"/>
|
||||||
<pathelement location="build/ar/xbean.jar"/>
|
<pathelement location="build/ar/xbean.jar"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
<pathelement location="build/classes/xmlinputstream"/>
|
<pathelement location="build/classes/xmlinputstream"/>
|
||||||
</path>
|
</path>
|
||||||
|
|
||||||
@ -1073,7 +1017,7 @@
|
|||||||
</path>
|
</path>
|
||||||
|
|
||||||
|
|
||||||
<target name="drt.classes" depends="dirs,jsr173_1.0.jars">
|
<target name="drt.classes" depends="dirs">
|
||||||
<mkdir dir="build/private/classes/drt"/>
|
<mkdir dir="build/private/classes/drt"/>
|
||||||
<javac
|
<javac
|
||||||
destdir="build/private/classes/drt"
|
destdir="build/private/classes/drt"
|
||||||
@ -1093,7 +1037,6 @@
|
|||||||
|
|
||||||
<path id="scomp.run.path">
|
<path id="scomp.run.path">
|
||||||
<pathelement location="build/lib/xbean.jar"/>
|
<pathelement location="build/lib/xbean.jar"/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</path>
|
</path>
|
||||||
|
|
||||||
<target name="stsschema.check">
|
<target name="stsschema.check">
|
||||||
@ -1118,7 +1061,7 @@
|
|||||||
</uptodate>
|
</uptodate>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<target name="jam.classes" depends="jam.classes.check, dirs, repackage.classes, jsr173_1.0.jars" unless="jam.classes.notRequired">
|
<target name="jam.classes" depends="jam.classes.check, dirs, repackage.classes" unless="jam.classes.notRequired">
|
||||||
<delete dir="build/private/jam"/>
|
<delete dir="build/private/jam"/>
|
||||||
<mkdir dir="build/private/jam"/>
|
<mkdir dir="build/private/jam"/>
|
||||||
<unjar src="external/lib/jam-0.1.0-src.jar" dest="build/private/jam"/>
|
<unjar src="external/lib/jam-0.1.0-src.jar" dest="build/private/jam"/>
|
||||||
@ -1140,43 +1083,7 @@
|
|||||||
source="1.4" target="1.4"
|
source="1.4" target="1.4"
|
||||||
debug="on">
|
debug="on">
|
||||||
<src path="build/private/jam/src_repackage"/>
|
<src path="build/private/jam/src_repackage"/>
|
||||||
<classpath>
|
<classpath/>
|
||||||
<pathelement location="build/lib/jsr173_1.0_api.jar"/>
|
|
||||||
</classpath>
|
|
||||||
</javac>
|
</javac>
|
||||||
</target>
|
</target>
|
||||||
|
|
||||||
<!-- Piccolo deployment -->
|
|
||||||
<target name="piccolo.classes.check">
|
|
||||||
<uptodate property="piccolo.classes.notRequired"
|
|
||||||
targetfile="build/ar/xbean.jar">
|
|
||||||
<srcfiles dir="external/lib" includes="**/piccolo_*.jar"/>
|
|
||||||
</uptodate>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
<target name="piccolo.classes" depends="piccolo.classes.check, dirs, repackage.classes" unless="piccolo.classes.notRequired">
|
|
||||||
<delete dir="build/private/piccolo"/>
|
|
||||||
<mkdir dir="build/private/piccolo"/>
|
|
||||||
<unjar src="external/lib/piccolo_apache_dist_20040711_v2.jar" dest="build/private/piccolo"/>
|
|
||||||
|
|
||||||
<echo message="Re-packaging Piccolo"/>
|
|
||||||
|
|
||||||
<java classname="repackage.Repackage" fork="true" failonerror="true">
|
|
||||||
<classpath>
|
|
||||||
<pathelement location="build/classes/repackage"/>
|
|
||||||
</classpath>
|
|
||||||
<arg line="-repackage com.bluecast:${piccolo_package_name} -f build/private/piccolo/src -t build/private/piccolo/src_repackage"/>
|
|
||||||
</java>
|
|
||||||
|
|
||||||
<delete dir="build/classes/piccolo"/>
|
|
||||||
<mkdir dir="build/classes/piccolo"/>
|
|
||||||
<javac
|
|
||||||
destdir="build/classes/piccolo"
|
|
||||||
classpath=""
|
|
||||||
source="1.3" target="1.4"
|
|
||||||
debug="on">
|
|
||||||
<src path="build/private/piccolo/src_repackage"/>
|
|
||||||
</javac>
|
|
||||||
</target>
|
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
202
xmlbeans/external/lib/piccolo.LICENSE.txt
vendored
202
xmlbeans/external/lib/piccolo.LICENSE.txt
vendored
@ -1,202 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
xmlbeans/external/lib/saxonb9-0-0-4j.zip
vendored
Normal file
BIN
xmlbeans/external/lib/saxonb9-0-0-4j.zip
vendored
Normal file
Binary file not shown.
@ -3466,28 +3466,36 @@ final class Cur
|
|||||||
|
|
||||||
String s = CharUtil.getString( src, off, cch );
|
String s = CharUtil.getString( src, off, cch );
|
||||||
|
|
||||||
for ( int i = 0 ; i < s.length() ; i++ )
|
for ( int i = 0 ; i < s.length(); )
|
||||||
{
|
{
|
||||||
if (i== 36)
|
if (i == 36)
|
||||||
{
|
{
|
||||||
o.print( "..." );
|
o.print( "..." );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
char ch = s.charAt( i );
|
int codePoint = s.codePointAt( i );
|
||||||
|
char[] chars = Character.toChars(codePoint);
|
||||||
|
|
||||||
if (ch >= 32 && ch < 127)
|
if ( chars.length == 1 ) {
|
||||||
o.print( ch );
|
char ch = chars[0];
|
||||||
else if (ch == '\n')
|
if (ch >= 32 && ch < 127)
|
||||||
o.print( "\\n" );
|
o.print( ch );
|
||||||
else if (ch == '\r')
|
else if (ch == '\n')
|
||||||
o.print( "\\r" );
|
o.print( "\\n" );
|
||||||
else if (ch == '\t')
|
else if (ch == '\r')
|
||||||
o.print( "\\t" );
|
o.print( "\\r" );
|
||||||
else if (ch == '\"')
|
else if (ch == '\t')
|
||||||
o.print( "\\\"" );
|
o.print( "\\t" );
|
||||||
else
|
else if (ch == '\"')
|
||||||
o.print( "<#" + ((int) ch) + ">" );
|
o.print( "\\\"" );
|
||||||
|
else
|
||||||
|
o.print( "<#" + ((int) ch) + ">" );
|
||||||
|
} else {
|
||||||
|
o.print( "<#" + codePoint + ">" );
|
||||||
|
}
|
||||||
|
|
||||||
|
i += Character.charCount(codePoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
o.print( "\"" );
|
o.print( "\"" );
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
/* Copyright 2004-2017 The Apache Software Foundation
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -25,7 +25,6 @@ import org.xml.sax.InputSource;
|
|||||||
import org.xml.sax.ext.LexicalHandler;
|
import org.xml.sax.ext.LexicalHandler;
|
||||||
import org.xml.sax.ext.DeclHandler;
|
import org.xml.sax.ext.DeclHandler;
|
||||||
import org.xml.sax.SAXParseException;
|
import org.xml.sax.SAXParseException;
|
||||||
import org.xml.sax.InputSource;
|
|
||||||
import org.xml.sax.XMLReader;
|
import org.xml.sax.XMLReader;
|
||||||
import org.xml.sax.SAXException;
|
import org.xml.sax.SAXException;
|
||||||
import org.xml.sax.DTDHandler;
|
import org.xml.sax.DTDHandler;
|
||||||
@ -38,8 +37,6 @@ import java.lang.ref.Reference;
|
|||||||
import java.lang.ref.PhantomReference;
|
import java.lang.ref.PhantomReference;
|
||||||
import java.lang.ref.SoftReference;
|
import java.lang.ref.SoftReference;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.Reader;
|
import java.io.Reader;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
@ -106,9 +103,6 @@ import org.apache.xmlbeans.impl.values.TypeStore;
|
|||||||
import org.apache.xmlbeans.impl.values.TypeStoreUser;
|
import org.apache.xmlbeans.impl.values.TypeStoreUser;
|
||||||
import org.apache.xmlbeans.impl.values.TypeStoreUserFactory;
|
import org.apache.xmlbeans.impl.values.TypeStoreUserFactory;
|
||||||
|
|
||||||
import org.apache.xmlbeans.impl.piccolo.xml.Piccolo;
|
|
||||||
import org.apache.xmlbeans.impl.piccolo.io.FileFormatException;
|
|
||||||
|
|
||||||
public final class Locale
|
public final class Locale
|
||||||
implements DOMImplementation, SaajCallback, XmlLocale
|
implements DOMImplementation, SaajCallback, XmlLocale
|
||||||
{
|
{
|
||||||
@ -3035,18 +3029,7 @@ public final class Locale
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static SaxLoader getPiccoloSaxLoader()
|
private static SaxLoader getSaxLoader(XmlOptions options) throws XmlException
|
||||||
{
|
|
||||||
SaxLoader piccoloLoader = (SaxLoader) SystemCache.get().getSaxLoader();
|
|
||||||
if (piccoloLoader == null)
|
|
||||||
{
|
|
||||||
piccoloLoader = PiccoloSaxLoader.newInstance();
|
|
||||||
SystemCache.get().setSaxLoader(piccoloLoader);
|
|
||||||
}
|
|
||||||
return piccoloLoader;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static SaxLoader getSaxLoader(XmlOptions options)
|
|
||||||
{
|
{
|
||||||
options = XmlOptions.maskNull(options);
|
options = XmlOptions.maskNull(options);
|
||||||
|
|
||||||
@ -3063,31 +3046,23 @@ public final class Locale
|
|||||||
er = new DefaultEntityResolver();
|
er = new DefaultEntityResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
SaxLoader sl;
|
XMLReader xr = (XMLReader) options.get(
|
||||||
|
XmlOptions.LOAD_USE_XMLREADER);
|
||||||
|
|
||||||
if (options.hasOption(XmlOptions.LOAD_USE_XMLREADER))
|
if (xr == null) {
|
||||||
{
|
try {
|
||||||
XMLReader xr = (XMLReader) options.get(
|
xr = SAXHelper.newXMLReader();
|
||||||
XmlOptions.LOAD_USE_XMLREADER);
|
} catch(Exception e) {
|
||||||
|
throw new XmlException("Problem creating XMLReader", e);
|
||||||
if (xr == null)
|
}
|
||||||
throw new IllegalArgumentException("XMLReader is null");
|
|
||||||
|
|
||||||
sl = new XmlReaderSaxLoader(xr);
|
|
||||||
|
|
||||||
// I've noticed that most XMLReaders don't like a null EntityResolver...
|
|
||||||
|
|
||||||
if (er != null)
|
|
||||||
xr.setEntityResolver(er);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
sl = getPiccoloSaxLoader();
|
|
||||||
|
|
||||||
// Piccolo doesnot mind a null entity resolver ...
|
SaxLoader sl = new XmlReaderSaxLoader(xr);
|
||||||
|
|
||||||
sl.setEntityResolver(er);
|
// I've noticed that most XMLReaders don't like a null EntityResolver...
|
||||||
}
|
|
||||||
|
if (er != null)
|
||||||
|
xr.setEntityResolver(er);
|
||||||
|
|
||||||
return sl;
|
return sl;
|
||||||
}
|
}
|
||||||
@ -3101,34 +3076,6 @@ public final class Locale
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class PiccoloSaxLoader
|
|
||||||
extends SaxLoader
|
|
||||||
{
|
|
||||||
private PiccoloSaxLoader(Piccolo p)
|
|
||||||
{
|
|
||||||
super(p, p.getStartLocator());
|
|
||||||
|
|
||||||
_piccolo = p;
|
|
||||||
}
|
|
||||||
|
|
||||||
static PiccoloSaxLoader newInstance()
|
|
||||||
{
|
|
||||||
return new PiccoloSaxLoader(new Piccolo());
|
|
||||||
}
|
|
||||||
|
|
||||||
void postLoad(Cur c)
|
|
||||||
{
|
|
||||||
XmlDocumentProperties props = getDocProps(c, true);
|
|
||||||
|
|
||||||
props.setEncoding(_piccolo.getEncoding());
|
|
||||||
props.setVersion(_piccolo.getVersion());
|
|
||||||
|
|
||||||
super.postLoad(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Piccolo _piccolo;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static abstract class SaxHandler
|
private static abstract class SaxHandler
|
||||||
implements ContentHandler, LexicalHandler , DeclHandler, DTDHandler
|
implements ContentHandler, LexicalHandler , DeclHandler, DTDHandler
|
||||||
{
|
{
|
||||||
@ -3183,7 +3130,7 @@ public final class Locale
|
|||||||
if (local.length() == 0)
|
if (local.length() == 0)
|
||||||
local = qName;
|
local = qName;
|
||||||
|
|
||||||
// Out current parser (Piccolo) does not error when a
|
// Out current parser does not error when a
|
||||||
// namespace is used and not defined. Check for these here
|
// namespace is used and not defined. Check for these here
|
||||||
|
|
||||||
if (qName.indexOf(':') >= 0 && uri.length() == 0)
|
if (qName.indexOf(':') >= 0 && uri.length() == 0)
|
||||||
@ -3473,12 +3420,6 @@ public final class Locale
|
|||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
catch (FileFormatException e)
|
|
||||||
{
|
|
||||||
_context.abort();
|
|
||||||
|
|
||||||
throw new XmlException(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
catch (XmlRuntimeException e)
|
catch (XmlRuntimeException e)
|
||||||
{
|
{
|
||||||
_context.abort();
|
_context.abort();
|
||||||
|
@ -0,0 +1,81 @@
|
|||||||
|
/* Copyright 2017 The Apache Software Foundation
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.xmlbeans.impl.store;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A logger class that strives to make it as easy as possible for
|
||||||
|
* developers to write log calls, while simultaneously making those
|
||||||
|
* calls as cheap as possible by performing lazy evaluation of the log
|
||||||
|
* message.<p>
|
||||||
|
*/
|
||||||
|
public class NullLogger extends XBLogger {
|
||||||
|
@Override
|
||||||
|
public void initialize(final String cat) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log a message
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
* @param obj1 The object to log.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void _log(final int level, final Object obj1) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log a message
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
* @param obj1 The object to log. This is converted to a string.
|
||||||
|
* @param exception An exception to be logged
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected void _log(int level, Object obj1, final Throwable exception) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log a message. Lazily appends Object parameters together.
|
||||||
|
* If the last parameter is a {@link Throwable} it is logged specially.
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
* @param objs the objects to place in the message
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void log(int level, Object... objs) {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a logger is enabled to log at the specified level
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean check(final int level) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,99 @@
|
|||||||
|
/* Copyright 2017 The Apache Software Foundation
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.xmlbeans.impl.store;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import javax.xml.XMLConstants;
|
||||||
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
|
import javax.xml.parsers.SAXParserFactory;
|
||||||
|
|
||||||
|
import org.xml.sax.EntityResolver;
|
||||||
|
import org.xml.sax.InputSource;
|
||||||
|
import org.xml.sax.SAXException;
|
||||||
|
import org.xml.sax.XMLReader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides handy methods for working with SAX parsers and readers
|
||||||
|
*/
|
||||||
|
public final class SAXHelper {
|
||||||
|
private static final XBLogger logger = XBLogFactory.getLogger(SAXHelper.class);
|
||||||
|
private static long lastLog;
|
||||||
|
|
||||||
|
private SAXHelper() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new SAX XMLReader, with sensible defaults
|
||||||
|
*/
|
||||||
|
public static synchronized XMLReader newXMLReader() throws SAXException, ParserConfigurationException {
|
||||||
|
XMLReader xmlReader = saxFactory.newSAXParser().getXMLReader();
|
||||||
|
xmlReader.setEntityResolver(IGNORING_ENTITY_RESOLVER);
|
||||||
|
trySetSAXFeature(xmlReader, XMLConstants.FEATURE_SECURE_PROCESSING);
|
||||||
|
trySetXercesSecurityManager(xmlReader);
|
||||||
|
return xmlReader;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final EntityResolver IGNORING_ENTITY_RESOLVER = new EntityResolver() {
|
||||||
|
@Override
|
||||||
|
public InputSource resolveEntity(String publicId, String systemId)
|
||||||
|
throws SAXException, IOException {
|
||||||
|
return new InputSource(new StringReader(""));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final SAXParserFactory saxFactory;
|
||||||
|
static {
|
||||||
|
saxFactory = SAXParserFactory.newInstance();
|
||||||
|
saxFactory.setValidating(false);
|
||||||
|
saxFactory.setNamespaceAware(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void trySetSAXFeature(XMLReader xmlReader, String feature) {
|
||||||
|
try {
|
||||||
|
xmlReader.setFeature(feature, true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.log(XBLogger.WARN, "SAX Feature unsupported", feature, e);
|
||||||
|
} catch (AbstractMethodError ame) {
|
||||||
|
logger.log(XBLogger.WARN, "Cannot set SAX feature because outdated XML parser in classpath", feature, ame);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void trySetXercesSecurityManager(XMLReader xmlReader) {
|
||||||
|
// Try built-in JVM one first, standalone if not
|
||||||
|
for (String securityManagerClassName : new String[] {
|
||||||
|
"com.sun.org.apache.xerces.internal.util.SecurityManager",
|
||||||
|
"org.apache.xerces.util.SecurityManager"
|
||||||
|
}) {
|
||||||
|
try {
|
||||||
|
Object mgr = Class.forName(securityManagerClassName).newInstance();
|
||||||
|
Method setLimit = mgr.getClass().getMethod("setEntityExpansionLimit", Integer.TYPE);
|
||||||
|
setLimit.invoke(mgr, 4096);
|
||||||
|
xmlReader.setProperty("http://apache.org/xml/properties/security-manager", mgr);
|
||||||
|
// Stop once one can be setup without error
|
||||||
|
return;
|
||||||
|
} catch (Throwable e) { // NOSONAR - also catch things like NoClassDefError here
|
||||||
|
// throttle the log somewhat as it can spam the log otherwise
|
||||||
|
if(System.currentTimeMillis() > lastLog + TimeUnit.MINUTES.toMillis(5)) {
|
||||||
|
logger.log(XBLogger.WARN, "SAX Security Manager could not be setup [log suppressed for 5 minutes]", e);
|
||||||
|
lastLog = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -276,6 +276,22 @@ abstract class Saver
|
|||||||
end.toEnd();
|
end.toEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test if a character is valid in xml character content. See
|
||||||
|
* http://www.w3.org/TR/REC-xml#NT-Char
|
||||||
|
*/
|
||||||
|
static boolean isBadChar ( char ch )
|
||||||
|
{
|
||||||
|
return ! (
|
||||||
|
Character.isHighSurrogate(ch) ||
|
||||||
|
Character.isLowSurrogate(ch) ||
|
||||||
|
(ch >= 0x20 && ch <= 0xD7FF ) ||
|
||||||
|
(ch >= 0xE000 && ch <= 0xFFFD) ||
|
||||||
|
(ch >= 0x10000 && ch <= 0x10FFFF) ||
|
||||||
|
(ch == 0x9) || (ch == 0xA) || (ch == 0xD)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean saveNamespacesFirst ( )
|
protected boolean saveNamespacesFirst ( )
|
||||||
{
|
{
|
||||||
return _saveNamespacesFirst;
|
return _saveNamespacesFirst;
|
||||||
@ -1387,7 +1403,7 @@ abstract class Saver
|
|||||||
if (++i == _buf.length)
|
if (++i == _buf.length)
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
for ( int cch = _lastEmitCch ; cch > 0 ; cch-- )
|
for ( int cch = _lastEmitCch - 2 ; cch > 0 ; cch-- )
|
||||||
{
|
{
|
||||||
char ch = _buf[ i ];
|
char ch = _buf[ i ];
|
||||||
|
|
||||||
@ -1551,21 +1567,6 @@ abstract class Saver
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test if a character is valid in xml character content. See
|
|
||||||
* http://www.w3.org/TR/REC-xml#NT-Char
|
|
||||||
*/
|
|
||||||
|
|
||||||
private boolean isBadChar ( char ch )
|
|
||||||
{
|
|
||||||
return ! (
|
|
||||||
(ch >= 0x20 && ch <= 0xD7FF ) ||
|
|
||||||
(ch >= 0xE000 && ch <= 0xFFFD) ||
|
|
||||||
(ch >= 0x10000 && ch <= 0x10FFFF) ||
|
|
||||||
(ch == 0x9) || (ch == 0xA) || (ch == 0xD)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test if a character is to be replaced with an escaped value
|
* Test if a character is to be replaced with an escaped value
|
||||||
*/
|
*/
|
||||||
@ -2190,20 +2191,6 @@ abstract class Saver
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test if a character is valid in xml character content. See
|
|
||||||
* http://www.w3.org/TR/REC-xml#NT-Char
|
|
||||||
*/
|
|
||||||
private boolean isBadChar ( char ch )
|
|
||||||
{
|
|
||||||
return ! (
|
|
||||||
(ch >= 0x20 && ch <= 0xD7FF ) ||
|
|
||||||
(ch >= 0xE000 && ch <= 0xFFFD) ||
|
|
||||||
(ch >= 0x10000 && ch <= 0x10FFFF) ||
|
|
||||||
(ch == 0x9) || (ch == 0xA) || (ch == 0xD)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void emitLiteral ( String literal )
|
private void emitLiteral ( String literal )
|
||||||
{
|
{
|
||||||
// TODO: systemId production http://www.w3.org/TR/REC-xml/#NT-SystemLiteral
|
// TODO: systemId production http://www.w3.org/TR/REC-xml/#NT-SystemLiteral
|
||||||
|
@ -0,0 +1,119 @@
|
|||||||
|
/* Copyright 2017 The Apache Software Foundation
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.xmlbeans.impl.store;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides logging without clients having to mess with
|
||||||
|
* configuration/initialization.
|
||||||
|
*
|
||||||
|
* @author Andrew C. Oliver (acoliver at apache dot org)
|
||||||
|
* @author Marc Johnson (mjohnson at apache dot org)
|
||||||
|
* @author Nicola Ken Barozzi (nicolaken at apache.org)
|
||||||
|
*/
|
||||||
|
public final class XBLogFactory {
|
||||||
|
/**
|
||||||
|
* Map of XBLogger instances, with classes as keys
|
||||||
|
*/
|
||||||
|
private static final Map<String,XBLogger> _loggers = new HashMap<String,XBLogger>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A common instance of NullLogger, as it does nothing
|
||||||
|
* we only need the one
|
||||||
|
*/
|
||||||
|
private static final XBLogger _nullLogger = new NullLogger();
|
||||||
|
/**
|
||||||
|
* The name of the class to use. Initialised the
|
||||||
|
* first time we need it
|
||||||
|
*/
|
||||||
|
static String _loggerClassName = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Construct a XBLogFactory.
|
||||||
|
*/
|
||||||
|
private XBLogFactory() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a logger, based on a class name
|
||||||
|
*
|
||||||
|
* @param theclass the class whose name defines the log
|
||||||
|
*
|
||||||
|
* @return a XBLogger for the specified class
|
||||||
|
*/
|
||||||
|
public static XBLogger getLogger(final Class<?> theclass) {
|
||||||
|
return getLogger(theclass.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a logger, based on a String
|
||||||
|
*
|
||||||
|
* @param cat the String that defines the log
|
||||||
|
*
|
||||||
|
* @return a XBLogger for the specified class
|
||||||
|
*/
|
||||||
|
public static XBLogger getLogger(final String cat) {
|
||||||
|
// If we haven't found out what logger to use yet,
|
||||||
|
// then do so now
|
||||||
|
// Don't look it up until we're first asked, so
|
||||||
|
// that our users can set the system property
|
||||||
|
// between class loading and first use
|
||||||
|
if(_loggerClassName == null) {
|
||||||
|
try {
|
||||||
|
_loggerClassName = System.getProperty("org.apache.xmlbeans.impl.store.XBLogger");
|
||||||
|
} catch(Exception e) {
|
||||||
|
// ignore any exception here
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use the default logger if none specified,
|
||||||
|
// or none could be fetched
|
||||||
|
if(_loggerClassName == null) {
|
||||||
|
_loggerClassName = _nullLogger.getClass().getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short circuit for the null logger, which
|
||||||
|
// ignores all categories
|
||||||
|
if(_loggerClassName.equals(_nullLogger.getClass().getName())) {
|
||||||
|
return _nullLogger;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Fetch the right logger for them, creating
|
||||||
|
// it if that's required
|
||||||
|
XBLogger logger = _loggers.get(cat);
|
||||||
|
if (logger == null) {
|
||||||
|
try {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
Class<? extends XBLogger> loggerClass =
|
||||||
|
(Class<? extends XBLogger>) Class.forName(_loggerClassName);
|
||||||
|
logger = loggerClass.newInstance();
|
||||||
|
logger.initialize(cat);
|
||||||
|
} catch(Exception e) {
|
||||||
|
// Give up and use the null logger
|
||||||
|
logger = _nullLogger;
|
||||||
|
_loggerClassName = _nullLogger.getClass().getName();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save for next time
|
||||||
|
_loggers.put(cat, logger);
|
||||||
|
}
|
||||||
|
return logger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
115
xmlbeans/src/store/org/apache/xmlbeans/impl/store/XBLogger.java
Normal file
115
xmlbeans/src/store/org/apache/xmlbeans/impl/store/XBLogger.java
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
/* Copyright 2017 The Apache Software Foundation
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.apache.xmlbeans.impl.store;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A logger interface that strives to make it as easy as possible for
|
||||||
|
* developers to write log calls, while simultaneously making those
|
||||||
|
* calls as cheap as possible by performing lazy evaluation of the log
|
||||||
|
* message.<p>
|
||||||
|
*/
|
||||||
|
public abstract class XBLogger {
|
||||||
|
|
||||||
|
public static final int DEBUG = 1;
|
||||||
|
public static final int INFO = 3;
|
||||||
|
public static final int WARN = 5;
|
||||||
|
public static final int ERROR = 7;
|
||||||
|
public static final int FATAL = 9;
|
||||||
|
|
||||||
|
/** Short strings for numeric log level. Use level as array index. */
|
||||||
|
protected static final String LEVEL_STRINGS_SHORT[] = {"?", "D", "?", "I", "?", "W", "?", "E", "?", "F", "?"};
|
||||||
|
/** Long strings for numeric log level. Use level as array index. */
|
||||||
|
protected static final String LEVEL_STRINGS[] = {"?0?", "DEBUG", "?2?", "INFO", "?4?", "WARN", "?6?", "ERROR", "?8?", "FATAL", "?10+?"};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* package scope so it cannot be instantiated outside of the util
|
||||||
|
* package. You need a XBLogger? Go to the XBLogFactory for one
|
||||||
|
*/
|
||||||
|
XBLogger() {
|
||||||
|
// no fields to initialize
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract public void initialize(String cat);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log a message
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
* @param obj1 The object to log. This is converted to a string.
|
||||||
|
*/
|
||||||
|
abstract protected void _log(int level, Object obj1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log a message
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
* @param obj1 The object to log. This is converted to a string.
|
||||||
|
* @param exception An exception to be logged
|
||||||
|
*/
|
||||||
|
abstract protected void _log(int level, Object obj1, final Throwable exception);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a logger is enabled to log at the specified level
|
||||||
|
* This allows code to avoid building strings or evaluating functions in
|
||||||
|
* the arguments to log.
|
||||||
|
*
|
||||||
|
* An example:
|
||||||
|
* <code><pre>
|
||||||
|
* if (logger.check(XBLogger.INFO)) {
|
||||||
|
* logger.log(XBLogger.INFO, "Avoid concatenating " + " strings and evaluating " + functions());
|
||||||
|
* }
|
||||||
|
* </pre></code>
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
*/
|
||||||
|
abstract public boolean check(int level);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log a message. Lazily appends Object parameters together.
|
||||||
|
* If the last parameter is a {@link Throwable} it is logged specially.
|
||||||
|
*
|
||||||
|
* @param level One of DEBUG, INFO, WARN, ERROR, FATAL
|
||||||
|
* @param objs the objects to place in the message
|
||||||
|
*/
|
||||||
|
public void log(int level, Object... objs) {
|
||||||
|
if (!check(level)) return;
|
||||||
|
StringBuilder sb = new StringBuilder(32);
|
||||||
|
Throwable lastEx = null;
|
||||||
|
for (int i=0; i<objs.length; i++) {
|
||||||
|
if (i == objs.length-1 && objs[i] instanceof Throwable) {
|
||||||
|
lastEx = (Throwable)objs[i];
|
||||||
|
} else {
|
||||||
|
sb.append(objs[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String msg = sb.toString();
|
||||||
|
msg = msg.replaceAll("[\r\n]+", " "); // log forging escape
|
||||||
|
|
||||||
|
// somehow this ambiguity works and doesn't lead to a loop,
|
||||||
|
// but it's confusing ...
|
||||||
|
if (lastEx == null) {
|
||||||
|
_log(level, msg);
|
||||||
|
} else {
|
||||||
|
_log(level, msg, lastEx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.w3c.dom;
|
|
||||||
|
|
||||||
public interface DOMConfiguration
|
|
||||||
{
|
|
||||||
public boolean canSetParameter ( String name, Object value );
|
|
||||||
|
|
||||||
public Object getParameter ( String name );
|
|
||||||
|
|
||||||
public DOMStringList getParameterNames ( );
|
|
||||||
|
|
||||||
public void setParameter ( String name, Object value );
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.w3c.dom;
|
|
||||||
|
|
||||||
public interface DOMStringList
|
|
||||||
{
|
|
||||||
public boolean contains ( String str );
|
|
||||||
|
|
||||||
public int getLength ( );
|
|
||||||
|
|
||||||
public String item ( int index );
|
|
||||||
}
|
|
@ -1,31 +0,0 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.w3c.dom;
|
|
||||||
|
|
||||||
public interface TypeInfo
|
|
||||||
{
|
|
||||||
public static final int DERIVATION_EXTENSION = 2;
|
|
||||||
public static final int DERIVATION_LIST = 8;
|
|
||||||
public static final int DERIVATION_RESTRICTION = 1;
|
|
||||||
public static final int DERIVATION_UNION = 4;
|
|
||||||
|
|
||||||
public String getTypeName ( );
|
|
||||||
|
|
||||||
public String getTypeNamespace ( );
|
|
||||||
|
|
||||||
public boolean isDerivedFrom (
|
|
||||||
String typeNamespaceArg, String typeNameArg, int derivationMethod );
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.w3c.dom;
|
|
||||||
|
|
||||||
public interface UserDataHandler
|
|
||||||
{
|
|
||||||
public static final short NODE_ADOPTED = 5;
|
|
||||||
public static final short NODE_CLONED = 1;
|
|
||||||
public static final short NODE_DELETED = 3;
|
|
||||||
public static final short NODE_IMPORTED = 2;
|
|
||||||
public static final short NODE_RENAMED = 4;
|
|
||||||
|
|
||||||
public void handle ( short operation, String key, Object data, Node src, Node dst );
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package javax.xml.namespace;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
|
|
||||||
public interface NamespaceContext {
|
|
||||||
|
|
||||||
public String getNamespaceURI(String prefix);
|
|
||||||
public String getPrefix(String namespaceURI);
|
|
||||||
public Iterator getPrefixes(String namespaceURI);
|
|
||||||
}
|
|
@ -1,231 +0,0 @@
|
|||||||
/* Copyright 2004 The Apache Software Foundation
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package javax.xml.namespace;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.ObjectInputStream;
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <code>QName</code> class represents the value of a qualified name
|
|
||||||
* as specified in <a href="http://www.w3.org/TR/xmlschema-2/#QName">XML
|
|
||||||
* Schema Part2: Datatypes specification</a>.
|
|
||||||
* <p>
|
|
||||||
* The value of a QName contains a <b>namespaceURI</b>, a <b>localPart</b> and a <b>prefix</b>.
|
|
||||||
* The localPart provides the local part of the qualified name. The
|
|
||||||
* namespaceURI is a URI reference identifying the namespace.
|
|
||||||
*
|
|
||||||
* @version 1.1
|
|
||||||
*/
|
|
||||||
public class QName implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -9120448754896609940L;
|
|
||||||
|
|
||||||
/** comment/shared empty string */
|
|
||||||
private static final String emptyString = "".intern();
|
|
||||||
|
|
||||||
/** Field namespaceURI */
|
|
||||||
private String namespaceURI;
|
|
||||||
|
|
||||||
/** Field localPart */
|
|
||||||
private String localPart;
|
|
||||||
|
|
||||||
/** Field prefix */
|
|
||||||
private String prefix;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for the QName.
|
|
||||||
*
|
|
||||||
* @param localPart Local part of the QName
|
|
||||||
*/
|
|
||||||
public QName(String localPart) {
|
|
||||||
this(emptyString, localPart, emptyString);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for the QName.
|
|
||||||
*
|
|
||||||
* @param namespaceURI Namespace URI for the QName
|
|
||||||
* @param localPart Local part of the QName.
|
|
||||||
*/
|
|
||||||
public QName(String namespaceURI, String localPart) {
|
|
||||||
this(namespaceURI, localPart, emptyString);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor for the QName.
|
|
||||||
*
|
|
||||||
* @param namespaceURI Namespace URI for the QName
|
|
||||||
* @param localPart Local part of the QName.
|
|
||||||
* @param prefix Prefix of the QName.
|
|
||||||
*/
|
|
||||||
public QName(String namespaceURI, String localPart, String prefix) {
|
|
||||||
this.namespaceURI = (namespaceURI == null)
|
|
||||||
? emptyString
|
|
||||||
: namespaceURI.intern();
|
|
||||||
if (localPart == null) {
|
|
||||||
throw new IllegalArgumentException("invalid QName local part");
|
|
||||||
} else {
|
|
||||||
this.localPart = localPart.intern();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prefix == null) {
|
|
||||||
throw new IllegalArgumentException("invalid QName prefix");
|
|
||||||
} else {
|
|
||||||
this.prefix = prefix.intern();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the Namespace URI for this QName
|
|
||||||
*
|
|
||||||
* @return Namespace URI
|
|
||||||
*/
|
|
||||||
public String getNamespaceURI() {
|
|
||||||
return namespaceURI;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the Local part for this QName
|
|
||||||
*
|
|
||||||
* @return Local part
|
|
||||||
*/
|
|
||||||
public String getLocalPart() {
|
|
||||||
return localPart;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the Prefix for this QName
|
|
||||||
*
|
|
||||||
* @return Prefix
|
|
||||||
*/
|
|
||||||
public String getPrefix() {
|
|
||||||
return prefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a string representation of this QName
|
|
||||||
*
|
|
||||||
* @return a string representation of the QName
|
|
||||||
*/
|
|
||||||
public String toString() {
|
|
||||||
|
|
||||||
return ((namespaceURI == emptyString)
|
|
||||||
? localPart
|
|
||||||
: '{' + namespaceURI + '}' + localPart);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests this QName for equality with another object.
|
|
||||||
* <p>
|
|
||||||
* If the given object is not a QName or is null then this method
|
|
||||||
* returns <tt>false</tt>.
|
|
||||||
* <p>
|
|
||||||
* For two QNames to be considered equal requires that both
|
|
||||||
* localPart and namespaceURI must be equal. This method uses
|
|
||||||
* <code>String.equals</code> to check equality of localPart
|
|
||||||
* and namespaceURI. Any class that extends QName is required
|
|
||||||
* to satisfy this equality contract.
|
|
||||||
* <p>
|
|
||||||
* This method satisfies the general contract of the <code>Object.equals</code> method.
|
|
||||||
*
|
|
||||||
* @param obj the reference object with which to compare
|
|
||||||
*
|
|
||||||
* @return <code>true</code> if the given object is identical to this
|
|
||||||
* QName: <code>false</code> otherwise.
|
|
||||||
*/
|
|
||||||
public final boolean equals(Object obj) {
|
|
||||||
|
|
||||||
if (obj == this) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(obj instanceof QName)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((namespaceURI == ((QName) obj).namespaceURI)
|
|
||||||
&& (localPart == ((QName) obj).localPart)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a QName holding the value of the specified String.
|
|
||||||
* <p>
|
|
||||||
* The string must be in the form returned by the QName.toString()
|
|
||||||
* method, i.e. "{namespaceURI}localPart", with the "{namespaceURI}"
|
|
||||||
* part being optional.
|
|
||||||
* <p>
|
|
||||||
* This method doesn't do a full validation of the resulting QName.
|
|
||||||
* In particular, it doesn't check that the resulting namespace URI
|
|
||||||
* is a legal URI (per RFC 2396 and RFC 2732), nor that the resulting
|
|
||||||
* local part is a legal NCName per the XML Namespaces specification.
|
|
||||||
*
|
|
||||||
* @param s the string to be parsed
|
|
||||||
* @throws java.lang.IllegalArgumentException If the specified String cannot be parsed as a QName
|
|
||||||
* @return QName corresponding to the given String
|
|
||||||
*/
|
|
||||||
public static QName valueOf(String s) {
|
|
||||||
|
|
||||||
if ((s == null) || s.equals("")) {
|
|
||||||
throw new IllegalArgumentException("invalid QName literal");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s.charAt(0) == '{') {
|
|
||||||
int i = s.indexOf('}');
|
|
||||||
|
|
||||||
if (i == -1) {
|
|
||||||
throw new IllegalArgumentException("invalid QName literal");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == s.length() - 1) {
|
|
||||||
throw new IllegalArgumentException("invalid QName literal");
|
|
||||||
} else {
|
|
||||||
return new QName(s.substring(1, i), s.substring(i + 1));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return new QName(s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a hash code value for this QName object. The hash code
|
|
||||||
* is based on both the localPart and namespaceURI parts of the
|
|
||||||
* QName. This method satisfies the general contract of the
|
|
||||||
* <code>Object.hashCode</code> method.
|
|
||||||
*
|
|
||||||
* @return a hash code value for this Qname object
|
|
||||||
*/
|
|
||||||
public final int hashCode() {
|
|
||||||
return namespaceURI.hashCode() ^ localPart.hashCode();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ensure that deserialization properly interns the results.
|
|
||||||
* @param in the ObjectInputStream to be read
|
|
||||||
*/
|
|
||||||
private void readObject(ObjectInputStream in) throws
|
|
||||||
IOException, ClassNotFoundException {
|
|
||||||
in.defaultReadObject();
|
|
||||||
|
|
||||||
namespaceURI = namespaceURI.intern();
|
|
||||||
localPart = localPart.intern();
|
|
||||||
prefix = prefix.intern();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1112,7 +1112,7 @@ public class StoreTests extends TestCase
|
|||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
XmlCursor c = XmlObject.Factory.parse( xml ).newCursor();
|
XmlCursor c = XmlObject.Factory.parse( xml ).newCursor();
|
||||||
Assert.assertTrue( c.xmlText().equals( xml ) );
|
Assert.assertEquals( xml, c.xmlText() );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doSaveTest ( String xml )
|
private void doSaveTest ( String xml )
|
||||||
@ -1121,6 +1121,16 @@ public class StoreTests extends TestCase
|
|||||||
doSaverTest( xml );
|
doSaverTest( xml );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testCDATA() throws Exception
|
||||||
|
{
|
||||||
|
// https://issues.apache.org/jira/browse/XMLBEANS-404
|
||||||
|
String xml = "<foo>Unable to render embedded object: <![CDATA[>>>>>>>><<<<<<<<<<<]]></foo>";
|
||||||
|
String expected = "<foo><![CDATA[Unable to render embedded object: >>>>>>>><<<<<<<<<<<]]></foo>";
|
||||||
|
XmlOptions options = new XmlOptions().setSaveCDataLengthThreshold(0);
|
||||||
|
XmlCursor c = XmlObject.Factory.parse(xml, options).newCursor();
|
||||||
|
Assert.assertEquals( expected, c.xmlText(options) );
|
||||||
|
}
|
||||||
|
|
||||||
public void testSaving ( )
|
public void testSaving ( )
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
|
@ -40,7 +40,6 @@ public class AssortedTests extends TestCase
|
|||||||
// bug 27489
|
// bug 27489
|
||||||
public static void testSaverCharEscaping() throws XmlException
|
public static void testSaverCharEscaping() throws XmlException
|
||||||
{
|
{
|
||||||
String newLine = System.getProperty( "line.separator" );
|
|
||||||
XmlObject xdoc = XmlObject.Factory.parse("<test>something</test>");
|
XmlObject xdoc = XmlObject.Factory.parse("<test>something</test>");
|
||||||
XmlCursor cur = xdoc.newCursor();
|
XmlCursor cur = xdoc.newCursor();
|
||||||
cur.toFirstChild();
|
cur.toFirstChild();
|
||||||
@ -48,9 +47,14 @@ public class AssortedTests extends TestCase
|
|||||||
cur.setTextValue("<something or other:\u03C0\uD7FF>");
|
cur.setTextValue("<something or other:\u03C0\uD7FF>");
|
||||||
Assert.assertEquals("<test><something or other:\u03C0\uD7FF></test>", xdoc.toString());
|
Assert.assertEquals("<test><something or other:\u03C0\uD7FF></test>", xdoc.toString());
|
||||||
|
|
||||||
// invalid chars - control chars, unicode surrogates, FFFF/FFFE, etc
|
// invalid chars - control chars, FFFF/FFFE, etc
|
||||||
cur.setTextValue("<something\0or\1other:\u0045\uFFFE\uD800\uDFFF\uDB80\uDC00\u03C0\uD7FF\u001F>");
|
cur.setTextValue("<something\0or\1other:\u0045\u001F>");
|
||||||
Assert.assertEquals("<test><something?or?other:\u0045?????\u03C0\uD7FF?></test>", xdoc.toString());
|
Assert.assertEquals("<test><something?or?other:\u0045?></test>", xdoc.toString());
|
||||||
|
|
||||||
|
String greekChars = "\uD835\uDF4A\uD835\uDF4B\uD835\uDF4C\uD835\uDF4D\uD835\uDF4E\uD835\uDF4F\uD835\uDF50\uD835"
|
||||||
|
+ "\uDF51\uD835\uDF52\uD835\uDF53\uD835\uDF54\uD835\uDF55";
|
||||||
|
cur.setTextValue(greekChars);
|
||||||
|
Assert.assertEquals("<test>" + greekChars + "</test>", xdoc.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// bug 26140/26104
|
// bug 26140/26104
|
||||||
|
@ -53,8 +53,8 @@ public class CDataTest
|
|||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
String xmlText = "<a><![CDATA[cdata text]]></a>";
|
String xmlText = "<a><![CDATA[cdata text]]></a>";
|
||||||
|
String resultText = "<a>cdata text</a>";
|
||||||
checkCData(xmlText, xmlText, xmlText);
|
checkCData(xmlText, resultText, resultText);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCData2()
|
public void testCData2()
|
||||||
@ -64,10 +64,10 @@ public class CDataTest
|
|||||||
"<b><![CDATA[cdata text]]> regular text</b>" + NL +
|
"<b><![CDATA[cdata text]]> regular text</b>" + NL +
|
||||||
"</a>";
|
"</a>";
|
||||||
String expected1 = "<a>\n" +
|
String expected1 = "<a>\n" +
|
||||||
"<b><![CDATA[cdata text regular text]]></b>\n" +
|
"<b>cdata text regular text</b>\n" +
|
||||||
"</a>";
|
"</a>";
|
||||||
String expected2 = "<a>" + NL +
|
String expected2 = "<a>" + NL +
|
||||||
" <b><![CDATA[cdata text regular text]]></b>" + NL +
|
" <b>cdata text regular text</b>" + NL +
|
||||||
"</a>";
|
"</a>";
|
||||||
|
|
||||||
checkCData(xmlText, expected1, expected2);
|
checkCData(xmlText, expected1, expected2);
|
||||||
@ -89,6 +89,23 @@ public class CDataTest
|
|||||||
checkCData(xmlText, expected1, expected2);
|
checkCData(xmlText, expected1, expected2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://issues.apache.org/jira/browse/XMLBEANS-404
|
||||||
|
public void testXmlBeans404()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
String xmlText = "<a>\n" +
|
||||||
|
"<c>text <![CDATA[cdata text]]]]></c>\n" +
|
||||||
|
"</a>";
|
||||||
|
String expected1 = "<a>\n" +
|
||||||
|
"<c>text cdata text]]</c>\n" +
|
||||||
|
"</a>";
|
||||||
|
String expected2 = "<a>" + NL +
|
||||||
|
" <c>text cdata text]]</c>" + NL +
|
||||||
|
"</a>";
|
||||||
|
|
||||||
|
checkCData(xmlText, expected1, expected2);
|
||||||
|
}
|
||||||
|
|
||||||
private void checkCData(String xmlText, String expected1, String expected2)
|
private void checkCData(String xmlText, String expected1, String expected2)
|
||||||
throws XmlException
|
throws XmlException
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user