Workaround to avoid a NPE for Word Documents that are missing their ListTable (bug #44003)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@600896 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
40b8f50a73
commit
12705fe743
@ -23,21 +23,28 @@ import org.apache.poi.hwpf.model.ListFormatOverrideLevel;
|
||||
import org.apache.poi.hwpf.model.ListLevel;
|
||||
import org.apache.poi.hwpf.model.ListTables;
|
||||
import org.apache.poi.hwpf.model.PAPX;
|
||||
|
||||
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
||||
import org.apache.poi.util.POILogFactory;
|
||||
import org.apache.poi.util.POILogger;
|
||||
|
||||
public class ListEntry
|
||||
extends Paragraph
|
||||
{
|
||||
ListLevel _level;
|
||||
ListFormatOverrideLevel _overrideLevel;
|
||||
private static POILogger log = POILogFactory.getLogger(ListEntry.class);
|
||||
|
||||
ListLevel _level;
|
||||
ListFormatOverrideLevel _overrideLevel;
|
||||
|
||||
ListEntry(PAPX papx, Range parent, ListTables tables)
|
||||
{
|
||||
super(papx, parent);
|
||||
ListFormatOverride override = tables.getOverride(_props.getIlfo());
|
||||
_overrideLevel = override.getOverrideLevel(_props.getIlvl());
|
||||
_level = tables.getLevel(override.getLsid(), _props.getIlvl());
|
||||
|
||||
if(tables != null) {
|
||||
ListFormatOverride override = tables.getOverride(_props.getIlfo());
|
||||
_overrideLevel = override.getOverrideLevel(_props.getIlvl());
|
||||
_level = tables.getLevel(override.getLsid(), _props.getIlvl());
|
||||
} else {
|
||||
log.log(POILogger.WARN, "No ListTables found for ListEntry - document probably partly corrupt, and you may experience problems");
|
||||
}
|
||||
}
|
||||
|
||||
public int type()
|
||||
|
Binary file not shown.
@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.poi.hwpf.usermodel;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.poi.hwpf.HWPFDocument;
|
||||
import org.apache.poi.hwpf.model.StyleSheet;
|
||||
import org.apache.poi.hwpf.model.TextPiece;
|
||||
import org.apache.poi.hwpf.usermodel.Paragraph;
|
||||
import org.apache.poi.hwpf.usermodel.Range;
|
||||
import org.apache.poi.util.LittleEndian;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
/**
|
||||
* Test various problem documents
|
||||
*
|
||||
* @author Nick Burch (nick at torchbox dot com)
|
||||
*/
|
||||
public class TestProblems extends TestCase {
|
||||
private String dirname = System.getProperty("HWPF.testdata.path");
|
||||
|
||||
protected void setUp() throws Exception {
|
||||
}
|
||||
|
||||
/**
|
||||
* ListEntry passed no ListTable
|
||||
*/
|
||||
public void testListEntryNoListTable() throws Exception {
|
||||
HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname + "/ListEntryNoListTable.doc"));
|
||||
|
||||
Range r = doc.getRange();
|
||||
StyleSheet styleSheet = doc.getStyleSheet();
|
||||
for (int x = 0; x < r.numSections(); x++) {
|
||||
Section s = r.getSection(x);
|
||||
for (int y = 0; y < s.numParagraphs(); y++) {
|
||||
Paragraph paragraph = s.getParagraph(y);
|
||||
System.out.println(paragraph.getCharacterRun(0).text());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user