#59268 - Work on providing an updated version of XMLBeans

(imported from https://github.com/apache/poi/pull/113)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1834165 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2018-06-22 21:25:00 +00:00
parent 0a999d8cd3
commit 18db483a72
8 changed files with 104 additions and 18 deletions

View File

@ -18,7 +18,7 @@
<classpathentry kind="lib" path="lib/ant-1.10.1.jar"/> <classpathentry kind="lib" path="lib/ant-1.10.1.jar"/>
<classpathentry kind="lib" path="lib/ant-launcher-1.10.1.jar"/> <classpathentry kind="lib" path="lib/ant-launcher-1.10.1.jar"/>
<classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/> <classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/>
<classpathentry exported="true" kind="lib" path="ooxml-lib/xmlbeans-2.6.0.jar" sourcepath="ooxml-lib/xmlbeans-2.6.0.jar"/> <classpathentry exported="true" kind="lib" path="ooxml-lib/xmlbeans-3.0.0.jar" sourcepath="ooxml-lib/xmlbeans-3.0.0.jar"/>
<classpathentry kind="lib" path="lib/hamcrest-core-1.3.jar"/> <classpathentry kind="lib" path="lib/hamcrest-core-1.3.jar"/>
<classpathentry kind="lib" path="lib/junit-4.12.jar"/> <classpathentry kind="lib" path="lib/junit-4.12.jar"/>
<classpathentry kind="lib" path="ooxml-lib/curvesapi-1.05.jar"/> <classpathentry kind="lib" path="ooxml-lib/curvesapi-1.05.jar"/>

View File

@ -25,6 +25,12 @@ buildscript {
} }
} }
repositories {
maven { url "https://repository.apache.org/content/repositories/staging" }
mavenCentral()
}
// Only add the plugin for Sonar if enabled // Only add the plugin for Sonar if enabled
if (project.hasProperty('enableSonar')) { if (project.hasProperty('enableSonar')) {
println 'Enabling Sonar support' println 'Enabling Sonar support'
@ -189,7 +195,7 @@ project('ooxml') {
compileJava.dependsOn 'ant-compile-ooxml-xsds' compileJava.dependsOn 'ant-compile-ooxml-xsds'
dependencies { dependencies {
compile 'org.apache.xmlbeans:xmlbeans:2.6.0' compile 'org.apache.xmlbeans:xmlbeans:3.0.0'
compile 'org.apache.commons:commons-collections4:4.1' compile 'org.apache.commons:commons-collections4:4.1'
compile 'org.apache.commons:commons-math3:3.6.1' compile 'org.apache.commons:commons-math3:3.6.1'
compile 'org.apache.commons:commons-compress:1.17' compile 'org.apache.commons:commons-compress:1.17'

View File

@ -199,9 +199,9 @@ under the License.
<property name="ooxml.curvesapi.jar" location="${ooxml.lib}/curvesapi-1.05.jar"/> <property name="ooxml.curvesapi.jar" location="${ooxml.lib}/curvesapi-1.05.jar"/>
<property name="ooxml.curvesapi.url" <property name="ooxml.curvesapi.url"
value="${repository.m2}/maven2/com/github/virtuald/curvesapi/1.05/curvesapi-1.05.jar"/> value="${repository.m2}/maven2/com/github/virtuald/curvesapi/1.05/curvesapi-1.05.jar"/>
<property name="ooxml.xmlbeans.jar" location="${ooxml.lib}/xmlbeans-2.6.0.jar"/> <property name="ooxml.xmlbeans.jar" location="${ooxml.lib}/xmlbeans-3.0.0.jar"/>
<property name="ooxml.xmlbeans.url" <property name="ooxml.xmlbeans.url"
value="${repository.m2}/maven2/org/apache/xmlbeans/xmlbeans/2.6.0/xmlbeans-2.6.0.jar"/> value="https://repository.apache.org/content/repositories/staging/org/apache/xmlbeans/xmlbeans/3.0.0/xmlbeans-3.0.0.jar"/>
<property name="ooxml.commons-compress.jar" location="${main.lib}/commons-compress-1.17.jar"/> <property name="ooxml.commons-compress.jar" location="${main.lib}/commons-compress-1.17.jar"/>
<property name="ooxml.commons-compress.url" <property name="ooxml.commons-compress.url"
value="${repository.m2}/maven2/org/apache/commons/commons-compress/1.17/commons-compress-1.17.jar"/> value="${repository.m2}/maven2/org/apache/commons/commons-compress/1.17/commons-compress-1.17.jar"/>
@ -624,7 +624,7 @@ under the License.
<include name="ooxml-security-1.0.jar"/> <include name="ooxml-security-1.0.jar"/>
<include name="curvesapi-1.03.jar"/> <include name="curvesapi-1.03.jar"/>
<include name="curvesapi-1.04.jar"/> <include name="curvesapi-1.04.jar"/>
<include name="xmlbeans-2.3.0.jar*"/> <include name="xmlbeans-2.*.jar*"/>
</fileset> </fileset>
<fileset dir="${compile.lib}"> <fileset dir="${compile.lib}">
<include name="xercesImpl-*.jar"/> <include name="xercesImpl-*.jar"/>
@ -729,12 +729,8 @@ under the License.
<target name="fetch-ooxml-jars" depends="check-ooxml-jars" unless="ooxml.jars.present"> <target name="fetch-ooxml-jars" depends="check-ooxml-jars" unless="ooxml.jars.present">
<mkdir dir="${ooxml.lib}"/> <mkdir dir="${ooxml.lib}"/>
<downloadfile src="${ooxml.curvesapi.url}" dest="${ooxml.curvesapi.jar}"/> <downloadfile src="${ooxml.curvesapi.url}" dest="${ooxml.curvesapi.jar}"/>
<downloadfile src="${ooxml.xmlbeans.url}" dest="${ooxml.xmlbeans.jar}.orig"/> <downloadfile src="${ooxml.xmlbeans.url}" dest="${ooxml.xmlbeans.jar}"/>
<downloadfile src="${ooxml.commons-compress.url}" dest="${ooxml.commons-compress.jar}"/> <downloadfile src="${ooxml.commons-compress.url}" dest="${ooxml.commons-compress.jar}"/>
<!-- remove piccolo parser, so we don't use unsafe calls to it instead of using jaxp -->
<zip destfile="${ooxml.xmlbeans.jar}">
<zipfileset src="${ooxml.xmlbeans.jar}.orig" excludes="org/apache/xmlbeans/impl/piccolo/**"/>
</zip>
</target> </target>
<target name="check-svn-jars"> <target name="check-svn-jars">
<condition property="svn.jars.present"> <condition property="svn.jars.present">
@ -840,7 +836,7 @@ under the License.
<taskdef name="xmlbean" <taskdef name="xmlbean"
classname="org.apache.xmlbeans.impl.tool.XMLBean" classname="org.apache.xmlbeans.impl.tool.XMLBean"
classpath="${ooxml.xmlbeans.jar}.orig"/> classpath="${ooxml.xmlbeans.jar}"/>
<property name="xmlbean.xsds.dir" location="build/xmlbean-xsds"/> <property name="xmlbean.xsds.dir" location="build/xmlbean-xsds"/>
<property name="xmlbean.sources.dir" location="build/xmlbean-sources"/> <property name="xmlbean.sources.dir" location="build/xmlbean-sources"/>
@ -871,7 +867,7 @@ under the License.
nopvr="@{nopvr}" nopvr="@{nopvr}"
> >
<classpath> <classpath>
<path location="${ooxml.xmlbeans.jar}.orig"/> <path location="${ooxml.xmlbeans.jar}"/>
</classpath> </classpath>
</xmlbean> </xmlbean>
@ -1954,8 +1950,8 @@ under the License.
<globmapper from="*" to="${zipdir}/lib/*"/> <globmapper from="*" to="${zipdir}/lib/*"/>
</mappedresources> </mappedresources>
<mappedresources cache="true"> <mappedresources cache="true">
<fileset dir="${ooxml.lib}" includes="xmlbeans-2.6.0.jar.orig,curvesapi-*.jar"/> <fileset dir="${ooxml.lib}" includes="xmlbeans-3.0.0.jar,curvesapi-*.jar"/>
<regexpmapper from="^(.*\.jar)(\.orig)?$$" to="${zipdir}/ooxml-lib/\1"/> <regexpmapper from="^(.*\.jar)$$" to="${zipdir}/ooxml-lib/\1"/>
</mappedresources> </mappedresources>
<mappedresources cache="true"> <mappedresources cache="true">
<fileset dir="${dist.dir}/maven" includes="**/*.jar" excludes="**/*-javadoc.jar,**/*-sources.jar"/> <fileset dir="${dist.dir}/maven" includes="**/*.jar" excludes="**/*-javadoc.jar,**/*-sources.jar"/>

View File

@ -62,7 +62,7 @@
<dependency> <dependency>
<groupId>org.apache.xmlbeans</groupId> <groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId> <artifactId>xmlbeans</artifactId>
<version>2.6.0</version> <version>3.0.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -63,7 +63,7 @@
<sonar.scm.disabled>true</sonar.scm.disabled> <sonar.scm.disabled>true</sonar.scm.disabled>
<!-- define some of the third-party or plugin-versions globally to use the same in all modules --> <!-- define some of the third-party or plugin-versions globally to use the same in all modules -->
<xmlbeans.version>2.6.0</xmlbeans.version> <xmlbeans.version>3.0.0</xmlbeans.version>
<junit.version>4.12</junit.version> <junit.version>4.12</junit.version>
<xmlunit.version>2.5.1</xmlunit.version> <xmlunit.version>2.5.1</xmlunit.version>
<mockito.version>2.13.0</mockito.version> <mockito.version>2.13.0</mockito.version>

View File

@ -119,8 +119,8 @@ Before running this, you should execute the "assemble" target in the main build.
</fileset> </fileset>
<fileset dir="../../ooxml-lib"> <fileset dir="../../ooxml-lib">
<include name="ooxml-schemas-*.jar"/> <include name="ooxml-schemas-*.jar"/>
<include name="xmlbeans-*.jar"/> <include name="xmlbeans-3.*.jar"/>
<exclude name="xmlbeans-2.3.*.jar"/> <exclude name="xmlbeans-2.*.jar"/>
</fileset> </fileset>
</path> </path>

View File

@ -0,0 +1,42 @@
package org.apache.poi.xssf.streaming;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.util.TempFile;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Assert;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestSXSSFUnicodeSurrogates {
private static String unicodeText = "𝝊𝝋𝝌𝝍𝝎𝝏𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝝯𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺";
@Test
public void testWriteUnicodeSurrogates() throws IOException {
String sheetName = "Sheet1";
File tf = TempFile.createTempFile("poi-xmlbeans-test", ".xlsx");
try (SXSSFWorkbook wb = new SXSSFWorkbook()) {
Sheet sheet = wb.createSheet(sheetName);
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue(unicodeText);
try (FileOutputStream os = new FileOutputStream(tf)) {
wb.write(os);
}
try (FileInputStream fis = new FileInputStream(tf);
XSSFWorkbook wb2 = new XSSFWorkbook(fis)) {
Sheet sheet2 = wb2.getSheet(sheetName);
Cell cell2 = sheet2.getRow(0).getCell(0);
Assert.assertEquals(unicodeText, cell2.getStringCellValue());
}
} finally {
tf.delete();
}
}
}

View File

@ -0,0 +1,42 @@
package org.apache.poi.xssf.usermodel;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.util.TempFile;
import org.junit.Assert;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestXSSFUnicodeSurrogates {
private static String unicodeText = "𝝊𝝋𝝌𝝍𝝎𝝏𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝝯𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺";
@Test
public void testWriteUnicodeSurrogates() throws IOException {
String sheetName = "Sheet1";
File tf = TempFile.createTempFile("poi-xmlbeans-test", ".xlsx");
try (XSSFWorkbook wb = new XSSFWorkbook()) {
Sheet sheet = wb.createSheet(sheetName);
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue(unicodeText);
try (FileOutputStream os = new FileOutputStream(tf)) {
wb.write(os);
}
try (FileInputStream fis = new FileInputStream(tf);
XSSFWorkbook wb2 = new XSSFWorkbook(fis)) {
Sheet sheet2 = wb2.getSheet(sheetName);
Cell cell2 = sheet2.getRow(0).getCell(0);
Assert.assertEquals(unicodeText, cell2.getStringCellValue());
}
} finally {
tf.delete();
}
}
}