You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/05/05 13:36:30 UTC

svn commit: r1877398 [1/3] - in /poi: site/src/documentation/content/xdocs/ trunk/ trunk/compile-lib/ trunk/lib/ trunk/lib/main/ trunk/lib/ooxml/ trunk/ooxml-lib/ trunk/src/java/org/apache/poi/sl/draw/ trunk/src/java/org/apache/poi/sl/draw/binding/ tru...

Author: kiwiwings
Date: Tue May  5 13:36:30 2020
New Revision: 1877398

URL: http://svn.apache.org/viewvc?rev=1877398&view=rev
Log:
#64411 - Provide JigSaw modules

Added:
    poi/trunk/lib/main/
    poi/trunk/lib/ooxml/
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustHandle.java   (with props)
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustPoint.java   (with props)
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/ConnectionSite.java   (with props)
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/PolarAdjustHandle.java   (with props)
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/PresetParser.java   (with props)
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/XYAdjustHandle.java   (with props)
    poi/trunk/src/multimodule/
    poi/trunk/src/multimodule/ooxml-schemas/
    poi/trunk/src/multimodule/ooxml-schemas/java9/
    poi/trunk/src/multimodule/ooxml-schemas/java9/module-info.class   (with props)
    poi/trunk/src/multimodule/ooxml-schemas/java9/module-info.java   (with props)
    poi/trunk/src/multimodule/ooxml-security/
    poi/trunk/src/multimodule/ooxml-security/java9/
    poi/trunk/src/multimodule/ooxml-security/java9/module-info.class   (with props)
    poi/trunk/src/multimodule/ooxml-security/java9/module-info.java   (with props)
    poi/trunk/src/multimodule/poi/
    poi/trunk/src/multimodule/poi/java9/
    poi/trunk/src/multimodule/poi/java9/module-info.java   (with props)
Removed:
    poi/trunk/compile-lib/
    poi/trunk/ooxml-lib/
    poi/trunk/src/java/org/apache/poi/sl/draw/binding/
Modified:
    poi/site/src/documentation/content/xdocs/changes.xml
    poi/trunk/build.xml
    poi/trunk/lib/   (props changed)
    poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustValue.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/ArcToCommand.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/ClosePathCommand.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/CurveToCommand.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/CustomGeometry.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/Guide.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/LineToCommand.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/MoveToCommand.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/Path.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/PresetGeometries.java
    poi/trunk/src/java/org/apache/poi/sl/draw/geom/QuadToCommand.java
    poi/trunk/src/java/org/apache/poi/sl/usermodel/RectAlign.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFSimpleShape.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/geom/TestFormulaParser.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFSimpleShape.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFAutoShape.java
    poi/trunk/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSimpleShape.java
    poi/trunk/src/testcases/org/apache/poi/sl/draw/geom/TestPresetGeometries.java

Modified: poi/site/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/changes.xml?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/changes.xml (original)
+++ poi/site/src/documentation/content/xdocs/changes.xml Tue May  5 13:36:30 2020
@@ -70,12 +70,14 @@
         </p>
     </section>
 
-    <release version="4.1.3" date="2020-05-??">
+    <release version="5.0.0" date="2020-06-??">
         <summary>
             <summary-item>Upgrade to XMLSec 2.1.5</summary-item>
             <summary-item>updated dependencies to Bouncycastle 1.65, Commons-Codec 1.14, Commons-Compress 1.20</summary-item>
             <summary-item>XWPF - improvements in table and paragraph</summary-item>
             <summary-item>XSLF - improvements for paragraph</summary-item>
+            <summary-item>provide JigSaw modules</summary-item>
+            <summary-item>removed dependencies to jaxb</summary-item>
         </summary>
         <actions>
             <action type="add" context="SS">SS method to check if a Named Range is hidden or not</action>
@@ -95,6 +97,7 @@
             <action type="fix" fixes-bug="57843" context="HWPF">RuntimeException on extracting text from Word 97-2004 Document</action>
             <action type="fix" fixes-bug="55505" context="HSSF">CountryRecord not found</action>
             <action type="fix" fixes-bug="64387" context="POIFS">Big POIFS stream result in OOM</action>
+            <action type="add" fixes-bug="64411" context="POI_Overall">Provide JigSaw modules</action>
         </actions>
     </release>
 

Modified: poi/trunk/build.xml
URL: http://svn.apache.org/viewvc/poi/trunk/build.xml?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/build.xml (original)
+++ poi/trunk/build.xml Tue May  5 13:36:30 2020
@@ -50,10 +50,11 @@ under the License.
     <property name="repository.m2" value="https://repo1.maven.org"/>
     <property name="repository.pentaho" value="https://nexus.pentaho.org/"/>
 
-    <property name="main.lib" location="lib"/>
-    <property name="ooxml.lib" location="ooxml-lib"/>
-    <property name="ooxml.test.lib" location="ooxml-testlib"/>
-    <property name="compile.lib" location="compile-lib"/>
+    <property name="main.lib" location="${basedir}/lib/main"/>
+    <property name="ooxml.lib" location="${basedir}/lib/ooxml"/>
+    <property name="ooxml-tests.lib" location="${basedir}/lib/ooxml-tests"/>
+    <property name="util.lib" location="${basedir}/lib/util"/>
+
 
     <!-- compiler options options -->
     <property name="jdk.version.source" value="1.8" description="JDK version of source code"/>
@@ -64,6 +65,10 @@ under the License.
         <contains string="${java.vendor}" substring="IBM" casesensitive="false"/>
     </condition>
 
+    <condition property="isJava8">
+        <equals arg1="${ant.java.version}" arg2="1.8"/>
+    </condition>
+
     <!-- add addOpens parameter for Java 9 and higher -->
     <condition property="addOpens">
         <not><matches pattern="^1\..*" string="${java.version}"/></not>
@@ -168,137 +173,99 @@ under the License.
     <property name="excelant.output.test.dir" location="build/excelant-test-classes"/>
     <property name="excelant.testokfile" location="build/excelant-testokfile.txt"/>
 
+
+    <scriptdef name="dependency" language="javascript" description="define properties for library dependency">
+        <attribute name="prefix"/>
+        <attribute name="artifact"/>
+        <attribute name="usage"/>
+        <attribute name="packaging"/>
+        <attribute name="repo"/>
+        <attribute name="snapshot"/>
+        <attribute name="query"/>
+        <![CDATA[
+            var parts = attributes.get("artifact").split(/:/);
+            var packaging = attributes.get("packaging") || "jar";
+            var version = attributes.get("snapshot") || parts[2];
+            var repo = attributes.get("repo");
+            if (repo == null) {
+                repo = project.getProperty("repository.m2")+"/maven2";
+            }
+            var query = attributes.get("query") || "";
+            var jarLoc = project.getProperty("basedir")+"/lib/"+attributes.get("usage")+"/"+
+                parts[1]+"-"+parts[2]+"."+packaging;
+            var urlLoc = repo+"/"+parts[0].replace(/\./g,"/")+"/"+parts[1]+"/"+parts[2]+"/"+
+                parts[1]+"-"+(attributes.get("snapshot") || parts[2])+"."+packaging+query;
+            project.setProperty(attributes.get("prefix")+"."+packaging, jarLoc);
+            project.setProperty(attributes.get("prefix")+".url", urlLoc);
+        ]]>
+        <!-- TODO: add library to a queue for downloading ... -->
+    </scriptdef>
+
+
     <!-- jars in the /lib directory, see the fetch-jars target-->
-    <property name="main.commons-logging.jar" location="${main.lib}/commons-logging-1.2.jar"/>
-    <property name="main.commons-logging.url"
-              value="${repository.m2}/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.jar"/>
-    <property name="main.commons-codec.jar" location="${main.lib}/commons-codec-1.14.jar"/>
-    <property name="main.commons-codec.url"
-              value="${repository.m2}/maven2/commons-codec/commons-codec/1.14/commons-codec-1.14.jar"/>
-    <property name="main.log4j.jar" location="${main.lib}/log4j-1.2.17.jar"/>
-    <property name="main.log4j.url" value="${repository.m2}/maven2/log4j/log4j/1.2.17/log4j-1.2.17.jar"/>
-    <property name="main.junit.jar" location="${main.lib}/junit-4.13.jar"/>
-    <property name="main.junit.url" value="${repository.m2}/maven2/junit/junit/4.13/junit-4.13.jar"/>
-    <property name="main.jmh.jar" location="${main.lib}/jmh-core-1.19.jar"/>
-    <property name="main.jmh.url" value="${repository.m2}/maven2/org/openjdk/jmh/jmh-core/1.19/jmh-core-1.19.jar"/>
-    <property name="main.jmhAnnotation.jar" location="${main.lib}/jmh-generator-annprocess-1.19.jar"/>
-    <property name="main.jmhAnnotation.url" value="${repository.m2}/maven2/org/openjdk/jmh/jmh-generator-annprocess/1.19/jmh-generator-annprocess-1.19.jar"/>
-
-    <property name="main.hamcrest.jar" location="${main.lib}/hamcrest-core-1.3.jar"/>
-    <property name="main.hamcrest.url" value="${repository.m2}/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar"/>
-    <property name="main.xmlunit.jar" location="${main.lib}/xmlunit-core-2.5.1.jar"/>
-    <property name="main.xmlunit.url" value="${repository.m2}/maven2/org/xmlunit/xmlunit-core/2.5.1/xmlunit-core-2.5.1.jar"/>
-    <property name="main.mockito.jar" location="${main.lib}/mockito-core-3.2.4.jar"/>
-    <property name="main.mockito.url" value="${repository.m2}/maven2/org/mockito/mockito-core/3.2.4/mockito-core-3.2.4.jar"/>
-    <property name="main.byte-buddy.jar" location="${main.lib}/byte-buddy-1.10.1.jar"/>
-    <property name="main.byte-buddy.url" value="${repository.m2}/maven2/net/bytebuddy/byte-buddy/1.10.1/byte-buddy-1.10.1.jar"/>
-    <property name="main.byte-buddy-agent.jar" location="${main.lib}/byte-buddy-agent-1.10.1.jar"/>
-    <property name="main.byte-buddy-agent.url" value="${repository.m2}/maven2/net/bytebuddy/byte-buddy-agent/1.10.1/byte-buddy-agent-1.10.1.jar"/>
-    <property name="main.ant.jar" location="${main.lib}/ant-1.10.1.jar"/>
-    <property name="main.objenesis.jar" location="${main.lib}/objenesis-2.6.jar"/>
-    <property name="main.objenesis.url" value="${repository.m2}/maven2/org/objenesis/objenesis/2.6/objenesis-2.6.jar"/>
-    <property name="main.ant.url" value="${repository.m2}/maven2/org/apache/ant/ant/1.10.1/ant-1.10.1.jar"/>
-    <property name="main.antlauncher.jar" location="${main.lib}/ant-launcher-1.10.1.jar"/>
-    <property name="main.antlauncher.url" value="${repository.m2}/maven2/org/apache/ant/ant-launcher/1.10.1/ant-launcher-1.10.1.jar"/>
-    <property name="main.commons-collections4.jar" location="${main.lib}/commons-collections4-4.4.jar"/>
-    <property name="main.commons-collections4.url"
-              value="${repository.m2}/maven2/org/apache/commons/commons-collections4/4.4/commons-collections4-4.4.jar"/>
-    <property name="main.commons-math3.jar" location="${main.lib}/commons-math3-3.6.1.jar"/>
-    <property name="main.commons-math3.url"
-              value="${repository.m2}/maven2/org/apache/commons/commons-math3/3.6.1/commons-math3-3.6.1.jar"/>
-    <property name="main.xmlbind.jar" location="${main.lib}/jaxb-api-2.3.1.jar"/>
-    <property name="main.xmlbind.url"
-              value="${repository.m2}/maven2/javax/xml/bind/jaxb-api/2.3.1/jaxb-api-2.3.1.jar"/>
-    <property name="main.xmlbind-impl.jar" location="${main.lib}/jaxb-impl-2.3.2.jar"/>
-    <property name="main.xmlbind-impl.url"
-              value="${repository.m2}/maven2/com/sun/xml/bind/jaxb-impl/2.3.2/jaxb-impl-2.3.2.jar"/>
-    <property name="main.xmlbind-core.jar" location="${main.lib}/jaxb-core-2.3.0.1.jar"/>
-    <property name="main.xmlbind-core.url"
-              value="${repository.m2}/maven2/com/sun/xml/bind/jaxb-core/2.3.0.1/jaxb-core-2.3.0.1.jar"/>
-    <property name="main.activation.jar" location="${main.lib}/activation-1.1.1.jar"/>
-    <property name="main.activation.url"
-              value="${repository.m2}/maven2/javax/activation/activation/1.1.1/activation-1.1.1.jar"/>
-    <property name="main.com.zaxxer.jar" location="${main.lib}/SparseBitSet-1.2.jar"/>
-    <property name="main.com.zaxxer.url"
-              value="${repository.m2}/maven2/com/zaxxer/SparseBitSet/1.2/SparseBitSet-1.2.jar"/>
-
-    <!-- xml signature libs -->
-    <property name="dsig.xmlsec.jar" location="${compile.lib}/xmlsec-2.1.5.jar"/>
-    <property name="dsig.xmlsec.url" value="${repository.m2}/maven2/org/apache/santuario/xmlsec/2.1.5/xmlsec-2.1.5.jar"/>
-    <property name="dsig.bouncycastle-prov.jar" location="${compile.lib}/bcprov-ext-jdk15on-1.65.jar"/>
-    <property name="dsig.bouncycastle-prov.url" value="${repository.m2}/maven2/org/bouncycastle/bcprov-ext-jdk15on/1.65/bcprov-ext-jdk15on-1.65.jar"/>
-    <property name="dsig.bouncycastle-pkix.jar" location="${compile.lib}/bcpkix-jdk15on-1.65.jar"/>
-    <property name="dsig.bouncycastle-pkix.url" value="${repository.m2}/maven2/org/bouncycastle/bcpkix-jdk15on/1.65/bcpkix-jdk15on-1.65.jar"/>
-    <property name="dsig.sl4j-api.jar" location="${compile.lib}/slf4j-api-1.7.30.jar"/>
-    <property name="dsig.sl4j-api.url" value="${repository.m2}/maven2/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar"/>
+    <dependency prefix="main.commons-logging" artifact="commons-logging:commons-logging:1.2" usage="main"/>
+    <dependency prefix="main.commons-codec" artifact="commons-codec:commons-codec:1.14" usage="main"/>
+    <dependency prefix="main.log4j" artifact="log4j:log4j:1.2.17" usage="main"/>
+    <dependency prefix="main.commons-collections4" artifact="org.apache.commons:commons-collections4:4.4" usage="main"/>
+    <dependency prefix="main.commons-math3" artifact="org.apache.commons:commons-math3:3.6.1" usage="main"/>
+    <dependency prefix="main.com.zaxxer" artifact="com.zaxxer:SparseBitSet:1.2" usage="main"/>
+
+    <dependency prefix="main.junit" artifact="junit:junit:4.13" usage="main-tests"/>
+    <dependency prefix="main.jmh" artifact="org.openjdk.jmh:jmh-core:1.19" usage="main-tests"/>
+    <dependency prefix="main.jmhAnnotation" artifact="org.openjdk.jmh:jmh-generator-annprocess:1.19" usage="main-tests"/>
+    <dependency prefix="main.hamcrest" artifact="org.hamcrest:hamcrest-core:1.3" usage="main-tests"/>
+    <dependency prefix="main.xmlunit" artifact="org.xmlunit:xmlunit-core:2.5.1" usage="main-tests"/>
+    <dependency prefix="main.mockito" artifact="org.mockito:mockito-core:3.2.4" usage="main-tests"/>
+    <dependency prefix="main.byte-buddy" artifact="net.bytebuddy:byte-buddy:1.10.1" usage="main-tests"/>
+    <dependency prefix="main.byte-buddy-agent" artifact="net.bytebuddy:byte-buddy-agent:1.10.1" usage="main-tests"/>
+    <dependency prefix="main.objenesis" artifact="org.objenesis:objenesis:2.6" usage="main-tests"/>
+
+    <dependency prefix="main.ant" artifact="org.apache.ant:ant:1.10.1" usage="excelant"/>
+    <dependency prefix="main.antlauncher" artifact="org.apache.ant:ant-launcher:1.10.1" usage="excelant"/>
+
+    <!-- xml signature libs - not part of the distribution -->
+    <dependency prefix="dsig.xmlsec" artifact="org.apache.santuario:xmlsec:2.1.5" usage="ooxml-provided"/>
+    <dependency prefix="dsig.bouncycastle-prov" artifact="org.bouncycastle:bcprov-ext-jdk15on:1.65" usage="ooxml-provided"/>
+    <dependency prefix="dsig.bouncycastle-pkix" artifact="org.bouncycastle:bcpkix-jdk15on:1.65" usage="ooxml-provided"/>
+    <dependency prefix="dsig.sl4j-api" artifact="org.slf4j:slf4j-api:1.7.30" usage="ooxml-provided"/>
 
     <!-- svg/batik libs - not part of the distribution -->
-    <property name="svg.batik-all.url" value="${repository.m2}/maven2/org/apache/xmlgraphics/batik-all/1.12/batik-all-1.12.jar"/>
-    <property name="svg.batik-all.jar" value="${compile.lib}/batik-all-1.12.jar"/>
-    <property name="svg.xml-apis-ext.url" value="${repository.m2}/maven2/xml-apis/xml-apis-ext/1.3.04/xml-apis-ext-1.3.04.jar"/>
-    <property name="svg.xml-apis-ext.jar" value="${compile.lib}/xml-apis-ext-1.3.04.jar"/>
-    <property name="svg.xmlgraphics-commons.url" value="${repository.m2}/maven2/org/apache/xmlgraphics/xmlgraphics-commons/2.3/xmlgraphics-commons-2.3.jar"/>
-    <property name="svg.xmlgraphics-commons.jar" value="${compile.lib}/xmlgraphics-commons-2.3.jar"/>
+    <dependency prefix="svg.xml-apis-ext" artifact="xml-apis:xml-apis-ext:1.3.04" usage="ooxml-provided"/>
+    <dependency prefix="svg.xmlgraphics-commons" artifact="org.apache.xmlgraphics:xmlgraphics-commons:2.3" usage="ooxml-provided"/>
+    <dependency prefix="svg.batik-all" artifact="org.apache.xmlgraphics:batik-all:1.12" usage="ooxml-provided"/>
 
     <!-- jars in the ooxml-lib directory, see the fetch-ooxml-jars target-->
-    <property name="ooxml.curvesapi.jar" location="${ooxml.lib}/curvesapi-1.06.jar"/>
-    <property name="ooxml.curvesapi.url"
-              value="${repository.m2}/maven2/com/github/virtuald/curvesapi/1.06/curvesapi-1.06.jar"/>
-    <property name="ooxml.xmlbeans.jar" location="${ooxml.lib}/xmlbeans-3.1.0.jar"/>
-    <property name="ooxml.xmlbeans.url"
-              value="https://repository.apache.org/content/repositories/releases/org/apache/xmlbeans/xmlbeans/3.1.0/xmlbeans-3.1.0.jar"/>
-    <property name="ooxml.commons-compress.jar" location="${main.lib}/commons-compress-1.20.jar"/>
-    <property name="ooxml.commons-compress.url"
-              value="${repository.m2}/maven2/org/apache/commons/commons-compress/1.20/commons-compress-1.20.jar"/>
+    <dependency prefix="ooxml.curvesapi" artifact="com.github.virtuald:curvesapi:1.06" usage="ooxml"/>
+    <dependency prefix="ooxml.xmlbeans" artifact="org.apache.xmlbeans:xmlbeans:3.1.0" usage="ooxml"/>
+    <dependency prefix="ooxml.commons-compress" artifact="org.apache.commons:commons-compress:1.20" usage="ooxml"/>
 
     <!-- jars in the ooxml-test-lib directory, see the fetch-ooxml-jars target-->
-    <property name="ooxml.test.reflections.jar" location="${ooxml.test.lib}/reflections.jar"/>
-    <property name="ooxml.test.reflections.url"
-              value="${repository.m2}/maven2/org/reflections/reflections/0.9.11/reflections-0.9.11.jar"/>
-    <property name="ooxml.test.guava.jar" location="${ooxml.test.lib}/guava.jar"/>
-    <property name="ooxml.test.guava.url"
-              value="${repository.m2}/maven2/com/google/guava/guava/20.0/guava-20.0.jar"/>
-    <property name="ooxml.test.javassist.jar" location="${ooxml.test.lib}/javassist.jar"/>
-    <property name="ooxml.test.javassist.url"
-              value="${repository.m2}/maven2/org/javassist/javassist/3.21.0-GA/javassist-3.21.0-GA.jar"/>
+    <dependency prefix="ooxml.test.reflections" artifact="org.reflections:reflections:0.9.11" usage="ooxml-tests"/>
+    <dependency prefix="ooxml.test.guava" artifact="com.google.guava:guava:20.0" usage="ooxml-tests"/>
+    <dependency prefix="ooxml.test.javassist" artifact="org.javassist:javassist:3.21.0-GA" usage="ooxml-tests"/>
 
     <!-- coverage libs -->
-    <property name="jacoco.zip" location="${main.lib}/jacoco-0.8.5.zip"/>
-    <property name="jacoco.url" value="${repository.m2}/maven2/org/jacoco/jacoco/0.8.5/jacoco-0.8.5.zip"/>
-    <property name="asm.jar" location="${main.lib}/asm-7.2.jar"/>
-    <property name="asm.url" value="${repository.m2}/maven2/org/ow2/asm/asm/7.2/asm-7.2.jar"/>
-    <property name="asmcommons.jar" location="${main.lib}/asm-commons-7.2.jar"/>
-    <property name="asmcommons.url" value="${repository.m2}/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.jar"/>
-    <property name="asmtree.jar" location="${main.lib}/asm-tree-7.2.jar"/>
-    <property name="asmtree.url" value="${repository.m2}/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.jar"/>
+    <dependency prefix="jacoco" artifact="org.jacoco:jacoco:0.8.5" usage="util" packaging="zip"/>
+    <dependency prefix="asm" artifact="org.ow2.asm:asm:7.2" usage="util"/>
+    <dependency prefix="asmcommons" artifact="org.ow2.asm:asm-commons:7.2" usage="util"/>
+    <dependency prefix="asmtree" artifact="org.ow2.asm:asm-tree:7.2" usage="util"/>
 
     <!-- license and api checks -->
-    <property name="rat.jar" location="${main.lib}/apache-rat-0.12.jar"/>
-    <property name="rat.url" value="${repository.m2}/maven2/org/apache/rat/apache-rat/0.12/apache-rat-0.12.jar"/>
-    <property name="forbidden.jar" location="${main.lib}/forbiddenapis-2.6.jar"/>
-    <property name="forbidden.url" value="${repository.m2}/maven2/de/thetaphi/forbiddenapis/2.6/forbiddenapis-2.6.jar"/>
+    <dependency prefix="rat" artifact="org.apache.rat:apache-rat:0.12" usage="util"/>
+    <dependency prefix="forbidden" artifact="de.thetaphi:forbiddenapis:2.6" usage="util"/>
 
     <property name="maven.ooxml.xsds.version.id" value="1.4"/>
 
     <!-- See https://www.ecma-international.org/publications/standards/Ecma-376.htm -->
     <!-- "Copy these file(s), free of charge" -->
-    <property name="ooxml.xsds.ozip.1" value="OfficeOpenXML-Part4.zip"/>
-    <property name="ooxml.xsds.izip.1" value="OfficeOpenXML-XMLSchema.zip"/>
-    <property name="ooxml.xsds.url.1"
-              value="https://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%201st%20edition%20Part%204%20(PDF).zip"/>
+    <property name="ooxml.xsds.izip.1" value="${basedir}/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema.zip"/>
     <property name="ooxml.xsds.src.dir" location="build/ooxml-xsds-src"/>
     <property name="ooxml.xsds.src.jar" location="${ooxml.lib}/ooxml-schemas-${maven.ooxml.xsds.version.id}-sources.jar"/>
     <property name="ooxml.xsds.jar" location="${ooxml.lib}/ooxml-schemas-${maven.ooxml.xsds.version.id}.jar"/>
 
     <!-- additional schemas are packed into the poi schemas jar, -->
     <!-- so we don't have to care about a seperate versioning of the original ooxml schemas -->
-    <property name="ooxml.xsds.dsig.1" value="https://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
-    <!-- property name="ooxml.xsds.dsig.2" value="https://uri.etsi.org/01903/v1.3.2/XAdES.xsd"/ -->
-    <!-- property name="ooxml.xsds.dsig.3" value="https://uri.etsi.org/01903/v1.4.1/XAdESv141.xsd"/ -->
-    <property name="ooxml.xsds.ozip.2" value="OfficeOpenXML-Part2.zip"/>
-    <property name="ooxml.xsds.izip.2" value="OpenPackagingConventions-XMLSchema.zip"/>
-    <property name="ooxml.xsds.url.2"
-              value="https://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%201st%20edition%20Part%202%20(PDF).zip"/>
+    <property name="ooxml.xsds.izip.2" value="${basedir}/src/ooxml/resources/org/apache/poi/schemas/OpenPackagingConventions-XMLSchema.zip"/>
     <property name="ooxml.security.src.dir" location="build/ooxml-security-src"/>
     <property name="ooxml.security.src.jar" location="${ooxml.lib}/ooxml-security-1.1-sources.jar"/>
     <property name="ooxml.security.jar" location="${ooxml.lib}/ooxml-security-1.1.jar"/>
@@ -325,35 +292,25 @@ under the License.
     <property name="halt.on.test.failure" value="true"/>
 
     <!-- helper jars for pgp signing, building and nexus staging -->
-    <property name="dist.bouncycastle-prov.jar" location="${compile.lib}/bcprov-ext-jdk15on-1.65.jar"/>
-    <property name="dist.bouncycastle-prov.url" value="${repository.m2}/maven2/org/bouncycastle/bcprov-ext-jdk15on/1.65/bcprov-ext-jdk15on-1.65.jar"/>
-    <property name="dist.bouncycastle-bcpg.jar" location="${compile.lib}/bcpg-jdk15on-1.65.jar"/>
-    <property name="dist.bouncycastle-bcpg.url" value="${repository.m2}/maven2/org/bouncycastle/bcpg-jdk15on/1.65/bcpg-jdk15on-1.65.jar"/>
-    <property name="dist.commons-openpgp.jar" location="${compile.lib}/commons-openpgp-1.0-SNAPSHOT.jar"/>
-    <property name="dist.commons-openpgp.url" value="https://repository.apache.org/content/groups/snapshots/org/apache/commons/commons-openpgp/1.0-SNAPSHOT/commons-openpgp-1.0-20190121.221905-12.jar"/>
-    <property name="dist.nexus-staging.jar" location="${compile.lib}/nexus-staging-ant-tasks-1.6.3-uber.jar"/>
-    <property name="dist.nexus-staging.url" value="${repository.m2}/maven2/org/sonatype/nexus/ant/nexus-staging-ant-tasks/1.6.3/nexus-staging-ant-tasks-1.6.3-uber.jar"/>
-    <!-- jars required for maven helper targets -->
-    <property name="maven.ant.url" value="${repository.m2}/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.jar"/>
-    <property name="maven.ant.jar" value="${compile.lib}/maven-ant-tasks-2.1.3.jar"/>
-
-    <property name="dist.svnant.jar" location="${compile.lib}/svnant/svnant-1.3.1.jar"/>
-    <property name="dist.svnant.url" value="https://dl.bintray.com/openmeetings/maven/org/tigris/subclipse/svnant/1.3.1/svnant-1.3.1.jar"/>
-    <property name="dist.svnclient.jar" location="${compile.lib}/svnant/svnClientAdapter-1.3.1.jar"/>
-    <property name="dist.svnclient.url" value="https://dl.bintray.com/openmeetings/maven/org/tigris/subclipse/svnclientadapter/1.3.1//svnclientadapter-1.3.1.jar"/>
-    <property name="dist.svnkit.jar" location="${compile.lib}/svnant/svnkit-1.8.11.jar"/>
-    <property name="dist.svnkit.url" value="${repository.m2}/maven2/org/tmatesoft/svnkit/svnkit/1.8.11/svnkit-1.8.11.jar"/>
-    <property name="dist.svnkit-javahl16.jar" location="${compile.lib}/svnant/svnkit-javahl16-1.8.11.jar"/>
-    <property name="dist.svnkit-javahl16.url" value="${repository.m2}/maven2/org/tmatesoft/svnkit/svnkit-javahl16/1.8.11/svnkit-javahl16-1.8.11.jar"/>
-    <property name="dist.sqljet.jar" location="${compile.lib}/svnant/sqljet-1.1.10.jar"/>
-    <property name="dist.sqljet.url" value="${repository.m2}/maven2/org/tmatesoft/sqljet/sqljet/1.1.10/sqljet-1.1.10.jar"/>
-    <property name="dist.antlr.jar" location="${compile.lib}/svnant/antlr-runtime-3.5.2.jar"/>
-    <property name="dist.antlr.url" value="${repository.m2}/maven2/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.jar"/>
-    <property name="dist.sequence-library.jar" location="${compile.lib}/svnant/sequence-library-1.0.3.jar"/>
-    <property name="dist.sequence-library.url" value="${repository.m2}/maven2/de/regnis/q/sequence/sequence-library/1.0.3/sequence-library-1.0.3.jar"/>
+    <dependency prefix="dist.bouncycastle-prov" artifact="org.bouncycastle:bcprov-ext-jdk15on:1.65" usage="util"/>
+    <dependency prefix="dist.bouncycastle-prov" artifact="org.bouncycastle:bcpg-jdk15on:1.65" usage="util"/>
+    <dependency prefix="dist.commons-openpgp" artifact="org.apache.commons:commons-openpgp:1.0-SNAPSHOT" usage="util"
+        repo="https://repository.apache.org/content/groups/snapshots" snapshot="1.0-20190121.221905-12"/>
+    <dependency prefix="dist.nexus-staging" artifact="org.sonatype.nexus.ant:nexus-staging-ant-tasks:1.6.3-uber" usage="util"/>
 
-    <property name="findbugs.url" value="https://downloads.sourceforge.net/project/findbugs/findbugs/3.0.1/findbugs-noUpdateChecks-3.0.1.zip?download="/>
-    <property name="findbugs.jar" location="${main.lib}/findbugs-noUpdateChecks-3.0.1.zip"/>
+    <!-- jars required for maven helper targets -->
+    <dependency prefix="maven.ant" artifact="org.apache.maven:maven-ant-tasks:2.1.3" usage="util"/>
+    <dependency prefix="dist.svnant" artifact="org.tigris.subclipse:svnant:1.3.1" usage="util"
+        repo="https://dl.bintray.com/openmeetings/maven"/>
+    <dependency prefix="dist.svnclient" artifact="org.tigris.subclipse:svnclientadapter:1.3.1" usage="util"
+        repo="https://dl.bintray.com/openmeetings/maven"/>
+    <dependency prefix="dist.svnkit" artifact="org.tmatesoft.svnkit:svnkit:1.8.11" usage="util"/>
+    <dependency prefix="dist.svnkit-javahl16" artifact="org.tmatesoft.svnkit:svnkit-javahl16:1.8.11" usage="util"/>
+    <dependency prefix="dist.sqljet" artifact="org.tmatesoft.svnkit:sqljet:1.1.10" usage="util"/>
+    <dependency prefix="dist.antlr" artifact="org.antlr:antlr-runtime:3.5.2" usage="util"/>
+    <dependency prefix="dist.sequence-library" artifact="de.regnis.q.sequence:sequence-library:1.0.3" usage="util"/>
+    <dependency prefix="findbugs" artifact="findbugs:findbugs:3.0.1" usage="util"
+        repo="https://downloads.sourceforge.net/project" snapshot="noUpdateChecks-3.0.1" query="?download="/>
 
     <propertyset id="junit.properties">
         <propertyref name="POI.testdata.path"/>
@@ -377,10 +334,6 @@ under the License.
         <pathelement location="${main.commons-codec.jar}"/>
         <pathelement location="${main.commons-collections4.jar}"/>
         <pathelement location="${main.commons-math3.jar}"/>
-        <pathelement location="${main.xmlbind.jar}"/>
-        <pathelement location="${main.xmlbind-impl.jar}"/>
-        <pathelement location="${main.xmlbind-core.jar}"/>
-        <pathelement location="${main.activation.jar}"/>
         <pathelement location="${main.com.zaxxer.jar}"/>
     </path>
 
@@ -548,7 +501,7 @@ under the License.
     </path>
 
     <path id="lib.jacoco">
-        <fileset dir="lib">
+        <fileset dir="${util.lib}">
             <include name="org.jacoco*.jar" />
             <include name="asm-*.jar" />
         </fileset>
@@ -629,6 +582,9 @@ under the License.
         <attribute name="src"/>
         <attribute name="dest"/>
         <sequential>
+            <local name="destdir"/>
+            <dirname property="destdir" file="@{dest}"/>
+            <mkdir dir="${destdir}"/>
             <get src="@{src}" dest="@{dest}" skipexisting="true"/>
         </sequential>
     </macrodef>
@@ -637,102 +593,11 @@ under the License.
         <!-- remove previous versions of third-party jars to prevent them from lingering around,
             we often had hard-to-find build/CI-problems because of these! -->
         <mkdir dir="${main.lib}"/>
-        <mkdir dir="${compile.lib}"/>
         <mkdir dir="${ooxml.lib}"/>
-        <mkdir dir="${ooxml.test.lib}"/>
+        <mkdir dir="${ooxml-tests.lib}"/>
         <delete verbose="true">
-            <fileset dir="${main.lib}">
-                <include name="ant-1.8*"/>
-                <include name="ant-1.9.4*"/>
-                <include name="ant-launcher-1.9.4*"/>
-                <include name="asm-all-4*"/>
-                <include name="asm-all-5.0.3*"/>
-                <include name="asm-all-5.2*"/>
-                <include name="asm*-6.*"/>
-                <include name="asm*-7.0.*"/>
-                <include name="commons-codec-1.5*"/>
-                <include name="commons-codec-1.9*"/>
-                <include name="commons-codec-1.10*"/>
-                <include name="commons-codec-1.11*"/>
-                <include name="commons-codec-1.12*"/>
-                <include name="commons-codec-1.13*"/>
-                <include name="commons-compress-1.1*"/>
-                <include name="commons-collections4-4.1*"/>
-                <include name="commons-collections4-4.2*"/>
-                <include name="commons-collections4-4.3*"/>
-                <include name="commons-logging-1.1*.jar"/>
-                <include name="findbugs-noUpdateChecks-2.0.3*"/>
-                <include name="jacoco-0.6*"/>
-                <include name="jacoco-0.7*"/>
-                <include name="jacoco-0.8.1*"/>
-                <include name="jacoco-0.8.2*"/>
-                <include name="jacoco-0.8.3*"/>
-                <include name="jmh-core-1.15*"/>
-                <include name="jmh-generator-annprocess-1.15*"/>
-                <include name="log4j-1.2.13*"/>
-                <include name="org.jacoco.*-0.6*"/>
-                <include name="org.jacoco.*-0.7**"/>
-                <include name="org.jacoco.*-0.8.1*"/>
-                <include name="org.jacoco.*-0.8.2*"/>
-                <include name="org.jacoco.*-0.8.3*"/>
-                <include name="dom4j*"/>
-                <include name="apache-rat-0.10*"/>
-                <include name="xercesImpl-*.jar"/>
-                <include name="junit-3*"/>
-                <include name="junit-4.11*"/>
-                <include name="junit-4.12*"/>
-                <include name="forbiddenapis-1.*.jar"/>
-                <include name="forbiddenapis-2.0.jar"/>
-                <include name="forbiddenapis-2.1.jar"/>
-                <include name="forbiddenapis-2.3.jar"/>
-                <include name="forbiddenapis-2.5.jar"/>
-                <include name="apache-rat-0.11.jar"/>
-                <include name="mockito-core-2*.jar"/>
-                <include name="mockito-core-3.0*.jar"/>
-                <include name="byte-buddy-*1.7*.jar"/>
-                <include name="byte-buddy-*1.9*.jar"/>
-                <include name="jaxb-api-2.3.0.jar"/>
-                <include name="jaxb-impl-2.3.0.1.jar"/>
-            </fileset>
-            <fileset dir="${ooxml.lib}">
-                <!-- remove jars from previous versions, but not the current version -->
-                <include name="ooxml-schemas-1.0-sources.jar"/>
-                <include name="ooxml-schemas-1.0.jar"/>
-                <include name="ooxml-schemas-src-1.1.jar"/>
-                <include name="ooxml-schemas-1.1-sources.jar"/>
-                <include name="ooxml-schemas-1.1.jar"/>
-                <include name="ooxml-schemas-1.2-sources.jar"/>
-                <include name="ooxml-schemas-1.2.jar"/>
-                <include name="ooxml-schemas-1.3-sources.jar"/>
-                <include name="ooxml-schemas-1.3.jar"/>
-                <include name="ooxml-security-1.0-sources.jar"/>
-                <include name="ooxml-security-1.0.jar"/>
-                <include name="curvesapi-1.03.jar"/>
-                <include name="curvesapi-1.04.jar"/>
-                <include name="curvesapi-1.05.jar"/>
-                <include name="xmlbeans-2.*.jar"/>
-                <include name="xmlbeans-3.0*.jar"/>
-            </fileset>
-            <fileset dir="${compile.lib}">
-                <include name="xercesImpl-*.jar"/>
-                <include name="xmlsec-2.0*.jar"/>
-                <include name="xmlsec-2.1.0.jar"/>
-                <include name="xmlsec-2.1.1.jar"/>
-                <include name="xmlsec-2.1.2.jar"/>
-                <include name="xmlsec-2.1.3.jar"/>
-                <include name="xmlsec-2.1.4.jar"/>
-                <include name="bc*jdk15on-1.5*.jar"/>
-                <include name="bc*jdk15on-1.60*.jar"/>
-                <include name="bc*jdk15on-1.61*.jar"/>
-                <include name="bc*jdk15on-1.62*.jar"/>
-                <include name="bc*jdk15on-1.63*.jar"/>
-                <include name="bc*jdk15on-1.64*.jar"/>
-                <include name="batik-all-1.10.jar"/>
-                <include name="batik-all-1.11.jar"/>
-                <include name="slf4j-api-1.7.7.jar"/>
-                <include name="slf4j-api-1.7.1*.jar"/>
-                <include name="slf4j-api-1.7.2*.jar"/>
-            </fileset>
+            <fileset dir="${basedir}/lib" includes="*.jar"/>
+            <!-- remove jars from previous versions, but not the current version -->
         </delete>
 
         <condition property="jars.present">
@@ -764,14 +629,10 @@ under the License.
                     <available file="${dsig.sl4j-api.jar}"/>
                     <available file="${main.commons-collections4.jar}"/>
                     <available file="${main.commons-math3.jar}"/>
-                    <available file="${main.xmlbind.jar}"/>
-                    <available file="${main.xmlbind-impl.jar}"/>
-                    <available file="${main.xmlbind-core.jar}"/>
-                    <available file="${main.activation.jar}"/>
                     <available file="${main.com.zaxxer.jar}"/>
 
                     <!-- we had some CI failures when the extracted files for JaCoCo were missing somehow... -->
-                    <available file="${main.lib}/jacocoagent.jar"/>
+                    <available file="${util.lib}/jacocoagent.jar"/>
                 </and>
                 <isset property="disconnected"/>
             </or>
@@ -801,15 +662,12 @@ under the License.
         <downloadfile src="${jacoco.url}" dest="${jacoco.zip}"/>
         <downloadfile src="${main.commons-collections4.url}" dest="${main.commons-collections4.jar}"/>
         <downloadfile src="${main.commons-math3.url}" dest="${main.commons-math3.jar}"/>
-        <downloadfile src="${main.xmlbind.url}" dest="${main.xmlbind.jar}"/>
-        <downloadfile src="${main.xmlbind-impl.url}" dest="${main.xmlbind-impl.jar}"/>
-        <downloadfile src="${main.xmlbind-core.url}" dest="${main.xmlbind-core.jar}"/>
-        <downloadfile src="${main.activation.url}" dest="${main.activation.jar}"/>
         <downloadfile src="${main.com.zaxxer.url}" dest="${main.com.zaxxer.jar}"/>
-        <unzip src="${jacoco.zip}" dest=".">
+        <unzip src="${jacoco.zip}" dest="${util.lib}">
             <patternset>
                 <include name="lib/*.jar"/>
             </patternset>
+            <mapper type="flatten"/>
         </unzip>
         <downloadfile src="${rat.url}" dest="${rat.jar}"/>
         <downloadfile src="${forbidden.url}" dest="${forbidden.jar}"/>
@@ -839,7 +697,7 @@ under the License.
     </target>
     <target name="fetch-ooxml-jars" depends="check-ooxml-jars" unless="ooxml.jars.present">
         <mkdir dir="${ooxml.lib}"/>
-        <mkdir dir="${ooxml.test.lib}"/>
+        <mkdir dir="${ooxml-tests.lib}"/>
         <downloadfile src="${ooxml.curvesapi.url}" dest="${ooxml.curvesapi.jar}"/>
         <downloadfile src="${ooxml.xmlbeans.url}" dest="${ooxml.xmlbeans.jar}"/>
         <downloadfile src="${ooxml.commons-compress.url}" dest="${ooxml.commons-compress.jar}"/>
@@ -867,7 +725,6 @@ under the License.
         </condition>
     </target>
     <target name="fetch-svn-jars" depends="check-svn-jars" unless="svn.jars.present">
-        <mkdir dir="${compile.lib}/svnant"/>
         <downloadfile src="${dist.svnant.url}" dest="${dist.svnant.jar}"/>
         <downloadfile src="${dist.svnclient.url}" dest="${dist.svnclient.jar}"/>
         <downloadfile src="${dist.svnkit.url}" dest="${dist.svnkit.jar}"/>
@@ -877,53 +734,14 @@ under the License.
         <downloadfile src="${dist.sequence-library.url}" dest="${dist.sequence-library.jar}"/>
     </target>
 
-    <target name="check-ooxml-xsds">
-        <condition property="ooxml-xsds.present">
-            <or>
-                <and>
-                    <available file="${ooxml.lib}/${ooxml.xsds.izip.1}"/>
-                    <available file="${ooxml.lib}/${ooxml.xsds.izip.2}"/>
-                </and>
-                <isset property="disconnected"/>
-            </or>
-        </condition>
-    </target>
-    <target name="fetch-ooxml-xsds" unless="ooxml-xsds.present"
-        depends="check-ooxml-xsds"
-            description="Fetches needed OOXML xsd files from the Internet">
-        <get dest="${ooxml.lib}" skipexisting="true">
-            <url url="${ooxml.xsds.url.1}"/>
-            <url url="${ooxml.xsds.url.2}"/>
-            <url url="${ooxml.xsds.dsig.1}"/>
-            <!--url url="${ooxml.xsds.dsig.2}"/ -->
-            <!--url url="${ooxml.xsds.dsig.3}"/ -->
-            <chainedmapper>
-                <flattenmapper/>
-                <firstmatchmapper>
-                    <globmapper from="Office%20Open%20XML%201st%20edition%20Part%20*%20(PDF).zip" to="OfficeOpenXML-Part*.zip"/>
-                    <identitymapper/>
-                </firstmatchmapper>
-            </chainedmapper>
-        </get>
-        <unzip src="${ooxml.lib}/${ooxml.xsds.ozip.1}" dest="${ooxml.lib}">
-            <fileset dir="${ooxml.lib}" includes="OfficeOpenXML-Part*.zip"/>
-            <patternset>
-                <include name="${ooxml.xsds.izip.1}"/>
-                <include name="${ooxml.xsds.izip.2}"/>
-            </patternset>
-        </unzip>
-    </target>
-    <target name="check-compiled-ooxml-xsds" depends="fetch-ooxml-xsds">
+    <target name="check-compiled-ooxml-xsds">
         <condition property="ooxml-compiled-xsds.present">
-            <or>
-                <and>
-                    <available file="${ooxml.xsds.jar}"/>
-                    <available file="${ooxml.security.jar}"/>
-                    <available file="${ooxml.xsds.src.jar}"/>
-                    <available file="${ooxml.security.src.jar}"/>
-                </and>
-                <isset property="disconnected"/>
-            </or>
+            <and>
+                <available file="${ooxml.xsds.jar}"/>
+                <available file="${ooxml.xsds.src.jar}"/>
+                <available file="${ooxml.security.jar}"/>
+                <available file="${ooxml.security.src.jar}"/>
+            </and>
         </condition>
     </target>
 
@@ -932,6 +750,8 @@ under the License.
         <attribute name="sources-jar"/>
         <attribute name="noupa" default="false"/>
         <attribute name="nopvr" default="false"/>
+        <attribute name="multi-src"/>
+        <attribute name="typesystemname"/>
         <element name="xsds"/>
         <sequential>
             <!-- We need a fair amount of memory to compile the xml schema, -->
@@ -948,6 +768,7 @@ under the License.
             <property name="xmlbean.xsds.dir" location="build/xmlbean-xsds"/>
             <property name="xmlbean.sources.dir" location="build/xmlbean-sources"/>
             <property name="xmlbean.classes.dir" location="build/xmlbean-classes"/>
+
             <delete dir="${xmlbean.xsds.dir}"/>
             <mkdir dir="${xmlbean.xsds.dir}"/>
             <delete dir="${xmlbean.sources.dir}"/>
@@ -972,12 +793,12 @@ under the License.
                     memoryMaximumSize="${ooxml.memory}"
                     noupa="@{noupa}"
                     nopvr="@{nopvr}"
+                    typesystemname="@{typesystemname}"
                     >
                 <classpath>
                     <path location="${ooxml.xmlbeans.jar}"/>
                 </classpath>
             </xmlbean>
-
             <local name="loaderMethod"/>
             <!-- the space between "public  static" is on purpose to prevent double execution -->
             <property name="loaderMethod"><![CDATA[
@@ -993,7 +814,6 @@ under the License.
         }
 
         public  static \2 newInstance\(\) \{]]></property>
-
             <replaceregexp byline="true" match="(\s*)public static ([^ ]+) newInstance\(\) \{" replace="${loaderMethod}">
                 <fileset dir="${xmlbean.sources.dir}" includes="**/*.java" excludes="**/impl/**"/>
             </replaceregexp>
@@ -1020,16 +840,43 @@ under the License.
                    optimize="true"
                    memoryMaximumSize="${ooxml.memory}"
                    includeantruntime="false">
-                   <!-- debug="${compile.debug}" -->
                 <classpath refid="ooxml.classpath"/>
             </javac>
 
+            <local name="module-package"/>
+            <loadfile property="module-package" srcFile="@{multi-src}/java9/module-info.java">
+                <filterchain>
+                    <containsregex pattern=".*module ([^ ]+).*" replace="\1" flags="i"/>
+                    <striplinebreaks/>
+                </filterchain>
+            </loadfile>
+
+            <mkdir dir="${xmlbean.classes.dir}/META-INF/versions/9"/>
+
+            <javac release="9"
+                   srcdir="@{multi-src}/java9"
+                   destdir="${xmlbean.classes.dir}/META-INF/versions/9"
+                   includeantruntime="false"
+                   fork="true"
+                   modulepath="${ooxml.lib}"
+                   unless:true="${isJava8}">
+                <compilerarg line="--patch-module ${module-package}=${xmlbean.classes.dir}"/>
+            </javac>
+
+            <delete file="@{classes-jar}"/>
+            <delete file="@{sources-jar}"/>
+
             <jar destfile="@{classes-jar}" level="9">
                 <fileset dir="${xmlbean.classes.dir}" excludes="org/apache/**"/>
+                <zipfileset prefix="META-INF/versions/9/" dir="@{multi-src}/java9" includes="**/*.class" if:true="${isJava8}"/>
                 <metainf dir="legal"/>
+                <manifest>
+                    <attribute name="Multi-Release" value="true"/>
+                </manifest>
             </jar>
             <jar destfile="@{sources-jar}" level="9">
                 <fileset dir="${xmlbean.sources.dir}" excludes="org/apache/**"/>
+                <zipfileset prefix="META-INF/versions/9/" dir="@{multi-src}/java9" excludes="**/*.class"/>
                 <metainf dir="legal"/>
             </jar>
 
@@ -1040,23 +887,34 @@ under the License.
         </sequential>
     </macrodef>
 
-    <target name="compile-ooxml-xsds" unless="ooxml-compiled-xsds.present"
+    <target name="compile-ooxml-xsds"
         depends="init,check-compiled-ooxml-xsds"
+        unless="ooxml-compiled-xsds.present"
         description="Unpacks the OOXML xsd files, and compiles them into XmlBeans">
-        <compile-ooxml-xmlbean classes-jar="${ooxml.xsds.jar}" sources-jar="${ooxml.xsds.src.jar}">
+        <compile-ooxml-xmlbean
+            classes-jar="${ooxml.xsds.jar}"
+            sources-jar="${ooxml.xsds.src.jar}"
+            multi-src="${basedir}/src/multimodule/ooxml-schemas"
+            typesystemname="OoxmlSchemas"
+        >
             <xsds>
-                <zipfileset src="${ooxml.lib}/${ooxml.xsds.izip.1}"/>
+                <zipfileset src="${ooxml.xsds.izip.1}"/>
                 <fileset dir="${ooxml.visio.xsd.dir}"/>
-                <fileset dir="${ooxml.schema.xsdconfig.dir}" excludes="XAdES*.xsd"/>
+                <fileset dir="${ooxml.schema.xsdconfig.dir}" includes="ooxmlSchemas.xsdconfig,markup-compatibility.xsd"/>
             </xsds>
         </compile-ooxml-xmlbean>
+
         <!-- Now do the same for the security schemas -->
-        <compile-ooxml-xmlbean classes-jar="${ooxml.security.jar}" sources-jar="${ooxml.security.src.jar}">
+        <compile-ooxml-xmlbean
+            classes-jar="${ooxml.security.jar}"
+            sources-jar="${ooxml.security.src.jar}"
+            multi-src="${basedir}/src/multimodule/ooxml-security"
+            typesystemname="OoxmlSecurity"
+        >
             <xsds>
-                <zipfileset src="${ooxml.lib}/${ooxml.xsds.izip.2}" includes="opc-digSig.xsd,opc-relationships.xsd"/>
-                <fileset dir="${ooxml.lib}" includes="xmldsig*.xsd"/>
+                <zipfileset src="${ooxml.xsds.izip.2}" includes="opc-digSig.xsd,opc-relationships.xsd"/>
                 <fileset dir="${ooxml.security.xsd.dir}"/>
-                <fileset dir="${ooxml.schema.xsdconfig.dir}" includes="XAdES*.xsd,*.xsdconfig"/>
+                <fileset dir="${ooxml.schema.xsdconfig.dir}" includes="XAdES*.xsd,*.xsdconfig,xmldsig*.xsd"/>
             </xsds>
         </compile-ooxml-xmlbean>
     </target>
@@ -1095,42 +953,22 @@ under the License.
         <copy todir="${main.output.dir}">
             <fileset dir="${main.resource1.dir}"/>
         </copy>
-    </target>
 
-    <target name="generate-geometry" depends="fetch-ooxml-xsds" if="ignoreme">
-        <delete dir="${geometry.output.tmpdir}"/>
-        <unzip src="${ooxml.lib}/${ooxml.xsds.izip.1}" dest="${geometry.output.tmpdir}"/>
-        <exec executable="${env.JAVA_HOME}/bin/xjc">
-            <arg value="-p"/>
-            <arg value="${geometry.pkg}"/>
-            <arg value="-b"/>
-            <arg file="src/types/definitions/dml-shapeGeometry.xjb"/>
-            <arg value="-readOnly"/>
-            <arg value="-no-header"/>
-            <!--arg value="-npa"/ -->
-            <!--arg value="-mark-generated"/ -->
-            <!--arg value="-Xlocator"/ -->
-            <arg file="${geometry.output.tmpdir}/dml-shapeGeometry.xsd"/>
-            <arg value="-d"/>
-            <arg file="${geometry.output.tmpdir}"/>
-        </exec>
-        <copy file="src/java/org/apache/poi/POIDocument.java" tofile="${geometry.output.tmpdir}/apache-license.txt">
-            <filterchain>
-            <headfilter lines="16"/>
-            </filterchain>
-        </copy>
-        <copy todir="${main.src}">
-            <fileset dir="${geometry.output.tmpdir}" includes="**/*.java"/>
-             <filterchain>
-                 <concatfilter prepend="${geometry.output.tmpdir}/apache-license.txt"/>
-                 <!-- fix javadocs for java 8 doclint -->
-                 <replaceregex pattern="&amp;lt;(.*)>" replace="&amp;lt;\1&amp;gt;" flags="g"/>
-                 <fixcrlf eol="lf"/>
-             </filterchain>
-        </copy>
+
+        <mkdir dir="${main.output.dir}/META-INF/versions/9"/>
+
+        <javac release="9"
+               srcdir="${basedir}/src/multimodule/poi/java9"
+               destdir="${main.output.dir}/META-INF/versions/9"
+               includeantruntime="false"
+               fork="true"
+               modulepath="${main.lib}"
+               unless:true="${isJava8}">
+            <compilerarg line="--patch-module org.apache.poi.poi=${main.output.dir}"/>
+        </javac>
     </target>
 
-    <target name="compile-scratchpad" depends="compile-main,generate-geometry">
+    <target name="compile-scratchpad" depends="compile-main">
         <!-- compile the sources -->
         <javac target="${jdk.version.class}"
                source="${jdk.version.source}"
@@ -1983,6 +1821,11 @@ under the License.
         </sequential>
     </macrodef>
 
+    <target name="bla" depends="compile-main, compile-version, -manifest">
+        <maven-jar src="${main.output.dir}"/>
+    </target>
+
+
     <target name="jar" depends="compile, compile-version, compile-ooxml-lite, -manifest" description="Creates jar files for distribution">
         <maven-jar src="${main.output.dir}"/>
         <maven-jar src="${scratchpad.output.dir}"/>
@@ -2235,6 +2078,8 @@ under the License.
                 <exclude name="resources/ooxml/org/apache/poi/xssf/usermodel/presetTableStyles.xml" />
                 <exclude name="ooxml/resources/org/apache/poi/xdgf/visio.xsd" />
                 <exclude name="ooxml/resources/org/apache/poi/schemas/XAdES*.xsd" />
+                <exclude name="ooxml/resources/org/apache/poi/schemas/xmldsig-core-schema.xsd" />
+                <exclude name="ooxml/resources/org/apache/poi/schemas/*.zip" />
                 <exclude name="**/*.iml" />
                 <exclude name="documentation/resources/images/pb-poi.cdr"/>
                 <exclude name="scratchpad/models/poi-hdf.zargo"/>
@@ -2366,10 +2211,6 @@ under the License.
             <auxClasspath path="${main.jmh.jar}"/>
             <auxClasspath path="${main.jmhAnnotation.jar}"/>
             <auxClasspath path="${main.ant.jar}" />
-            <auxClasspath path="${main.xmlbind.jar}" />
-            <auxClasspath path="${main.xmlbind-impl.jar}" />
-            <auxClasspath path="${main.xmlbind-core.jar}" />
-            <auxClasspath path="${main.activation.jar}" />
             <auxClasspath path="${main.com.zaxxer.jar}" />
             <auxClasspath path="${svg.batik-all.jar}"/>
             <auxClasspath path="${svg.xml-apis-ext.jar}"/>
@@ -2550,7 +2391,13 @@ under the License.
         </fail>
 
         <path id="path.svnant">
-            <fileset dir="${compile.lib}/svnant" includes="*.jar"/>
+            <pathelement location="${dist.svnant.jar}"/>
+            <pathelement location="${dist.svnclient.jar}"/>
+            <pathelement location="${dist.svnkit.jar}"/>
+            <pathelement location="${dist.svnkit-javahl16.jar}"/>
+            <pathelement location="${dist.sqljet.jar}"/>
+            <pathelement location="${dist.antlr.jar}"/>
+            <pathelement location="${dist.sequence-library.jar}"/>
         </path>
         <taskdef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
 
@@ -2843,15 +2690,15 @@ under the License.
          Doesn't work with Java6 - the https urls can't be accessed via loadChecksum
      -->
     <target name="update-download">
-        <downloadfile src="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/missing-link/ml-ant-http-1.1.3.zip" dest="${compile.lib}/ml-ant-http-1.1.3.zip"/>
-        <unzip src="${compile.lib}/ml-ant-http-1.1.3.zip" dest="${compile.lib}">
+        <downloadfile src="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/missing-link/ml-ant-http-1.1.3.zip" dest="${util.lib}/ml-ant-http-1.1.3.zip"/>
+        <unzip src="${util.lib}/ml-ant-http-1.1.3.zip" dest="${util.lib}">
             <patternset>
                 <include name="ml-ant-http-1.1.3.jar"/>
             </patternset>
         </unzip>
         <taskdef name="http" classname="org.missinglink.ant.task.http.HttpClientTask">
             <classpath>
-                <path location="${compile.lib}/ml-ant-http-1.1.3.jar"/>
+                <path location="${util.lib}/ml-ant-http-1.1.3.jar"/>
             </classpath>
         </taskdef>
 

Propchange: poi/trunk/lib/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue May  5 13:36:30 2020
@@ -1,3 +1,9 @@
 *.jar
 jacoco-*.zip
 findbugs*.zip
+main
+main-tests
+ooxml
+ooxml-tests
+ooxml-provided
+util

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/DrawSimpleShape.java Tue May  5 13:36:30 2020
@@ -225,7 +225,9 @@ public class DrawSimpleShape extends Dra
                 break;
             case STEALTH:
             case ARROW:
-                p = new Path(false, true);
+                p = new Path();
+                p.setFill(PaintModifier.NONE);
+                p.setStroke(true);
                 Path2D.Double arrow = new Path2D.Double();
                 arrow.moveTo((-lineWidth * scaleX), (-lineWidth * scaleY / 2));
                 arrow.lineTo(0, 0);
@@ -297,7 +299,9 @@ public class DrawSimpleShape extends Dra
                 break;
             case STEALTH:
             case ARROW:
-                p = new Path(false, true);
+                p = new Path();
+                p.setFill(PaintModifier.NONE);
+                p.setStroke(true);
                 Path2D.Double arrow = new Path2D.Double();
                 arrow.moveTo((lineWidth * scaleX), (-lineWidth * scaleY / 2));
                 arrow.lineTo(0, 0);

Added: poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustHandle.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustHandle.java?rev=1877398&view=auto
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustHandle.java (added)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustHandle.java Tue May  5 13:36:30 2020
@@ -0,0 +1,23 @@
+/*
+ *  ====================================================================
+ *    Licensed to the Apache Software Foundation (ASF) under one or more
+ *    contributor license agreements.  See the NOTICE file distributed with
+ *    this work for additional information regarding copyright ownership.
+ *    The ASF licenses this file to You under the Apache License, Version 2.0
+ *    (the "License"); you may not use this file except in compliance with
+ *    the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS,
+ *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *    See the License for the specific language governing permissions and
+ *    limitations under the License.
+ * ====================================================================
+ */
+
+package org.apache.poi.sl.draw.geom;
+
+public interface AdjustHandle {
+}

Propchange: poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustHandle.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustPoint.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustPoint.java?rev=1877398&view=auto
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustPoint.java (added)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustPoint.java Tue May  5 13:36:30 2020
@@ -0,0 +1,119 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.sl.draw.geom;
+
+import java.util.Objects;
+
+/**
+ * <p>Java class for CT_AdjPoint2D complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_AdjPoint2D"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attribute name="x" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" /&gt;
+ *       &lt;attribute name="y" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ *
+ *
+ */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_AdjPoint2D")
+public class AdjustPoint {
+
+    // @XmlAttribute(name = "x", required = true)
+    private String x;
+    // @XmlAttribute(name = "y", required = true)
+    private String y;
+
+
+    /**
+     * Gets the value of the x property.
+     *
+     * @return
+     *     possible object is
+     *     {@link String }
+     *
+     */
+    public String getX() {
+        return x;
+    }
+
+    /**
+     * Sets the value of the x property.
+     *
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *
+     */
+    public void setX(String value) {
+        this.x = value;
+    }
+
+    public boolean isSetX() {
+        return (this.x!= null);
+    }
+
+    /**
+     * Gets the value of the y property.
+     *
+     * @return
+     *     possible object is
+     *     {@link String }
+     *
+     */
+    public String getY() {
+        return y;
+    }
+
+    /**
+     * Sets the value of the y property.
+     *
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *
+     */
+    public void setY(String value) {
+        this.y = value;
+    }
+
+    public boolean isSetY() {
+        return (this.y!= null);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof AdjustPoint)) return false;
+        AdjustPoint that = (AdjustPoint) o;
+        return Objects.equals(x, that.x) &&
+                Objects.equals(y, that.y);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(x, y);
+    }
+}

Propchange: poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustPoint.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustValue.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustValue.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustValue.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/AdjustValue.java Tue May  5 13:36:30 2020
@@ -19,17 +19,11 @@
 
 package org.apache.poi.sl.draw.geom;
 
-import org.apache.poi.sl.draw.binding.CTGeomGuide;
-
 /**
  * Represents a shape adjust values (see section 20.1.9.5 in the spec)
  */
 public class AdjustValue extends Guide {
 
-    public AdjustValue(CTGeomGuide gd) {
-        super(gd.getName(), gd.getFmla());
-    }
-
     @Override
     public double evaluate(Context ctx){
         String name = getName();

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/ArcToCommand.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/ArcToCommand.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/ArcToCommand.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/ArcToCommand.java Tue May  5 13:36:30 2020
@@ -24,28 +24,64 @@ import static org.apache.poi.sl.draw.geo
 import java.awt.geom.Arc2D;
 import java.awt.geom.Path2D;
 import java.awt.geom.Point2D;
+import java.util.Objects;
 
-import org.apache.poi.sl.draw.binding.CTPath2DArcTo;
 import org.apache.poi.util.Internal;
 
 /**
  * ArcTo command within a shape path in DrawingML:
- * {@code &lt;arcTo wR="wr" hR="hr" stAng="stAng" swAng="swAng"/&gt;}<p>
- *
- * Where {@code wr} and {@code wh} are the height and width radiuses
+ * {@code &lt;arcTo wR="wr" hR="hr" stAng="stAng" swAng="swAng"/&gt;}
+ * <p>
+ * Where {@code wr} and {@code wh} are the height and width radii
  * of the supposed circle being used to draw the arc.  This gives the circle
  * a total height of (2 * hR)  and a total width of (2 * wR)
- *
+ * <p>
  * stAng is the {@code start} angle and {@code swAng} is the swing angle
+ * <p>
+ * Java class for CT_Path2DArcTo complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_Path2DArcTo"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attribute name="wR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" /&gt;
+ *       &lt;attribute name="hR" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjCoordinate" /&gt;
+ *       &lt;attribute name="stAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" /&gt;
+ *       &lt;attribute name="swAng" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
  */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_Path2DArcTo")
 public class ArcToCommand implements PathCommand {
-    private String hr, wr, stAng, swAng;
 
-    ArcToCommand(CTPath2DArcTo arc){
-        hr = arc.getHR();
-        wr = arc.getWR();
-        stAng = arc.getStAng();
-        swAng = arc.getSwAng();
+    // @XmlAttribute(name = "wR", required = true)
+    private String wr;
+    // @XmlAttribute(name = "hR", required = true)
+    private String hr;
+    // @XmlAttribute(name = "stAng", required = true)
+    private String stAng;
+    // @XmlAttribute(name = "swAng", required = true)
+    private String swAng;
+
+    public void setHR(String hr) {
+        this.hr = hr;
+    }
+
+    public void setWR(String wr) {
+        this.wr = wr;
+    }
+
+    public void setStAng(String stAng) {
+        this.stAng = stAng;
+    }
+
+    public void setSwAng(String swAng) {
+        this.swAng = swAng;
     }
 
     @Override
@@ -141,4 +177,21 @@ public class ArcToCommand implements Pat
         awtAngle = Math.toDegrees(Math.atan2(Math.tan(Math.toRadians(awtAngle2)), aspect)) + awtAngle3;
         return awtAngle;
     }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof ArcToCommand)) return false;
+        ArcToCommand that = (ArcToCommand) o;
+        return Objects.equals(wr, that.wr) &&
+                Objects.equals(hr, that.hr) &&
+                Objects.equals(stAng, that.stAng) &&
+                Objects.equals(swAng, that.swAng);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(wr, hr, stAng, swAng);
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/ClosePathCommand.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/ClosePathCommand.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/ClosePathCommand.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/ClosePathCommand.java Tue May  5 13:36:30 2020
@@ -21,13 +21,39 @@ package org.apache.poi.sl.draw.geom;
 
 import java.awt.geom.Path2D;
 
+/**
+ * <p>Java class for CT_Path2DClose complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_Path2DClose"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ *
+ *
+ */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_Path2DClose")
 public class ClosePathCommand implements PathCommand {
 
-    ClosePathCommand(){
-    }
-
     @Override
     public void execute(Path2D.Double path, Context ctx){
         path.closePath();
     }
+
+
+    @Override
+    public int hashCode() {
+        return 0xC105E;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        return (obj instanceof ClosePathCommand);
+    }
 }

Added: poi/trunk/src/java/org/apache/poi/sl/draw/geom/ConnectionSite.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/ConnectionSite.java?rev=1877398&view=auto
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/ConnectionSite.java (added)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/ConnectionSite.java Tue May  5 13:36:30 2020
@@ -0,0 +1,119 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.sl.draw.geom;
+
+import java.util.Objects;
+
+/**
+ * <p>Java class for CT_ConnectionSite complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_ConnectionSite"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="pos" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/&gt;
+ *       &lt;/sequence&gt;
+ *       &lt;attribute name="ang" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_AdjAngle" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ *
+ *
+ */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_ConnectionSite", propOrder = {"pos"})
+public final class ConnectionSite {
+
+    // @XmlElement(required = true)
+    private final AdjustPoint pos = new AdjustPoint();
+    // @XmlAttribute(name = "ang", required = true)
+    private String ang;
+
+    /**
+     * Gets the value of the pos property.
+     *
+     * @return
+     *     possible object is
+     *     {@link AdjustPoint }
+     *
+     */
+    public AdjustPoint getPos() {
+        return pos;
+    }
+
+    /**
+     * Sets the value of the pos property.
+     *
+     * @param pos
+     *     allowed object is
+     *     {@link AdjustPoint }
+     *
+     */
+    public void setPos(AdjustPoint pos) {
+        if (pos != null) {
+            this.pos.setX(pos.getX());
+            this.pos.setY(pos.getY());
+        }
+    }
+
+    /**
+     * Gets the value of the ang property.
+     *
+     * @return
+     *     possible object is
+     *     {@link String }
+     *
+     */
+    public String getAng() {
+        return ang;
+    }
+
+    /**
+     * Sets the value of the ang property.
+     *
+     * @param value
+     *     allowed object is
+     *     {@link String }
+     *
+     */
+    public void setAng(String value) {
+        this.ang = value;
+    }
+
+    public boolean isSetAng() {
+        return (this.ang!= null);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof ConnectionSite)) return false;
+        ConnectionSite that = (ConnectionSite) o;
+        return Objects.equals(pos, that.pos) &&
+                Objects.equals(ang, that.ang);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pos, ang);
+    }
+}

Propchange: poi/trunk/src/java/org/apache/poi/sl/draw/geom/ConnectionSite.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/CurveToCommand.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/CurveToCommand.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/CurveToCommand.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/CurveToCommand.java Tue May  5 13:36:30 2020
@@ -20,29 +20,82 @@
 package org.apache.poi.sl.draw.geom;
 
 import java.awt.geom.Path2D;
+import java.util.Objects;
 
-import org.apache.poi.sl.draw.binding.CTAdjPoint2D;
+/**
+ * <p>Java class for CT_Path2DCubicBezierTo complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_Path2DCubicBezierTo"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D" maxOccurs="3" minOccurs="3"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ *
+ *
+ */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_Path2DCubicBezierTo", propOrder = {"pt"})
+public final class CurveToCommand implements PathCommand {
 
-public class CurveToCommand implements PathCommand {
-    private String arg1, arg2, arg3, arg4, arg5, arg6;
+    // @XmlElement(required = true)
+    private final AdjustPoint pt1 = new AdjustPoint();
+    // @XmlElement(required = true)
+    private final AdjustPoint pt2 = new AdjustPoint();
+    // @XmlElement(required = true)
+    private final AdjustPoint pt3 = new AdjustPoint();
 
-    CurveToCommand(CTAdjPoint2D pt1, CTAdjPoint2D pt2, CTAdjPoint2D pt3){
-        arg1 = pt1.getX();
-        arg2 = pt1.getY();
-        arg3 = pt2.getX();
-        arg4 = pt2.getY();
-        arg5 = pt3.getX();
-        arg6 = pt3.getY();
+    public void setPt1(AdjustPoint pt1) {
+        if (pt1 != null) {
+            this.pt1.setX(pt1.getX());
+            this.pt1.setY(pt1.getY());
+        }
+    }
+
+    public void setPt2(AdjustPoint pt2) {
+        if (pt2 != null) {
+            this.pt2.setX(pt2.getX());
+            this.pt2.setY(pt2.getY());
+        }
+    }
+
+    public void setPt3(AdjustPoint pt3) {
+        if (pt3 != null) {
+            this.pt3.setX(pt3.getX());
+            this.pt3.setY(pt3.getY());
+        }
     }
 
     @Override
     public void execute(Path2D.Double path, Context ctx){
-        double x1 = ctx.getValue(arg1);
-        double y1 = ctx.getValue(arg2);
-        double x2 = ctx.getValue(arg3);
-        double y2 = ctx.getValue(arg4);
-        double x3 = ctx.getValue(arg5);
-        double y3 = ctx.getValue(arg6);
+        double x1 = ctx.getValue(pt1.getX());
+        double y1 = ctx.getValue(pt1.getY());
+        double x2 = ctx.getValue(pt2.getX());
+        double y2 = ctx.getValue(pt2.getY());
+        double x3 = ctx.getValue(pt3.getX());
+        double y3 = ctx.getValue(pt3.getY());
         path.curveTo(x1, y1, x2, y2, x3, y3);
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof CurveToCommand)) return false;
+        CurveToCommand that = (CurveToCommand) o;
+        return Objects.equals(pt1, that.pt1) &&
+                Objects.equals(pt2, that.pt2) &&
+                Objects.equals(pt3, that.pt3);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pt1, pt2, pt3);
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/CustomGeometry.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/CustomGeometry.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/CustomGeometry.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/CustomGeometry.java Tue May  5 13:36:30 2020
@@ -22,56 +22,89 @@ package org.apache.poi.sl.draw.geom;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
-import org.apache.poi.sl.draw.binding.CTCustomGeometry2D;
-import org.apache.poi.sl.draw.binding.CTGeomGuide;
-import org.apache.poi.sl.draw.binding.CTGeomGuideList;
-import org.apache.poi.sl.draw.binding.CTGeomRect;
-import org.apache.poi.sl.draw.binding.CTPath2D;
-import org.apache.poi.sl.draw.binding.CTPath2DList;
+import java.util.Objects;
 
 /**
  * Definition of a custom geometric shape
+ *
+ *
+ * <p>Java class for CT_CustomGeometry2D complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_CustomGeometry2D"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="avLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/&gt;
+ *         &lt;element name="gdLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomGuideList" minOccurs="0"/&gt;
+ *         &lt;element name="ahLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjustHandleList" minOccurs="0"/&gt;
+ *         &lt;element name="cxnLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_ConnectionSiteList" minOccurs="0"/&gt;
+ *         &lt;element name="rect" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_GeomRect" minOccurs="0"/&gt;
+ *         &lt;element name="pathLst" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_Path2DList"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
  */
-public class CustomGeometry implements Iterable<Path>{
-    final List<Guide> adjusts = new ArrayList<>();
+public final class CustomGeometry implements Iterable<Path>{
+    final List<AdjustValue> adjusts = new ArrayList<>();
     final List<Guide> guides = new ArrayList<>();
     final List<Path> paths = new ArrayList<>();
+    final List<AdjustHandle> handles = new ArrayList<>();
+    final List<ConnectionSite> connections = new ArrayList<>();
     Path textBounds;
 
-    public CustomGeometry(CTCustomGeometry2D geom) {
-        CTGeomGuideList avLst = geom.getAvLst();
-        if(avLst != null) {
-            for(CTGeomGuide gd : avLst.getGd()){
-                adjusts.add(new AdjustValue(gd));
-            }
-        }
-
-        CTGeomGuideList gdLst = geom.getGdLst();
-        if(gdLst != null) {
-            for(CTGeomGuide gd : gdLst.getGd()){
-                guides.add(new Guide(gd));
-            }
-        }
-
-        CTPath2DList pathLst = geom.getPathLst();
-        if(pathLst != null) {
-            for(CTPath2D spPath : pathLst.getPath()){
-                paths.add(new Path(spPath));
-            }
-        }
-
-        CTGeomRect rect = geom.getRect();
-        if(rect != null) {
-            textBounds = new Path();
-            textBounds.addCommand(new MoveToCommand(rect.getL(), rect.getT()));
-            textBounds.addCommand(new LineToCommand(rect.getR(), rect.getT()));
-            textBounds.addCommand(new LineToCommand(rect.getR(), rect.getB()));
-            textBounds.addCommand(new LineToCommand(rect.getL(), rect.getB()));
-            textBounds.addCommand(new ClosePathCommand());
-        }
+    public void addAdjustGuide(AdjustValue guide) {
+        adjusts.add(guide);
+    }
+
+    public void addGeomGuide(Guide guide) {
+        guides.add(guide);
+    }
+
+    public void addAdjustHandle(AdjustHandle handle) {
+        handles.add(handle);
+    }
+
+    public void addConnectionSite(ConnectionSite connection) {
+        connections.add(connection);
+    }
+
+    public void addPath(Path path) {
+        paths.add(path);
     }
 
+    public void setTextBounds(String left, String top, String right, String bottom) {
+        textBounds = new Path();
+        textBounds.addCommand(moveTo(left,top));
+        textBounds.addCommand(lineTo(right, top));
+        textBounds.addCommand(lineTo(right, bottom));
+        textBounds.addCommand(lineTo(left, bottom));
+        textBounds.addCommand(new ClosePathCommand());
+    }
+
+    private static MoveToCommand moveTo(String x, String y) {
+        AdjustPoint pt = new AdjustPoint();
+        pt.setX(x);
+        pt.setY(y);
+        MoveToCommand cmd = new MoveToCommand();
+        cmd.setPt(pt);
+        return cmd;
+    }
+
+    private static LineToCommand lineTo(String x, String y) {
+        AdjustPoint pt = new AdjustPoint();
+        pt.setX(x);
+        pt.setY(y);
+        LineToCommand cmd = new LineToCommand();
+        cmd.setPt(pt);
+        return cmd;
+    }
+
+
     @Override
     public Iterator<Path> iterator() {
         return paths.iterator();
@@ -80,4 +113,23 @@ public class CustomGeometry implements I
     public Path getTextBounds(){
         return textBounds;
     }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof CustomGeometry)) return false;
+        CustomGeometry that = (CustomGeometry) o;
+        return Objects.equals(adjusts, that.adjusts) &&
+                Objects.equals(guides, that.guides) &&
+                Objects.equals(handles, that.handles) &&
+                Objects.equals(connections, that.connections) &&
+                Objects.equals(textBounds, that.textBounds) &&
+                Objects.equals(paths, that.paths);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(adjusts, guides, handles, connections, textBounds, paths);
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/Guide.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/Guide.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/Guide.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/Guide.java Tue May  5 13:36:30 2020
@@ -21,13 +21,29 @@ package org.apache.poi.sl.draw.geom;
 
 import static java.lang.Math.*;
 
+import java.util.Objects;
 import java.util.regex.Pattern;
 
-import org.apache.poi.sl.draw.binding.CTGeomGuide;
-
 /**
- * A simple pattern parser of shape guide formulas in DrawingML
+ * <p>Java class for CT_GeomGuide complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_GeomGuide"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;attribute name="name" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideName" /&gt;
+ *       &lt;attribute name="fmla" use="required" type="{http://schemas.openxmlformats.org/drawingml/2006/main}ST_GeomGuideFormula" /&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ *
+ *
  */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_GeomGuide")
 public class Guide implements Formula {
     enum Op {
         muldiv,addsub,adddiv,ifelse,val,abs,sqrt,max,min,at2,sin,cos,tan,cat2,sat2,pin,mod
@@ -35,20 +51,30 @@ public class Guide implements Formula {
 
     private static final Pattern WHITESPACE = Pattern.compile("\\s+");
 
-    @SuppressWarnings({"FieldCanBeLocal", "unused"})
-    private final String name, fmla;
-    private final Op op;
-    private final String[] operands;
+    // @XmlAttribute(name = "name", required = true)
+    // @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+    private String name;
+    // @XmlAttribute(name = "fmla", required = true)
+    private String fmla;
+
+    private Op op;
+    private String[] operands;
 
+    public String getName(){
+        return name;
+    }
 
-    public Guide(CTGeomGuide gd) {
-        this(gd.getName(), gd.getFmla());
+    public void setName(String name) {
+        this.name = name;
     }
 
-    public Guide(String nm, String fm){
-        name = nm;
-        fmla = fm;
-        operands = WHITESPACE.split(fm);
+    public String getFmla() {
+        return fmla;
+    }
+
+    public void setFmla(String fmla) {
+        this.fmla = fmla;
+        operands = WHITESPACE.split(fmla);
         switch (operands[0]) {
             case "*/": op = Op.muldiv; break;
             case "+-": op = Op.addsub; break;
@@ -58,10 +84,6 @@ public class Guide implements Formula {
         }
     }
 
-    public String getName(){
-        return name;
-    }
-
     @Override
     public double evaluate(Context ctx) {
         double x = (operands.length > 1) ? ctx.getValue(operands[1]) : 0;
@@ -126,4 +148,18 @@ public class Guide implements Formula {
                 return 0;
         }
     }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        Guide guide = (Guide) o;
+        return Objects.equals(name, guide.name) &&
+                Objects.equals(fmla, guide.fmla);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(name, fmla);
+    }
 }

Modified: poi/trunk/src/java/org/apache/poi/sl/draw/geom/LineToCommand.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/sl/draw/geom/LineToCommand.java?rev=1877398&r1=1877397&r2=1877398&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/sl/draw/geom/LineToCommand.java (original)
+++ poi/trunk/src/java/org/apache/poi/sl/draw/geom/LineToCommand.java Tue May  5 13:36:30 2020
@@ -20,26 +20,63 @@
 package org.apache.poi.sl.draw.geom;
 
 import java.awt.geom.Path2D;
+import java.util.Objects;
 
-import org.apache.poi.sl.draw.binding.CTAdjPoint2D;
+/**
+ * <p>Java class for CT_Path2DLineTo complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CT_Path2DLineTo"&gt;
+ *   &lt;complexContent&gt;
+ *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
+ *       &lt;sequence&gt;
+ *         &lt;element name="pt" type="{http://schemas.openxmlformats.org/drawingml/2006/main}CT_AdjPoint2D"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/restriction&gt;
+ *   &lt;/complexContent&gt;
+ * &lt;/complexType&gt;
+ * </pre>
+ *
+ *
+ */
+// @XmlAccessorType(XmlAccessType.FIELD)
+// @XmlType(name = "CT_Path2DLineTo", propOrder = {"pt"})
+public final class LineToCommand implements PathCommand {
 
-public class LineToCommand implements PathCommand {
-    private String arg1, arg2;
+    // @XmlElement(required = true)
+    private final AdjustPoint pt = new AdjustPoint();
 
-    LineToCommand(CTAdjPoint2D pt){
-        arg1 = pt.getX();
-        arg2 = pt.getY();
+    public AdjustPoint getPt() {
+        return pt;
     }
 
-    LineToCommand(String s1, String s2){
-        arg1 = s1;
-        arg2 = s2;
+    public void setPt(AdjustPoint pt) {
+        if (pt != null) {
+            this.pt.setX(pt.getX());
+            this.pt.setY(pt.getY());
+        }
     }
 
     @Override
     public void execute(Path2D.Double path, Context ctx){
-        double x = ctx.getValue(arg1);
-        double y = ctx.getValue(arg2);
+        double x = ctx.getValue(pt.getX());
+        double y = ctx.getValue(pt.getY());
         path.lineTo(x, y);
     }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof LineToCommand)) return false;
+        LineToCommand that = (LineToCommand) o;
+        return Objects.equals(pt, that.pt);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(pt);
+    }
 }



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