Author: norman
Date: Mon Aug  3 10:13:23 2009
New Revision: 800280

URL: http://svn.apache.org/viewvc?rev=800280&view=rev
Log:
Fix fileupload
Support of forwarding messages

Added:
    
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java
    
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEventHandler.java
Modified:
    labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java
    labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties
    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/client/mvp/MainPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
    labs/hupa/src/main/java/org/apache/hupa/server/FileItemRegistry.java
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
    
labs/hupa/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java

Modified: labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.java Mon Aug  
3 10:13:23 2009
@@ -69,4 +69,6 @@
        public String headerBcc();
 
        public String sendButton();
+
+       public String forwardMailButton();
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/HupaConstants.properties Mon 
Aug  3 10:13:23 2009
@@ -22,4 +22,5 @@
 searchButton=Search in message
 emptyMailTable=There are no emails to display
 attachments=Attachments
-sendButton=Send
\ No newline at end of file
+sendButton=Send
+forwardMailButton=Forward
\ No newline at end of file

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=800280&r1=800279&r2=800280&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 
Mon Aug  3 10:13:23 2009
@@ -34,6 +34,7 @@
 import org.apache.hupa.shared.data.IMAPMessage;
 import org.apache.hupa.shared.data.MessageAttachment;
 import org.apache.hupa.shared.data.User;
+import org.apache.hupa.shared.events.ForwardMessageEvent;
 import org.apache.hupa.shared.events.LoadMessagesEvent;
 import org.apache.hupa.shared.rpc.DeleteMessage;
 import org.apache.hupa.shared.rpc.DeleteMessageResult;
@@ -59,6 +60,10 @@
                public HasHTML getContent();
                
                public HasClickHandlers getDeleteButtonClick();
+               public HasClickHandlers getReplyButtonClick();
+               public HasClickHandlers getReplyAllButtonClick();
+               public HasClickHandlers getForwardButtonClick();
+
                public void setAttachments(List<MessageAttachment> 
attachements, String sessionId,  String folder,  long uid);
        }
 
@@ -126,6 +131,13 @@
                        
                });
                
+               display.getForwardButtonClick().addClickHandler(new 
ClickHandler() {
+
+                       public void onClick(ClickEvent event) {
+                               eventBus.fireEvent(new 
ForwardMessageEvent(user,folder,message));
+                       }
+                       
+               });
                
        }
 

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=800280&r1=800279&r2=800280&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 Mon 
Aug  3 10:13:23 2009
@@ -58,6 +58,8 @@
        private Button deleteMsgButton = new Button();
        private Button replyMsgButton = new Button();
        private Button replyAllMsgButton = new Button();
+       private Button forwardMsgButton = new Button();
+
        private FlowPanel attachments = new FlowPanel();
        
        private HupaConstants constants = GWT.create(HupaConstants.class);
@@ -117,12 +119,13 @@
                deleteMsgButton.setText(constants.deleteMailButton());
                replyMsgButton.setText(constants.replyMailButton());
                replyAllMsgButton.setText(constants.replyAllMailButton());
+               forwardMsgButton.setText(constants.forwardMailButton());
                ButtonBar buttonBar = new ButtonBar();
                buttonBar.addStyleName("hupa-IMAPMessageWidget-ButtonBar");
                buttonBar.add(replyMsgButton);
                buttonBar.add(replyAllMsgButton);
                buttonBar.add(deleteMsgButton);
-
+               buttonBar.add(forwardMsgButton);
                buttonBar.setWidth("100%");
 
                mPanel.add(buttonBar);
@@ -197,5 +200,17 @@
                        }
                }
        }
+
+       public HasClickHandlers getForwardButtonClick() {
+               return forwardMsgButton;
+       }
+
+       public HasClickHandlers getReplyAllButtonClick() {
+               return replyAllMsgButton;
+       }
+
+       public HasClickHandlers getReplyButtonClick() {
+               return replyMsgButton;
+       }
        
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java Mon 
Aug  3 10:13:23 2009
@@ -32,6 +32,7 @@
 import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
 import org.apache.hupa.client.MyAsyncCallback;
+import org.apache.hupa.client.mvp.MessageSendPresenter.Type;
 import org.apache.hupa.client.widgets.IMAPTreeItem;
 import org.apache.hupa.shared.data.IMAPFolder;
 import org.apache.hupa.shared.data.IMAPMessage;
@@ -39,6 +40,8 @@
 import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
 import org.apache.hupa.shared.events.ExpandMessageEvent;
 import org.apache.hupa.shared.events.ExpandMessageEventHandler;
+import org.apache.hupa.shared.events.ForwardMessageEvent;
+import org.apache.hupa.shared.events.ForwardMessageEventHandler;
 import org.apache.hupa.shared.events.LoadMessagesEvent;
 import org.apache.hupa.shared.events.LoginEvent;
 import org.apache.hupa.shared.events.LoginEventHandler;
@@ -189,9 +192,14 @@
        
        
        private void showNewMessage() {
+               sendPresenter.bind(user, Type.NEW);
                display.setCenter(sendPresenter.getDisplay().asWidget());
        }
        
+       private void showForwardMessage(ForwardMessageEvent event) {
+               
sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.FORWARD);
+               display.setCenter(sendPresenter.getDisplay().asWidget());
+       }
        private void reset() {
                display.getSearchValue().setValue("");
                display.bindTreeItems(new ArrayList<IMAPTreeItem>());
@@ -274,6 +282,14 @@
                        
                });
                
+               eventBus.addHandler(ForwardMessageEvent.TYPE, new 
ForwardMessageEventHandler() {
+
+                       public void onForwardMessageEvent(ForwardMessageEvent 
event) {
+                               showForwardMessage(event);
+                       }
+                       
+               });
+               
                Window.addWindowClosingHandler(new ClosingHandler() {
 
                        public void onWindowClosing(ClosingEvent event) {

Modified: 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java 
(original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java 
Mon Aug  3 10:13:23 2009
@@ -32,6 +32,8 @@
 import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
 import org.apache.hupa.client.MyAsyncCallback;
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.IMAPMessage;
 import org.apache.hupa.shared.data.Message;
 import org.apache.hupa.shared.data.MessageAttachment;
 import org.apache.hupa.shared.data.MessageContent;
@@ -43,6 +45,7 @@
 import org.apache.hupa.shared.events.LoginEventHandler;
 import org.apache.hupa.shared.events.SentMessageEvent;
 import org.apache.hupa.shared.rpc.EmptyResult;
+import org.apache.hupa.shared.rpc.ForwardMessage;
 import org.apache.hupa.shared.rpc.SendMessage;
 
 import com.google.gwt.event.dom.client.ClickEvent;
@@ -60,6 +63,9 @@
        public static final Place PLACE = new Place("MessageSend");
        private ArrayList<MessageAttachment> aList = new 
ArrayList<MessageAttachment>();
        private UploaderValueChangeHandler handler = new 
UploaderValueChangeHandler();
+       private Type type = Type.FORWARD;
+       private IMAPFolder folder;
+       private IMAPMessage oldmessage;
        
        @Inject
        public MessageSendPresenter(Display display, EventBus eventBus, 
DispatchAsync dispatcher) {
@@ -69,6 +75,13 @@
                
        }
 
+       public enum Type {
+               NEW,
+               REPLY,
+               REPLY_ALL,
+               FORWARD
+       }
+       
        public interface Display extends WidgetDisplay {
                public HasText getFromText();
                public HasText getToText();
@@ -145,14 +158,25 @@
                                        content.setMessageAttachments(aList);
                                        message.setHeader(header);
                                        message.setMessageContent(content);
-                                       dispatcher.execute(new 
SendMessage(user.getSessionId(),message), new 
MyAsyncCallback<EmptyResult>(eventBus,user) {
+                                       if (type.equals(Type.NEW)) {
+                                               dispatcher.execute(new 
SendMessage(user.getSessionId(),message), new 
MyAsyncCallback<EmptyResult>(eventBus,user) {
 
-                                               public void 
onSuccess(EmptyResult result) {
-                                                       reset();
-                                                       eventBus.fireEvent(new 
SentMessageEvent());
-                                               }
+                                                       public void 
onSuccess(EmptyResult result) {
+                                                               reset();
+                                                               
eventBus.fireEvent(new SentMessageEvent());
+                                                       }
                                                
-                                       });
+                                               });
+                                       } else if(type.equals(Type.FORWARD)) {
+                                               dispatcher.execute(new 
ForwardMessage(user.getSessionId(),message,folder,oldmessage.getUid()), new 
MyAsyncCallback<EmptyResult>(eventBus,user) {
+
+                                                       public void 
onSuccess(EmptyResult result) {
+                                                               reset();
+                                                               
eventBus.fireEvent(new SentMessageEvent());
+                                                       }
+                                               
+                                               });
+                                       }
                                        
                                }
                
@@ -168,6 +192,9 @@
                display.getToText().setText("");
                display.getSubjectText().setText("");
                aList.clear();
+               folder = null;
+               oldmessage = null;
+               type = Type.NEW;
        }
 
        @Override
@@ -221,11 +248,31 @@
        private class UploaderValueChangeHandler implements 
ValueChangeHandler<IUploader> {
 
                public void onValueChange(ValueChangeEvent<IUploader> event) {
-                       String name = ((Uploader) 
event.getValue()).getFileInputName();
+                       String name = ((Uploader) 
event.getValue()).getFilename();
                        MessageAttachment attachment = new MessageAttachment();
                        attachment.setName(name);
                        aList.add(attachment);
                }
 
        }
+       
+       
+       public void bind(User user, IMAPFolder folder, IMAPMessage 
oldmessage,Type type) {
+               this.oldmessage = oldmessage;
+               this.folder = folder;
+               this.user = user;
+               this.type = type;
+               if (type.equals(Type.FORWARD)) {
+                       display.getSubjectText().setText("Fwd: " + 
oldmessage.getHeader().getSubject());
+                       display.getMessageText().setText("\n\n-------- Original 
Message -------\n" );
+               } else {
+                       display.getSubjectText().setText("");
+                       display.getMessageText().setText("");
+               }
+       }
+       
+       public void bind(User user, Type type) {
+               bind(user,null,null,type);
+       }
+       
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/server/FileItemRegistry.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/FileItemRegistry.java?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/FileItemRegistry.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/FileItemRegistry.java Mon 
Aug  3 10:13:23 2009
@@ -23,16 +23,27 @@
 import java.util.Map;
 
 import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.logging.Log;
+
+import com.google.inject.Inject;
 
 public class FileItemRegistry {
 
        public Map<String,FileItem> map = new HashMap<String, FileItem>();
+       private Log logger;
+       
+       @Inject
+       public FileItemRegistry(Log logger) {
+               this.logger = logger;
+       }
        
        public void add(FileItem item) {
-               map.put(item.getName(), item);
+               logger.debug("Store item " + item.getName() + " with name " + 
item.getFieldName());
+               map.put(item.getFieldName(), item);
        }
        
        public FileItem get(String name) {
+               logger.debug("Retrieve item " + name);
                return map.get(name);
        }
 }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
 Mon Aug  3 10:13:23 2009
@@ -117,17 +117,17 @@
        
        protected Multipart handleAttachments(Multipart multipart, 
ArrayList<MessageAttachment> attachments) throws MessagingException {
                if (attachments != null) {
-               // lopp over the attachments
-               for (int i = 0; i < attachments.size(); i++) {
-                       // get the attachment from the registry
-                       FileItem fItem = 
registry.get(attachments.get(i).getName());
-                       // Part two is attachment
-                       MimeBodyPart messageBodyPart = new MimeBodyPart();
-                       DataSource source = new FileItemDataStore(fItem);
-                       messageBodyPart.setDataHandler(new DataHandler(source));
-                       messageBodyPart.setFileName(source.getName());
-                       multipart.addBodyPart(messageBodyPart);
-               }
+                       // lopp over the attachments
+                       for (int i = 0; i < attachments.size(); i++) {
+                               // get the attachment from the registry
+                               FileItem fItem = 
registry.get(attachments.get(i).getName());
+                               // Part two is attachment
+                               MimeBodyPart messageBodyPart = new 
MimeBodyPart();
+                               DataSource source = new 
FileItemDataStore(fItem);
+                               messageBodyPart.setDataHandler(new 
DataHandler(source));
+                               messageBodyPart.setFileName(source.getName());
+                               multipart.addBodyPart(messageBodyPart);
+                       }
                }
                return multipart;
        }
@@ -234,6 +234,8 @@
                } catch (MessagingException e) {
                        logger.error("Error while sending message", e);
                        throw new ActionException("Error while sending 
message");
+               } catch (NullPointerException e) {
+                       e.printStackTrace();
                }
                return new EmptyResult();
        }

Modified: 
labs/hupa/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java?rev=800280&r1=800279&r2=800280&view=diff
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java
 (original)
+++ 
labs/hupa/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java
 Mon Aug  3 10:13:23 2009
@@ -21,6 +21,7 @@
 
 import java.util.ArrayList;
 
+import javax.mail.Folder;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
@@ -74,7 +75,8 @@
                                message.addRecipient(RecipientType.CC, new 
InternetAddress(cc
                                                .get(i)));
                        }
-                       message.setSubject("Fwd: " + 
m.getHeader().getSubject());
+                       message.setSubject(m.getHeader().getSubject());
+                       message.saveChanges();
                        return message;
        }
 
@@ -87,7 +89,7 @@
                MimeBodyPart messageBodyPart = new MimeBodyPart();
 
                // fill message
-               messageBodyPart.setText(m.getMessageContent().getText());
+               messageBodyPart.setText(m.getMessageContent().getText() + 
"\n\nOriginal message:\n" );
 
                Multipart multipart = new MimeMultipart();
                multipart.addBodyPart(messageBodyPart);
@@ -95,6 +97,9 @@
                IMAPStore store = cache.get(getUser(action.getSessionId()));
                
                IMAPFolder folder = (IMAPFolder) 
store.getFolder(action.getFolder().getFullName());
+               if (folder.isOpen() == false) {
+                       folder.open(Folder.READ_ONLY);
+               }
                Message fMessage = 
folder.getMessageByUID(action.getReplyMessageUid());
                
                // Create and fill part for the forwarded content
@@ -111,6 +116,10 @@
                return message;
        }
 
+       /*
+        * (non-Javadoc)
+        * @see net.customware.gwt.dispatch.server.ActionHandler#getActionType()
+        */
        public Class<ForwardMessage> getActionType() {
                return ForwardMessage.class;
        }

Added: 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java?rev=800280&view=auto
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java 
(added)
+++ 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java 
Mon Aug  3 10:13:23 2009
@@ -0,0 +1,43 @@
+package org.apache.hupa.shared.events;
+
+import org.apache.hupa.shared.data.IMAPFolder;
+import org.apache.hupa.shared.data.IMAPMessage;
+import org.apache.hupa.shared.data.User;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+public class ForwardMessageEvent extends GwtEvent<ForwardMessageEventHandler> {
+
+       public final static Type<ForwardMessageEventHandler> TYPE = new 
Type<ForwardMessageEventHandler>();
+       private User user;
+       private IMAPFolder folder;
+       private IMAPMessage message;
+
+       public ForwardMessageEvent(User user, IMAPFolder folder, IMAPMessage 
message) {
+               this.user = user;
+               this.folder = folder;
+               this.message = message;
+       }
+
+       public User getUser() {
+               return user;
+       }
+
+       public IMAPFolder getFolder() {
+               return folder;
+       }
+
+       public IMAPMessage getMessage() {
+               return message;
+       }
+
+       @Override
+       protected void dispatch(ForwardMessageEventHandler handler) {
+               handler.onForwardMessageEvent(this);
+       }
+
+       @Override
+       public 
com.google.gwt.event.shared.GwtEvent.Type<ForwardMessageEventHandler> 
getAssociatedType() {
+               return TYPE;
+       }
+}

Added: 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEventHandler.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEventHandler.java?rev=800280&view=auto
==============================================================================
--- 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEventHandler.java
 (added)
+++ 
labs/hupa/src/main/java/org/apache/hupa/shared/events/ForwardMessageEventHandler.java
 Mon Aug  3 10:13:23 2009
@@ -0,0 +1,10 @@
+package org.apache.hupa.shared.events;
+
+import com.google.gwt.event.shared.EventHandler;
+
+
+public interface ForwardMessageEventHandler extends EventHandler{
+
+
+       public void onForwardMessageEvent(ForwardMessageEvent event);
+}



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

Reply via email to