Author: norman
Date: Wed Jul 29 17:14:29 2009
New Revision: 798982

URL: http://svn.apache.org/viewvc?rev=798982&view=rev
Log:
replace user/password with sessionId on attachment download

Modified:
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
    
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=798982&r1=798981&r2=798982&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java 
Wed Jul 29 17:14:29 2009
@@ -59,7 +59,7 @@
                public HasHTML getContent();
                
                public HasClickHandlers getDeleteButtonClick();
-               public void setAttachments(List<MessageAttachment> 
attachements, String username,  String password,  String folder,  long uid);
+               public void setAttachments(List<MessageAttachment> 
attachements, String sessionId,  String folder,  long uid);
        }
 
        public static final Place PLACE = new Place("IMAPMessage");
@@ -108,7 +108,7 @@
                display.getTo().setText(toBuf.toString());;
                display.getSubject().setText(message.getHeader().getSubject());
                
display.getContent().setHTML(message.getMessageContent().getText());
-               
display.setAttachments(message.getMessageContent().getMessageAttachments(),user.getName(),user.getPassword(),
 folder.getFullName(),message.getUid());
+               
display.setAttachments(message.getMessageContent().getMessageAttachments(),user.getSessionId(),
 folder.getFullName(),message.getUid());
        }
 
        @Override

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java?rev=798982&r1=798981&r2=798982&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/IMAPMessageView.java Wed 
Jul 29 17:14:29 2009
@@ -31,7 +31,7 @@
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Window;
 import com.google.gwt.user.client.ui.Composite;
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.Grid;
@@ -40,7 +40,6 @@
 import com.google.gwt.user.client.ui.HasText;
 import com.google.gwt.user.client.ui.Hyperlink;
 import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.ScrollPanel;
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
@@ -158,7 +157,7 @@
        }
 
        public void setAttachments(List<MessageAttachment> attachements,
-                       final String username, final String password, final 
String folder,
+                       final String sessionUid, final String folder,
                        final long uid) {
                attachments.clear();
                if (attachements != null) {
@@ -169,12 +168,11 @@
                                link.addClickHandler(new ClickHandler() {
 
                                        public void onClick(ClickEvent event) {
-                                               
DOM.setElementAttribute(RootPanel.get("__download")
-                                                               .getElement(), 
"src", GWT.getModuleBaseURL()
-                                                               + 
"downloadAttachmentServlet?attachment_name="
+                               
+                                               
Window.open(GWT.getModuleBaseURL()+ "downloadAttachmentServlet?attachment_name="
                                                                + a.getName() + 
"&folder_name=" + folder
-                                                               + 
"&message_uuid=" + uid + "&user=" + username
-                                                               + "&password=" 
+ password);
+                                                               + 
"&message_uuid=" + uid + "&sessionId=" + sessionUid
+                                                               ,"_self", "");
                                        }
 
                                });

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java?rev=798982&r1=798981&r2=798982&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/servlet/DownloadAttachmentServlet.java
 Wed Jul 29 17:14:29 2009
@@ -33,9 +33,11 @@
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.User;
 
 import com.google.inject.Inject;
 import com.sun.mail.imap.IMAPFolder;
@@ -65,52 +67,56 @@
                        HttpServletResponse response) throws ServletException, 
IOException {
                String message_uuid = request.getParameter("message_uuid");
                String attachmentName = request.getParameter("attachment_name");
-               String user = request.getParameter("user");
-               String pass = request.getParameter("password");
+               String sessionId = request.getParameter("sessionId");
                String folderName = request.getParameter("folder_name");
-               response.setContentType("application/download");
-               response.setHeader("Content-disposition", "attachment; 
filename="
-                               + attachmentName + "");
-
-               OutputStream out = response.getOutputStream();
-               InputStream in = null;
-               try {
-                       in = getInputStream(user, pass, folderName, Long
-                                       .parseLong(message_uuid), 
attachmentName);
-
-                       if (in != null) {
-                               byte[] buffer = new byte[4096];
-                               int bytesRead;
-                               int bytesComplete = 0;
-                               while ((bytesRead = in.read(buffer)) != -1) {
-                                       bytesComplete = bytesComplete + 
bytesRead;
-                                       out.write(buffer, 0, bytesRead); // 
write
+               HttpSession session = request.getSession();
+               if (session.getId().equals(sessionId)) {
+                       response.setContentType("application/download");
+                       response.setHeader("Content-disposition", "attachment; 
filename="
+                                       + attachmentName + "");
+
+                       OutputStream out = response.getOutputStream();
+                       InputStream in = null;
+                       try {
+                               in = getInputStream((User) 
request.getSession().getAttribute(
+                                               "user"), folderName, 
Long.parseLong(message_uuid),
+                                               attachmentName);
+
+                               if (in != null) {
+                                       byte[] buffer = new byte[4096];
+                                       int bytesRead;
+                                       int bytesComplete = 0;
+                                       while ((bytesRead = in.read(buffer)) != 
-1) {
+                                               bytesComplete = bytesComplete + 
bytesRead;
+                                               out.write(buffer, 0, 
bytesRead); // write
+                                       }
+                                       out.flush();
+                                       
response.setContentLength(bytesComplete);
+                               } else {
+                                       response.setContentLength(0);
+                               }
+                       } catch (Exception e) {
+                               logger.error("Error while downloading 
attachment "
+                                               + attachmentName + " of message 
" + message_uuid
+                                               + " for sessionId " + 
sessionId, e);
+                       } finally {
+                               if (in != null) {
+                                       in.close();
+                               }
+                               if (out != null) {
+                                       out.close();
                                }
-                               out.flush();
-                               response.setContentLength(bytesComplete);
-                       } else {
-                               response.setContentLength(0);
-                       }
-               } catch (Exception e) {
-                       logger.error("Error while downloading attachment " + 
attachmentName
-                                       + " of message " + message_uuid + " for 
user " + user, e);
-               } finally {
-                       if (in != null) {
-                               in.close();
-                       }
-                       if (out != null) {
-                               out.close();
-                       }
 
+                       }
                }
 
        }
 
-       private InputStream getInputStream(String user, String pass,
-                       String folderName, long messageUUID, String 
attachmentName)
-                       throws MessagingException, IOException {
+       private InputStream getInputStream(User user, String folderName,
+                       long messageUUID, String attachmentName) throws 
MessagingException,
+                       IOException {
 
-               IMAPStore store = cache.get(user, pass);
+               IMAPStore store = cache.get(user);
 
                IMAPFolder folder = (IMAPFolder) store.getFolder(folderName);
                if (folder.isOpen() == false) {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to