From 5ee2ce9546b205bfb52026a2c9a1eab3dbd8669d Mon Sep 17 00:00:00 2001 From: Sergey Vladimirov Date: Sun, 23 Sep 2012 13:34:46 +0000 Subject: [PATCH] add safe path for documents with missing list information git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1389056 13f79535-47bb-0310-9956-ffa450edef68 --- .../hwpf/converter/AbstractWordConverter.java | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java index a27eec046a..819e681912 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java @@ -167,11 +167,12 @@ public abstract class AbstractWordConverter } structures.add( structure ); } - private final Set bookmarkStack = new LinkedHashSet(); private FontReplacer fontReplacer = new DefaultFontReplacer(); + private POILogger log = POILogFactory.getLogger( getClass() ); + private NumberingState numberingState = new NumberingState(); private PicturesManager picturesManager; @@ -1053,17 +1054,31 @@ public abstract class AbstractWordConverter processPageBreak( wordDocument, flow ); } + boolean processed = false; if ( paragraph.isInList() ) { - HWPFList hwpfList = paragraph.getList(); + try + { + HWPFList hwpfList = paragraph.getList(); - String label = AbstractWordUtils.getBulletText( numberingState, - hwpfList, (char) paragraph.getIlvl() ); + String label = AbstractWordUtils.getBulletText( + numberingState, hwpfList, + (char) paragraph.getIlvl() ); - processParagraph( wordDocument, flow, currentTableLevel, - paragraph, label ); + processParagraph( wordDocument, flow, currentTableLevel, + paragraph, label ); + processed = true; + } + catch ( Exception exc ) + { + log.log( + POILogger.WARN, + "Can't process paragraph as list entry, will be processed without list information", + exc ); + } } - else + + if ( processed == false ) { processParagraph( wordDocument, flow, currentTableLevel, paragraph, AbstractWordUtils.EMPTY );