You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jb...@apache.org on 2005/02/20 19:01:50 UTC

svn commit: r154541 - in geronimo/trunk/specs/javamail/src: java/javax/mail/internet/MimeBodyPart.java java/javax/mail/internet/MimeMultipart.java test/javax/mail/internet/MimeMessageTest.java test/javax/mail/internet/MimeMultipartTest.java

Author: jboynes
Date: Sun Feb 20 10:01:49 2005
New Revision: 154541

URL: http://svn.apache.org/viewcvs?view=rev&rev=154541
Log:
make writeTo go directly to the stream to avoid String conversion

Added:
    geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMultipartTest.java
Modified:
    geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeBodyPart.java
    geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeMultipart.java
    geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMessageTest.java

Modified: geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeBodyPart.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeBodyPart.java?view=diff&r1=154540&r2=154541
==============================================================================
--- geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeBodyPart.java (original)
+++ geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeBodyPart.java Sun Feb 20 10:01:49 2005
@@ -208,7 +208,7 @@
         headers.writeTo(out, null);
         out.write(13);
         out.write(10);
-        out.write(content);
+        getDataHandler().writeTo(out);
     }
 
     public String[] getHeader(String name) throws MessagingException {

Modified: geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeMultipart.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeMultipart.java?view=diff&r1=154540&r2=154541
==============================================================================
--- geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeMultipart.java (original)
+++ geronimo/trunk/specs/javamail/src/java/javax/mail/internet/MimeMultipart.java Sun Feb 20 10:01:49 2005
@@ -113,23 +113,24 @@
     }
 
     private static byte[] dash = { '-', '-' };
+    private static byte[] crlf = { 13, 10 };
 
     public void writeTo(OutputStream out) throws IOException, MessagingException {
         parse();
         String boundary = type.getParameter("boundary");
         byte[] bytes = boundary.getBytes();
-        PrintStream pos = new PrintStream(out, false);
         for (int i = 0; i < parts.size(); i++) {
             BodyPart bodyPart = (BodyPart) parts.get(i);
-            pos.print(dash);
-            pos.println(bytes);
-            bodyPart.writeTo(pos);
-            pos.println();
+            out.write(dash);
+            out.write(bytes);
+            out.write(crlf);
+            bodyPart.writeTo(out);
+            out.write(crlf);
         }
-        pos.print(dash);
-        pos.print(bytes);
-        pos.println(dash);
-        pos.flush();
+        out.write(dash);
+        out.write(bytes);
+        out.write(crlf);
+        out.flush();
     }
 
     protected void parse() throws MessagingException {

Modified: geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMessageTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMessageTest.java?view=diff&r1=154540&r2=154541
==============================================================================
--- geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMessageTest.java (original)
+++ geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMessageTest.java Sun Feb 20 10:01:49 2005
@@ -17,16 +17,12 @@
 
 package javax.mail.internet;
 
-import java.io.ByteArrayInputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import javax.mail.Message;
+import java.util.Properties;
 import javax.mail.MessagingException;
-import javax.mail.Part;
+import javax.mail.Session;
+import javax.activation.CommandMap;
+import javax.activation.MailcapCommandMap;
 
 import junit.framework.TestCase;
 
@@ -34,87 +30,31 @@
  * @version $Rev$ $Date$
  */
 public class MimeMessageTest extends TestCase {
-    public void testNothing() {
+    private CommandMap defaultMap;
+    private Session session;
+
+    public void testWriteTo() throws MessagingException, IOException {
+/*
+        MimeMessage msg = new MimeMessage(session);
+        msg.setSender(new InternetAddress("foo"));
+        MimeMultipart mp = new MimeMultipart();
+        MimeBodyPart part1 = new MimeBodyPart();
+        part1.setContent("Hello World", "text/plain");
+        mp.addBodyPart(part1);
+        msg.setContent(mp);
+        msg.writeTo(System.out);
+*/
     }
-    /*
-    private static final String EOL = "\r\n";
-    private static final String users =
-        "Geronimo Users <ge...@apache.org>";
-    private static final String developers =
-        "Geronimo Developers <ge...@apache.org>";
-    private static final String announce =
-        "Geronimo Team <ge...@apache.org>";
 
-    public void testMimeMessage() throws MessagingException {
-        StringBuffer buffer = new StringBuffer();
-        buffer.append("To: " + users);
-        buffer.append(EOL);
-        buffer.append("To: " + developers);
-        buffer.append(EOL);
-        buffer.append("Subject: New   ");
-        buffer.append(EOL);
-        buffer.append("   release");
-        buffer.append(EOL);
-        buffer.append("From: " + announce);
-        buffer.append(EOL);
-        buffer.append("Bcc: " + announce);
-        buffer.append(EOL);
-        buffer.append(EOL);
-        buffer.append("Hello World");
-        byte[] data = buffer.toString().getBytes();
-        InputStream in = new ByteArrayInputStream(data);
-        MimeMessage message = new MimeMessage(null, in);
-        List to =
-            Arrays.asList(message.getRecipients(Message.RecipientType.TO));
-        assertEquals(2, to.size());
-        assertTrue(to.contains(new InternetAddress(users)));
-        assertTrue(to.contains(new InternetAddress(developers)));
-        List cc =
-            Arrays.asList(message.getRecipients(Message.RecipientType.CC));
-        assertEquals(0, cc.size());
-        List bcc =
-            Arrays.asList(message.getRecipients(Message.RecipientType.BCC));
-        assertEquals(1, bcc.size());
-        assertTrue(bcc.contains(new InternetAddress(announce)));
-        List all = Arrays.asList(message.getAllRecipients());
-        assertEquals(3, all.size());
-        assertTrue(all.contains(new InternetAddress(announce)));
-        assertTrue(all.contains(new InternetAddress(users)));
-        assertTrue(all.contains(new InternetAddress(developers)));
+    protected void setUp() throws Exception {
+        defaultMap = CommandMap.getDefaultCommandMap();
+        MailcapCommandMap myMap = new MailcapCommandMap();
+        myMap.addMailcap("text/plain;;    x-java-content-handler=" + MimeMultipartTest.DummyTextHandler.class.getName());
+        CommandMap.setDefaultCommandMap(myMap);
+        session = Session.getDefaultInstance(new Properties());
     }
-    public void testSetters() throws MessagingException, IOException {
-        MimeMessage message = new MimeMessage(null, 1);
-        message.setContent("Hello world", "text/plain");
-        message.setContentID("Test message @ test.com");
-        //message.setContentLanguage(new String[] { "en" });
-        message.setContentMD5("md5hash");
-        message.setDescription("A test message");
-        message.setDisposition(Part.INLINE);
-        message.setFileName("file.txt");
-        message.setFrom(new InternetAddress(users));
-        message.setRecipient(
-            Message.RecipientType.TO,
-            new InternetAddress(developers));
-        message.setSubject("What is the first program you write?");
-        Date sent = new Date();
-        message.setSentDate(sent);
-        assertEquals("Hello world", message.getContent());
-        assertEquals("Test message @ test.com", message.getContentID());
-        assertEquals("md5hash", message.getContentMD5());
-        assertEquals("A test message", message.getDescription());
-        assertEquals("inline", message.getDisposition());
-        assertEquals("file.txt", message.getFileName());
-        //        assertEquals("en",message.getContentLanguage()[0]);
-        assertEquals(
-            "inline;filename=file.txt",
-            message.getHeader("Content-Disposition", null));
-        assertEquals(new InternetAddress(users), message.getFrom()[0]);
-        assertEquals(
-            new InternetAddress(developers),
-            message.getRecipients(Message.RecipientType.TO)[0]);
-            // Cannot use 'equals' testing becaues new Date() contains millisecond accuracy, 
-            // whereas the one from the MessageContext has been encoded to a string and parsed
-        assertEquals(sent.toString(),message.getSentDate().toString());
+
+    protected void tearDown() throws Exception {
+        CommandMap.setDefaultCommandMap(defaultMap);
     }
-    */
 }

Added: geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMultipartTest.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMultipartTest.java?view=auto&rev=154541
==============================================================================
--- geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMultipartTest.java (added)
+++ geronimo/trunk/specs/javamail/src/test/javax/mail/internet/MimeMultipartTest.java Sun Feb 20 10:01:49 2005
@@ -0,0 +1,101 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed 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.
+ */
+
+//
+// This source code implements specifications defined by the Java
+// Community Process. In order to remain compliant with the specification
+// DO NOT add / change / or delete method signatures!
+//
+package javax.mail.internet;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
+import javax.mail.MessagingException;
+import javax.activation.CommandMap;
+import javax.activation.DataHandler;
+import javax.activation.MailcapCommandMap;
+import javax.activation.DataContentHandler;
+import javax.activation.DataSource;
+
+import junit.framework.TestCase;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class MimeMultipartTest extends TestCase {
+    private CommandMap defaultMap;
+
+    public void testWriteTo() throws MessagingException, IOException {
+        MimeMultipart mp = new MimeMultipart();
+        MimeBodyPart part1 = new MimeBodyPart();
+        part1.setContent("Hello World", "text/plain");
+        mp.addBodyPart(part1);
+        MimeBodyPart part2 = new MimeBodyPart();
+        part2.setContent("Hello Again", "text/plain");
+        mp.addBodyPart(part2);
+        mp.writeTo(System.out);
+    }
+
+    protected void setUp() throws Exception {
+        defaultMap = CommandMap.getDefaultCommandMap();
+        MailcapCommandMap myMap = new MailcapCommandMap();
+        myMap.addMailcap("text/plain;;    x-java-content-handler=" + DummyTextHandler.class.getName());
+        CommandMap.setDefaultCommandMap(myMap);
+    }
+
+    protected void tearDown() throws Exception {
+        CommandMap.setDefaultCommandMap(defaultMap);
+    }
+
+    public static class DummyTextHandler implements DataContentHandler {
+        public DataFlavor[] getTransferDataFlavors() {
+            return new DataFlavor[0];  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public Object getTransferData(DataFlavor df, DataSource ds) throws UnsupportedFlavorException, IOException {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public Object getContent(DataSource ds) throws IOException {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public void writeTo(Object obj, String mimeType, OutputStream os) throws IOException {
+            os.write(((String)obj).getBytes());
+        }
+    }
+
+    public static class DummyMultipartHandler implements DataContentHandler {
+        public DataFlavor[] getTransferDataFlavors() {
+            return new DataFlavor[0];  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public Object getTransferData(DataFlavor df, DataSource ds) throws UnsupportedFlavorException, IOException {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public Object getContent(DataSource ds) throws IOException {
+            return null;  //To change body of implemented methods use File | Settings | File Templates.
+        }
+
+        public void writeTo(Object obj, String mimeType, OutputStream os) throws IOException {
+            os.write(((String)obj).getBytes());
+        }
+    }
+}