You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2018/04/01 15:37:14 UTC

svn commit: r1828142 - in /poi/trunk/src/scratchpad: src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java testcases/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java

Author: fanningpj
Date: Sun Apr  1 15:37:14 2018
New Revision: 1828142

URL: http://svn.apache.org/viewvc?rev=1828142&view=rev
Log:
[github-103] take latest changes

Modified:
    poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java?rev=1828142&r1=1828141&r2=1828142&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java Sun Apr  1 15:37:14 2018
@@ -383,12 +383,7 @@ public abstract class PropertiesChunk ex
         byte[] bytes = value.getRawValue();
         int length = bytes != null ? bytes.length : 0;
         if (bytes != null) {
-            // Little endian.
-            byte[] reversed = new byte[bytes.length];
-            for (int i = 0; i < bytes.length; ++i) {
-                reversed[bytes.length - i - 1] = bytes[i];
-            }
-            out.write(reversed);
+            out.write(bytes);
         }
         out.write(new byte[8 - length]);
     }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java?rev=1828142&r1=1828141&r2=1828142&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestExtractEmbeddedMSG.java Sun Apr  1 15:37:14 2018
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertNot
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.nio.ByteBuffer;
 import java.util.Calendar;
 import java.util.Map;
 import java.util.TimeZone;
@@ -79,19 +78,21 @@ public class TestExtractEmbeddedMSG {
     public void testEmbeddedMSGProperties() throws IOException, ChunkNotFoundException {
         AttachmentChunks[] attachments = pdfMsgAttachments.getAttachmentFiles();
         assertEquals(2, attachments.length);
-        MAPIMessage attachedMsg = attachments[0].getEmbeddedMessage();
-        assertNotNull(attachedMsg);
-        // test properties of embedded message
-        testFixedAndVariableLengthPropertiesOfAttachedMSG(attachedMsg);
-        // rebuild top level message from embedded message
-        try (POIFSFileSystem extractedAttachedMsg = rebuildFromAttached(attachedMsg)) {
-            try (ByteArrayOutputStream extractedAttachedMsgOut = new ByteArrayOutputStream()) {
-                extractedAttachedMsg.writeFilesystem(extractedAttachedMsgOut);
-                byte[] extratedAttachedMsgRaw = extractedAttachedMsgOut.toByteArray();
-                MAPIMessage extractedMsgTopLevel = new MAPIMessage(
-                        new ByteArrayInputStream(extratedAttachedMsgRaw));
-                // test properties of rebuilt embedded message
-                testFixedAndVariableLengthPropertiesOfAttachedMSG(extractedMsgTopLevel);
+        if (attachments.length == 2) {
+            MAPIMessage attachedMsg = attachments[0].getEmbeddedMessage();
+            assertNotNull(attachedMsg);
+            // test properties of embedded message
+            testFixedAndVariableLengthPropertiesOfAttachedMSG(attachedMsg);
+            // rebuild top level message from embedded message
+            try (POIFSFileSystem extractedAttachedMsg = rebuildFromAttached(attachedMsg)) {
+                try (ByteArrayOutputStream extractedAttachedMsgOut = new ByteArrayOutputStream()) {
+                    extractedAttachedMsg.writeFilesystem(extractedAttachedMsgOut);
+                    byte[] extratedAttachedMsgRaw = extractedAttachedMsgOut.toByteArray();
+                    MAPIMessage extractedMsgTopLevel = new MAPIMessage(
+                            new ByteArrayInputStream(extratedAttachedMsgRaw));
+                    // test properties of rebuilt embedded message
+                    testFixedAndVariableLengthPropertiesOfAttachedMSG(extractedMsgTopLevel);
+                }
             }
         }
     }
@@ -115,17 +116,17 @@ public class TestExtractEmbeddedMSG {
         POIFSFileSystem newDoc = new POIFSFileSystem();
         MessagePropertiesChunk topLevelChunk = new MessagePropertiesChunk(null);
         // Copy attachments and recipients.
-        int recipientsCount = 0;
-        int attachmentsCount = 0;
+        int recipientscount = 0;
+        int attachmentscount = 0;
         for (Entry entry : attachedMsg.getDirectory()) {
             if (entry.getName().startsWith(RecipientChunks.PREFIX)) {
-                recipientsCount++;
+                recipientscount++;
                 DirectoryEntry newDir = newDoc.createDirectory(entry.getName());
                 for (Entry e : ((DirectoryEntry) entry)) {
                     EntryUtils.copyNodeRecursively(e, newDir);
                 }
             } else if (entry.getName().startsWith(AttachmentChunks.PREFIX)) {
-                attachmentsCount++;
+                attachmentscount++;
                 DirectoryEntry newDir = newDoc.createDirectory(entry.getName());
                 for (Entry e : ((DirectoryEntry) entry)) {
                     EntryUtils.copyNodeRecursively(e, newDir);
@@ -137,13 +138,6 @@ public class TestExtractEmbeddedMSG {
         for (Map.Entry<MAPIProperty, PropertyValue> p : mpc.getRawProperties().entrySet()) {
             PropertyValue val = p.getValue();
             if (!(val instanceof ChunkBasedPropertyValue)) {
-                // Reverse data.
-                byte[] bytes = val.getRawValue();
-                for (int idx = 0; idx < bytes.length / 2; idx++) {
-                    byte xchg = bytes[bytes.length - 1 - idx];
-                    bytes[bytes.length - 1 - idx] = bytes[idx];
-                    bytes[idx] = xchg;
-                }
                 MAPIType type = val.getActualType();
                 if (type != null && type != Types.UNKNOWN) {
                     topLevelChunk.setProperty(val);
@@ -160,17 +154,20 @@ public class TestExtractEmbeddedMSG {
         nameid.createDocument(PropertiesChunk.DEFAULT_NAME_PREFIX + "00040102", new ByteArrayInputStream(new byte[0]));
         // Base properties.
         // Attachment/Recipient counter.
-        topLevelChunk.setAttachmentCount(attachmentsCount);
-        topLevelChunk.setRecipientCount(recipientsCount);
-        topLevelChunk.setNextAttachmentId(attachmentsCount);
-        topLevelChunk.setNextRecipientId(recipientsCount);
+        topLevelChunk.setAttachmentCount(attachmentscount);
+        topLevelChunk.setRecipientCount(recipientscount);
+        topLevelChunk.setNextAttachmentId(attachmentscount);
+        topLevelChunk.setNextRecipientId(recipientscount);
         // Unicode string format.
-        topLevelChunk.setProperty(new PropertyValue(MAPIProperty.STORE_SUPPORT_MASK,
+        byte[] storeSupportMaskData = new byte[4];
+        PropertyValue.LongPropertyValue storeSupportPropertyValue = new PropertyValue.LongPropertyValue(MAPIProperty.STORE_SUPPORT_MASK,
                 MessagePropertiesChunk.PROPERTIES_FLAG_READABLE | MessagePropertiesChunk.PROPERTIES_FLAG_WRITEABLE,
-                ByteBuffer.allocate(4).putInt(0x00040000).array()));
+                storeSupportMaskData);
+        storeSupportPropertyValue.setValue(0x00040000);
+        topLevelChunk.setProperty(storeSupportPropertyValue);
         topLevelChunk.setProperty(new PropertyValue(MAPIProperty.HASATTACH,
                 MessagePropertiesChunk.PROPERTIES_FLAG_READABLE | MessagePropertiesChunk.PROPERTIES_FLAG_WRITEABLE,
-                attachmentsCount == 0 ? new byte[] { 0 } : new byte[] { 1 }));
+                attachmentscount == 0 ? new byte[] { 0 } : new byte[] { 1 }));
         // Copy properties from MSG file system.
         for (Chunk chunk : attachedMsg.getMainChunks().getChunks()) {
             if (!(chunk instanceof MessagePropertiesChunk)) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org