2011/1/20 <[email protected]>: > Author: olegk > Date: Thu Jan 20 14:45:01 2011 > New Revision: 1061321 > > URL: http://svn.apache.org/viewvc?rev=1061321&view=rev > Log: > Removed #writeTo method from the Message interface; added option of using a > different MimeWriter / MimeBuilder implementations with MessageBuilderImpl
This remove "output/writing" capability from the public dom api: do you plan to introduce an alternative method in the dom package or you think this feature should not be present in a dom api? Stefano > Modified: > > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/Message.java > > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java > > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java > > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java > > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java > > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java > > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java > > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java > > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java > > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java > > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/Message.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/Message.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/Message.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/Message.java > Thu Jan 20 14:45:01 2011 > @@ -19,8 +19,6 @@ > > package org.apache.james.mime4j.dom; > > -import java.io.IOException; > -import java.io.OutputStream; > import java.util.Collection; > import java.util.Date; > import java.util.TimeZone; > @@ -33,16 +31,6 @@ import org.apache.james.mime4j.dom.addre > public interface Message extends Entity, Body { > > /** > - * Write the content to the given output stream. > - * > - * @param out > - * the output stream to write to. > - * @throws IOException > - * in case of an I/O error > - */ > - void writeTo(OutputStream out) throws IOException; > - > - /** > * Returns the value of the <i>Message-ID</i> header field of this message > * or <code>null</code> if it is not present. > * > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/dom/MessageBuilder.java > Thu Jan 20 14:45:01 2011 > @@ -21,6 +21,7 @@ package org.apache.james.mime4j.dom; > > import java.io.IOException; > import java.io.InputStream; > +import java.io.OutputStream; > > import org.apache.james.mime4j.MimeException; > import org.apache.james.mime4j.codec.DecodeMonitor; > @@ -36,6 +37,8 @@ public abstract class MessageBuilder { > > public abstract Message parse(InputStream source) throws MimeException, > IOException; > > + public abstract void writeTo(Message message, OutputStream out) throws > IOException; > + > public abstract void setDecodeMonitor( > DecodeMonitor decodeMonitor); > > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageBuilderImpl.java > Thu Jan 20 14:45:01 2011 > @@ -2,6 +2,7 @@ package org.apache.james.mime4j.message; > > import java.io.IOException; > import java.io.InputStream; > +import java.io.OutputStream; > > import org.apache.james.mime4j.MimeException; > import org.apache.james.mime4j.codec.DecodeMonitor; > @@ -17,6 +18,8 @@ import org.apache.james.mime4j.stream.Mu > */ > public class MessageBuilderImpl extends MessageBuilder { > > + private MimeWriter mimeWriter; > + private MimeBuilder mimeBuilder; > private StorageProvider storageProvider = null; > private DecodeMonitor decodeMonitor = null; > private MimeEntityConfig mimeEntityConfig = null; > @@ -32,14 +35,32 @@ public class MessageBuilderImpl extends > return new MessageImpl(); > } > > + private MimeBuilder getMimeBuilder() { > + if (this.mimeBuilder != null) { > + return this.mimeBuilder; > + } else { > + return MimeBuilder.DEFAULT; > + } > + > + } > + > + private MimeWriter getMimeWriter() { > + if (this.mimeWriter != null) { > + return this.mimeWriter; > + } else { > + return MimeWriter.DEFAULT; > + } > + > + } > + > @Override > public Message newMessage(Message source) { > - return MimeBuilder.DEFAULT.copy(source); > + return getMimeBuilder().copy(source); > } > > @Override > public Message parse(InputStream source) throws MimeException, > IOException { > - return MimeBuilder.DEFAULT.parse(source, > + return getMimeBuilder().parse(source, > mimeEntityConfig, > storageProvider, > mutableBodyDescriptorFactory, > @@ -49,6 +70,11 @@ public class MessageBuilderImpl extends > } > > @Override > + public void writeTo(Message message, OutputStream out) throws > IOException { > + getMimeWriter().writeMessage(message, out); > + } > + > + @Override > public void setDecodeMonitor(DecodeMonitor decodeMonitor) { > this.decodeMonitor = decodeMonitor; > } > @@ -76,4 +102,12 @@ public class MessageBuilderImpl extends > this.flatMode = true; > } > > + public void setMimeWriter(MimeWriter mimeWriter) { > + this.mimeWriter = mimeWriter; > + } > + > + public void setMimeBuilder(MimeBuilder mimeBuilder) { > + this.mimeBuilder = mimeBuilder; > + } > + > } > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MessageImpl.java > Thu Jan 20 14:45:01 2011 > @@ -19,8 +19,6 @@ > > package org.apache.james.mime4j.message; > > -import java.io.IOException; > -import java.io.OutputStream; > import java.util.Collection; > import java.util.Date; > import java.util.Map; > @@ -53,13 +51,6 @@ public class MessageImpl extends Abstrac > public MessageImpl() { > } > > - /** > - * @see org.apache.james.mime4j.dom.Message#writeTo(java.io.OutputStream) > - */ > - public void writeTo(OutputStream out) throws IOException { > - MimeWriter.DEFAULT.writeEntity(this, out); > - } > - > @Override > protected String newUniqueBoundary() { > return MimeUtil.createUniqueBoundary(); > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/main/java/org/apache/james/mime4j/message/MimeWriter.java > Thu Jan 20 14:45:01 2011 > @@ -119,6 +119,21 @@ public class MimeWriter { > } > > /** > + * Write the specified <code>Message</code> to the specified > + * <code>OutputStream</code>. > + * > + * @param entity > + * the <code>Message</code> to write. > + * @param out > + * the OutputStream to write to. > + * @throws IOException > + * if an I/O error occurs. > + */ > + public void writeMessage(Message message, OutputStream out) throws > IOException { > + writeEntity(message, out); > + } > + > + /** > * Write the specified <code>Multipart</code> to the specified > * <code>OutputStream</code>. > * > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/ExampleMessagesRoundtripTest.java > Thu Jan 20 14:45:01 2011 > @@ -36,6 +36,7 @@ import junit.framework.TestSuite; > import org.apache.james.mime4j.codec.CodecUtil; > import org.apache.james.mime4j.dom.Message; > import org.apache.james.mime4j.message.MimeBuilder; > +import org.apache.james.mime4j.message.MimeWriter; > import org.apache.james.mime4j.stream.MimeEntityConfig; > > /** > @@ -60,7 +61,7 @@ public class ExampleMessagesRoundtripTes > config.setMaxLineLen(-1); > Message inputMessage = MimeBuilder.DEFAULT.parse(url.openStream(), > config); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > - inputMessage.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(inputMessage, out); > > String s = url.toString(); > URL msgout = new URL(s.substring(0, s.lastIndexOf('.')) + ".out"); > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageTest.java > Thu Jan 20 14:45:01 2011 > @@ -45,6 +45,7 @@ import org.apache.james.mime4j.message.B > import org.apache.james.mime4j.message.HeaderImpl; > import org.apache.james.mime4j.message.MessageImpl; > import org.apache.james.mime4j.message.MimeBuilder; > +import org.apache.james.mime4j.message.MimeWriter; > import org.apache.james.mime4j.message.MultipartImpl; > > public class MessageTest extends TestCase { > @@ -136,7 +137,7 @@ public class MessageTest extends TestCas > Message m = MimeBuilder.DEFAULT.parse(new > ByteArrayInputStream(inputByte)); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > > - m.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(m, out); > > InputStream output = new ByteArrayInputStream(out.toByteArray()); > > @@ -162,7 +163,7 @@ public class MessageTest extends TestCas > .getBody(), headerValue); > > ByteArrayOutputStream out = new ByteArrayOutputStream(); > - m.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(m, out); > List<?> lines = IOUtils.readLines((new BufferedReader( > new InputStreamReader(new ByteArrayInputStream(out > .toByteArray()))))); > > Modified: > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/dom/src/test/java/org/apache/james/mime4j/dom/MessageWriteToTest.java > Thu Jan 20 14:45:01 2011 > @@ -24,6 +24,7 @@ import java.io.ByteArrayOutputStream; > > import org.apache.james.mime4j.ExampleMail; > import org.apache.james.mime4j.message.MimeBuilder; > +import org.apache.james.mime4j.message.MimeWriter; > > import junit.framework.TestCase; > > @@ -43,7 +44,7 @@ public class MessageWriteToTest extends > Message message = createMessage(ExampleMail.RFC822_SIMPLE_BYTES); > assertFalse("Not multipart", message.isMultipart()); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > - message.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(message, out); > assertEquals(out.toByteArray(), ExampleMail.RFC822_SIMPLE_BYTES); > } > > @@ -61,7 +62,7 @@ public class MessageWriteToTest extends > Message message = > createMessage(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_BYTES); > assertTrue("Is multipart", message.isMultipart()); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > - message.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(message, out); > assertEquals(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_BYTES, > out.toByteArray()); > } > > @@ -69,7 +70,7 @@ public class MessageWriteToTest extends > Message message = > createMessage(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_NOPREAMBLE_BYTES); > assertTrue("Is multipart", message.isMultipart()); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > - message.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(message, out); > > assertEquals(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_NOPREAMBLE_BYTES, > out.toByteArray()); > } > > @@ -77,7 +78,7 @@ public class MessageWriteToTest extends > Message message = > createMessage(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_PREAMBLE_EPILOGUE_BYTES); > assertTrue("Is multipart", message.isMultipart()); > ByteArrayOutputStream out = new ByteArrayOutputStream(); > - message.writeTo(out); > + MimeWriter.DEFAULT.writeMessage(message, out); > > assertEquals(ExampleMail.MULTIPART_WITH_BINARY_ATTACHMENTS_PREAMBLE_EPILOGUE_BYTES, > out.toByteArray()); > } > > > Modified: > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/MultipartMessage.java > Thu Jan 20 14:45:01 2011 > @@ -36,6 +36,7 @@ import org.apache.james.mime4j.field.add > import org.apache.james.mime4j.message.BodyFactory; > import org.apache.james.mime4j.message.BodyPart; > import org.apache.james.mime4j.message.MessageImpl; > +import org.apache.james.mime4j.message.MimeWriter; > import org.apache.james.mime4j.message.MultipartImpl; > import org.apache.james.mime4j.storage.Storage; > import org.apache.james.mime4j.storage.StorageOutputStream; > @@ -88,7 +89,7 @@ public class MultipartMessage { > > // 4) print message to standard output > > - message.writeTo(System.out); > + MimeWriter.DEFAULT.writeMessage(message, System.out); > > // 5) message is no longer needed and should be disposed of > > > Modified: > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/dom/TextPlainMessage.java > Thu Jan 20 14:45:01 2011 > @@ -27,6 +27,7 @@ import org.apache.james.mime4j.field.add > import org.apache.james.mime4j.field.address.ParseException; > import org.apache.james.mime4j.message.BodyFactory; > import org.apache.james.mime4j.message.MessageImpl; > +import org.apache.james.mime4j.message.MimeWriter; > > /** > * This example generates a message very similar to the one from RFC 5322 > @@ -62,7 +63,7 @@ public class TextPlainMessage { > > // 4) print message to standard output > > - message.writeTo(System.out); > + MimeWriter.DEFAULT.writeMessage(message, System.out); > > // 5) message is no longer needed and should be disposed of > > > Modified: > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java > URL: > http://svn.apache.org/viewvc/james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java?rev=1061321&r1=1061320&r2=1061321&view=diff > ============================================================================== > --- > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java > (original) > +++ > james/mime4j/branches/dom-api-refactoring/examples/src/main/java/org/apache/james/mime4j/samples/transform/TransformMessage.java > Thu Jan 20 14:45:01 2011 > @@ -35,6 +35,7 @@ import org.apache.james.mime4j.message.B > import org.apache.james.mime4j.message.BodyPart; > import org.apache.james.mime4j.message.MessageImpl; > import org.apache.james.mime4j.message.MimeBuilder; > +import org.apache.james.mime4j.message.MimeWriter; > import org.apache.james.mime4j.message.MultipartImpl; > import org.apache.james.mime4j.storage.DefaultStorageProvider; > import org.apache.james.mime4j.storage.StorageProvider; > @@ -65,7 +66,7 @@ public class TransformMessage { > > // Print transformed message. > System.out.println("\n\nTransformed > message:\n--------------------\n"); > - transformed.writeTo(System.out); > + MimeWriter.DEFAULT.writeMessage(transformed, System.out); > > // Messages should be disposed of when they are no longer needed. > // Disposing of a message also disposes of all child elements (e.g. > body > @@ -75,7 +76,7 @@ public class TransformMessage { > // Print original message to illustrate that it was not affected by > the > // transformation. > System.out.println("\n\nOriginal template:\n------------------\n"); > - template.writeTo(System.out); > + MimeWriter.DEFAULT.writeMessage(template, System.out); > > // Original message is no longer needed. > template.dispose(); > > >
