[bug-62768] synchronize OPCPackage#close()

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1842142 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2018-09-27 19:06:06 +00:00
parent 19baa76652
commit 5c1a036de2

View File

@ -28,7 +28,6 @@ import java.io.OutputStream;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.*; import java.util.*;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -420,7 +419,7 @@ public abstract class OPCPackage implements RelationshipSource, Closeable {
* If an IO exception occur during the saving process. * If an IO exception occur during the saving process.
*/ */
@Override @Override
public void close() throws IOException { public synchronized void close() throws IOException {
if (this.packageAccess == PackageAccess.READ) { if (this.packageAccess == PackageAccess.READ) {
logger.log(POILogger.WARN, logger.log(POILogger.WARN,
"The close() method is intended to SAVE a package. This package is open in READ ONLY mode, use the revert() method instead !"); "The close() method is intended to SAVE a package. This package is open in READ ONLY mode, use the revert() method instead !");
@ -434,10 +433,6 @@ public abstract class OPCPackage implements RelationshipSource, Closeable {
return; return;
} }
// Save the content
ReentrantReadWriteLock l = new ReentrantReadWriteLock();
try {
l.writeLock().lock();
if (this.originalPackagePath != null if (this.originalPackagePath != null
&& !this.originalPackagePath.trim().isEmpty()) { && !this.originalPackagePath.trim().isEmpty()) {
File targetFile = new File(this.originalPackagePath); File targetFile = new File(this.originalPackagePath);
@ -453,9 +448,6 @@ public abstract class OPCPackage implements RelationshipSource, Closeable {
save(this.output); save(this.output);
output.close(); output.close();
} }
} finally {
l.writeLock().unlock();
}
// Clear // Clear
this.contentTypeManager.clearAll(); this.contentTypeManager.clearAll();