]> source.dussan.org Git - poi.git/commitdiff
adding safety belts for property type 0x0100 and other unknown types
authorSergey Vladimirov <sergey@apache.org>
Sat, 22 Oct 2011 02:40:20 +0000 (02:40 +0000)
committerSergey Vladimirov <sergey@apache.org>
Sat, 22 Oct 2011 02:40:20 +0000 (02:40 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1187646 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hpsf/VariantSupport.java

index 914376713a1a85d25c00180d92b1a4d044e6254a..7c351050b064a8d74c110fa3531e016a72104fd9 100644 (file)
@@ -150,39 +150,21 @@ public class VariantSupport extends Variant
      * @exception UnsupportedEncodingException if the specified codepage is not
      *            supported.
      * @see Variant
-     * @deprecated Use {@link #read(byte[],int,long,int)} instead
      */
-    @Deprecated
     public static Object read( final byte[] src, final int offset,
             final int length, final long type, final int codepage )
             throws ReadingNotSupportedException, UnsupportedEncodingException
-    {
-        return read( src, offset, type, codepage );
-    }
-
-    /**
-     * <p>Reads a variant type from a byte array.</p>
-     *
-     * @param src The byte array
-     * @param offset The offset in the byte array where the variant starts
-     * @param type The variant type to read
-     * @param codepage The codepage to use for non-wide strings
-     * @return A Java object that corresponds best to the variant field. For
-     *         example, a VT_I4 is returned as a {@link Long}, a VT_LPSTR as a
-     *         {@link String}.
-     * @exception ReadingNotSupportedException if a property is to be written
-     *            who's variant type HPSF does not yet support
-     * @exception UnsupportedEncodingException if the specified codepage is not
-     *            supported.
-     * @see Variant
-     */
-    public static Object read(final byte[] src, final int offset,
-                              final long type, final int codepage)
-    throws ReadingNotSupportedException, UnsupportedEncodingException
     {
         TypedPropertyValue typedPropertyValue = new TypedPropertyValue(
                 (int) type, null );
-        int unpadded = typedPropertyValue.readValue( src, offset );
+        int unpadded;
+        try {
+            unpadded = typedPropertyValue.readValue( src, offset );
+        } catch (UnsupportedOperationException exc) {
+            final byte[] v = new byte[length];
+            System.arraycopy( src, offset, v, 0, length );
+            throw new ReadingNotSupportedException( type, v );
+        }
 
         switch ( (int) type )
         {