You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by sa...@apache.org on 2014/11/25 21:19:30 UTC

svn commit: r1641681 - in /geronimo/specs/trunk/geronimo-javamail_1.4_spec: ./ src/main/java/javax/mail/internet/ src/main/java/org/apache/geronimo/mail/util/ src/test/java/javax/mail/util/ src/test/resources/

Author: salyh
Date: Tue Nov 25 20:19:29 2014
New Revision: 1641681

URL: http://svn.apache.org/r1641681
Log:
Fix GERONIMO-6165. This commit introduce the dependency on and the usage of (shaded and relocated) apache mime4j core library. mime4j replaces util/QuotedPrintable* classes which will be deleted by this commit.

Added:
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/java/javax/mail/util/QuotedPrintableEncoderTest.java
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/GERONIMO-6165.msg   (with props)
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail-result.txt
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail.msg   (with props)
Removed:
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/org/apache/geronimo/mail/util/QuotedPrintable.java
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/org/apache/geronimo/mail/util/QuotedPrintableDecoderStream.java
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/org/apache/geronimo/mail/util/QuotedPrintableEncoder.java
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/org/apache/geronimo/mail/util/QuotedPrintableEncoderStream.java
Modified:
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/pom.xml
    geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/javax/mail/internet/MimeUtility.java

Modified: geronimo/specs/trunk/geronimo-javamail_1.4_spec/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-javamail_1.4_spec/pom.xml?rev=1641681&r1=1641680&r2=1641681&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-javamail_1.4_spec/pom.xml (original)
+++ geronimo/specs/trunk/geronimo-javamail_1.4_spec/pom.xml Tue Nov 25 20:19:29 2014
@@ -38,16 +38,16 @@
 
     <description>Javamail 1.4 API Specification</description>
 
-    <url>http://geronimo.apache.org/maven/${siteId}/${version}</url>
+    <url>http://geronimo.apache.org/maven/${siteId}/${project.version}</url>
     <distributionManagement>
         <site>
             <id>apache-website</id>
-            <url>${site.deploy.url}/maven/${siteId}/${version}</url>
+            <url>${site.deploy.url}/maven/${siteId}/${project.version}</url>
         </site>
     </distributionManagement>
 
     <properties>
-        <siteId>specs/${artifactId}</siteId>
+        <siteId>specs/${project.artifactId}</siteId>
         <geronimo.osgi.private.pkg>org.apache.geronimo.mail*</geronimo.osgi.private.pkg>
         <geronimo.osgi.resources>src/main/resources/,META-INF/LICENSE.txt=LICENSE.txt,META-INF/NOTICE.txt=NOTICE.txt</geronimo.osgi.resources>
     </properties>
@@ -89,6 +89,11 @@
             <version>3.8.2</version>
             <scope>test</scope>
         </dependency>
+         <dependency>
+             <groupId>org.apache.james</groupId>
+             <artifactId>apache-mime4j-core</artifactId>
+             <version>0.7.2</version>
+         </dependency>
     </dependencies>
 
     <build>
@@ -98,7 +103,7 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <configuration>
                     <instructions>
-                        <Bundle-SymbolicName>${groupId}.${artifactId};singleton=true</Bundle-SymbolicName>
+                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId};singleton=true</Bundle-SymbolicName>
                         <Specification-Title>JSR-919 Javamail API 1.4</Specification-Title>
                         <Specification-Vendor>Sun Microsystems, Inc.</Specification-Vendor>
                         <Specification-Version>1.4</Specification-Version>
@@ -109,45 +114,61 @@
                     </instructions>
                 </configuration>
             </plugin>
+            <plugin>
+                <!-- Override of default rat checks.  To use, type "mvn -Prat verify". -->
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>check</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <reportFile>${project.build.directory}/${project.build.finalName}.rat</reportFile>
+                    <excludeSubProjects>false</excludeSubProjects>
+                    <excludes>
+                        <exclude>**/target/**/*</exclude>
+                        <exclude>**/appended-resources/**/*</exclude>
+                        <exclude>**/velocity.log</exclude>
+                        <!-- manifest files don't support comments so don't contain the ASL2.0 header -->
+                        <exclude>**/*.MF</exclude>
+                        <!-- This is a test file that needs to be in exactly the format it is. -->
+                        <exclude>**/test/resources/**/*.msg</exclude>
+                        <exclude>**/test/resources/**/*.txt</exclude>
+                        <exclude>**/wmtom.bin</exclude>
+                        <!--RAT doesn't seem to recognize MIT style licenses-->
+                        <exclude>manual/src/styles/print.css</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <configuration>
+                    <artifactSet>
+                    <includes>
+                      <include>org.apache.james:apache-mime4j-core</include>
+                    </includes>
+                  </artifactSet>
+                  <relocations>
+                    <relocation>
+                      <pattern>org.apache.james.mime4j</pattern>
+                      <shadedPattern>org.apache.geronimo.mail.james.mime4j</shadedPattern>
+                    </relocation>
+                  </relocations>
+                </configuration>
+                <executions>
+                  <execution>
+                    <phase>package</phase>
+                    <goals>
+                      <goal>shade</goal>
+                    </goals>
+                  </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
-    <profiles>
-        <profile>
-            <id>rat</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <!-- Override of default rat checks.  To use, type "mvn -Prat verify". -->
-                        <groupId>org.apache.rat</groupId>
-                        <artifactId>apache-rat-plugin</artifactId>
-                        <version>0.6</version>
-                        <executions>
-                            <execution>
-                                <phase>verify</phase>
-                                <goals>
-                                    <goal>check</goal>
-                                </goals>
-                            </execution>
-                        </executions>
-                        <configuration>
-                            <reportFile>${project.build.directory}/${project.build.finalName}.rat</reportFile>
-                            <excludeSubProjects>false</excludeSubProjects>
-                            <excludes>
-                                <exclude>**/target/**/*</exclude>
-                                <exclude>**/appended-resources/**/*</exclude>
-                                <exclude>**/velocity.log</exclude>
-                                <!-- manifest files don't support comments so don't contain the ASL2.0 header -->
-                                <exclude>**/*.MF</exclude>
-                                <!-- This is a test file that needs to be in exactly the format it is. -->
-                                <exclude>**/wmtom.bin</exclude>
-                                <!--RAT doesn't seem to recognize MIT style licenses-->
-                                <exclude>manual/src/styles/print.css</exclude>
-                            </excludes>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
 </project>

Modified: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/javax/mail/internet/MimeUtility.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/javax/mail/internet/MimeUtility.java?rev=1641681&r1=1641680&r2=1641681&view=diff
==============================================================================
--- geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/javax/mail/internet/MimeUtility.java (original)
+++ geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/main/java/javax/mail/internet/MimeUtility.java Tue Nov 25 20:19:29 2014
@@ -19,15 +19,14 @@
 
 package javax.mail.internet;
 
-import java.io.BufferedInputStream;
 import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
+import java.nio.charset.Charset;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.NoSuchElementException;
@@ -42,13 +41,16 @@ import org.apache.geronimo.mail.util.Bas
 import org.apache.geronimo.mail.util.Base64DecoderStream;
 import org.apache.geronimo.mail.util.Base64Encoder;
 import org.apache.geronimo.mail.util.Base64EncoderStream;
-import org.apache.geronimo.mail.util.QuotedPrintableDecoderStream;
-import org.apache.geronimo.mail.util.QuotedPrintableEncoderStream;
-import org.apache.geronimo.mail.util.QuotedPrintableEncoder;
-import org.apache.geronimo.mail.util.QuotedPrintable;
 import org.apache.geronimo.mail.util.SessionUtil;
 import org.apache.geronimo.mail.util.UUDecoderStream;
 import org.apache.geronimo.mail.util.UUEncoderStream;
+import org.apache.james.mime4j.codec.DecodeMonitor;
+import org.apache.james.mime4j.codec.DecoderUtil;
+import org.apache.james.mime4j.codec.EncoderUtil;
+import org.apache.james.mime4j.codec.EncoderUtil.Encoding;
+import org.apache.james.mime4j.codec.EncoderUtil.Usage;
+import org.apache.james.mime4j.codec.QuotedPrintableInputStream;
+import org.apache.james.mime4j.codec.QuotedPrintableOutputStream;
 
 // encodings include "base64", "quoted-printable", "7bit", "8bit" and "binary".
 // In addition, "uuencode" is also supported. The
@@ -68,12 +70,12 @@ public class MimeUtility {
 
     public static final int ALL = -1;
 
-    private static String defaultJavaCharset;
+    //private static String defaultJavaCharset;
     private static String escapedChars = "\"\\\r\n";
     private static String linearWhiteSpace = " \t\r\n";
 
-    private static String QP_WORD_SPECIALS = "=_?\"#$%&'(),.:;<>@[\\]^`{|}~";
-    private static String QP_TEXT_SPECIALS = "=_?";
+    //private static String QP_WORD_SPECIALS = "=_?\"#$%&'(),.:;<>@[\\]^`{|}~";
+    //private static String QP_TEXT_SPECIALS = "=_?";
 
     // the javamail spec includes the ability to map java encoding names to MIME-specified names.  Normally,
     // these values are loaded from a character mapping file.
@@ -100,7 +102,7 @@ public class MimeUtility {
             return new UUDecoderStream(in);
         }
         else if (encoding.equals("quoted-printable")) {
-            return new QuotedPrintableDecoderStream(in);
+            return new QuotedPrintableInputStream(in);
         }
         else {
             throw new MessagingException("Unknown encoding " + encoding);
@@ -436,8 +438,11 @@ public class MimeUtility {
             }
             // maybe quoted printable.
             else if (encoding.equals("Q")) {
-                QuotedPrintableEncoder dataEncoder = new QuotedPrintableEncoder();
-                dataEncoder.decodeWord(encodedData, out);
+                String retVal = DecoderUtil.decodeEncodedWords(word, DecodeMonitor.SILENT);
+                return retVal;
+                
+                //QuotedPrintableEncoder dataEncoder = new QuotedPrintableEncoder();
+                //dataEncoder.decodeWord(encodedData, out);
             }
             else {
                 throw new UnsupportedEncodingException("Unknown RFC 2047 encoding: " + encoding);
@@ -481,7 +486,7 @@ public class MimeUtility {
             return new UUEncoderStream(out);
         }
         else if (encoding.equals("quoted-printable")) {
-            return new QuotedPrintableEncoderStream(out);
+            return new QuotedPrintableOutputStream(out, false); //TODO binary false??
         }
         else {
             throw new MessagingException("Unknown encoding " + encoding);
@@ -514,7 +519,7 @@ public class MimeUtility {
             return new UUEncoderStream(out, filename);
         }
         else if (encoding.equals("quoted-printable")) {
-             return new QuotedPrintableEncoderStream(out);
+             return new QuotedPrintableOutputStream(out, false); //TODO binary false???
         }
         else {
             throw new MessagingException("Unknown encoding " + encoding);
@@ -583,9 +588,11 @@ public class MimeUtility {
                 encodeBase64(word, result, sizeLimit, charset, dataEncoder, true, SessionUtil.getBooleanProperty(MIME_FOLDENCODEDWORDS, false)); 
             }
             else {
-                QuotedPrintableEncoder dataEncoder = new QuotedPrintableEncoder();
-                encodeQuotedPrintable(word, result, sizeLimit, charset, dataEncoder, true, 
-                    SessionUtil.getBooleanProperty(MIME_FOLDENCODEDWORDS, false), encodingWord ? QP_WORD_SPECIALS : QP_TEXT_SPECIALS); 
+                //TODO MIME_FOLDENCODEDWORDS
+                return EncoderUtil.encodeEncodedWord(word, encodingWord ? Usage.WORD_ENTITY:Usage.TEXT_TOKEN, 0, Charset.forName(charset), Encoding.Q);
+                //QuotedPrintableEncoder dataEncoder = new QuotedPrintableEncoder();
+                //encodeQuotedPrintable(word, result, sizeLimit, charset, dataEncoder, true, 
+                //    SessionUtil.getBooleanProperty(MIME_FOLDENCODEDWORDS, false), encodingWord ? QP_WORD_SPECIALS : QP_TEXT_SPECIALS); 
             }
             return result.toString();    
         } catch (IOException e) {
@@ -663,7 +670,7 @@ public class MimeUtility {
      * @param foldSegments
      *                  Indicates the type of delimiter to use (blank or newline sequence).
      */
-    static private void encodeQuotedPrintable(String data, StringBuffer out, int sizeLimit, String charset, QuotedPrintableEncoder encoder, 
+    /*static private void encodeQuotedPrintable(String data, StringBuffer out, int sizeLimit, String charset, QuotedPrintableEncoder encoder, 
         boolean firstSegment, boolean foldSegments, String specials)  throws IOException 
     {
         // this needs to be converted into the appropriate transfer encoding. 
@@ -694,7 +701,7 @@ public class MimeUtility {
             // do the encoding of the segment.
             encoder.encodeWord(bytes, out, charset, specials);
         }
-    }
+    }*/
 
 
     /**
@@ -720,7 +727,7 @@ public class MimeUtility {
 
         try {
             // get a parser that allows us to make comparisons.
-            ContentType content = new ContentType(ds.getContentType());
+            ContentType content = new ContentType(handler.getContentType());
 
             // The only access to the content bytes at this point is by asking the handler to write
             // the information out to a stream.  We're going to pipe this through a special stream
@@ -801,7 +808,7 @@ public class MimeUtility {
      */
     public static String quote(String word, String specials) {
         int wordLength = word.length();
-        boolean requiresQuoting = false;
+        //boolean requiresQuoting = false;
         // scan the string looking for problem characters
         for (int i =0; i < wordLength; i++) {
             char ch = word.charAt(i);
@@ -1242,7 +1249,7 @@ public class MimeUtility {
             // we have an unescaped line break
             else if (ch == '\n' || ch == '\r') {
                 // remember the position in case we need to backtrack.
-                int lineBreak = i;
+                //int lineBreak = i;
                 boolean CRLF = false;
 
                 if (ch == '\r') {

Added: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/java/javax/mail/util/QuotedPrintableEncoderTest.java
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/java/javax/mail/util/QuotedPrintableEncoderTest.java?rev=1641681&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/java/javax/mail/util/QuotedPrintableEncoderTest.java (added)
+++ geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/java/javax/mail/util/QuotedPrintableEncoderTest.java Tue Nov 25 20:19:29 2014
@@ -0,0 +1,44 @@
+/*
+ * 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 javax.mail.util;
+
+import java.io.InputStream;
+import java.util.Scanner;
+
+import javax.mail.Session;
+import javax.mail.internet.MimeMessage;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+public class QuotedPrintableEncoderTest extends TestCase{
+
+    public void testGERONIMO6165() throws Exception{
+        MimeMessage msg = new MimeMessage((Session)null, QuotedPrintableEncoderTest.class.getResourceAsStream("/GERONIMO-6165.msg"));
+        Assert.assertEquals("quoted-printable", msg.getEncoding());
+        Assert.assertEquals("hello there!", msg.getContent().toString());
+    }
+    
+    public void testLongMail() throws Exception{
+        MimeMessage msg = new MimeMessage((Session)null, QuotedPrintableEncoderTest.class.getResourceAsStream("/quoted-printable-longmail.msg"));
+        InputStream result = QuotedPrintableEncoderTest.class.getResourceAsStream("/quoted-printable-longmail-result.txt");
+        Assert.assertEquals("quoted-printable", msg.getEncoding());
+        Assert.assertEquals(new Scanner(result,"UTF-8").useDelimiter("\\A").next(), msg.getContent());
+    }
+}

Added: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/GERONIMO-6165.msg
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/GERONIMO-6165.msg?rev=1641681&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/GERONIMO-6165.msg (added)
+++ geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/GERONIMO-6165.msg Tue Nov 25 20:19:29 2014
@@ -0,0 +1,12 @@
+From: "Apache Org" <ap...@apache.org>
+To: "Apache Org" <ap...@apache.org>
+Subject: Test
+Date: Sun, 23 Nov 2014 13:11:29 -0200
+Message-ID: <UU...@apache.org>
+MIME-Version: 1.0
+Content-Type: text/plain;
+	charset=iso-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+hello th=
+ere!
\ No newline at end of file

Propchange: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/GERONIMO-6165.msg
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail-result.txt
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail-result.txt?rev=1641681&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail-result.txt (added)
+++ geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail-result.txt Tue Nov 25 20:19:29 2014
@@ -0,0 +1,5 @@
+Er hörte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer würde ihm schon folgen, spät in der Nacht und dazu noch in dieser engen Gasse mitten im übel beleumundeten Hafenviertel? Gerade jetzt, wo er das Ding seines Lebens gedreht hatte und mit der Beute verschwinden wollte! Hatte einer seiner zahllosen Kollegen dieselbe Idee gehabt, ihn beobachtet und abgewartet, um ihn nun um die Früchte seiner Arbeit zu erleichtern? Oder gehörten die Schritte hinter ihm zu einem der unzähligen Gesetzeshüter dieser Stadt, und die stählerne Acht um seine Handgelenke würde gleich zuschnappen? Er konnte die Aufforderung stehen zu bleiben schon hören. Gehetzt sah er sich um. Plötzlich erblickte er den schmalen Durchgang. Blitzartig drehte er sich nach rechts und verschwand zwischen den beiden Gebäuden.
+
+Beinahe wäre er dabei über den umgestürzten Mülleimer gefallen, der mitten im Weg lag. Er versuchte, sich in der Dunkelheit seinen Weg zu ertasten und erstarrte: Anscheinend gab es keinen anderen Ausweg aus diesem kleinen Hof als den Durchgang, durch den er gekommen war. Die Schritte wurden lauter und lauter, er sah eine dunkle Gestalt um die Ecke biegen. Fieberhaft irrten seine Augen durch die nächtliche Dunkelheit und suchten einen Ausweg. War jetzt wirklich alles vorbei, waren alle Mühe und alle Vorbereitungen umsonst? Er presste sich ganz eng an die Wand hinter ihm und hoffte, der Verfolger würde ihn übersehen, als plötzlich neben ihm mit kaum wahrnehmbarem Quietschen eine Tür im nächtlichen Wind hin und her schwang. Könnte dieses der flehentlich herbeigesehnte Ausweg aus seinem Dilemma sein?
+
+Langsam bewegte er sich auf die offene Tür zu, immer dicht an die Mauer gepresst. Würde diese Tür seine Rettung werden? Er hörte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer würde ihm schon folgen, spät in der Nacht und dazu noch in dieser engen Gasse mitten im übel beleumundeten Hafenviertel? Gerade jetzt, wo er das Ding seines Lebens gedreht hatte und mit der Beute verschwinden wollte! Hatte einer seiner zahllosen Kollegen dieselbe Idee gehabt, ihn beobachtet und abgewartet, um ihn nun um die Früchte seiner Arbeit zu erleichtern? Oder gehörten die Schritte hinter ihm zu einem der unzähligen Gesetzeshüter dieser Stadt, und die stählerne Acht um seine Handgelenke würde gleich zuschnappen? Er konnte die Aufforderung stehen zu bleiben schon hören. Gehetzt sah er sich um. Plötzlich erblickte er den schmalen Durchgang. Blitzartig drehte er sich nach rechts und verschwand zwischen den beiden Gebäuden. Beinahe wäre er dabei
  über den umgestürzten Mülleimer gefallen, der mitten im Weg lag. Er versuchte, sich in der Dunkelheit seinen Weg zu ertasten und erstarrte: Anscheinend gab es keinen anderen Ausweg aus diesem kleinen Hof als den Durchgang, durch den er gekommen war. Die Schritte wurden lauter und lauter, er sah eine dunkle Gestalt um die Ecke biegen. Fieberhaft irrten seine Augen durch die nächtliche Dunkelheit und suchten einen Ausweg. War jetzt wirklich alles vorbei, waren alle Mühe und alle Vorbereitungen umsonst? Er presste sich ganz eng an die Wand hinter ihm und hoffte, der Verfolger würde ihn übersehen, als plötzlich neben ihm

Added: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail.msg
URL: http://svn.apache.org/viewvc/geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail.msg?rev=1641681&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail.msg (added)
+++ geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail.msg Tue Nov 25 20:19:29 2014
@@ -0,0 +1,58 @@
+From: "Apache Org" <ap...@apache.org>
+To: "Apache Org" <ap...@apache.org>
+Subject: Test
+Date: Sun, 23 Nov 2014 13:11:29 -0200
+Message-ID: <UU...@apache.org>
+MIME-Version: 1.0
+Content-Type: text/plain;
+	charset=iso-8859-1
+Content-Transfer-Encoding: quoted-printable
+
+Er h=F6rte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer w=FC=
+rde ihm schon folgen, sp=E4t in der Nacht und dazu noch in dieser engen Gas=
+se mitten im =FCbel beleumundeten Hafenviertel? Gerade jetzt, wo er das Din=
+g seines Lebens gedreht hatte und mit der Beute verschwinden wollte! Hatte =
+einer seiner zahllosen Kollegen dieselbe Idee gehabt, ihn beobachtet und ab=
+gewartet, um ihn nun um die Fr=FCchte seiner Arbeit zu erleichtern? Oder ge=
+h=F6rten die Schritte hinter ihm zu einem der unz=E4hligen Gesetzesh=FCter =
+dieser Stadt, und die st=E4hlerne Acht um seine Handgelenke w=FCrde gleich =
+zuschnappen? Er konnte die Aufforderung stehen zu bleiben schon h=F6ren. Ge=
+hetzt sah er sich um. Pl=F6tzlich erblickte er den schmalen Durchgang. Blit=
+zartig drehte er sich nach rechts und verschwand zwischen den beiden Geb=E4=
+uden.
+
+Beinahe w=E4re er dabei =FCber den umgest=FCrzten M=FClleimer gefallen, der=
+ mitten im Weg lag. Er versuchte, sich in der Dunkelheit seinen Weg zu erta=
+sten und erstarrte: Anscheinend gab es keinen anderen Ausweg aus diesem kle=
+inen Hof als den Durchgang, durch den er gekommen war. Die Schritte wurden =
+lauter und lauter, er sah eine dunkle Gestalt um die Ecke biegen. Fieberhaf=
+t irrten seine Augen durch die n=E4chtliche Dunkelheit und suchten einen Au=
+sweg. War jetzt wirklich alles vorbei, waren alle M=FChe und alle Vorbereit=
+ungen umsonst? Er presste sich ganz eng an die Wand hinter ihm und hoffte, =
+der Verfolger w=FCrde ihn =FCbersehen, als pl=F6tzlich neben ihm mit kaum w=
+ahrnehmbarem Quietschen eine T=FCr im n=E4chtlichen Wind hin und her schwan=
+g. K=F6nnte dieses der flehentlich herbeigesehnte Ausweg aus seinem Dilemma=
+ sein?
+
+Langsam bewegte er sich auf die offene T=FCr zu, immer dicht an die Mauer g=
+epresst. W=FCrde diese T=FCr seine Rettung werden? Er h=F6rte leise Schritt=
+e hinter sich. Das bedeutete nichts Gutes. Wer w=FCrde ihm schon folgen, sp=
+=E4t in der Nacht und dazu noch in dieser engen Gasse mitten im =FCbel bele=
+umundeten Hafenviertel? Gerade jetzt, wo er das Ding seines Lebens gedreht =
+hatte und mit der Beute verschwinden wollte! Hatte einer seiner zahllosen K=
+ollegen dieselbe Idee gehabt, ihn beobachtet und abgewartet, um ihn nun um =
+die Fr=FCchte seiner Arbeit zu erleichtern? Oder geh=F6rten die Schritte hi=
+nter ihm zu einem der unz=E4hligen Gesetzesh=FCter dieser Stadt, und die st=
+=E4hlerne Acht um seine Handgelenke w=FCrde gleich zuschnappen? Er konnte d=
+ie Aufforderung stehen zu bleiben schon h=F6ren. Gehetzt sah er sich um. Pl=
+=F6tzlich erblickte er den schmalen Durchgang. Blitzartig drehte er sich na=
+ch rechts und verschwand zwischen den beiden Geb=E4uden. Beinahe w=E4re er =
+dabei =FCber den umgest=FCrzten M=FClleimer gefallen, der mitten im Weg lag=
+. Er versuchte, sich in der Dunkelheit seinen Weg zu ertasten und erstarrte=
+: Anscheinend gab es keinen anderen Ausweg aus diesem kleinen Hof als den D=
+urchgang, durch den er gekommen war. Die Schritte wurden lauter und lauter,=
+ er sah eine dunkle Gestalt um die Ecke biegen. Fieberhaft irrten seine Aug=
+en durch die n=E4chtliche Dunkelheit und suchten einen Ausweg. War jetzt wi=
+rklich alles vorbei, waren alle M=FChe und alle Vorbereitungen umsonst? Er =
+presste sich ganz eng an die Wand hinter ihm und hoffte, der Verfolger w=FC=
+rde ihn =FCbersehen, als pl=F6tzlich neben ihm

Propchange: geronimo/specs/trunk/geronimo-javamail_1.4_spec/src/test/resources/quoted-printable-longmail.msg
------------------------------------------------------------------------------
    svn:mime-type = text/plain