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