diff options
author | Andreas Beeker <kiwiwings@apache.org> | 2017-11-24 01:02:20 +0000 |
---|---|---|
committer | Andreas Beeker <kiwiwings@apache.org> | 2017-11-24 01:02:20 +0000 |
commit | cbfb179254fcf1ec07fb83dea58546b5840d97be (patch) | |
tree | fe2101b5cecfd110fd3f4f482cf2d4f92fac8ee3 /src | |
parent | e0c8416726efa9ca12e0791aa89295c9e7964cde (diff) | |
download | poi-cbfb179254fcf1ec07fb83dea58546b5840d97be.tar.gz poi-cbfb179254fcf1ec07fb83dea58546b5840d97be.zip |
#61809 - Infinite loop in SectionIDMap.get() and .put()
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1816205 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
11 files changed, 137 insertions, 164 deletions
diff --git a/src/examples/src/org/apache/poi/hpsf/examples/WriteTitle.java b/src/examples/src/org/apache/poi/hpsf/examples/WriteTitle.java index f6d711698c..17079ed989 100644 --- a/src/examples/src/org/apache/poi/hpsf/examples/WriteTitle.java +++ b/src/examples/src/org/apache/poi/hpsf/examples/WriteTitle.java @@ -21,9 +21,13 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import org.apache.poi.hpsf.*; +import org.apache.poi.hpsf.Property; +import org.apache.poi.hpsf.PropertySet; +import org.apache.poi.hpsf.Section; +import org.apache.poi.hpsf.SummaryInformation; +import org.apache.poi.hpsf.Variant; +import org.apache.poi.hpsf.WritingNotSupportedException; import org.apache.poi.hpsf.wellknown.PropertyIDMap; -import org.apache.poi.hpsf.wellknown.SectionIDMap; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** @@ -64,7 +68,7 @@ public class WriteTitle /* Turn the property set into a summary information property. This is * done by setting the format ID of its first section to * SectionIDMap.SUMMARY_INFORMATION_ID. */ - ms.setFormatID(SectionIDMap.SUMMARY_INFORMATION_ID); + ms.setFormatID(SummaryInformation.FORMAT_ID); /* Create an empty property. */ final Property p = new Property(); diff --git a/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java b/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java index f10dcc938f..cb945a36ed 100644 --- a/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java +++ b/src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java @@ -25,7 +25,6 @@ import java.util.List; import java.util.Map; import org.apache.poi.hpsf.wellknown.PropertyIDMap; -import org.apache.poi.hpsf.wellknown.SectionIDMap; /** * Convenience class representing a DocumentSummary Information stream in a @@ -34,6 +33,7 @@ import org.apache.poi.hpsf.wellknown.SectionIDMap; * @see SummaryInformation */ public class DocumentSummaryInformation extends PropertySet { + /** * The document name a document summary information stream * usually has in a POIFS filesystem. @@ -41,6 +41,18 @@ public class DocumentSummaryInformation extends PropertySet { public static final String DEFAULT_STREAM_NAME = "\005DocumentSummaryInformation"; + /** + * The DocumentSummaryInformation's first and second sections' format ID. + */ + private static final ClassID DOC_SUMMARY_INFORMATION = + new ClassID("{D5CDD502-2E9C-101B-9397-08002B2CF9AE}"); + private static final ClassID USER_DEFINED_PROPERTIES = + new ClassID("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"); + + public static final ClassID[] FORMAT_ID = { + DOC_SUMMARY_INFORMATION, USER_DEFINED_PROPERTIES + }; + @Override public PropertyIDMap getPropertySetIDMap() { return PropertyIDMap.getDocumentSummaryInformationProperties(); @@ -51,7 +63,7 @@ public class DocumentSummaryInformation extends PropertySet { * Creates an empty {@link DocumentSummaryInformation}. */ public DocumentSummaryInformation() { - getFirstSection().setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[0]); + getFirstSection().setFormatID(DOC_SUMMARY_INFORMATION); } @@ -812,7 +824,7 @@ public class DocumentSummaryInformation extends PropertySet { private void ensureSection2() { if (getSectionCount() < 2) { Section s2 = new Section(); - s2.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[1]); + s2.setFormatID(USER_DEFINED_PROPERTIES); addSection(s2); } } diff --git a/src/java/org/apache/poi/hpsf/PropertySet.java b/src/java/org/apache/poi/hpsf/PropertySet.java index a9e8e961ab..77621419ba 100644 --- a/src/java/org/apache/poi/hpsf/PropertySet.java +++ b/src/java/org/apache/poi/hpsf/PropertySet.java @@ -29,7 +29,6 @@ import java.util.List; import org.apache.poi.EmptyFileException; import org.apache.poi.hpsf.wellknown.PropertyIDMap; -import org.apache.poi.hpsf.wellknown.SectionIDMap; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.Entry; import org.apache.poi.util.CodePageUtil; @@ -659,7 +658,7 @@ public class PropertySet { * represents a Summary Information, else {@code false}. */ public boolean isSummaryInformation() { - return !sections.isEmpty() && matchesSummary(getFirstSection().getFormatID(), SectionIDMap.SUMMARY_INFORMATION_ID); + return !sections.isEmpty() && matchesSummary(getFirstSection().getFormatID(), SummaryInformation.FORMAT_ID); } /** @@ -669,7 +668,7 @@ public class PropertySet { * represents a Document Summary Information, else {@code false}. */ public boolean isDocumentSummaryInformation() { - return !sections.isEmpty() && matchesSummary(getFirstSection().getFormatID(), SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID); + return !sections.isEmpty() && matchesSummary(getFirstSection().getFormatID(), DocumentSummaryInformation.FORMAT_ID); } /* package */ static boolean matchesSummary(ClassID actual, ClassID... expected) { diff --git a/src/java/org/apache/poi/hpsf/PropertySetFactory.java b/src/java/org/apache/poi/hpsf/PropertySetFactory.java index 44436c3b57..06029ab137 100644 --- a/src/java/org/apache/poi/hpsf/PropertySetFactory.java +++ b/src/java/org/apache/poi/hpsf/PropertySetFactory.java @@ -22,7 +22,6 @@ import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import org.apache.poi.hpsf.wellknown.SectionIDMap; import org.apache.poi.poifs.filesystem.DirectoryEntry; import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.DocumentInputStream; @@ -110,9 +109,9 @@ public class PropertySetFactory { stream.reset(); ClassID clsId = new ClassID(clsIdBuf, 0); - if (sectionCount > 0 && PropertySet.matchesSummary(clsId, SectionIDMap.SUMMARY_INFORMATION_ID)) { + if (sectionCount > 0 && PropertySet.matchesSummary(clsId, SummaryInformation.FORMAT_ID)) { return new SummaryInformation(stream); - } else if (sectionCount > 0 && PropertySet.matchesSummary(clsId, SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID)) { + } else if (sectionCount > 0 && PropertySet.matchesSummary(clsId, DocumentSummaryInformation.FORMAT_ID)) { return new DocumentSummaryInformation(stream); } else { return new PropertySet(stream); diff --git a/src/java/org/apache/poi/hpsf/Section.java b/src/java/org/apache/poi/hpsf/Section.java index 7202499468..88677801c7 100644 --- a/src/java/org/apache/poi/hpsf/Section.java +++ b/src/java/org/apache/poi/hpsf/Section.java @@ -31,7 +31,6 @@ import java.util.TreeMap; import org.apache.commons.collections4.bidimap.TreeBidiMap; import org.apache.poi.hpsf.wellknown.PropertyIDMap; -import org.apache.poi.hpsf.wellknown.SectionIDMap; import org.apache.poi.util.CodePageUtil; import org.apache.poi.util.IOUtils; import org.apache.poi.util.LittleEndian; @@ -597,29 +596,33 @@ public class Section { /** * Returns the PID string associated with a property ID. The ID - * is first looked up in the {@link Section}'s private - * dictionary. If it is not found there, the method calls {@link - * SectionIDMap#getPIDString}. + * is first looked up in the {@link Section Sections} private dictionary. + * If it is not found there, the property PID string is taken + * from sections format IDs namespace. + * If the PID is also undefined there, i.e. it is not well-known, + * {@code "[undefined]"} is returned. * * @param pid The property ID * - * @return The property ID's string value + * @return The well-known property ID string associated with the + * property ID {@code pid} */ public String getPIDString(final long pid) { - String s = null; Map<Long,String> dic = getDictionary(); - if (dic != null) { - s = dic.get(pid); - } - if (s == null) { - s = SectionIDMap.getPIDString(getFormatID(), pid); + if (dic == null || !dic.containsKey(pid)) { + ClassID fmt = getFormatID(); + if (SummaryInformation.FORMAT_ID.equals(fmt)) { + dic = PropertyIDMap.getSummaryInformationProperties(); + } else if (DocumentSummaryInformation.FORMAT_ID[0].equals(fmt)) { + dic = PropertyIDMap.getDocumentSummaryInformationProperties(); + } } - return s; + + return (dic != null && dic.containsKey(pid)) ? dic.get(pid) : PropertyIDMap.UNDEFINED; } /** - * Removes all properties from the section including 0 (dictionary) and - * 1 (codepage). + * Removes all properties from the section including 0 (dictionary) and 1 (codepage). */ public void clear() { for (Property p : getProperties()) { diff --git a/src/java/org/apache/poi/hpsf/SummaryInformation.java b/src/java/org/apache/poi/hpsf/SummaryInformation.java index 4425abc530..bab1963b1c 100644 --- a/src/java/org/apache/poi/hpsf/SummaryInformation.java +++ b/src/java/org/apache/poi/hpsf/SummaryInformation.java @@ -23,7 +23,6 @@ import java.io.UnsupportedEncodingException; import java.util.Date; import org.apache.poi.hpsf.wellknown.PropertyIDMap; -import org.apache.poi.hpsf.wellknown.SectionIDMap; /** * Convenience class representing a Summary Information stream in a @@ -38,6 +37,13 @@ public final class SummaryInformation extends PropertySet { */ public static final String DEFAULT_STREAM_NAME = "\005SummaryInformation"; + /** + * The SummaryInformation's section's format ID. + */ + public static final ClassID FORMAT_ID = + new ClassID("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}"); + + @Override public PropertyIDMap getPropertySetIDMap() { return PropertyIDMap.getSummaryInformationProperties(); } @@ -46,7 +52,7 @@ public final class SummaryInformation extends PropertySet { * Creates an empty {@link SummaryInformation}. */ public SummaryInformation() { - getFirstSection().setFormatID(SectionIDMap.SUMMARY_INFORMATION_ID); + getFirstSection().setFormatID(FORMAT_ID); } /** @@ -594,7 +600,9 @@ public final class SummaryInformation extends PropertySet { */ public Thumbnail getThumbnailThumbnail() { byte[] data = getThumbnail(); - if (data == null) return null; + if (data == null) { + return null; + } return new Thumbnail(data); } diff --git a/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java b/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java index c55d936ae5..130408e7b5 100644 --- a/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java +++ b/src/java/org/apache/poi/hpsf/wellknown/PropertyIDMap.java @@ -317,6 +317,11 @@ public class PropertyIDMap implements Map<Long,String> { public static final int PID_BEHAVIOUR = 0x80000003; /** + * A property without a known name is described by this string. + */ + public static final String UNDEFINED = "[undefined]"; + + /** * Contains the summary information property ID values and * associated strings. See the overall HPSF documentation for * details! diff --git a/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java b/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java index 07fb6af4ea..620253ae11 100644 --- a/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java +++ b/src/java/org/apache/poi/hpsf/wellknown/SectionIDMap.java @@ -17,136 +17,44 @@ package org.apache.poi.hpsf.wellknown; -import java.util.HashMap; -import java.util.Map; - import org.apache.poi.hpsf.ClassID; +import org.apache.poi.hpsf.DocumentSummaryInformation; +import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.util.Internal; +import org.apache.poi.util.Removal; /** - * <p>Maps section format IDs to {@link PropertyIDMap}s. It is - * initialized with two well-known section format IDs: those of the - * <tt>\005SummaryInformation</tt> stream and the - * <tt>\005DocumentSummaryInformation</tt> stream.</p> - * - * <p>If you have a section format ID you can use it as a key to query - * this map. If you get a {@link PropertyIDMap} returned your section - * is well-known and you can query the {@link PropertyIDMap} for PID - * strings. If you get back <code>null</code> you are on your own.</p> - * - * <p>This {@link java.util.Map} expects the byte arrays of section format IDs - * as keys. A key maps to a {@link PropertyIDMap} describing the - * property IDs in sections with the specified section format ID.</p> + * This classed used to map section format IDs to {@link PropertyIDMap PropertyIDMaps}, + * but there's no way to use custom PropertyIDMaps.<p> + * + * It is only kept for its ClassIDs until removal. + * + * @deprecated in 4.0.0, there's no way to create custom PropertyIDMaps, therefore + * this class is obsolete */ @Internal +@Deprecated +@Removal(version="4.2.0") public class SectionIDMap { /** - * The default section ID map. It maps section format IDs to {@link PropertyIDMap PropertyIDMaps} - */ - private static ThreadLocal<Map<ClassID,PropertyIDMap>> defaultMap = - new ThreadLocal<>(); - - /** - * <p>The SummaryInformation's section's format ID.</p> + * The SummaryInformation's section's format ID. + * @deprecated use {@link SummaryInformation#FORMAT_ID} */ - public static final ClassID SUMMARY_INFORMATION_ID = - new ClassID("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}"); + @Deprecated + public static final ClassID SUMMARY_INFORMATION_ID = SummaryInformation.FORMAT_ID; /** * The DocumentSummaryInformation's first and second sections' format ID. + * @deprecated use {@link DocumentSummaryInformation#FORMAT_ID} */ - private static final ClassID DOC_SUMMARY_INFORMATION = - new ClassID("{D5CDD502-2E9C-101B-9397-08002B2CF9AE}"); - private static final ClassID USER_DEFINED_PROPERTIES = - new ClassID("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}"); - - public static final ClassID[] DOCUMENT_SUMMARY_INFORMATION_ID = { - DOC_SUMMARY_INFORMATION, USER_DEFINED_PROPERTIES - }; + @Deprecated + public static final ClassID[] DOCUMENT_SUMMARY_INFORMATION_ID = DocumentSummaryInformation.FORMAT_ID; /** * A property without a known name is described by this string. + * @deprecated use {@link PropertyIDMap#UNDEFINED} */ - public static final String UNDEFINED = "[undefined]"; - - /** - * <p>Returns the singleton instance of the default {@link - * SectionIDMap}.</p> - * - * @return The instance value - */ - public static SectionIDMap getInstance() { - Map<ClassID,PropertyIDMap> m = defaultMap.get(); - if (m == null) { - m = new HashMap<>(); - m.put(SUMMARY_INFORMATION_ID, PropertyIDMap.getSummaryInformationProperties()); - m.put(DOCUMENT_SUMMARY_INFORMATION_ID[0], PropertyIDMap.getDocumentSummaryInformationProperties()); - defaultMap.set(m); - } - return new SectionIDMap(); - } - - - - /** - * <p>Returns the property ID string that is associated with a - * given property ID in a section format ID's namespace.</p> - * - * @param sectionFormatID Each section format ID has its own name - * space of property ID strings and thus must be specified. - * @param pid The property ID - * @return The well-known property ID string associated with the - * property ID <var>pid</var> in the name space spanned by <var> - * sectionFormatID</var> . If the <var>pid</var> - * /<var>sectionFormatID </var> combination is not well-known, the - * string "[undefined]" is returned. - */ - public static String getPIDString(ClassID sectionFormatID, long pid) { - final PropertyIDMap m = getInstance().get(sectionFormatID); - if (m == null) { - return UNDEFINED; - } - final String s = m.get(pid); - if (s == null) { - return UNDEFINED; - } - return s; - } - - - - /** - * <p>Returns the {@link PropertyIDMap} for a given section format - * ID.</p> - * - * @param sectionFormatID the section format ID - * @return the property ID map - */ - public PropertyIDMap get(final ClassID sectionFormatID) { - return getInstance().get(sectionFormatID); - } - - /** - * Associates a section format ID with a {@link PropertyIDMap}. - * - * @param sectionFormatID the section format ID - * @param propertyIDMap the property ID map - * @return as defined by {@link java.util.Map#put} - */ - public PropertyIDMap put(ClassID sectionFormatID, PropertyIDMap propertyIDMap) { - return getInstance().put(sectionFormatID, propertyIDMap); - } - - /** - * Associates the string representation of a section format ID with a {@link PropertyIDMap} - * - * @param key the key of the PropertyIDMap - * @param value the PropertyIDMap itself - * - * @return the previous PropertyIDMap stored under this key, or {@code null} if there wasn't one - */ - protected PropertyIDMap put(String key, PropertyIDMap value) { - return put(new ClassID(key), value); - } + @Deprecated + public static final String UNDEFINED = PropertyIDMap.UNDEFINED; } diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestBasic.java b/src/testcases/org/apache/poi/hpsf/basic/TestBasic.java index e32c6b0d5b..dcb5c67b92 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestBasic.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestBasic.java @@ -41,7 +41,7 @@ import org.apache.poi.hpsf.PropertySet; import org.apache.poi.hpsf.PropertySetFactory; import org.apache.poi.hpsf.Section; import org.apache.poi.hpsf.SummaryInformation; -import org.apache.poi.hpsf.wellknown.SectionIDMap; +import org.apache.poi.hpsf.wellknown.PropertyIDMap; import org.junit.Before; import org.junit.Test; @@ -171,13 +171,13 @@ public final class TestBasic { final SummaryInformation si = (SummaryInformation)PropertySetFactory.create(is); final List<Section> sections = si.getSections(); final Section s = sections.get(0); - assertEquals(s.getFormatID(), SectionIDMap.SUMMARY_INFORMATION_ID); + assertEquals(s.getFormatID(), SummaryInformation.FORMAT_ID); assertNotNull(s.getProperties()); assertEquals(17, s.getPropertyCount()); - assertEquals("Titel", s.getProperty(2)); + assertEquals("Titel", s.getProperty(PropertyIDMap.PID_TITLE)); assertEquals(1764, s.getSize()); } - + @Test public void bug52117LastPrinted() throws IOException, HPSFException { File f = samples.getFile("TestBug52117.doc"); @@ -189,4 +189,20 @@ public final class TestBasic { assertTrue(Filetime.isUndefined(lastPrinted)); assertEquals(1800000000L, editTime); } + + @Test + public void bug61809() throws IOException, HPSFException { + InputStream is_si = new ByteArrayInputStream(poiFiles.get(0).getBytes()); + final SummaryInformation si = (SummaryInformation)PropertySetFactory.create(is_si); + final Section s_si = si.getSections().get(0); + + assertEquals("PID_TITLE", s_si.getPIDString(PropertyIDMap.PID_TITLE)); + assertEquals(PropertyIDMap.UNDEFINED, s_si.getPIDString(4711)); + + InputStream is_dsi = new ByteArrayInputStream(poiFiles.get(1).getBytes()); + final DocumentSummaryInformation dsi = (DocumentSummaryInformation)PropertySetFactory.create(is_dsi); + final Section s_dsi = dsi.getSections().get(0); + + assertEquals("PID_MANAGER", s_dsi.getPIDString(PropertyIDMap.PID_MANAGER)); + } } diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java b/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java index 278ac9421d..24371855f6 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java @@ -42,9 +42,23 @@ import java.util.Locale; import java.util.Map; import org.apache.poi.POIDataSamples; -import org.apache.poi.hpsf.*; +import org.apache.poi.hpsf.ClassID; +import org.apache.poi.hpsf.DocumentSummaryInformation; +import org.apache.poi.hpsf.HPSFException; +import org.apache.poi.hpsf.IllegalPropertySetDataException; +import org.apache.poi.hpsf.NoFormatIDException; +import org.apache.poi.hpsf.NoPropertySetStreamException; +import org.apache.poi.hpsf.Property; +import org.apache.poi.hpsf.PropertySet; +import org.apache.poi.hpsf.PropertySetFactory; +import org.apache.poi.hpsf.ReadingNotSupportedException; +import org.apache.poi.hpsf.Section; +import org.apache.poi.hpsf.SummaryInformation; +import org.apache.poi.hpsf.UnsupportedVariantTypeException; +import org.apache.poi.hpsf.Variant; +import org.apache.poi.hpsf.VariantSupport; +import org.apache.poi.hpsf.WritingNotSupportedException; import org.apache.poi.hpsf.wellknown.PropertyIDMap; -import org.apache.poi.hpsf.wellknown.SectionIDMap; import org.apache.poi.poifs.eventfilesystem.POIFSReader; import org.apache.poi.poifs.eventfilesystem.POIFSReaderEvent; import org.apache.poi.poifs.eventfilesystem.POIFSReaderListener; @@ -72,13 +86,6 @@ public class TestWrite { private static final String POI_FS = "TestHPSFWritingFunctionality.doc"; - private static final int BYTE_ORDER = 0xfffe; - private static final int FORMAT = 0x0000; - private static final int OS_VERSION = 0x00020A04; - private static final int[] SECTION_COUNT = {1, 2}; - private static final boolean[] IS_SUMMARY_INFORMATION = {true, false}; - private static final boolean[] IS_DOCUMENT_SUMMARY_INFORMATION = {false, true}; - private static final String IMPROPER_DEFAULT_CHARSET_MESSAGE = "Your default character set is " + getDefaultCharsetName() + ". However, this testcase must be run in an environment " + @@ -147,7 +154,7 @@ public class TestWrite { final POIFSFileSystem poiFs = new POIFSFileSystem(); final PropertySet ps = new PropertySet(); final Section s = ps.getSections().get(0); - s.setFormatID(SectionIDMap.SUMMARY_INFORMATION_ID); + s.setFormatID(SummaryInformation.FORMAT_ID); final ByteArrayOutputStream psStream = new ByteArrayOutputStream(); ps.write(psStream); @@ -194,7 +201,7 @@ public class TestWrite { final PropertySet ps = new PropertySet(); final Section si = new Section(); - si.setFormatID(SectionIDMap.SUMMARY_INFORMATION_ID); + si.setFormatID(SummaryInformation.FORMAT_ID); ps.clearSections(); ps.addSection(si); @@ -414,7 +421,7 @@ public class TestWrite { final String TITLE = "This is a sample title"; final PropertySet mps = new PropertySet(); final Section ms = mps.getSections().get(0); - ms.setFormatID(SectionIDMap.SUMMARY_INFORMATION_ID); + ms.setFormatID(SummaryInformation.FORMAT_ID); final Property p = new Property(); p.setID(PropertyIDMap.PID_TITLE); p.setType(Variant.VT_LPSTR); @@ -485,7 +492,7 @@ public class TestWrite { m.put(Long.valueOf(2), "String 2"); m.put(Long.valueOf(3), "String 3"); s.setDictionary(m); - s.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[0]); + s.setFormatID(DocumentSummaryInformation.FORMAT_ID[0]); int codepage = CodePageUtil.CP_UNICODE; s.setProperty(PropertyIDMap.PID_CODEPAGE, Variant.VT_I2, codepage); poiFs.createDocument(ps1.toInputStream(), "Test"); @@ -751,7 +758,7 @@ public class TestWrite { try { s.setDictionary(m); - s.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[0]); + s.setFormatID(DocumentSummaryInformation.FORMAT_ID[0]); int codepage = 12345; s.setProperty(PropertyIDMap.PID_CODEPAGE, Variant.VT_I2, Integer.valueOf(codepage)); diff --git a/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java b/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java index af4674e4d1..89c70ac55e 100644 --- a/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java +++ b/src/testcases/org/apache/poi/hpsf/basic/TestWriteWellKnown.java @@ -34,8 +34,20 @@ import java.util.HashMap; import java.util.Map; import org.apache.poi.POIDataSamples; -import org.apache.poi.hpsf.*; -import org.apache.poi.hpsf.wellknown.SectionIDMap; +import org.apache.poi.hpsf.CustomProperties; +import org.apache.poi.hpsf.CustomProperty; +import org.apache.poi.hpsf.DocumentSummaryInformation; +import org.apache.poi.hpsf.MarkUnsupportedException; +import org.apache.poi.hpsf.NoPropertySetStreamException; +import org.apache.poi.hpsf.Property; +import org.apache.poi.hpsf.PropertySet; +import org.apache.poi.hpsf.PropertySetFactory; +import org.apache.poi.hpsf.Section; +import org.apache.poi.hpsf.SummaryInformation; +import org.apache.poi.hpsf.UnexpectedPropertySetTypeException; +import org.apache.poi.hpsf.Variant; +import org.apache.poi.hpsf.VariantSupport; +import org.apache.poi.hpsf.WritingNotSupportedException; import org.apache.poi.poifs.filesystem.DocumentInputStream; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.IOUtils; @@ -562,7 +574,7 @@ public class TestWriteWellKnown { /* Test an empty custom properties set. */ s = new Section(); - s.setFormatID(SectionIDMap.DOCUMENT_SUMMARY_INFORMATION_ID[1]); + s.setFormatID(DocumentSummaryInformation.FORMAT_ID[1]); // s.setCodepage(CodePageUtil.CP_UNICODE); dsi.addSection(s); cps = dsi.getCustomProperties(); |