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 2016/04/09 23:44:49 UTC
svn commit: r1738389 - in /poi/tags/REL_3_15_BETA1: build.xml
src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
Author: kiwiwings
Date: Sat Apr 9 21:44:49 2016
New Revision: 1738389
URL: http://svn.apache.org/viewvc?rev=1738389&view=rev
Log:
close fileinputstream on second exception in ZipPackage
build.xml fix - maven artifacts aren't included in src-package
Modified:
poi/tags/REL_3_15_BETA1/build.xml
poi/tags/REL_3_15_BETA1/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
poi/tags/REL_3_15_BETA1/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
Modified: poi/tags/REL_3_15_BETA1/build.xml
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_15_BETA1/build.xml?rev=1738389&r1=1738388&r2=1738389&view=diff
==============================================================================
--- poi/tags/REL_3_15_BETA1/build.xml (original)
+++ poi/tags/REL_3_15_BETA1/build.xml Sat Apr 9 21:44:49 2016
@@ -42,6 +42,7 @@ under the License.
<description>The Apache POI project Ant build.</description>
<property name="version.id" value="3.15-beta1"/>
+ <property name="release.rc" value="RC1"/>
<property environment="env"/>
<!-- the repository to download jars from -->
@@ -518,18 +519,18 @@ under the License.
<include name="junit-3*"/>
<include name="junit-4.11*"/>
<include name="findbugs-*-2.0.3*"/>
- <include name="forbiddenapis-1.*.jar"/>
+ <include name="forbiddenapis-1.*.jar"/>
+ </fileset>
+ <fileset dir="${ooxml.lib}">
+ <!-- remove jars from previous versions, but not the current version -->
+ <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-security-1.0-sources.jar"/>
+ <include name="ooxml-security-1.0.jar"/>
</fileset>
- <fileset dir="${ooxml.lib}">
- <!-- remove jars from previous versions, but not the current version -->
- <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-security-1.0-sources.jar"/>
- <include name="ooxml-security-1.0.jar"/>
- </fileset>
<fileset dir="${compile.lib}">
<include name="xercesImpl-*.jar"/>
<include name="xmlsec-2.0.1.jar"/>
@@ -608,10 +609,10 @@ under the License.
<downloadfile src="${ooxml.curvesapi.url}" dest="${ooxml.curvesapi.jar}"/>
<downloadfile src="${ooxml.xmlbeans23.url}" dest="${ooxml.xmlbeans23.jar}.orig"/>
<downloadfile src="${ooxml.xmlbeans26.url}" dest="${ooxml.xmlbeans26.jar}.orig"/>
- <!-- remove piccolo parser, so we don't use unsafe calls to it instead of using jaxp -->
- <zip destfile="${ooxml.xmlbeans23.jar}">
- <zipfileset src="${ooxml.xmlbeans23.jar}.orig" excludes="org/apache/xmlbeans/impl/piccolo/**"/>
- </zip>
+ <!-- remove piccolo parser, so we don't use unsafe calls to it instead of using jaxp -->
+ <zip destfile="${ooxml.xmlbeans23.jar}">
+ <zipfileset src="${ooxml.xmlbeans23.jar}.orig" excludes="org/apache/xmlbeans/impl/piccolo/**"/>
+ </zip>
<zip destfile="${ooxml.xmlbeans26.jar}">
<zipfileset src="${ooxml.xmlbeans26.jar}.orig" excludes="org/apache/xmlbeans/impl/piccolo/**"/>
</zip>
@@ -754,7 +755,7 @@ under the License.
nopvr="@{nopvr}"
>
<classpath>
- <path location="${ooxml.xmlbeans23.jar}.orig"/>
+ <path location="${ooxml.xmlbeans23.jar}.orig"/>
</classpath>
</xmlbean>
@@ -763,24 +764,24 @@ under the License.
<replacevalue>org.apache.poi.POIXMLTypeLoader</replacevalue>
</replace>
- <!-- remove deprecated warnings, as we prefer the array methods - see #56854 -->
+ <!-- remove deprecated warnings, as we prefer the array methods - see #56854 -->
<replace dir="${xmlbean.sources.dir}" includes="**/*.java" excludes="**/impl/**">
<replacetoken><![CDATA[ * @deprecated
]]></replacetoken>
</replace>
<copy todir="${xmlbean.sources.dir}">
- <fileset dir="${ooxml.src}">
- <include name="org/apache/poi/POIXMLTypeLoader.java"/>
- <include name="org/apache/poi/util/DocumentHelper.java"/>
- <include name="org/apache/poi/util/SAXHelper.java"/>
- </fileset>
- <fileset dir="${main.src}">
- <include name="org/apache/poi/util/POILogFactory.java"/>
- <include name="org/apache/poi/util/POILogger.java"/>
+ <fileset dir="${ooxml.src}">
+ <include name="org/apache/poi/POIXMLTypeLoader.java"/>
+ <include name="org/apache/poi/util/DocumentHelper.java"/>
+ <include name="org/apache/poi/util/SAXHelper.java"/>
+ </fileset>
+ <fileset dir="${main.src}">
+ <include name="org/apache/poi/util/POILogFactory.java"/>
+ <include name="org/apache/poi/util/POILogger.java"/>
<include name="org/apache/poi/util/NullLogger.java"/>
<include name="org/apache/poi/util/Internal.java"/>
- </fileset>
+ </fileset>
</copy>
<javac target="${jdk.version.class}"
@@ -1162,7 +1163,7 @@ under the License.
<syspropertyset refid="junit.properties"/>
<jvmarg value="-ea"/>
<jvmarg value="-Xmx256m"/>
- <!-- jvmarg value="-Duser.timezone=UTC"/ -->
+ <!-- jvmarg value="-Duser.timezone=UTC"/ -->
<formatter type="plain"/>
<formatter type="xml"/>
<batchtest todir="${main.reports.test}">
@@ -1203,7 +1204,7 @@ under the License.
<classpath refid="test.scratchpad.classpath"/>
<syspropertyset refid="junit.properties"/>
<jvmarg value="-ea"/>
- <!-- jvmarg value="-Duser.timezone=UTC"/ -->
+ <!-- jvmarg value="-Duser.timezone=UTC"/ -->
<!--
YK: ensure that JUnit has enough memory to run tests.
Without the line below tests fail on Mac OS X with jdk-1.6.26
@@ -1244,10 +1245,10 @@ under the License.
failureproperty="ooxml.test.failed">
<classpath refid="@{classpath}"/>
<syspropertyset refid="junit.properties"/>
- <jvmarg value="-XX:MaxPermSize=256m"/>
- <jvmarg value="-Xmx768M"/>
+ <jvmarg value="-XX:MaxPermSize=256m"/>
+ <jvmarg value="-Xmx768M"/>
<jvmarg value="-ea"/>
- <!-- jvmarg value="-Duser.timezone=UTC"/ -->
+ <!-- jvmarg value="-Duser.timezone=UTC"/ -->
<formatter type="plain"/>
<formatter type="xml"/>
<batchtest todir="${ooxml.reports.test}">
@@ -1268,7 +1269,7 @@ under the License.
<path refid="ooxml.xmlsec.classpath"/>
</classpath>
<syspropertyset refid="junit.properties"/>
- <jvmarg value="-Xmx768M"/>
+ <jvmarg value="-Xmx768M"/>
<jvmarg value="-ea"/>
<formatter type="plain"/>
<formatter type="xml"/>
@@ -1427,9 +1428,9 @@ under the License.
<echo>Broken links:</echo>
<echo file="${build.site}/../tmp/brokenlinks.txt"/>
- <fixcrlf srcdir="${build.site}" includes="**/*.html,**/*.css" eol="unix" eof="remove" />
+ <fixcrlf srcdir="${build.site}" includes="**/*.html,**/*.css" eol="unix" eof="remove" />
- <touch>
+ <touch>
<fileset dir="${build.site}"/>
</touch>
</target>
@@ -1592,11 +1593,11 @@ under the License.
<property name="build.maven.javadocs" location="build/tmp/maven-javadocs"/>
<!-- Build and package the main javadocs -->
- <maven-javadocs src="${main.src}" dest="${jar.name}"/>
+ <maven-javadocs src="${main.src}" dest="${jar.name}"/>
<!-- Build and package the scratchpad javadocs -->
- <maven-javadocs src="${scratchpad.src}" dest="${jar.name}-scratchpad"/>
+ <maven-javadocs src="${scratchpad.src}" dest="${jar.name}-scratchpad"/>
<!-- Build and package the ooxml javadocs -->
- <maven-javadocs src="${ooxml.src}" dest="${jar.name}-ooxml"/>
+ <maven-javadocs src="${ooxml.src}" dest="${jar.name}-ooxml"/>
</target>
<macrodef name="maven-javadocs">
@@ -1626,7 +1627,7 @@ under the License.
</macrodef>
<target name="release-notes" depends="init">
- <copy file="src/documentation/RELEASE-NOTES.txt" todir="build/dist/" overwrite="true">
+ <copy file="src/documentation/RELEASE-NOTES.txt" todir="build/dist/" overwrite="true">
<filterset>
<filter token="VERSION" value="${version.id}"/>
<filter token="DSTAMP" value="${DSTAMP}"/>
@@ -1636,19 +1637,47 @@ under the License.
</target>
<target name="assemble" depends="jar,jar-src,jar-javadocs">
- <!-- jars to include in binary assemblies -->
- <patternset id="bin.dist.jars">
- <include name="${jar.name}-${version.id}-${DSTAMP}.jar"/>
- <include name="${jar.name}-scratchpad-${version.id}-${DSTAMP}.jar"/>
- <include name="${jar.name}-ooxml-${version.id}-${DSTAMP}.jar"/>
- <include name="${jar.name}-examples-${version.id}-${DSTAMP}.jar"/>
- <include name="${jar.name}-ooxml-schemas-${version.id}-${DSTAMP}.jar"/>
- <include name="${jar.name}-excelant-${version.id}-${DSTAMP}.jar"/>
- </patternset>
+ <property name="zipdir" value="${jar.name}-${version.id}"/>
+
+ <mappedresources id="legal-files" cache="true">
+ <fileset dir="legal"/>
+ <globmapper from="*" to="${zipdir}/*"/>
+ </mappedresources>
+
+ <!-- jars to include in binary assemblies -->
+ <union id="bin-files" cache="true">
+ <mappedresources refid="legal-files"/>
+ <mappedresources cache="true">
+ <fileset dir="${main.lib}">
+ <include name="commons-codec-*.jar"/>
+ <include name="commons-logging-*.jar"/>
+ <include name="junit-*.jar"/>
+ <include name="log4j-*.jar"/>
+ </fileset>
+ <globmapper from="*" to="${zipdir}/lib/*"/>
+ </mappedresources>
+ <mappedresources cache="true">
+ <fileset dir="${ooxml.lib}" includes="xmlbeans-2.6.0.jar.orig,curvesapi-*.jar"/>
+ <regexpmapper from="^(.*\.jar)(\.orig)?$$" to="${zipdir}/ooxml-lib/\1"/>
+ </mappedresources>
+ <mappedresources cache="true">
+ <fileset dir="${dist.dir}/maven" includes="**/*.jar" excludes="**/*-javadoc.jar,**/*-sources.jar"/>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="*" to="${zipdir}/*"/>
+ </chainedmapper>
+ </mappedresources>
+ <mappedresources cache="true">
+ <fileset dir="${build.site}"/>
+ <globmapper from="*" to="${zipdir}/docs/*"/>
+ </mappedresources>
+ </union>
<!-- patterns to exclude from source assemblies -->
- <patternset id="src.dist.patterns"
- excludes="build/**,
+ <union id="src-files" cache="true">
+ <mappedresources refid="legal-files"/>
+ <mappedresources cache="true">
+ <fileset dir="." excludes="build/**,
dist*/**,
maven/**,
lib/**,
@@ -1666,71 +1695,31 @@ under the License.
.classpath,
.settings/**,
.project"/>
-
- <property name="zipdir" value="${jar.name}-${version.id}"/>
+ <globmapper from="*" to="${zipdir}/*"/>
+ </mappedresources>
+ </union>
<zip destfile="${dist.dir}/${jar.name}-bin-${version.id}-${DSTAMP}.zip">
- <zipfileset dir="legal/" prefix="${zipdir}"/>
- <zipfileset dir="${main.lib}" prefix="${zipdir}/lib">
- <include name="commons-codec-*.jar"/>
- <include name="commons-logging-*.jar"/>
- <include name="junit-*.jar"/>
- <include name="log4j-*.jar"/>
- </zipfileset>
- <zipfileset dir="${ooxml.lib}" prefix="${zipdir}/ooxml-lib">
- <include name="xmlbeans-2.6*.jar"/>
- <include name="curvesapi-*.jar"/>
- </zipfileset>
- <zipfileset dir="${dist.dir}" prefix="${zipdir}">
- <patternset refid="bin.dist.jars"/>
- </zipfileset>
- <zipfileset dir="${build.site}" prefix="${zipdir}/docs"/>
+ <union refid="bin-files"/>
</zip>
+ <tar destfile="${dist.dir}/${jar.name}-bin-${version.id}-${DSTAMP}.tar.gz" longfile="gnu" compression="gzip">
+ <union refid="bin-files"/>
+ </tar>
+
<zip destfile="${dist.dir}/${jar.name}-src-${version.id}-${DSTAMP}.zip">
- <zipfileset dir="legal/" prefix="${zipdir}" />
- <zipfileset dir="." prefix="${zipdir}">
- <patternset refid="src.dist.patterns"/>
- </zipfileset>
+ <union refid="src-files"/>
</zip>
- <tar destfile="${dist.dir}/${jar.name}-bin-${version.id}-${DSTAMP}.tar.gz"
- longfile="gnu"
- compression="gzip">
- <tarfileset dir="legal/" prefix="${zipdir}"/>
- <zipfileset dir="${main.lib}" prefix="${zipdir}/lib">
- <include name="commons-codec-*.jar"/>
- <include name="commons-logging-*.jar"/>
- <include name="junit-*.jar"/>
- <include name="log4j-*.jar"/>
- </zipfileset>
- <tarfileset dir="${ooxml.lib}" prefix="${zipdir}/ooxml-lib">
- <include name="xmlbeans-2.6*.jar"/>
- <include name="curvesapi-*.jar"/>
- </tarfileset>
- <tarfileset dir="${build.site}" prefix="${zipdir}/docs"/>
- <tarfileset dir="${dist.dir}" prefix="${zipdir}">
- <patternset refid="bin.dist.jars"/>
- </tarfileset>
- </tar>
-
- <tar destfile="${dist.dir}/${jar.name}-src-${version.id}-${DSTAMP}.tar.gz"
- longfile="gnu"
- compression="gzip">
- <tarfileset dir="legal/" prefix="${zipdir}" />
- <tarfileset dir="." prefix="${zipdir}">
- <patternset refid="src.dist.patterns"/>
- </tarfileset>
+ <tar destfile="${dist.dir}/${jar.name}-src-${version.id}-${DSTAMP}.tar.gz" longfile="gnu" compression="gzip">
+ <union refid="src-files"/>
</tar>
- <!-- script to create signatures and hashes -->
- <copy file="maven/multisign.sh" todir="${dist.dir}"/>
-
<echo>Creating Maven POMs</echo>
<antcall target="maven-poms"/>
<echo>Distribution located in ${dist.dir}</echo>
- <echo>Use ${dist.dir}/multisign.sh to create md5 checksums and GPG signatures</echo>
+ <echo>Use "ant dist-checksum" to create md5/sha1 checksums and GPG signatures</echo>
</target>
<target name="osgi" depends="mvn-install">
@@ -1801,15 +1790,15 @@ under the License.
</fileset>
</rat:report>
- <!-- remove clutter to compact build output -->
+ <!-- remove clutter to compact build output -->
<!-- replaceregexp doesn't work within loadfile ... -->
<replaceregexp file="${rat.report}" match="\s+Printing headers for files without AL header.++" replace="" flags="s"/>
<loadfile property="rat.reportcontent" srcFile="${rat.report}">
<filterchain>
- <linecontainsregexp negate="true">
- <regexp pattern="^\s+(AL|B|N)\s+"/>
- </linecontainsregexp>
+ <linecontainsregexp negate="true">
+ <regexp pattern="^\s+(AL|B|N)\s+"/>
+ </linecontainsregexp>
</filterchain>
</loadfile>
<echo>${rat.reportcontent}</echo>
@@ -1872,7 +1861,7 @@ under the License.
</target>
<target name="findbugs">
- <!-- NOTE: we did not update to 3.x yet because it requires Java 7, but we are still supporting Java 6 currently! -->
+ <!-- NOTE: we did not update to 3.x yet because it requires Java 7, but we are still supporting Java 6 currently! -->
<downloadfile
src="http://prdownloads.sourceforge.net/findbugs/findbugs-noUpdateChecks-2.0.3.zip?download"
dest="${main.lib}/findbugs-noUpdateChecks-2.0.3.zip"/>
@@ -2025,8 +2014,33 @@ under the License.
<nexus-upload artifactId="poi-scratchpad"/>
</target>
- <!-- experimentel release preparation ... tbd. ... -->
- <target name="release-prep" depends="init,fetch-svn-jars,load-maven-server-settings">
+ <target name="-init-svn" depends="init,fetch-svn-jars,load-maven-server-settings">
+ <!-- JAVA_HOME needs to point to a JRE/JDK7+, otherwise the svn/https connection throws a "Could not generate DH keypair"-->
+ <fail message="Environment needs to point to a java 7+">
+ <condition>
+ <or>
+ <equals arg1="${ant.java.version}" arg2="1.6"/>
+ <equals arg1="${ant.java.version}" arg2="1.5"/>
+ </or>
+ </condition>
+ </fail>
+
+ <path id="path.svnant">
+ <fileset dir="${compile.lib}/svnant" includes="*.jar"/>
+ </path>
+ <taskdef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
+
+ <svnSetting
+ svnkit="true"
+ javahl="false"
+ username="${settings.apache-id.username}"
+ password="${settings.apache-id.password}"
+ id="svn.settings"
+ />
+ </target>
+
+ <!-- experimental release preparation ... tbd. ... -->
+ <target name="release-prep1" depends="-init-svn" description="update the documentation and create the svn tag - needs Java7+">
<local name="tstamp_rel"/>
<local name="tstamp_next"/>
<local name="rel_next"/>
@@ -2057,19 +2071,6 @@ under the License.
<fixcrlf srcdir="." includes="src/documentation/content/xdocs/status.xml" eol="unix" eof="remove" />
- <path id="path.svnant">
- <fileset dir="${compile.lib}/svnant" includes="*.jar"/>
- </path>
- <taskdef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="path.svnant"/>
-
- <svnSetting
- svnkit="true"
- javahl="false"
- username="${settings.apache-id.username}"
- password="${settings.apache-id.password}"
- id="svn.settings"
- />
-
<!-- can't combine updating and pinning of the documentation ... so we need two commits -->
<!-- (revision)properties can't be set and read within one svn block -->
<echo message="updating build.xml and status.xml"/>
@@ -2119,6 +2120,41 @@ under the License.
<dirset dir="src"/>
</commit>
</svn>
+
+ <mkdir dir="build/release"/>
+
+ <svn refid="svn.settings">
+ <checkout url="https://svn.apache.org/repos/asf/poi/tags/${RELEASE_TAG}" destPath="build/release"/>
+ </svn>
+ </target>
+
+ <target name="release-prep2" depends="init" description="compile the freshly checked out svn tag and upload it to the nexus - needs a JDK6">
+ <!-- JAVA_HOME needs to point to a JDK6, otherwise the ant invocation is failing on a missing javac -->
+ <fail message="Environment needs to point to a java 6 jdk">
+ <condition>
+ <not><equals arg1="${ant.java.version}" arg2="1.6"/></not>
+ </condition>
+ </fail>
+
+ <local name="DSTAMP"/>
+ <tstamp>
+ <format property="DSTAMP" pattern="yyyyMMdd" offset="7" unit="day"/>
+ </tstamp>
+
+ <ant dir="build/release" inheritAll="false" inheritRefs="false" useNativeBasedir="true">
+ <property name="DSTAMP" value="${DSTAMP}"/>
+ <target name="dist" />
+ <target name="dist-nexus" />
+ </ant>
+ </target>
+
+ <target name="release-prep3" depends="-init-svn" description="write the dist to the release candidate repo - needs Java7+">
+ <svn refid="svn.settings">
+ <import path="build/release/build/dist"
+ url="https://dist.apache.org/repos/dist/dev/poi"
+ newEntry="${version.id}-${release.rc}"
+ message="release candidate POI ${version.id}"/>
+ </svn>
</target>
<target name="-update-build.xml">
Modified: poi/tags/REL_3_15_BETA1/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_15_BETA1/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java?rev=1738389&r1=1738388&r2=1738389&view=diff
==============================================================================
--- poi/tags/REL_3_15_BETA1/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java (original)
+++ poi/tags/REL_3_15_BETA1/src/ooxml/java/org/apache/poi/openxml4j/opc/ZipPackage.java Sat Apr 9 21:44:49 2016
@@ -131,12 +131,28 @@ public final class ZipPackage extends Pa
// some zips can't be opened via ZipFile in JDK6, as the central directory
// contains either non-latin entries or the compression type can't be handled
// the workaround is to iterate over the stream and not the directory
- FileInputStream fis;
+ FileInputStream fis = null;
+ ThresholdInputStream zis = null;
try {
fis = new FileInputStream(file);
- ThresholdInputStream zis = ZipHelper.openZipStream(fis);
+ zis = ZipHelper.openZipStream(fis);
ze = new ZipInputStreamZipEntrySource(zis);
} catch (IOException e2) {
+ if (zis != null) {
+ try {
+ zis.close();
+ } catch (IOException e3) {
+ throw new InvalidOperationException("Can't open the specified file: '" + file + "'"+
+ " and couldn't close the file input stream", e);
+ }
+ } else if (fis != null) {
+ try {
+ fis.close();
+ } catch (IOException e3) {
+ throw new InvalidOperationException("Can't open the specified file: '" + file + "'"+
+ " and couldn't close the file input stream", e);
+ }
+ }
throw new InvalidOperationException("Can't open the specified file: '" + file + "'", e);
}
}
Modified: poi/tags/REL_3_15_BETA1/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java
URL: http://svn.apache.org/viewvc/poi/tags/REL_3_15_BETA1/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java?rev=1738389&r1=1738388&r2=1738389&view=diff
==============================================================================
--- poi/tags/REL_3_15_BETA1/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java (original)
+++ poi/tags/REL_3_15_BETA1/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestZipPackage.java Sat Apr 9 21:44:49 2016
@@ -25,8 +25,10 @@ import static org.junit.Assert.fail;
import java.io.ByteArrayOutputStream;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
@@ -174,4 +176,24 @@ public class TestZipPackage {
SlideShow<?,?> ppt = SlideShowFactory.create(f, null, true);
ppt.close();
}
+
+ @Test
+ public void testClosingStreamOnException() throws IOException {
+ InputStream is = OpenXML4JTestDataSamples.openSampleStream("dcterms_bug_56479.zip");
+ File tmp = File.createTempFile("poi-test-truncated-zip", "");
+ OutputStream os = new FileOutputStream(tmp);
+ for (int i = 0; i < 100; i++) {
+ os.write(is.read());
+ }
+ os.flush();
+ os.close();
+ is.close();
+
+ try {
+ OPCPackage.open(tmp, PackageAccess.READ);
+ } catch (Exception e) {
+ }
+ assertTrue("Can't delete tmp file", tmp.delete());
+
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org