You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by se...@apache.org on 2011/08/22 10:55:22 UTC
svn commit: r1160152 - in /poi/trunk/src/scratchpad:
src/org/apache/poi/hwpf/ src/org/apache/poi/hwpf/usermodel/
testcases/org/apache/poi/hwpf/extractor/
Author: sergey
Date: Mon Aug 22 08:55:21 2011
New Revision: 1160152
URL: http://svn.apache.org/viewvc?rev=1160152&view=rev
Log:
refix 51686 - fix possible NPE, add writeTo() to ObjectPoolImpl.
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ObjectPoolImpl.java
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java?rev=1160152&r1=1160151&r2=1160152&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocument.java Mon Aug 22 08:55:21 2011
@@ -69,6 +69,7 @@ import org.apache.poi.poifs.filesystem.D
import org.apache.poi.poifs.filesystem.Entry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.POIUtils;
/**
@@ -947,6 +948,7 @@ public final class HWPFDocument extends
POIFSFileSystem pfs = new POIFSFileSystem();
boolean docWritten = false;
boolean dataWritten = false;
+ boolean objectPoolWritten = false;
boolean tableWritten = false;
boolean propertiesWritten = false;
for ( Iterator<Entry> iter = directory.getEntries(); iter.hasNext(); )
@@ -961,6 +963,14 @@ public final class HWPFDocument extends
docWritten = true;
}
}
+ else if ( entry.getName().equals( STREAM_OBJECT_POOL ) )
+ {
+ if ( !objectPoolWritten )
+ {
+ _objectPool.writeTo( pfs.getRoot() );
+ objectPoolWritten = true;
+ }
+ }
else if ( entry.getName().equals( STREAM_TABLE_0 )
|| entry.getName().equals( STREAM_TABLE_1 ) )
{
@@ -993,7 +1003,7 @@ public final class HWPFDocument extends
}
else
{
- copyNodeRecursively( entry, pfs.getRoot() );
+ POIUtils.copyNodeRecursively( entry, pfs.getRoot() );
}
}
@@ -1008,6 +1018,8 @@ public final class HWPFDocument extends
if ( !dataWritten )
pfs.createDocument( new ByteArrayInputStream( dataBuf ),
STREAM_DATA );
+ if ( !objectPoolWritten )
+ _objectPool.writeTo( pfs.getRoot() );
pfs.writeFilesystem( out );
this.directory = pfs.getRoot();
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java?rev=1160152&r1=1160151&r2=1160152&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/HWPFDocumentCore.java Mon Aug 22 08:55:21 2011
@@ -158,12 +158,14 @@ public abstract class HWPFDocumentCore e
throw new EncryptedDocumentException("Cannot process encrypted word files!");
}
+ DirectoryEntry objectPoolEntry;
try {
- DirectoryEntry objectPoolEntry = (DirectoryEntry) directory
+ objectPoolEntry = (DirectoryEntry) directory
.getEntry(STREAM_OBJECT_POOL);
- _objectPool = new ObjectPoolImpl(objectPoolEntry);
} catch (FileNotFoundException exc) {
+ objectPoolEntry = null;
}
+ _objectPool = new ObjectPoolImpl(objectPoolEntry);
}
/**
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ObjectPoolImpl.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ObjectPoolImpl.java?rev=1160152&r1=1160151&r2=1160152&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ObjectPoolImpl.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/usermodel/ObjectPoolImpl.java Mon Aug 22 08:55:21 2011
@@ -17,10 +17,12 @@
package org.apache.poi.hwpf.usermodel;
import java.io.FileNotFoundException;
+import java.io.IOException;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.Entry;
import org.apache.poi.util.Internal;
+import org.apache.poi.util.POIUtils;
@Internal
public class ObjectPoolImpl implements ObjectsPool
@@ -47,4 +49,11 @@ public class ObjectPoolImpl implements O
return null;
}
}
+
+ @Internal
+ public void writeTo( DirectoryEntry directoryEntry ) throws IOException
+ {
+ if ( _objectPool != null )
+ POIUtils.copyNodeRecursively( _objectPool, directoryEntry );
+ }
}
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java?rev=1160152&r1=1160151&r2=1160152&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java Mon Aug 22 08:55:21 2011
@@ -362,7 +362,7 @@ public final class TestWordExtractor ext
* [RESOLVED FIXED] Bug 51686 - Update to POI 3.8 beta 4 causes
* ConcurrentModificationException in Tika's OfficeParser
*/
- public void testRootEntiesNavigation() throws IOException
+ public void testBug51686() throws IOException
{
InputStream is = POIDataSamples.getDocumentInstance()
.openResourceAsStream( "Bug51686.doc" );
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org