You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by no...@apache.org on 2009/09/04 11:00:56 UTC

svn commit: r811292 - in /labs/hupa: client/src/main/java/org/apache/hupa/client/mvp/ server/src/main/java/org/apache/hupa/server/guice/ server/src/main/java/org/apache/hupa/server/handler/ shared/src/main/java/org/apache/hupa/shared/data/ shared/src/m...

Author: norman
Date: Fri Sep  4 09:00:54 2009
New Revision: 811292

URL: http://svn.apache.org/viewvc?rev=811292&view=rev
Log:
Rewrite some RPC stuff not only send the uid of the message over the wire ( speed improvements )
Only use the "sent" folder if it exists or could get created

Added:
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java
      - copied, changed from r810932, labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java
Removed:
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/IMAPMessage.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageContent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageHeader.java
Modified:
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainView.java
    labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
    labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java
    labs/hupa/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Message.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/DeleteMessageEvent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java
    labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPFolderView.java Fri Sep  4 09:00:54 2009
@@ -34,9 +34,9 @@
 import org.apache.hupa.client.widgets.IMAPTreeItem;
 import org.apache.hupa.client.widgets.Loading;
 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.User;
-import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
 import org.apache.hupa.shared.events.LoginEvent;
 import org.apache.hupa.shared.events.LoginEventHandler;
 import org.apache.hupa.shared.events.LogoutEvent;
@@ -228,7 +228,7 @@
 		@Override
 		public void onDrop(DragContext context) {
 			IMAPTreeItem oldTreeItem = (IMAPTreeItem)folderTree.getSelectedItem();
-			IMAPMessage message = (IMAPMessage)controller.getDragValue();
+			Message message = (Message)controller.getDragValue();
 			if (message.getFlags().contains(IMAPFlag.SEEN) == false) {
 				oldTreeItem.decreaseUnseenMessageCount();
 				item.increaseUnseenMessageCount();

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListPresenter.java Fri Sep  4 09:00:54 2009
@@ -31,7 +31,7 @@
 import org.apache.hupa.client.MyAsyncCallback;
 import org.apache.hupa.client.widgets.HasDialog;
 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.User;
 import org.apache.hupa.shared.events.DecreaseUnseenEvent;
 import org.apache.hupa.shared.events.ExpandMessageEvent;
@@ -64,11 +64,11 @@
 		public void removeTableListener(TableListener listener) ;
 		public void setPostFetchMessageCount(int count);
 		public HasClickHandlers getNewClick();
-		public IMAPMessage getData(int rowIndex);
+		public Message getData(int rowIndex);
 		public HasClickHandlers getDeleteClick();
 		public void reloadData(User user, IMAPFolder folder,String searchValue);
-		public void removeMessages(ArrayList<IMAPMessage> messages);
-		public ArrayList<IMAPMessage> getSelectedMessages();
+		public void removeMessages(ArrayList<Message> messages);
+		public ArrayList<Message> getSelectedMessages();
 		public void reset();
 		public HasDialog getConfirmDialog();
 		public HasClickHandlers getConfirmDialogClick();
@@ -104,7 +104,7 @@
 		registerHandler(eventBus.addHandler(MoveMessageEvent.TYPE, new MoveMessageEventHandler() {
 
 			public void onMoveMessageHandler(MoveMessageEvent event) {
-				final IMAPMessage message = event.getMessage();
+				final Message message = event.getMessage();
 				dispatcher.execute(new MoveMessage(event.getUser().getSessionId(),event.getOldFolder(),event.getNewFolder(),message.getUid()), new AsyncCallback<MoveMessageResult>() {
 
 					public void onFailure(Throwable caught) {
@@ -112,7 +112,7 @@
 					}
 
 					public void onSuccess(MoveMessageResult result) {
-						ArrayList<IMAPMessage> messageArray = new ArrayList<IMAPMessage>();
+						ArrayList<Message> messageArray = new ArrayList<Message>();
 						messageArray.add(message);
 						display.removeMessages(messageArray);
 					}
@@ -172,7 +172,7 @@
 	}
 
 	private void deleteMessages() {
-		final ArrayList<IMAPMessage> selectedMessages = new ArrayList<IMAPMessage>(display.getSelectedMessages());
+		final ArrayList<Message> selectedMessages = new ArrayList<Message>(display.getSelectedMessages());
 		ArrayList<Long> uids = new ArrayList<Long>();
 		for (int i = 0; i < selectedMessages.size(); i++) {
 			uids.add(selectedMessages.get(i).getUid());
@@ -228,7 +228,7 @@
 		public void onCellClicked(SourcesTableEvents sender, int row,
 				int cell) {
 			
-			IMAPMessage message = display.getData(row);
+			Message message = display.getData(row);
 
 			eventBus.fireEvent(new ExpandMessageEvent(user,folder,message));
 		}

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessageListView.java Fri Sep  4 09:00:54 2009
@@ -38,9 +38,9 @@
 import org.apache.hupa.client.widgets.PagingOptions;
 import org.apache.hupa.client.widgets.DragRefetchPagingScrollTable.DragHandlerFactory;
 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.User;
-import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
 import org.apache.hupa.shared.events.MessagesReceivedEvent;
 import org.apache.hupa.shared.rpc.FetchMessages;
 import org.apache.hupa.shared.rpc.FetchMessagesResult;
@@ -101,8 +101,8 @@
 	private IMAPFolder folder;
 	private String searchValue;
 	private PagingOptions options;
-	private DragRefetchPagingScrollTable<IMAPMessage> mailTable;
-	private CachedTableModel<IMAPMessage> cTableModel = new CachedTableModel<IMAPMessage>(new IMAPMessageTableModel());
+	private DragRefetchPagingScrollTable<Message> mailTable;
+	private CachedTableModel<Message> cTableModel = new CachedTableModel<Message>(new IMAPMessageTableModel());
 
 	private EventBus bus;
 	private FixedWidthGrid dataTable = createDataTable();
@@ -122,7 +122,7 @@
 		VerticalPanel vPanel = new VerticalPanel();
 
 		cTableModel.setRowCount(MutableTableModel.UNKNOWN_ROW_COUNT);
-		mailTable = new DragRefetchPagingScrollTable<IMAPMessage>(
+		mailTable = new DragRefetchPagingScrollTable<Message>(
 				cTableModel, dataTable, new FixedWidthFlexTable(),
 				createTableDefinitation(),controller,1);
 		mailTable.setPageSize(20);
@@ -138,7 +138,7 @@
 		emptyTable.setHorizontalAlignment(HTML.ALIGN_CENTER);
 		emptyTable.setHeight("600px");
 		mailTable.setEmptyTableWidget(emptyTable);
-		FixedWidthGridBulkRenderer<IMAPMessage> bulkRenderer = new FixedWidthGridBulkRenderer<IMAPMessage>(mailTable.getDataTable(),mailTable);
+		FixedWidthGridBulkRenderer<Message> bulkRenderer = new FixedWidthGridBulkRenderer<Message>(mailTable.getDataTable(),mailTable);
 		mailTable.setBulkRenderer(bulkRenderer);
 		
 		mailTable.setCellPadding(0);
@@ -150,7 +150,7 @@
 			public void onPageLoad(PageLoadEvent event) {
 				for (int i = 0; i < mailTable.getDataTable().getRowCount(); i++) {
 					mailTable.getDataTable().getRowFormatter().setStyleName(i,"hupa-Mailtable-row");
-					IMAPMessage msg = mailTable.getRowValue(i);
+					Message msg = mailTable.getRowValue(i);
 					if (msg != null) {
 						if (msg.getFlags().contains(IMAPFlag.SEEN) == false) {
 							mailTable.getDataTable().getRowFormatter().addStyleName(i,"hupa-Mailtable-row-notseen");
@@ -242,8 +242,8 @@
 		initWidget(vPanel);
 	}
 	
-	private DefaultTableDefinition<IMAPMessage> createTableDefinitation() {
-		DefaultTableDefinition<IMAPMessage> def = new DefaultTableDefinition<IMAPMessage>(createColumnDefinitionList());
+	private DefaultTableDefinition<Message> createTableDefinitation() {
+		DefaultTableDefinition<Message> def = new DefaultTableDefinition<Message>(createColumnDefinitionList());
 		
 		return def;
 	}
@@ -262,11 +262,11 @@
 	 * Create a new List which holds all needed ColumnDefinitions 
 	 * 
 	 */
-	private List<ColumnDefinition<IMAPMessage, ?>> createColumnDefinitionList() {
-		List<ColumnDefinition<IMAPMessage, ?>> cList = new ArrayList<ColumnDefinition<IMAPMessage, ?>>();
+	private List<ColumnDefinition<Message, ?>> createColumnDefinitionList() {
+		List<ColumnDefinition<Message, ?>> cList = new ArrayList<ColumnDefinition<Message, ?>>();
 
 		FromColumnDefination from = new FromColumnDefination();
-		from.setCellRenderer(new WhiteSpaceCellRenderer<IMAPMessage>());
+		from.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
 		from.setColumnTruncatable(true);
 		from.setPreferredColumnWidth(250);
 		from.setMinimumColumnWidth(150);
@@ -275,7 +275,7 @@
 
 		
 		SubjectColumnDefination subject =new SubjectColumnDefination();
-		subject.setCellRenderer(new WhiteSpaceCellRenderer<IMAPMessage>());
+		subject.setCellRenderer(new WhiteSpaceCellRenderer<Message>());
 		subject.setColumnTruncatable(true);
 		subject.setPreferredColumnWidth(800);
 		subject.setMinimumColumnWidth(200);
@@ -284,11 +284,11 @@
 		AttachmentColumnDefination attachment = new AttachmentColumnDefination();
 		attachment.setColumnTruncatable(false);
 		// display an image if the message contains an attachment
-		attachment.setCellRenderer(new CellRenderer<IMAPMessage, Boolean>() {
+		attachment.setCellRenderer(new CellRenderer<Message, Boolean>() {
 
-			public void renderRowValue(IMAPMessage rowValue,
-					ColumnDefinition<IMAPMessage, Boolean> columnDef,
-					AbstractCellView<IMAPMessage> view) {
+			public void renderRowValue(Message rowValue,
+					ColumnDefinition<Message, Boolean> columnDef,
+					AbstractCellView<Message> view) {
 				if (columnDef.getCellValue(rowValue)) {
 					view.setHTML(imageBundle.attachmentIcon().getHTML());
 				} else {
@@ -307,13 +307,13 @@
 		DateColumnDefination date = new DateColumnDefination();
 		date.setColumnTruncatable(true);
 		// set a special renderer for the date
-		date.setCellRenderer(new CellRenderer<IMAPMessage, Date>() {
+		date.setCellRenderer(new CellRenderer<Message, Date>() {
 
-			public void renderRowValue(IMAPMessage rowValue,
-					ColumnDefinition<IMAPMessage, Date> columnDef,
-					AbstractCellView<IMAPMessage> view) {
+			public void renderRowValue(Message rowValue,
+					ColumnDefinition<Message, Date> columnDef,
+					AbstractCellView<Message> view) {
 				DateTimeFormat dtformat;
-				Date rDate = rowValue.getHeader().getReceivedDate();
+				Date rDate = rowValue.getReceivedDate();
 				int rYear = rDate.getYear();
 				int rMonth = rDate.getMonth();
 				int rDay = rDate.getDate();
@@ -352,20 +352,20 @@
 	 * TableModel which retrieve the messages for the user
 	 *
 	 */
-	private final class IMAPMessageTableModel extends MutableTableModel<IMAPMessage> {
+	private final class IMAPMessageTableModel extends MutableTableModel<Message> {
 
 		@Override
 		public void requestRows(
 				final Request request,
-				final com.google.gwt.gen2.table.client.TableModel.Callback<IMAPMessage> callback) {
+				final com.google.gwt.gen2.table.client.TableModel.Callback<Message> callback) {
 			
 			// if the given user or folder is null, its safe to return an empty list
 			if (user == null || folder == null) {
-				callback.onRowsReady(request, new TableModelHelper.Response<IMAPMessage>() {
+				callback.onRowsReady(request, new TableModelHelper.Response<Message>() {
 
 					@Override
-					public Iterator<IMAPMessage> getRowValues() {
-						return new ArrayList<IMAPMessage>().iterator();
+					public Iterator<Message> getRowValues() {
+						return new ArrayList<Message>().iterator();
 					}
 					
 				});
@@ -379,10 +379,10 @@
 
 				public void onSuccess(final FetchMessagesResult result) {
 					bus.fireEvent(new MessagesReceivedEvent(result.getMessages()));
-					 TableModelHelper.Response<IMAPMessage> response = new TableModelHelper.Response<IMAPMessage>() {
+					 TableModelHelper.Response<Message> response = new TableModelHelper.Response<Message>() {
 
 						@Override
-						public Iterator<IMAPMessage> getRowValues() {
+						public Iterator<Message> getRowValues() {
 							return result.getMessages().iterator();
 						}
 						
@@ -405,7 +405,7 @@
 		}
 
 		@Override
-		protected boolean onSetRowValue(int row, IMAPMessage rowValue) {
+		protected boolean onSetRowValue(int row, Message rowValue) {
 			return true;
 		}
 		
@@ -417,15 +417,15 @@
 	 * @author Norman
 	 *
 	 */
-	private final class AttachmentColumnDefination extends AbstractColumnDefinition<IMAPMessage, Boolean> {
+	private final class AttachmentColumnDefination extends AbstractColumnDefinition<Message, Boolean> {
 
 		@Override
-		public Boolean getCellValue(IMAPMessage rowValue) {
-			return rowValue.getMessageContent().hasAttachment();
+		public Boolean getCellValue(Message rowValue) {
+			return rowValue.hasAttachment();
 		}
 
 		@Override
-		public void setCellValue(IMAPMessage rowValue, Boolean cellValue) {
+		public void setCellValue(Message rowValue, Boolean cellValue) {
 		}
 		
 	}
@@ -434,16 +434,16 @@
 	 * ColumnDefination which display the From 
 	 *
 	 */
-	private final class FromColumnDefination extends AbstractColumnDefinition<IMAPMessage, String> {
+	private final class FromColumnDefination extends AbstractColumnDefinition<Message, String> {
 
 		@Override
-		public String getCellValue(IMAPMessage rowValue) {
-			return rowValue.getHeader().getFrom();
+		public String getCellValue(Message rowValue) {
+			return rowValue.getFrom();
 		}
 
 		@Override
-		public void setCellValue(IMAPMessage rowValue, String cellValue) {
-			rowValue.getHeader().setFrom(cellValue);
+		public void setCellValue(Message rowValue, String cellValue) {
+			rowValue.setFrom(cellValue);
 		}
 		
 	}
@@ -452,16 +452,16 @@
 	 * ColumnDefination which display the Subject
 	 *
 	 */
-	private final class SubjectColumnDefination extends AbstractColumnDefinition<IMAPMessage, String> {
+	private final class SubjectColumnDefination extends AbstractColumnDefinition<Message, String> {
 
 		@Override
-		public String getCellValue(IMAPMessage rowValue) {
-			return rowValue.getHeader().getSubject();
+		public String getCellValue(Message rowValue) {
+			return rowValue.getSubject();
 		}
 
 		@Override
-		public void setCellValue(IMAPMessage rowValue, String cellValue) {
-			rowValue.getHeader().setSubject(cellValue);
+		public void setCellValue(Message rowValue, String cellValue) {
+			rowValue.setSubject(cellValue);
 
 		}
 		
@@ -471,16 +471,16 @@
 	 * ColumnDefination which display the Date
 	 * 
 	 */
-	private final class DateColumnDefination extends AbstractColumnDefinition<IMAPMessage, Date> {
+	private final class DateColumnDefination extends AbstractColumnDefinition<Message, Date> {
 
 		@Override
-		public Date getCellValue(IMAPMessage rowValue) {
-			return rowValue.getHeader().getReceivedDate();
+		public Date getCellValue(Message rowValue) {
+			return rowValue.getReceivedDate();
 		}
 
 		@Override
-		public void setCellValue(IMAPMessage rowValue, Date cellValue) {
-			rowValue.getHeader().setReceivedDate(cellValue);
+		public void setCellValue(Message rowValue, Date cellValue) {
+			rowValue.setReceivedDate(cellValue);
 		}
 		
 	}
@@ -601,7 +601,7 @@
 	 * (non-Javadoc)
 	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getData(int)
 	 */
-	public IMAPMessage getData(int rowIndex) {
+	public Message getData(int rowIndex) {
 		return mailTable.getRowValue(rowIndex);
 	}
 
@@ -657,7 +657,7 @@
 	 * (non-Javadoc)
 	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#getSelectedMessages()
 	 */
-	public ArrayList<IMAPMessage> getSelectedMessages() {
+	public ArrayList<Message> getSelectedMessages() {
 		return mailTable.getSelectedRows();
 	}
 
@@ -665,7 +665,7 @@
 	 * (non-Javadoc)
 	 * @see org.apache.hupa.client.mvp.IMAPMessageListPresenter.Display#removeMessages(java.util.ArrayList)
 	 */
-	public void removeMessages(ArrayList<IMAPMessage> messages) {
+	public void removeMessages(ArrayList<Message> messages) {
 		mailTable.removeRows(messages);
 	}
 

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/IMAPMessagePresenter.java Fri Sep  4 09:00:54 2009
@@ -32,7 +32,8 @@
 import org.apache.hupa.client.MyAsyncCallback;
 import org.apache.hupa.shared.Util;
 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.MessageDetails;
 import org.apache.hupa.shared.data.MessageAttachment;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.events.BackEvent;
@@ -71,7 +72,8 @@
 	}
 
 	public static final Place PLACE = new Place("IMAPMessage");
-	private IMAPMessage message;
+	private MessageDetails messageDetails;
+	private Message message;
 	private DispatchAsync dispatcher;
 	private IMAPFolder folder;
 	private User user;
@@ -84,8 +86,9 @@
 	}
 
 	
-	public void bind(User user, IMAPFolder folder, IMAPMessage message) {
+	public void bind(User user, IMAPFolder folder, Message message, MessageDetails messageDetails) {
 		this.message = message;
+		this.messageDetails = messageDetails;
 		this.folder = folder;
 		this.user = user;
 		if (isBound == false) { 
@@ -95,16 +98,16 @@
 	}
 
 	private void updateDisplay() {
-		display.getFrom().setText(message.getHeader().getFrom());
-		display.getCc().setText(Util.arrayToString(message.getHeader().getCc()));
-		display.getTo().setText(Util.arrayToString(message.getHeader().getTo()));
-		display.getSubject().setText(message.getHeader().getSubject());
-		String con = message.getMessageContent().getText();
-		if (message.getMessageContent().isHTML() == false) {
+		display.getFrom().setText(message.getFrom());
+		display.getCc().setText(Util.arrayToString(message.getCc()));
+		display.getTo().setText(Util.arrayToString(message.getTo()));
+		display.getSubject().setText(message.getSubject());
+		String con = messageDetails.getText();
+		if (messageDetails.isHTML() == false) {
 			con = Util.toHtml(con);
 		}
 		display.getContent().setHTML(con);
-		display.setAttachments(message.getMessageContent().getMessageAttachments(),user.getSessionId(), folder.getFullName(),message.getUid());
+		display.setAttachments(messageDetails.getMessageAttachments(),user.getSessionId(), folder.getFullName(),message.getUid());
 	}
 	
 	@Override
@@ -133,7 +136,7 @@
 		registerHandler(display.getForwardButtonClick().addClickHandler(new ClickHandler() {
 
 			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new ForwardMessageEvent(user,folder,message));
+				eventBus.fireEvent(new ForwardMessageEvent(user,folder,message, messageDetails));
 			}
 			
 		}));
@@ -141,7 +144,7 @@
 		registerHandler(display.getReplyButtonClick().addClickHandler(new ClickHandler() {
 
 			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new ReplyMessageEvent(user,folder,message,false));
+				eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, false));
 			}
 			
 		}));
@@ -149,7 +152,7 @@
 		registerHandler(display.getReplyAllButtonClick().addClickHandler(new ClickHandler() {
 
 			public void onClick(ClickEvent event) {
-				eventBus.fireEvent(new ReplyMessageEvent(user,folder,message,true));
+				eventBus.fireEvent(new ReplyMessageEvent(user,folder,message, messageDetails, true));
 			}
 			
 		}));

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainPresenter.java Fri Sep  4 09:00:54 2009
@@ -31,9 +31,10 @@
 import org.apache.hupa.client.CachingDispatchAsync;
 import org.apache.hupa.client.mvp.MessageSendPresenter.Type;
 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.MessageDetails;
 import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
 import org.apache.hupa.shared.events.BackEvent;
 import org.apache.hupa.shared.events.BackEventHandler;
 import org.apache.hupa.shared.events.DecreaseUnseenEvent;
@@ -70,7 +71,7 @@
 	public interface Display extends WidgetDisplay{
 		public HasClickHandlers getSearchClick();
 		public HasValue<String> getSearchValue();
-		public void fillOracle(ArrayList<IMAPMessage> messages);
+		public void fillOracle(ArrayList<Message> messages);
 		public void setCenter(Widget widget);
 		public void setWest(Widget widget);
 	}
@@ -112,11 +113,11 @@
 		display.setCenter(messageListPresenter.getDisplay().asWidget());
 	}
 	
-	private void showMessage(User user, IMAPFolder folder, IMAPMessage message) {
+	private void showMessage(User user, IMAPFolder folder, Message message, MessageDetails details) {
 		sendPresenter.unbind();
 		messageListPresenter.unbind();
 		
-		messagePresenter.bind(user,folder,message);
+		messagePresenter.bind(user,folder,message,details);
 		display.setCenter(messagePresenter.getDisplay().asWidget());
 	}
 	
@@ -133,7 +134,7 @@
 		messagePresenter.unbind();
 		messageListPresenter.unbind();
 
-		sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.FORWARD);
+		sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(), event.getMessageDetails(), Type.FORWARD);
 		display.setCenter(sendPresenter.getDisplay().asWidget());
 	}
 	
@@ -142,9 +143,9 @@
 		messageListPresenter.unbind();
 
 		if (event.getReplyAll()) {
-			sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.REPLY_ALL);
+			sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),event.getMessageDetails(), Type.REPLY_ALL);
 		} else {
-			sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),Type.REPLY);
+			sendPresenter.bind(event.getUser(),event.getFolder(),event.getMessage(),event.getMessageDetails(), Type.REPLY);
 
 		}
 		display.setCenter(sendPresenter.getDisplay().asWidget());
@@ -198,13 +199,14 @@
 
 			public void onExpandMessage(ExpandMessageEvent event) {
 				final boolean decreaseUnseen;
+				final Message message = event.getMessage();
 				// check if the message was already seen in the past
 				if (event.getMessage().getFlags().contains(IMAPFlag.SEEN) == false) {
 					decreaseUnseen = true;
 				} else {
 					decreaseUnseen = false;
 				}
-				cachingDispatcher.executeWithCache(new ExposeMessage(event.getUser().getSessionId(),event.getFolder(),event.getMessage()), new DisplayCallback<ExposeMessageResult>(display) {
+				cachingDispatcher.executeWithCache(new ExposeMessage(event.getUser().getSessionId(),event.getFolder(),message.getUid()), new DisplayCallback<ExposeMessageResult>(display) {
 
 					@Override
 					protected void handleFailure(Throwable e) {
@@ -218,7 +220,7 @@
 							eventBus.fireEvent(new DecreaseUnseenEvent(user,folder));
 						}
 						
-						showMessage(user, folder, result.getMessage());
+						showMessage(user, folder, message, result.getMessageDetails());
 					}
 
 					

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainView.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainView.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainView.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MainView.java Fri Sep  4 09:00:54 2009
@@ -24,7 +24,7 @@
 import org.apache.hupa.client.HupaConstants;
 import org.apache.hupa.client.bundles.IMAPTreeImages;
 import org.apache.hupa.client.widgets.Loading;
-import org.apache.hupa.shared.data.IMAPMessage;
+import org.apache.hupa.shared.data.Message;
 import org.cobogw.gwt.user.client.ui.Button;
 import org.cobogw.gwt.user.client.ui.RoundedPanel;
 
@@ -141,10 +141,10 @@
 	}
 	
 
-	public void fillOracle(ArrayList<IMAPMessage> messages) {
+	public void fillOracle(ArrayList<Message> messages) {
 		for (int i = 0; i < messages.size();i++) {
-			String subject = messages.get(i).getHeader().getSubject();
-			String from = messages.get(i).getHeader().getFrom();
+			String subject = messages.get(i).getSubject();
+			String from = messages.get(i).getFrom();
 			if (subject != null && subject.trim().length() > 0) {
 				oracle.add(subject.trim());
 			}

Modified: labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
URL: http://svn.apache.org/viewvc/labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java (original)
+++ labs/hupa/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java Fri Sep  4 09:00:54 2009
@@ -33,11 +33,10 @@
 import org.apache.hupa.client.validation.NotEmptyValidator;
 import org.apache.hupa.shared.Util;
 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;
-import org.apache.hupa.shared.data.MessageHeader;
+import org.apache.hupa.shared.data.MessageDetails;
+import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.events.BackEvent;
 import org.apache.hupa.shared.events.FolderSelectionEvent;
@@ -77,10 +76,11 @@
 	private StartValueChangeHandler startHandler = new StartValueChangeHandler();
 	private Type type = Type.NEW;
 	private IMAPFolder folder;
-	private IMAPMessage oldmessage;
+	private Message oldmessage;
 	private ValidationMessages vMessages = new ValidationMessages();
 	private ValidationProcessor validator = new DefaultValidationProcessor(
 			vMessages);
+	private MessageDetails oldDetails;
 	
 	@Inject
 	public MessageSendPresenter(Display display, EventBus eventBus, DispatchAsync dispatcher) {
@@ -156,11 +156,9 @@
 					if (validator.validate() == false) {
 						return;
 					}
-					Message message = new Message();
-					MessageHeader header = new MessageHeader();
-					MessageContent content = new MessageContent();
-					
-					header.setFrom(display.getFromText().getText());
+					SMTPMessage message = new SMTPMessage();
+								
+					message.setFrom(display.getFromText().getText());
 					
 					ArrayList<String> to = new ArrayList<String>();
 					String[] toRaw = display.getToText().getText().split(",");
@@ -172,7 +170,7 @@
 							}
 						}
 					}
-					header.setTo(to);
+					message.setTo(to);
 					
 					ArrayList<String> cc = new ArrayList<String>();
 					String[] ccRaw = display.getCcText().getText().split(",");
@@ -184,14 +182,13 @@
 							}
 						}
 					}
-					header.setCc(cc);
+					message.setCc(cc);
 					
-					header.setSubject(display.getSubjectText().getText());
-					content.setText(display.getMessageText().getText());
+					message.setSubject(display.getSubjectText().getText());
+					message.setText(display.getMessageText().getText());
 
-					content.setMessageAttachments(aList);
-					message.setHeader(header);
-					message.setMessageContent(content);
+					message.setMessageAttachments(aList);
+				
 					if (type.equals(Type.NEW)) {
 						dispatcher.execute(new SendMessage(user.getSessionId(),message), new MyAsyncCallback<EmptyResult>(eventBus,user) {
 
@@ -319,8 +316,9 @@
 		
 	}
 	
-	public void bind(User user, IMAPFolder folder, IMAPMessage oldmessage,Type type) {
+	public void bind(User user, IMAPFolder folder, Message oldmessage, MessageDetails oldDetails, Type type) {
 		this.oldmessage = oldmessage;
+		this.oldDetails = oldDetails;
 		this.folder = folder;
 		this.user = user;
 		this.type = type;
@@ -330,12 +328,12 @@
 		display.getFromText().setText(user.getName());
 
 		if (type.equals(Type.FORWARD)) {
-			display.getSubjectText().setText("Fwd: " + oldmessage.getHeader().getSubject());
+			display.getSubjectText().setText("Fwd: " + oldmessage.getSubject());
 			display.getMessageText().setText("\n\n-------- Original Message -------\n" );
 		} else if (type.equals(Type.REPLY) || type.equals(Type.REPLY_ALL)) {
-			display.getSubjectText().setText("Re: " + oldmessage.getHeader().getSubject());
+			display.getSubjectText().setText("Re: " + oldmessage.getSubject());
 			
-			String oldMessageText = oldmessage.getMessageContent().getText();
+			String oldMessageText = oldDetails.getText();
 			StringBuffer messageText = new StringBuffer("\n\n-------- Message -------\n");
 			if ( oldMessageText != null) {
 				messageText.append(oldMessageText);
@@ -343,13 +341,13 @@
 			display.getMessageText().setText(messageText.toString());
 
 			if (type.equals(Type.REPLY)) {
-				display.getToText().setText(oldmessage.getHeader().getFrom());
+				display.getToText().setText(oldmessage.getFrom());
 			} else {
-				oldmessage.getHeader().getCc().remove(user.getName());
-				display.getCcText().setText(Util.arrayToString(oldmessage.getHeader().getCc()));
-				oldmessage.getHeader().getTo().remove(user.getName());
+				oldmessage.getCc().remove(user.getName());
+				display.getCcText().setText(Util.arrayToString(oldmessage.getCc()));
+				oldmessage.getTo().remove(user.getName());
 
-				display.getToText().setText(Util.arrayToString(oldmessage.getHeader().getTo()));
+				display.getToText().setText(Util.arrayToString(oldmessage.getTo()));
 
 			}
 		}else {
@@ -359,7 +357,7 @@
 	}
 	
 	public void bind(User user, Type type) {
-		bind(user,null,null,type);
+		bind(user,null,null,null, type);
 	}
 	
 }

Modified: labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/guice/ServerModul.java Fri Sep  4 09:00:54 2009
@@ -33,7 +33,7 @@
 import org.apache.hupa.server.handler.CreateFolderHandler;
 import org.apache.hupa.server.handler.DeleteFolderHandler;
 import org.apache.hupa.server.handler.DeleteMessageHandler;
-import org.apache.hupa.server.handler.ExposeMessageHandler;
+import org.apache.hupa.server.handler.GetMessageDetailsHandler;
 import org.apache.hupa.server.handler.FetchFoldersHandler;
 import org.apache.hupa.server.handler.FetchMessagesHandler;
 import org.apache.hupa.server.handler.ForwardMessageHandler;
@@ -68,7 +68,7 @@
 		bindHandler(FetchFoldersHandler.class);
 		bindHandler(FetchMessagesHandler.class);
 		bindHandler(LogoutUserHandler.class);
-		bindHandler(ExposeMessageHandler.class);
+		bindHandler(GetMessageDetailsHandler.class);
 		bindHandler(DeleteMessageHandler.class);
 		bindHandler(SendMessageHandler.class);
 		bindHandler(ReplyMessageHandler.class);

Modified: labs/hupa/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/handler/AbstractSendMessageHandler.java Fri Sep  4 09:00:54 2009
@@ -51,6 +51,7 @@
 import org.apache.hupa.server.FileItemRegistry;
 import org.apache.hupa.server.IMAPStoreCache;
 import org.apache.hupa.shared.data.MessageAttachment;
+import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.rpc.EmptyResult;
 import org.apache.hupa.shared.rpc.SendMessage;
@@ -109,18 +110,17 @@
 	 */
 	protected Message fillBody(Message message, A action) throws MessagingException, ActionException {
 
-		org.apache.hupa.shared.data.Message m = action.getMessage();
-		ArrayList<MessageAttachment> attachments = m.getMessageContent()
-				.getMessageAttachments();
+		SMTPMessage m = action.getMessage();
+		ArrayList<MessageAttachment> attachments = m.getMessageAttachments();
 		// check if there are any attachments to include
 		if (attachments == null || attachments.isEmpty()) {
-			message.setText(m.getMessageContent().getText());
+			message.setText(m.getText());
 		} else {
 			// create the message part
 			MimeBodyPart messageBodyPart = new MimeBodyPart();
 
 			// fill message
-			messageBodyPart.setText(m.getMessageContent().getText());
+			messageBodyPart.setText(m.getText());
 
 			Multipart multipart = new MimeMultipart();
 			multipart.addBodyPart(messageBodyPart);
@@ -182,14 +182,21 @@
 		// store message in sent folder
 		IMAPStore iStore = cache.get(user);
 		IMAPFolder folder = (IMAPFolder) iStore.getFolder(user.getSettings().getSentFolderName());
+		
+		boolean exists = false;
 		if (folder.exists() == false) {
-			folder.create(IMAPFolder.READ_WRITE);
+			exists = folder.create(IMAPFolder.READ_WRITE);
+		} else {
+			exists = true;
 		}
-		if (folder.isOpen() == false) {
-			folder.open(Folder.READ_WRITE);
+		if (exists) {
+			if (folder.isOpen() == false) {
+				folder.open(Folder.READ_WRITE);
+			}
+			message.setFlag(Flag.SEEN, true);
+			folder.appendMessages(new Message[] {message});
 		}
-		message.setFlag(Flag.SEEN, true);
-		folder.appendMessages(new Message[] {message});
+		
 		folder.close(false);
 	}
 	

Modified: labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/handler/FetchMessagesHandler.java Fri Sep  4 09:00:54 2009
@@ -45,12 +45,10 @@
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
 import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.IMAPMessage;
-import org.apache.hupa.shared.data.MessageContent;
-import org.apache.hupa.shared.data.MessageHeader;
+
 import org.apache.hupa.shared.data.Tag;
 import org.apache.hupa.shared.data.User;
-import org.apache.hupa.shared.data.IMAPMessage.IMAPFlag;
+import org.apache.hupa.shared.data.Message.IMAPFlag;
 import org.apache.hupa.shared.rpc.FetchMessages;
 import org.apache.hupa.shared.rpc.FetchMessagesResult;
 
@@ -78,7 +76,7 @@
 		User user = getUser(action.getSessionId());
 		IMAPFolder folder = action.getFolder();
 		String searchString = action.getSearchString();
-		ArrayList<IMAPMessage> mList = new ArrayList<IMAPMessage>();
+		ArrayList<org.apache.hupa.shared.data.Message> mList = new ArrayList<org.apache.hupa.shared.data.Message>();
 		int start = action.getStart();
 		int offset = action.getOffset();
 		int end = start + offset;
@@ -133,14 +131,13 @@
 
             // loop over the fetched messages
 			for (int i = 0; i < messages.length; i++) {
-				Message m = messages[i];
-				MessageHeader newHeader = new MessageHeader();
-				
+				org.apache.hupa.shared.data.Message msg = new org.apache.hupa.shared.data.Message();
+				Message m = messages[i];				
 				String from = null;
 				if (m.getFrom() != null && m.getFrom().length >0 ) {
 					from = MimeUtility.decodeText(m.getFrom()[0].toString().trim());
 				}
-				newHeader.setFrom(from);
+				msg.setFrom(from);
 				
 				ArrayList<String> to = new ArrayList<String>();
 				// Add to addresses
@@ -150,14 +147,14 @@
 						to.add(toArray[b].toString());
 					}
 				}
-				newHeader.setTo(to);
+				msg.setTo(to);
 				
 				// Check if a subject exist and if so decode it
 				String subject = m.getSubject();
 				if (subject != null) {
 					subject = MimeUtility.decodeText(subject);
 				}
-				newHeader.setSubject(subject);
+				msg.setSubject(subject);
 				
 				// Add cc addresses
 				Address[] ccArray = m.getRecipients(RecipientType.CC);
@@ -168,10 +165,9 @@
 						cc.add(ccArray[b].toString());
 					}
 				}
-				newHeader.setCc(cc);
+				msg.setCc(cc);
 	
-				newHeader.setReceivedDate(m.getReceivedDate());
-				
+				msg.setReceivedDate(m.getReceivedDate());
 
 				// Add flags
 				ArrayList<IMAPFlag> iFlags = new ArrayList<IMAPFlag>();
@@ -180,7 +176,7 @@
 				for (int a = 0; a < systemFlags.length;a++) {
 					Flag flag = systemFlags[a];
 					if (flag == Flag.DELETED) {
-						iFlags.add(IMAPMessage.IMAPFlag.DELETED);
+						iFlags.add(IMAPFlag.DELETED);
 					}
 					if (flag == Flag.SEEN) {
 						iFlags.add(IMAPFlag.SEEN);
@@ -200,15 +196,11 @@
 					}
 				}
 				
-				IMAPMessage msg = new IMAPMessage();
-				msg.setHeader(newHeader);
 				msg.setUid(f.getUID(m));
 				msg.setFlags(iFlags);
 				msg.setTags(tags);
+				msg.setHasAttachments(hasAttachment(m));
 				
-				MessageContent content = new MessageContent();
-				content.setAttachments(hasAttachment(m));
-				msg.setMessageContent(content);
 				mList.add(0, msg);
 				if (i > action.getOffset()) {
 					break;

Modified: labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ForwardMessageHandler.java Fri Sep  4 09:00:54 2009
@@ -39,6 +39,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.FileItemRegistry;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.rpc.ForwardMessage;
 
 import com.google.inject.Inject;
@@ -65,20 +66,20 @@
 	protected Message createMessage(Session session, ForwardMessage action)
 			throws AddressException, MessagingException, ActionException {
 			MimeMessage message = new MimeMessage(session);
-			org.apache.hupa.shared.data.Message m = action.getMessage();
-			message.setFrom(new InternetAddress(m.getHeader().getFrom()));
-			ArrayList<String> to = m.getHeader().getTo();
+			SMTPMessage m = action.getMessage();
+			message.setFrom(new InternetAddress(m.getFrom()));
+			ArrayList<String> to = m.getTo();
 			for (int i = 0; i < to.size(); i++) {
 				message.addRecipient(RecipientType.TO, new InternetAddress(to
 						.get(i)));
 			}
 
-			ArrayList<String> cc = m.getHeader().getCc();
+			ArrayList<String> cc = m.getCc();
 			for (int i = 0; i < cc.size(); i++) {
 				message.addRecipient(RecipientType.CC, new InternetAddress(cc
 						.get(i)));
 			}
-			message.setSubject(m.getHeader().getSubject());
+			message.setSubject(m.getSubject());
 			message.saveChanges();
 			return message;
 	}
@@ -86,13 +87,13 @@
 	@Override
 	protected Message fillBody(Message message,
 			ForwardMessage action) throws MessagingException, ActionException {
-		org.apache.hupa.shared.data.Message m = action.getMessage();
+		SMTPMessage m = action.getMessage();
 
 		// create the message part
 		MimeBodyPart messageBodyPart = new MimeBodyPart();
 
 		// fill message
-		messageBodyPart.setText(m.getMessageContent().getText());
+		messageBodyPart.setText(m.getText());
 
 		Multipart multipart = new MimeMultipart();
 		multipart.addBodyPart(messageBodyPart);
@@ -110,7 +111,7 @@
 		messageBodyPart.setDataHandler(fMessage.getDataHandler());
 		multipart.addBodyPart(messageBodyPart);
 
-		multipart = handleAttachments(multipart, m.getMessageContent().getMessageAttachments());
+		multipart = handleAttachments(multipart, m.getMessageAttachments());
 		
 		
 		// Put parts in message

Copied: labs/hupa/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java (from r810932, labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java)
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java?p2=labs/hupa/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java&p1=labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java&r1=810932&r2=811292&rev=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ExposeMessageHandler.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/handler/GetMessageDetailsHandler.java Fri Sep  4 09:00:54 2009
@@ -36,9 +36,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.IMAPStoreCache;
 import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.IMAPMessage;
 import org.apache.hupa.shared.data.MessageAttachment;
-import org.apache.hupa.shared.data.MessageContent;
+import org.apache.hupa.shared.data.MessageDetails;
 import org.apache.hupa.shared.data.User;
 import org.apache.hupa.shared.rpc.ExposeMessage;
 import org.apache.hupa.shared.rpc.ExposeMessageResult;
@@ -47,10 +46,10 @@
 import com.google.inject.Provider;
 import com.sun.mail.imap.IMAPStore;
 
-public class ExposeMessageHandler extends AbstractSessionHandler<ExposeMessage, ExposeMessageResult>{
+public class GetMessageDetailsHandler extends AbstractSessionHandler<ExposeMessage, ExposeMessageResult>{
 
 	@Inject
-	public ExposeMessageHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> sProvider) {
+	public GetMessageDetailsHandler(IMAPStoreCache cache, Log logger,Provider<HttpSession> sProvider) {
 		super(cache,logger,sProvider);
 	}
 	
@@ -60,7 +59,7 @@
 	 */
 	public ExposeMessageResult executeInternal(ExposeMessage action, ExecutionContext arg1)
 			throws ActionException {
-			return new ExposeMessageResult(exposeMessage(getUser(action.getSessionId()), action.getFolder(), action.getMessage()));
+			return new ExposeMessageResult(exposeMessage(getUser(action.getSessionId()), action.getFolder(), action.getUid()));
 	}
 
 	/*
@@ -71,7 +70,7 @@
 		return ExposeMessage.class;
 	}
 	
-	protected IMAPMessage exposeMessage(User user, IMAPFolder folder, IMAPMessage msg) throws ActionException {
+	protected MessageDetails exposeMessage(User user, IMAPFolder folder, long uid) throws ActionException {
 		IMAPStore store = null;
 		try {
 			store = cache.get(user);
@@ -82,8 +81,9 @@
 			if (f.isOpen() == false) {
 				f.open(com.sun.mail.imap.IMAPFolder.READ_WRITE);
 			}
-			MimeMessage message = (MimeMessage) f.getMessageByUID(msg.getUid());
-			MessageContent content = new MessageContent();
+			MimeMessage message = (MimeMessage) f.getMessageByUID(uid);
+			MessageDetails mDetails = new MessageDetails();
+			mDetails.setUid(uid);
 			
 			boolean bodyFound = false;
             boolean isHTML = false;
@@ -96,8 +96,8 @@
             		isHTML = false;
             	}
                 bodyFound = true;
-                content.setText((String)con);
-                content.setIsHTML(isHTML);   
+                mDetails.setText((String)con);
+                mDetails.setIsHTML(isHTML);   
 
             } else if (con instanceof Multipart) {
                 Multipart mp = (Multipart) con;
@@ -138,28 +138,27 @@
 
                 }
                 if (isHTML) {
-                    content.setText(sbHTML.toString());
+                	mDetails.setText(sbHTML.toString());
                 } else {
-                	content.setText(sbPlain.toString());
+                	mDetails.setText(sbPlain.toString());
                 }
 
-                content.setIsHTML(isHTML);
-                content.setMessageAttachments(attachmentList);
+                mDetails.setIsHTML(isHTML);
+                mDetails.setMessageAttachments(attachmentList);
             }
             
-            msg.setMessageContent(content);
-			msg.getHeader().setRawHeader(message.getAllHeaders().toString());
+            mDetails.setRawHeader(message.getAllHeaders().toString());
 			
             f.setFlags(new Message[] {message}, new Flags(Flag.SEEN), true);
             f.close(false);
 
         
 
-			return msg;
+			return mDetails;
 		} catch (Exception e) {
-			logger.error("Unable to expose msg for user " + user + " in folder "+ folder + " with uid "+ msg.getUid(),e);
+			logger.error("Unable to expose msg for user " + user + " in folder "+ folder + " with uid "+ uid, e);
 			throw new ActionException("Unable to expose msg for user " + user + " in folder "+ folder + " with uid "
-					+ msg.getUid());
+					+ uid);
 
 		} 
 	}

Modified: labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/handler/ReplyMessageHandler.java Fri Sep  4 09:00:54 2009
@@ -33,6 +33,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.FileItemRegistry;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.rpc.ReplyMessage;
 
 import com.google.inject.Inject;
@@ -67,14 +68,14 @@
 			folder.open(Folder.READ_ONLY);
 		}
 		Message rMessage =  folder.getMessageByUID(action.getReplyMessageUid()).reply(action.getReplyAll());
-		org.apache.hupa.shared.data.Message m = action.getMessage();
+		SMTPMessage m = action.getMessage();
 		// Use the new recipient list, maybe it has changed
-		rMessage.setRecipients(RecipientType.TO, getRecipients(m.getHeader().getTo()));
-		rMessage.setRecipients(RecipientType.CC, getRecipients(m.getHeader().getCc()));
-		rMessage.setRecipients(RecipientType.BCC, getRecipients(m.getHeader().getBcc()));
-		rMessage.setFrom(new InternetAddress(m.getHeader().getFrom()));
+		rMessage.setRecipients(RecipientType.TO, getRecipients(m.getTo()));
+		rMessage.setRecipients(RecipientType.CC, getRecipients(m.getCc()));
+		rMessage.setRecipients(RecipientType.BCC, getRecipients(m.getBcc()));
+		rMessage.setFrom(new InternetAddress(m.getFrom()));
 		// replace subject
-		rMessage.setSubject(m.getHeader().getSubject());
+		rMessage.setSubject(m.getSubject());
 		rMessage.saveChanges();
 		return rMessage;
 	}

Modified: labs/hupa/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java
URL: http://svn.apache.org/viewvc/labs/hupa/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java (original)
+++ labs/hupa/server/src/main/java/org/apache/hupa/server/handler/SendMessageHandler.java Fri Sep  4 09:00:54 2009
@@ -31,6 +31,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.hupa.server.FileItemRegistry;
 import org.apache.hupa.server.IMAPStoreCache;
+import org.apache.hupa.shared.data.SMTPMessage;
 import org.apache.hupa.shared.rpc.SendMessage;
 
 import com.google.inject.Inject;
@@ -57,12 +58,12 @@
 	protected Message createMessage(Session session, SendMessage action)
 			throws AddressException, MessagingException {
 		MimeMessage message = new MimeMessage(session);
-		org.apache.hupa.shared.data.Message m = action.getMessage();
-		message.setFrom(new InternetAddress(m.getHeader().getFrom()));
-		message.setRecipients(RecipientType.TO, getRecipients(m.getHeader().getTo()));
-		message.setRecipients(RecipientType.CC, getRecipients(m.getHeader().getCc()));
-		message.setRecipients(RecipientType.BCC, getRecipients(m.getHeader().getBcc()));
-		message.setSubject(m.getHeader().getSubject());
+		SMTPMessage m = action.getMessage();
+		message.setFrom(new InternetAddress(m.getFrom()));
+		message.setRecipients(RecipientType.TO, getRecipients(m.getTo()));
+		message.setRecipients(RecipientType.CC, getRecipients(m.getCc()));
+		message.setRecipients(RecipientType.BCC, getRecipients(m.getBcc()));
+		message.setSubject(m.getSubject());
 		return message;
 	}
 

Added: labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java?rev=811292&view=auto
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java (added)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/AbstractMessage.java Fri Sep  4 09:00:54 2009
@@ -0,0 +1,100 @@
+/****************************************************************
+ * 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.hupa.shared.data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+public class AbstractMessage implements Serializable{
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 5208272852772006815L;
+	private String from;
+	private String subject;
+	private ArrayList<String> to;
+	private ArrayList<String> cc;
+	private boolean hasAttachment;
+	
+	public boolean hasAttachment() {
+		return hasAttachment;
+	}
+	
+	public void setHasAttachments(boolean hasAttachments) {
+		this.hasAttachment = hasAttachments;
+	}
+	
+	/**
+	 * Set the From: header field
+	 * 
+	 * @param from
+	 */
+	public void setFrom(String from) {
+		this.from = from;
+	}
+
+	/**
+	 * Return the From: header field
+	 * 
+	 * @return from
+	 */
+	public String getFrom() {
+		return from;
+	}
+
+
+	public void setCc(ArrayList<String> cc) {
+		this.cc = cc;
+	}
+
+	public ArrayList<String> getCc() {
+		return cc;
+	}
+
+	/**
+	 * Set the Subject: header field
+	 * 
+	 * @param subject
+	 */
+	public void setSubject(String subject) {
+		this.subject = subject;
+	}
+
+	/**
+	 * Return the Subject: header field
+	 * 
+	 * @return subject
+	 */
+	public String getSubject() {
+		return subject;
+	}
+
+	public  ArrayList<String> getTo() {
+		return to;
+	}
+
+	public void setTo( ArrayList<String> to) {
+		this.to = to;
+	}
+	
+
+
+}

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Message.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Message.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Message.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/Message.java Fri Sep  4 09:00:54 2009
@@ -19,55 +19,77 @@
 
 package org.apache.hupa.shared.data;
 
-import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
 
 /**
  * 
  *
  */
-public class Message implements Serializable{
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 7998000151420927239L;
-	private MessageHeader header;
-	private MessageContent content;
+public class Message extends AbstractMessage {
 
 	/**
-	 * set the header of the message
 	 * 
-	 * @param header
 	 */
-	public void setHeader(MessageHeader header) {
-		this.header = header;
+	private static final long serialVersionUID = -101492974974136423L;
+	private long uid;
+	private ArrayList<IMAPFlag> flags;
+	private ArrayList<Tag> tags;
+	private Date rDate;
+	
+	public enum IMAPFlag {
+		SEEN, DELETED, RECENT, ANSWERED, JUNK, DRAFT
 	}
 
-	/**
-	 * Return the header of the message
-	 * 
-	 * @return header
-	 */
-	public MessageHeader getHeader() {
-		return header;
+	public void setFlags(ArrayList<IMAPFlag> flags) {
+		this.flags = flags;
+	}
+
+	public ArrayList<IMAPFlag> getFlags() {
+		return flags;
 	}
 	
-	/**
-	 * Set the content of the message
-	 * 
-	 * @param content
-	 */
-	public void setMessageContent(MessageContent content) {
-		this.content = content;
+	public void setTags(ArrayList<Tag> tags) {
+		this.tags = tags;
+	}
+	
+	public ArrayList<Tag> getTags() {
+		return tags;
+	}
+	
+	public long getUid() {
+		return uid;
 	}
 
-	/**
-	 * return the content of the message
-	 * 
-	 * @return content
-	 */
-	public MessageContent getMessageContent() {
-		return content;
+	public void setUid(long uid) {
+		this.uid = uid;
+	}
+	
+	
+	public void setReceivedDate(Date rDate) {
+		this.rDate = rDate;
 	}
 
+	public Date getReceivedDate() {
+		return rDate;
+	}
+	
+
+	public String toString() {
+		return String.valueOf(getUid());
+	}
+	
+	public boolean equals(Object obj) {
+		if (obj instanceof Message) {
+			if (((Message)obj).getUid() == getUid()) {
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	public int hashCode() {
+		Long l = new Long(getUid());
+		return l.intValue() * 16;
+	}
 }

Added: labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java?rev=811292&view=auto
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java (added)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/MessageDetails.java Fri Sep  4 09:00:54 2009
@@ -0,0 +1,134 @@
+/****************************************************************
+ * 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.hupa.shared.data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+public class MessageDetails implements Serializable{
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 7611536915564919521L;
+	private boolean isHTML;
+	private String text;
+	private ArrayList<MessageAttachment> aList;
+	private long uid;
+	private String raw;
+
+	
+	public long getUid() {
+		return uid;
+	}
+
+	public void setUid(long uid) {
+		this.uid = uid;
+	}
+	
+	/**
+	 * Set a raw String representation of the header
+	 * 
+	 * @param raw
+	 */
+	public void setRawHeader(String raw) {
+		this.raw = raw;
+	}
+
+	/**
+	 * Return a raw String representation of the header
+	 * 
+	 * @return raw
+	 */
+	public String getRawHeader() {
+		return raw;
+	}
+	
+	/**
+	 * Set if the count is plain/html
+	 * 
+	 * @param isHTML
+	 */
+	public void setIsHTML(boolean isHTML) {
+		this.isHTML = isHTML;
+	}
+
+	/**
+	 * Return if the content is plain/html or plain/text
+	 * 
+	 * @return isHTML
+	 */
+	public boolean isHTML() {
+		return isHTML;
+	}
+
+	/**
+	 * Set the body text of the content
+	 * 
+	 * @param text
+	 */
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	/**
+	 * Return the body text of the content
+	 * @return
+	 */
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * Set the attachments 
+	 * 
+	 * @param aList
+	 */
+	public void setMessageAttachments(ArrayList<MessageAttachment> aList) {
+		this.aList = aList;
+	}
+
+	/**
+	 * Return the attachments 
+	 * 
+	 * @return aList
+	 */
+	public ArrayList<MessageAttachment> getMessageAttachments() {
+		return aList;
+	}
+
+
+	public String toString() {
+		return String.valueOf(getUid());
+	}
+	
+	public boolean equals(Object obj) {
+		if (obj instanceof MessageDetails) {
+			if (((MessageDetails)obj).getUid() == getUid()) {
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	public int hashCode() {
+		Long l = new Long(getUid());
+		return l.intValue() * 16;
+	}
+}

Added: labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java?rev=811292&view=auto
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java (added)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/data/SMTPMessage.java Fri Sep  4 09:00:54 2009
@@ -0,0 +1,53 @@
+package org.apache.hupa.shared.data;
+
+import java.util.ArrayList;
+
+public class SMTPMessage extends AbstractMessage{
+	private static final long serialVersionUID = 7331361994526216161L;
+	private ArrayList<String> bcc;
+	private String text;
+	private ArrayList<MessageAttachment> aList;
+	
+	public ArrayList<String> getBcc() {
+		return bcc;
+	}
+	public void setBcc( ArrayList<String> bcc) {
+		this.bcc = bcc;
+	}
+	
+	/**
+	 * Set the body text of the content
+	 * 
+	 * @param text
+	 */
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	/**
+	 * Return the body text of the content
+	 * @return
+	 */
+	public String getText() {
+		return text;
+	}
+
+	/**
+	 * Set the attachments 
+	 * 
+	 * @param aList
+	 */
+	public void setMessageAttachments(ArrayList<MessageAttachment> aList) {
+		this.aList = aList;
+	}
+
+	/**
+	 * Return the attachments 
+	 * 
+	 * @return aList
+	 */
+	public ArrayList<MessageAttachment> getMessageAttachments() {
+		return aList;
+	}
+
+}

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/DeleteMessageEvent.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/DeleteMessageEvent.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/DeleteMessageEvent.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/DeleteMessageEvent.java Fri Sep  4 09:00:54 2009
@@ -22,7 +22,7 @@
 import java.util.ArrayList;
 
 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.User;
 
 import com.google.gwt.event.shared.GwtEvent;
@@ -32,7 +32,7 @@
 	public final static Type<DeleteMessageEventHandler> TYPE = new Type<DeleteMessageEventHandler>();
 	private User user;
 	private IMAPFolder folder;
-	private ArrayList<IMAPMessage> messageList;
+	private ArrayList<Message> messageList;
 	@Override
 	protected void dispatch(DeleteMessageEventHandler handler) {
 		handler.onDeleteMessageEvent(this);
@@ -43,13 +43,13 @@
 		return TYPE;
 	}
 	
-	public DeleteMessageEvent(User user, IMAPFolder folder, ArrayList<IMAPMessage> messageList) {
+	public DeleteMessageEvent(User user, IMAPFolder folder, ArrayList<Message> messageList) {
 		this.user = user;
 		this.folder = folder;
 		this.messageList = messageList;
 	}
-	public DeleteMessageEvent(User user, IMAPFolder folder, IMAPMessage message) {
-		ArrayList<IMAPMessage> mList = new ArrayList<IMAPMessage>();
+	public DeleteMessageEvent(User user, IMAPFolder folder, Message message) {
+		ArrayList<Message> mList = new ArrayList<Message>();
 		mList.add(message);
 		
 		this.user = user;
@@ -64,7 +64,7 @@
 		return folder;
 	}
 	
-	public ArrayList<IMAPMessage> getMessages() {
+	public ArrayList<Message> getMessages() {
 		return messageList;
 	}
 

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ExpandMessageEvent.java Fri Sep  4 09:00:54 2009
@@ -20,7 +20,7 @@
 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.Message;
 import org.apache.hupa.shared.data.User;
 
 import com.google.gwt.event.shared.GwtEvent;
@@ -28,17 +28,17 @@
 public class ExpandMessageEvent extends GwtEvent<ExpandMessageEventHandler>{
 
 	public static Type<ExpandMessageEventHandler> TYPE = new Type<ExpandMessageEventHandler>();
-	private IMAPMessage message;
+	private Message message;
 	private User user;
 	private IMAPFolder folder;
 	
-	public ExpandMessageEvent(User user, IMAPFolder folder, IMAPMessage message) {
+	public ExpandMessageEvent(User user, IMAPFolder folder, Message message) {
 		this.message = message;
 		this.folder = folder;
 		this.user = user;
 	}
 	
-	public IMAPMessage getMessage() {
+	public Message getMessage() {
 		return message;
 	}
 	

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ForwardMessageEvent.java Fri Sep  4 09:00:54 2009
@@ -21,7 +21,8 @@
 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.Message;
+import org.apache.hupa.shared.data.MessageDetails;
 import org.apache.hupa.shared.data.User;
 
 import com.google.gwt.event.shared.GwtEvent;
@@ -31,12 +32,14 @@
 	public final static Type<ForwardMessageEventHandler> TYPE = new Type<ForwardMessageEventHandler>();
 	private User user;
 	private IMAPFolder folder;
-	private IMAPMessage message;
+	private Message message;
+	private MessageDetails details;
 
-	public ForwardMessageEvent(User user, IMAPFolder folder, IMAPMessage message) {
+	public ForwardMessageEvent(User user, IMAPFolder folder, Message message, MessageDetails details) {
 		this.user = user;
 		this.folder = folder;
 		this.message = message;
+		this.details = details;
 	}
 
 	public User getUser() {
@@ -47,10 +50,15 @@
 		return folder;
 	}
 
-	public IMAPMessage getMessage() {
+	public Message getMessage() {
 		return message;
 	}
 
+
+	public MessageDetails getMessageDetails() {
+		return details;
+	}
+
 	@Override
 	protected void dispatch(ForwardMessageEventHandler handler) {
 		handler.onForwardMessageEvent(this);

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MessagesReceivedEvent.java Fri Sep  4 09:00:54 2009
@@ -20,19 +20,19 @@
 
 import java.util.ArrayList;
 
-import org.apache.hupa.shared.data.IMAPMessage;
+import org.apache.hupa.shared.data.Message;
 
 import com.google.gwt.event.shared.GwtEvent;
 
 public class MessagesReceivedEvent extends GwtEvent<MessagesReceivedEventHandler>{
 	public static Type<MessagesReceivedEventHandler> TYPE = new Type<MessagesReceivedEventHandler>();
-	private ArrayList<IMAPMessage> messages;
+	private ArrayList<Message> messages;
 	
-	public MessagesReceivedEvent(ArrayList<IMAPMessage> messages) {
+	public MessagesReceivedEvent(ArrayList<Message> messages) {
 		this.messages = messages;
 	}
 	
-	public ArrayList<IMAPMessage> getMessages() {
+	public ArrayList<Message> getMessages() {
 		return messages;
 	}
 	@Override

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/MoveMessageEvent.java Fri Sep  4 09:00:54 2009
@@ -20,7 +20,7 @@
 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.Message;
 import org.apache.hupa.shared.data.User;
 
 import com.google.gwt.event.shared.GwtEvent;
@@ -31,10 +31,10 @@
 	private User user;
 	private IMAPFolder oldFolder;
 	private IMAPFolder newFolder;
-	private IMAPMessage message;
+	private Message message;
 
 	public MoveMessageEvent(User user, IMAPFolder oldFolder,
-			IMAPFolder newFolder, IMAPMessage message) {
+			IMAPFolder newFolder, Message message) {
 		this.user = user;
 		this.oldFolder = oldFolder;
 		this.newFolder = newFolder;
@@ -53,7 +53,7 @@
 		return newFolder;
 	}
 
-	public IMAPMessage getMessage() {
+	public Message getMessage() {
 		return message;
 	}
 

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/events/ReplyMessageEvent.java Fri Sep  4 09:00:54 2009
@@ -20,7 +20,8 @@
 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.Message;
+import org.apache.hupa.shared.data.MessageDetails;
 import org.apache.hupa.shared.data.User;
 
 import com.google.gwt.event.shared.GwtEvent;
@@ -30,8 +31,10 @@
 	public final static Type<ReplyMessageEventHandler> TYPE = new Type<ReplyMessageEventHandler>();
 	private User user;
 	private IMAPFolder folder;
-	private IMAPMessage message;
+	private Message message;
+	private MessageDetails details;
 	private boolean replyAll;
+
 	@Override
 	protected void dispatch(ReplyMessageEventHandler handler) {
 		handler.onReplyMessageEvent(this);
@@ -42,11 +45,12 @@
 		return TYPE;
 	}
 	
-	public ReplyMessageEvent(User user, IMAPFolder folder, IMAPMessage message, boolean replyAll) {
+	public ReplyMessageEvent(User user, IMAPFolder folder, Message message, MessageDetails details, boolean replyAll) {
 		this.user = user;
 		this.folder = folder;
 		this.message = message;
 		this.replyAll = replyAll;
+		this.details = details;
 	}
 	
 	public User getUser() {
@@ -57,10 +61,15 @@
 		return folder;
 	}
 	
-	public IMAPMessage getMessage() {
+	public Message getMessage() {
 		return message;
 	}
 	
+
+	public MessageDetails getMessageDetails() {
+		return details;
+	}
+
 	public boolean getReplyAll() {
 		return replyAll;
 	}

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessage.java Fri Sep  4 09:00:54 2009
@@ -21,7 +21,6 @@
 package org.apache.hupa.shared.rpc;
 
 import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.IMAPMessage;
 
 public class ExposeMessage extends Session<ExposeMessageResult>{
 
@@ -30,12 +29,12 @@
 	 */
 	private static final long serialVersionUID = 5826298202494313834L;
 	private IMAPFolder folder;
-	private IMAPMessage message;
+	private long uid;
 
-	public ExposeMessage(String sessionId, IMAPFolder folder,IMAPMessage message) {
+	public ExposeMessage(String sessionId, IMAPFolder folder, long uid) {
 		super(sessionId);
 		this.folder = folder;
-		this.message = message;
+		this.uid = uid;
 	}
 
 	@SuppressWarnings("unused")
@@ -46,14 +45,14 @@
 		return folder;
 	}
 	
-	public IMAPMessage getMessage() {
-		return message;
+	public long getUid() {
+		return uid;
 	}
 	
 	public boolean equals(Object obj) {
 		if (obj instanceof ExposeMessage) {
 			ExposeMessage action = (ExposeMessage) obj;
-			if (action.getSessionId().equals(getSessionId()) && action.getFolder().equals(getFolder()) && action.getMessage().equals(getMessage())) {
+			if (action.getSessionId().equals(getSessionId()) && action.getFolder().equals(getFolder()) && action.getUid() == getUid()) {
 				return true;
 			}
 		}
@@ -62,6 +61,6 @@
 	}
 	
 	public int hashCode() {
-		return getSessionId().hashCode() * getFolder().hashCode() * getMessage().hashCode();
+		return (int) (getSessionId().hashCode() * getFolder().hashCode() * getUid());
 	}
 }

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ExposeMessageResult.java Fri Sep  4 09:00:54 2009
@@ -19,7 +19,7 @@
 
 package org.apache.hupa.shared.rpc;
 
-import org.apache.hupa.shared.data.IMAPMessage;
+import org.apache.hupa.shared.data.MessageDetails;
 
 import net.customware.gwt.dispatch.shared.Result;
 
@@ -29,18 +29,18 @@
 	 * 
 	 */
 	private static final long serialVersionUID = 6738085246457556043L;
-	private IMAPMessage message;
+	private MessageDetails message;
 	
 	@SuppressWarnings("unused")
 	private ExposeMessageResult() {
 		
 	}
 	
-	public ExposeMessageResult(IMAPMessage message) {
+	public ExposeMessageResult(MessageDetails message) {
 		this.message = message;
 	}
 	
-	public IMAPMessage getMessage() {
+	public MessageDetails getMessageDetails() {
 		return message;
 	}
 

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/FetchMessagesResult.java Fri Sep  4 09:00:54 2009
@@ -21,7 +21,7 @@
 
 import java.util.ArrayList;
 
-import org.apache.hupa.shared.data.IMAPMessage;
+import org.apache.hupa.shared.data.Message;
 /****************************************************************
  * Licensed to the Apache Software Foundation (ASF) under one   *
  * or more contributor license agreements.  See the NOTICE file *
@@ -49,7 +49,7 @@
 	 * 
 	 */
 	private static final long serialVersionUID = 8692400285949934424L;
-	private ArrayList<IMAPMessage> messages;
+	private ArrayList<Message> messages;
 	private int start;
 	private int offset;
 	private int realCount;
@@ -58,14 +58,14 @@
 	private FetchMessagesResult() {
 	}
 	
-	public FetchMessagesResult(ArrayList<IMAPMessage> messages,int start,int offset,int realCount) {
+	public FetchMessagesResult(ArrayList<Message> messages,int start,int offset,int realCount) {
 		this.messages = messages;
 		this.start = start;
 		this.offset = offset;
 		this.realCount = realCount;
 	}
 	
-	public ArrayList<IMAPMessage> getMessages() {
+	public ArrayList<Message> getMessages() {
 		return messages;
 	}
 	

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ForwardMessage.java Fri Sep  4 09:00:54 2009
@@ -21,7 +21,7 @@
 package org.apache.hupa.shared.rpc;
 
 import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.Message;
+import org.apache.hupa.shared.data.SMTPMessage;
 
 public class ForwardMessage extends SendMessage{
 
@@ -32,7 +32,7 @@
 	private long uid;
 	private IMAPFolder folder;
 
-	public ForwardMessage(String sessionId, Message msg, IMAPFolder folder, long uid) {
+	public ForwardMessage(String sessionId, SMTPMessage msg, IMAPFolder folder, long uid) {
 		super(sessionId, msg);
 		this.uid = uid;
 		this.folder = folder;

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/ReplyMessage.java Fri Sep  4 09:00:54 2009
@@ -21,7 +21,7 @@
 package org.apache.hupa.shared.rpc;
 
 import org.apache.hupa.shared.data.IMAPFolder;
-import org.apache.hupa.shared.data.Message;
+import org.apache.hupa.shared.data.SMTPMessage;
 
 public class ReplyMessage extends ForwardMessage{
 
@@ -31,7 +31,7 @@
 	private static final long serialVersionUID = -383135476236902779L;
 	private boolean replyAll;
 	
-	public ReplyMessage(String sessionId, Message msg, IMAPFolder folder, long uid, boolean replyAll) {
+	public ReplyMessage(String sessionId, SMTPMessage msg, IMAPFolder folder, long uid, boolean replyAll) {
 		super(sessionId, msg, folder, uid);
 		this.replyAll = replyAll;
 	}

Modified: labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java?rev=811292&r1=811291&r2=811292&view=diff
==============================================================================
--- labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java (original)
+++ labs/hupa/shared/src/main/java/org/apache/hupa/shared/rpc/SendMessage.java Fri Sep  4 09:00:54 2009
@@ -21,6 +21,7 @@
 
 
 import org.apache.hupa.shared.data.Message;
+import org.apache.hupa.shared.data.SMTPMessage;
 
 public class SendMessage extends Session<EmptyResult>{
 	
@@ -28,10 +29,10 @@
 	 * 
 	 */
 	private static final long serialVersionUID = 973668124208945015L;
-	private Message msg;
+	private SMTPMessage msg;
 
 	
-	public SendMessage(String sessionId, Message msg) {
+	public SendMessage(String sessionId, SMTPMessage msg) {
 		super(sessionId);
 		this.msg = msg;
 	}
@@ -40,7 +41,7 @@
 		
 	}
 	
-	public Message getMessage() {
+	public SMTPMessage getMessage() {
 		return msg;
 	}
 	



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org