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.ListLevel;
|
||||||
import org.apache.poi.hwpf.model.ListTables;
|
import org.apache.poi.hwpf.model.ListTables;
|
||||||
import org.apache.poi.hwpf.model.PAPX;
|
import org.apache.poi.hwpf.model.PAPX;
|
||||||
|
import org.apache.poi.util.POILogFactory;
|
||||||
import org.apache.poi.hwpf.sprm.SprmBuffer;
|
import org.apache.poi.util.POILogger;
|
||||||
|
|
||||||
public class ListEntry
|
public class ListEntry
|
||||||
extends Paragraph
|
extends Paragraph
|
||||||
{
|
{
|
||||||
ListLevel _level;
|
private static POILogger log = POILogFactory.getLogger(ListEntry.class);
|
||||||
ListFormatOverrideLevel _overrideLevel;
|
|
||||||
|
ListLevel _level;
|
||||||
|
ListFormatOverrideLevel _overrideLevel;
|
||||||
|
|
||||||
ListEntry(PAPX papx, Range parent, ListTables tables)
|
ListEntry(PAPX papx, Range parent, ListTables tables)
|
||||||
{
|
{
|
||||||
super(papx, parent);
|
super(papx, parent);
|
||||||
ListFormatOverride override = tables.getOverride(_props.getIlfo());
|
|
||||||
_overrideLevel = override.getOverrideLevel(_props.getIlvl());
|
if(tables != null) {
|
||||||
_level = tables.getLevel(override.getLsid(), _props.getIlvl());
|
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()
|
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