You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2015/07/03 13:04:53 UTC
svn commit: r1688998 - in /poi/trunk:
src/scratchpad/src/org/apache/poi/hsmf/datatypes/
src/scratchpad/testcases/org/apache/poi/hsmf/ test-data/hsmf/
Author: centic
Date: Fri Jul 3 11:04:52 2015
New Revision: 1688998
URL: http://svn.apache.org/r1688998
Log:
Bug 57744: Fix parsing the email submission data when id contains a hyphen
Added:
poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunk.java
poi/trunk/test-data/hsmf/message_extra_hyphen_submission_chunk.msg (with props)
poi/trunk/test-data/hsmf/message_normal_submission_chunk.msg (with props)
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java
poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java?rev=1688998&r1=1688997&r2=1688998&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java Fri Jul 3 11:04:52 2015
@@ -69,10 +69,19 @@ public class MessageSubmissionChunk exte
for(String part : parts) {
if(part.startsWith("l=")) {
// Format of this bit appears to be l=<id>-<time>-<number>
- if(part.indexOf('-') != -1 &&
- part.indexOf('-') != part.lastIndexOf('-')) {
- String dateS = part.substring(part.indexOf('-')+1, part.lastIndexOf('-'));
-
+ // ID may contain hyphens.
+
+ String dateS = null;
+ final int numberPartBegin = part.lastIndexOf('-');
+ if (numberPartBegin != -1) {
+ final int datePartBegin = part.lastIndexOf('-', numberPartBegin-1);
+ if (datePartBegin != -1 &&
+ // cannot extract date if only one hyphen is in the string...
+ numberPartBegin > datePartBegin) {
+ dateS = part.substring(datePartBegin + 1, numberPartBegin);
+ }
+ }
+ if (dateS != null) {
// Should be yymmddhhmmssZ
Matcher m = datePatern.matcher(dateS);
if(m.matches()) {
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java?rev=1688998&r1=1688997&r2=1688998&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/AllHSMFTests.java Fri Jul 3 11:04:52 2015
@@ -39,6 +39,7 @@ public final class AllHSMFTests {
suite.addTestSuite(TestOutlookTextExtractor.class);
suite.addTestSuite(TestPOIFSChunkParser.class);
suite.addTestSuite(TestMessageSubmissionChunkY2KRead.class);
+ suite.addTestSuite(TestMessageSubmissionChunk.class);
return suite;
}
Added: poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunk.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunk.java?rev=1688998&view=auto
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunk.java (added)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestMessageSubmissionChunk.java Fri Jul 3 11:04:52 2015
@@ -0,0 +1,58 @@
+/* ====================================================================
+ 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.hsmf;
+
+import java.io.IOException;
+
+import org.apache.poi.hsmf.MAPIMessage;
+import org.apache.poi.hsmf.exceptions.ChunkNotFoundException;
+import org.apache.poi.POIDataSamples;
+
+import java.util.Calendar;
+
+import junit.framework.TestCase;
+
+public final class TestMessageSubmissionChunk extends TestCase {
+
+ private MAPIMessage mapiMessageExtraHyphenSubmissionChunk;
+ private MAPIMessage mapiMessageNormalSubmissionChunk;
+
+ /**
+ * Initialise this test, load up the test messages.
+ * @throws Exception
+ */
+ public TestMessageSubmissionChunk() throws IOException {
+ POIDataSamples samples = POIDataSamples.getHSMFInstance();
+ this.mapiMessageExtraHyphenSubmissionChunk = new MAPIMessage(samples.openResourceAsStream("message_extra_hyphen_submission_chunk.msg"));
+ this.mapiMessageNormalSubmissionChunk = new MAPIMessage(samples.openResourceAsStream("message_normal_submission_chunk.msg"));
+ }
+
+ public void testReadMessageDateExtraHyphenSubmissionChunk() throws ChunkNotFoundException {
+ final Calendar date = mapiMessageExtraHyphenSubmissionChunk.getMessageDate();
+ TestCase.assertNotNull(date);
+ final int year = date.get(Calendar.YEAR);
+ TestCase.assertEquals(2007, year);
+ }
+
+ public void testReadMessageDateNormalSubmissionChunk() throws ChunkNotFoundException {
+ final Calendar date = mapiMessageNormalSubmissionChunk.getMessageDate();
+ TestCase.assertNotNull(date);
+ final int year = date.get(Calendar.YEAR);
+ TestCase.assertEquals(2007, year);
+ }
+}
Added: poi/trunk/test-data/hsmf/message_extra_hyphen_submission_chunk.msg
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/hsmf/message_extra_hyphen_submission_chunk.msg?rev=1688998&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/hsmf/message_extra_hyphen_submission_chunk.msg
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: poi/trunk/test-data/hsmf/message_normal_submission_chunk.msg
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/hsmf/message_normal_submission_chunk.msg?rev=1688998&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/hsmf/message_normal_submission_chunk.msg
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org