]> source.dussan.org Git - poi.git/commitdiff
add safe path for documents with missing list information
authorSergey Vladimirov <sergey@apache.org>
Sun, 23 Sep 2012 13:34:46 +0000 (13:34 +0000)
committerSergey Vladimirov <sergey@apache.org>
Sun, 23 Sep 2012 13:34:46 +0000 (13:34 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1389056 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java

index a27eec046a7aba622ed2709920424683375237bd..819e68191234336f4c52729964caf017812ba99c 100644 (file)
@@ -167,11 +167,12 @@ public abstract class AbstractWordConverter
         }
         structures.add( structure );
     }
-
     private final Set<Bookmark> bookmarkStack = new LinkedHashSet<Bookmark>();
 
     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 );