You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/11/23 20:13:12 UTC
svn commit: r1038286 - in /james/imap/trunk:
mailbox/src/main/java/org/apache/james/mailbox/
store/src/main/java/org/apache/james/mailbox/store/
store/src/main/java/org/apache/james/mailbox/store/streaming/
Author: norman
Date: Tue Nov 23 19:13:12 2010
New Revision: 1038286
URL: http://svn.apache.org/viewvc?rev=1038286&view=rev
Log:
Allow to read Content via InputStream a optional implementation. See IMAP-232
Added:
james/imap/trunk/mailbox/src/main/java/org/apache/james/mailbox/InputStreamContent.java
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/StreamUtils.java
Added: james/imap/trunk/mailbox/src/main/java/org/apache/james/mailbox/InputStreamContent.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/main/java/org/apache/james/mailbox/InputStreamContent.java?rev=1038286&view=auto
==============================================================================
--- james/imap/trunk/mailbox/src/main/java/org/apache/james/mailbox/InputStreamContent.java (added)
+++ james/imap/trunk/mailbox/src/main/java/org/apache/james/mailbox/InputStreamContent.java Tue Nov 23 19:13:12 2010
@@ -0,0 +1,38 @@
+/****************************************************************
+ * 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.james.mailbox;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * {@link Content} which offers the content via {@link InputStream} too
+ *
+ *
+ */
+public interface InputStreamContent extends Content{
+
+ /**
+ * Return the content as {@link InputStream}
+ *
+ * @return content
+ * @throws IOException
+ */
+ public InputStream getInputStream() throws IOException;
+}
Modified: james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java?rev=1038286&r1=1038285&r2=1038286&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java Tue Nov 23 19:13:12 2010
@@ -22,16 +22,20 @@
*/
package org.apache.james.mailbox.store;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.nio.ByteBuffer;
+import java.nio.channels.Channels;
import java.nio.channels.WritableByteChannel;
-import org.apache.james.mailbox.Content;
+import org.apache.james.mailbox.InputStreamContent;
import org.apache.james.mailbox.MailboxException;
import org.apache.james.mailbox.MessageResult;
import org.apache.james.mailbox.store.mail.model.Header;
-public final class ResultHeader implements MessageResult.Header, Content {
+public final class ResultHeader implements MessageResult.Header, InputStreamContent {
private final String name;
private final String value;
@@ -94,4 +98,14 @@ public final class ResultHeader implemen
public String toString() {
return "[HEADER " + name + ": " + value + "]";
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.mailbox.InputStreamContent#getInputStream()
+ */
+ public InputStream getInputStream() throws IOException {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ writeTo(Channels.newChannel(out));
+ return new ByteArrayInputStream(out.toByteArray());
+ }
}
\ No newline at end of file
Modified: james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java?rev=1038286&r1=1038285&r2=1038286&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java Tue Nov 23 19:13:12 2010
@@ -32,7 +32,7 @@ import org.apache.james.mailbox.store.ma
* {@link Content} which is stored in a {@link InputStream}
*
*/
-public final class InputStreamContent implements Content{
+public final class InputStreamContent implements org.apache.james.mailbox.InputStreamContent{
private Message m;
private Type type;
@@ -60,6 +60,18 @@ public final class InputStreamContent im
}
/*
+ *
+ */
+ public InputStream getInputStream() throws IOException {
+ switch (type) {
+ case Full:
+ return m.getFullContent();
+ default:
+ return m.getBodyContent();
+ }
+
+ }
+ /*
* (non-Javadoc)
* @see org.apache.james.mailbox.Content#writeTo(java.nio.channels.WritableByteChannel)
*/
Modified: james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/StreamUtils.java
URL: http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/StreamUtils.java?rev=1038286&r1=1038285&r2=1038286&view=diff
==============================================================================
--- james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/StreamUtils.java (original)
+++ james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/StreamUtils.java Tue Nov 23 19:13:12 2010
@@ -19,9 +19,13 @@
package org.apache.james.mailbox.store.streaming;
+import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.channels.Channels;
+
+import org.apache.james.mailbox.Content;
/**
* Utility methods for messages.
@@ -54,4 +58,14 @@ public class StreamUtils {
baos.write(buf, 0, read);
}
}
+
+ public static InputStream toInputStream(Content content) throws IOException {
+ if (content instanceof org.apache.james.mailbox.InputStreamContent) {
+ return ((org.apache.james.mailbox.InputStreamContent) content).getInputStream();
+ } else {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ content.writeTo(Channels.newChannel(out));
+ return new ByteArrayInputStream(out.toByteArray());
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org