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/06/28 16:58:54 UTC

svn commit: r789106 - in /labs/hupa/src/main/java/org/apache/hupa: ./ client/controller/ client/data/ client/model/ client/services/ client/view/ client/widgets/ server/

Author: norman
Date: Sun Jun 28 14:58:53 2009
New Revision: 789106

URL: http://svn.apache.org/viewvc?rev=789106&view=rev
Log:
try to use some cleaner pattern for mvc usage
repackaging

Added:
    labs/hupa/src/main/java/org/apache/hupa/client/data/
      - copied from r788864, labs/hupa/src/main/java/org/apache/hupa/common/data/
    labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModelData.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java
      - copied, changed from r788967, labs/hupa/src/main/java/org/apache/hupa/client/model/SessionModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModelData.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModelData.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModelData.java
Removed:
    labs/hupa/src/main/java/org/apache/hupa/client/data/Session.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/SessionModel.java
Modified:
    labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml
    labs/hupa/src/main/java/org/apache/hupa/client/controller/HupaController.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPFolder.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPHeader.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessage.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageAttachment.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageContent.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPUser.java
    labs/hupa/src/main/java/org/apache/hupa/client/data/ResultList.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java
    labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java
    labs/hupa/src/main/java/org/apache/hupa/client/view/LoginView.java
    labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java
    labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPMessageWidget.java
    labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java

Modified: labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml (original)
+++ labs/hupa/src/main/java/org/apache/hupa/Hupa.gwt.xml Sun Jun 28 14:58:53 2009
@@ -18,7 +18,6 @@
   <inherits name="com.googlecode.gwtmvc.GwtMvc" />  
   
   <source path="client"/>
-  <source path="common"/>
   
   <!-- Specify the app entry point class.                         -->
   <entry-point class='org.apache.hupa.client.Hupa'/>

Modified: labs/hupa/src/main/java/org/apache/hupa/client/controller/HupaController.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/controller/HupaController.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/controller/HupaController.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/controller/HupaController.java Sun Jun 28 14:58:53 2009
@@ -20,13 +20,14 @@
 
 package org.apache.hupa.client.controller;
 
+import org.apache.hupa.client.data.IMAPUser;
 import org.apache.hupa.client.model.FolderModel;
+import org.apache.hupa.client.model.LogoutModel;
 import org.apache.hupa.client.model.MessageListModel;
 import org.apache.hupa.client.model.MessageModel;
-import org.apache.hupa.client.model.SessionModel;
+import org.apache.hupa.client.model.LoginModel;
 import org.apache.hupa.client.view.LoginView;
 import org.apache.hupa.client.view.MainView;
-import org.apache.hupa.common.data.Session;
 
 import com.google.gwt.user.client.ui.RootPanel;
 import com.googlecode.gwtmvc.client.Controller;
@@ -40,9 +41,10 @@
 		LOGIN, LOGIN_SUCCESSFULL, LOGIN_ERROR, LOGOUT, FETCH_FOLDERS, FETCH_MESSAGES, EXPOSE_MESSAGE
 	}
 
-	protected IView<Session> loginView;
+	protected IView<IMAPUser> loginView;
 
-	private SessionModel model;
+	private LoginModel model;
+	private LogoutModel logoutModel;
 	private FolderModel fModel;
 	private MessageListModel mModel;
 
@@ -53,32 +55,34 @@
 
 	public HupaController() {
 		super(HupaAction.values());
-		model = new SessionModel();
+		model = new LoginModel();
+		logoutModel = new LogoutModel();
 		fModel = new FolderModel();
 		mModel = new MessageListModel();
 		messageModel = new MessageModel();
 	}
 
-	protected void handleEvent(Event ev) {
-		Event<Session,HupaAction> event = ev;
-		HupaAction action =  event.getAction();
+	
+	@SuppressWarnings("unchecked")
+    protected void handleEvent(Event ev) {
+		HupaAction action =  (HupaAction)ev.getAction();
 		switch (action) {
 		case LOGIN:
-			model.login(event.getValue(),ev);
+			model.login(ev);
 			break;
 		case LOGOUT:
-			model.logout(event.getValue(),ev);
+			logoutModel.logout(ev);
 			renderView(loginView);
 			break;
 		case LOGIN_SUCCESSFULL:			
-			fModel.fetchFolders((Session) event.getValue(),ev);
+			fModel.fetchFolders(ev);
 			renderView(mailboxView);
 			break;
 		case FETCH_MESSAGES:
-			mModel.fetchMessages((Session) event.getValue() , 0, 20,ev);
+			mModel.fetchMessages(ev);
 			break;
 		case EXPOSE_MESSAGE:
-			messageModel.exposeMessage(event.getValue(),ev);
+			messageModel.exposeMessage(ev);
 			break;
 		default:
 			break;
@@ -88,13 +92,14 @@
 	@Override
 	public void init() {
 		if (loginView == null) {
-			loginView = new LoginView(this, model);
+			loginView = new LoginView(this, model,logoutModel);
 
 		}
 		if (mailboxView == null) {
-			mailboxView = new MainView(this, model, fModel,mModel,messageModel);
+			mailboxView = new MainView(this, model, logoutModel,fModel,mModel,messageModel);
 		}
 		initModel(model);
+		initModel(logoutModel);
 		initModel(fModel);
 		initModel(messageModel);
 		initModel(mModel);

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPFolder.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPFolder.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPFolder.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPFolder.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.io.Serializable;
 import java.util.ArrayList;

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPHeader.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPHeader.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPHeader.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPHeader.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.io.Serializable;
 import java.util.Date;

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessage.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessage.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessage.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessage.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.io.Serializable;
 import java.util.List;
@@ -33,7 +33,7 @@
 	private List<IMAPFlag> flags;
 
 	public enum IMAPFlag {
-		SEEN, DELETED, RECENT
+		SEEN, DELETED, RECENT, ANSWERED, JUNK, DRAFT
 	}
 
 	public void setIMAPFlags(List<IMAPFlag> flags) {

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageAttachment.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageAttachment.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageAttachment.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageAttachment.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.io.Serializable;
 

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageContent.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageContent.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageContent.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPMessageContent.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.io.Serializable;
 import java.util.ArrayList;

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPUser.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPUser.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPUser.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/IMAPUser.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.io.Serializable;
 import java.util.Date;

Modified: labs/hupa/src/main/java/org/apache/hupa/client/data/ResultList.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/data/ResultList.java?rev=789106&r1=788864&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/data/ResultList.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/data/ResultList.java Sun Jun 28 14:58:53 2009
@@ -17,7 +17,7 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.hupa.common.data;
+package org.apache.hupa.client.data;
 
 import java.util.ArrayList;
 

Modified: labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModel.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModel.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModel.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModel.java Sun Jun 28 14:58:53 2009
@@ -22,10 +22,10 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.hupa.client.controller.HupaController.HupaAction;
+import org.apache.hupa.client.data.IMAPFolder;
 import org.apache.hupa.client.services.IMAPService;
 import org.apache.hupa.client.services.IMAPServiceAsync;
-import org.apache.hupa.common.data.IMAPFolder;
-import org.apache.hupa.common.data.Session;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -42,8 +42,10 @@
 		update(new ArrayList<IMAPFolder>());
 	}
 
-	public void fetchFolders(Session session,final Event event) {
-		imapService.getFolders(session, new AsyncCallback<List<IMAPFolder>>() {
+	public void fetchFolders(final Event<FolderModelData,HupaAction> event) {
+	    FolderModelData data = event.getValue();
+	    
+		imapService.getFolders(data.getUser(), new AsyncCallback<List<IMAPFolder>>() {
 
 			public void onFailure(Throwable caught) {
 				// TODO Auto-generated method stub

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModelData.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModelData.java?rev=789106&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModelData.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModelData.java Sun Jun 28 14:58:53 2009
@@ -0,0 +1,36 @@
+/****************************************************************
+ * 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.client.model;
+
+import org.apache.hupa.client.data.IMAPUser;
+
+public class FolderModelData {
+    
+    private IMAPUser user;
+
+    public FolderModelData(IMAPUser user) {
+        this.user = user;
+    }
+    
+    public IMAPUser getUser() {
+        return user;
+    }
+
+}

Copied: labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java (from r788967, labs/hupa/src/main/java/org/apache/hupa/client/model/SessionModel.java)
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java?p2=labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java&p1=labs/hupa/src/main/java/org/apache/hupa/client/model/SessionModel.java&r1=788967&r2=789106&rev=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/SessionModel.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java Sun Jun 28 14:58:53 2009
@@ -19,17 +19,17 @@
 
 package org.apache.hupa.client.model;
 
+import org.apache.hupa.client.controller.HupaController.HupaAction;
+import org.apache.hupa.client.data.IMAPUser;
 import org.apache.hupa.client.services.IMAPService;
 import org.apache.hupa.client.services.IMAPServiceAsync;
-import org.apache.hupa.common.data.IMAPUser;
-import org.apache.hupa.common.data.Session;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.rpc.AsyncCallback;
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Model;
 
-public class SessionModel extends Model<Session> {
+public class LoginModel extends Model<IMAPUser> {
 
 	private IMAPServiceAsync imapService = GWT.create(IMAPService.class);
 
@@ -38,25 +38,21 @@
 
 	}
 
-	public void login(Session session,final Event event) {
-		IMAPUser user = session.getIMAPUser();
-		imapService.login(user.getName(), user.getPassword(),
-				new AsyncCallback<Session>() {
+	public void login(final Event<LoginModelData,HupaAction> event) {
+		LoginModelData data = event.getValue();
+		
+		imapService.login(data.getUsername(),data.getPassword(),
+				new AsyncCallback<IMAPUser>() {
 
 					public void onFailure(Throwable caught) {
 						update(null,event);
 					}
 
-					public void onSuccess(Session result) {
-						update(result,event);
-					}
+                    public void onSuccess(IMAPUser result) {
+                        update(result,event);
+                    }
 
 				});
 	}
-	
-	public void logout(Session session,Event ev) {
-		session.reset();
-		update(session,ev);
-	}
 
 }

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModelData.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModelData.java?rev=789106&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModelData.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModelData.java Sun Jun 28 14:58:53 2009
@@ -0,0 +1,40 @@
+/****************************************************************
+ * 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.client.model;
+
+public class LoginModelData {
+    
+    private String username;
+    private String password;
+
+    public LoginModelData(String username, String password) {
+        this.username = username;
+        this.password = password;
+    }
+    
+    public String getPassword() {
+        return password;
+    }
+    
+    public String getUsername() {
+        return username;
+    }
+
+}

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java?rev=789106&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java Sun Jun 28 14:58:53 2009
@@ -0,0 +1,41 @@
+/****************************************************************
+ * 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.client.model;
+
+import org.apache.hupa.client.controller.HupaController.HupaAction;
+import org.apache.hupa.client.data.IMAPUser;
+
+import com.googlecode.gwtmvc.client.Event;
+import com.googlecode.gwtmvc.client.Model;
+
+public class LogoutModel extends Model<IMAPUser>{
+
+    @Override
+    protected void init() {
+
+    }
+    
+    public void logout(Event<LogoutModelData,HupaAction> ev) {
+        ev.getValue().getUser().setAuthenticated(false);
+        
+        update(ev.getValue().getUser(),ev);
+    }
+    
+
+}

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModelData.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModelData.java?rev=789106&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModelData.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModelData.java Sun Jun 28 14:58:53 2009
@@ -0,0 +1,36 @@
+/****************************************************************
+ * 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.client.model;
+
+import org.apache.hupa.client.data.IMAPUser;
+
+public class LogoutModelData {
+    
+    private IMAPUser user;
+
+    public LogoutModelData(IMAPUser user) {
+        this.user = user;
+    }
+    
+    public IMAPUser getUser() {
+        return user;
+    }
+
+}

Modified: labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModel.java Sun Jun 28 14:58:53 2009
@@ -19,11 +19,11 @@
 
 package org.apache.hupa.client.model;
 
+import org.apache.hupa.client.controller.HupaController.HupaAction;
+import org.apache.hupa.client.data.IMAPMessage;
+import org.apache.hupa.client.data.ResultList;
 import org.apache.hupa.client.services.IMAPService;
 import org.apache.hupa.client.services.IMAPServiceAsync;
-import org.apache.hupa.common.data.IMAPMessage;
-import org.apache.hupa.common.data.ResultList;
-import org.apache.hupa.common.data.Session;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -39,9 +39,10 @@
 		// do nothing
 	}
 
-	public void fetchMessages(Session session, int start,
-			int end,final Event event) {
-		service.getMessages(session, start, end,
+	public void fetchMessages(final Event<MessageListModelData,HupaAction> event) {
+	    MessageListModelData data = event.getValue();
+	    
+		service.getMessages(data.getUser(),data.getFolder(),data.getStart(),data.getEnd(),
 				new AsyncCallback<ResultList<IMAPMessage>>() {
 
 					public void onFailure(Throwable caught) {

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java?rev=789106&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/MessageListModelData.java Sun Jun 28 14:58:53 2009
@@ -0,0 +1,55 @@
+/****************************************************************
+ * 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.client.model;
+
+import org.apache.hupa.client.data.IMAPFolder;
+import org.apache.hupa.client.data.IMAPUser;
+
+public class MessageListModelData {
+    
+    private IMAPUser user;
+    private IMAPFolder folder;
+    private int start;
+    private int end;
+
+    public MessageListModelData(IMAPUser user,IMAPFolder folder, int start, int end) {
+        this.user = user;
+        this.folder = folder;
+        this.start =start;
+        this.end = end;
+    }
+    
+    public IMAPUser getUser () {
+        return user;
+    }
+    
+    public IMAPFolder getFolder() {
+        return folder;
+    }
+    
+    public int getStart() {
+        return start;
+    }
+    
+    public int getEnd() {
+        return end;
+    }
+
+}

Modified: labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModel.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModel.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModel.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModel.java Sun Jun 28 14:58:53 2009
@@ -20,10 +20,10 @@
 
 package org.apache.hupa.client.model;
 
+import org.apache.hupa.client.controller.HupaController.HupaAction;
+import org.apache.hupa.client.data.IMAPMessage;
 import org.apache.hupa.client.services.IMAPService;
 import org.apache.hupa.client.services.IMAPServiceAsync;
-import org.apache.hupa.common.data.IMAPMessage;
-import org.apache.hupa.common.data.Session;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -39,8 +39,9 @@
 		
 	}
 	
-	public void exposeMessage(Session session,final Event event) {
-		service.exposeMessage(session, new AsyncCallback<IMAPMessage>() {
+	public void exposeMessage(final Event<MessageModelData,HupaAction> event) {
+	    MessageModelData data = event.getValue();
+		service.exposeMessage(data.getUser(),data.getFolder(),data.getMessage(), new AsyncCallback<IMAPMessage>() {
 
 			public void onFailure(Throwable caught) {
 				// TODO Auto-generated method stub

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModelData.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModelData.java?rev=789106&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModelData.java (added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/MessageModelData.java Sun Jun 28 14:58:53 2009
@@ -0,0 +1,49 @@
+/****************************************************************
+ * 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.client.model;
+
+import org.apache.hupa.client.data.IMAPFolder;
+import org.apache.hupa.client.data.IMAPMessage;
+import org.apache.hupa.client.data.IMAPUser;
+
+public class MessageModelData {
+
+    private IMAPUser user;
+    private IMAPFolder folder;
+    private IMAPMessage msg;
+
+    public MessageModelData(IMAPUser user, IMAPFolder folder, IMAPMessage msg) {
+        this.user = user;
+        this.folder = folder;
+        this.msg = msg;
+    }
+    
+    public IMAPUser getUser() {
+        return user;
+    }
+    
+    public IMAPFolder getFolder() {
+        return folder;
+    }
+    
+    public IMAPMessage getMessage() {
+        return msg;
+    }
+}

Modified: labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPService.java Sun Jun 28 14:58:53 2009
@@ -21,10 +21,10 @@
 
 import java.util.List;
 
-import org.apache.hupa.common.data.IMAPFolder;
-import org.apache.hupa.common.data.IMAPMessage;
-import org.apache.hupa.common.data.ResultList;
-import org.apache.hupa.common.data.Session;
+import org.apache.hupa.client.data.IMAPFolder;
+import org.apache.hupa.client.data.IMAPMessage;
+import org.apache.hupa.client.data.IMAPUser;
+import org.apache.hupa.client.data.ResultList;
 
 import com.google.gwt.user.client.rpc.RemoteService;
 import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
@@ -32,19 +32,19 @@
 @RemoteServiceRelativePath("imap")
 public interface IMAPService extends RemoteService {
 
-	public Session login(String username, String password)
+	public IMAPUser login(String username,String password)
 			throws IMAPServiceException;
 
-	public List<IMAPFolder> getFolders(Session session)
+	public List<IMAPFolder> getFolders(IMAPUser user)
 			throws IMAPServiceException;
 
-	public ResultList<IMAPMessage> getMessages(Session session, int start, int end) throws IMAPServiceException;
+	public ResultList<IMAPMessage> getMessages(IMAPUser user,IMAPFolder folder, int start, int end) throws IMAPServiceException;
 
-	public IMAPMessage exposeMessage(Session session) throws IMAPServiceException;
+	public IMAPMessage exposeMessage(IMAPUser user,IMAPFolder folder,IMAPMessage message) throws IMAPServiceException;
 
-	public void addFolder(Session session, IMAPFolder folder)
+	public void addFolder(IMAPUser user, IMAPFolder folder)
 			throws IMAPServiceException;
 
-	public void removeFolder(Session session, IMAPFolder folder)
+	public void removeFolder(IMAPUser user, IMAPFolder folder)
 			throws IMAPServiceException;
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/services/IMAPServiceAsync.java Sun Jun 28 14:58:53 2009
@@ -21,30 +21,29 @@
 
 import java.util.List;
 
-import org.apache.hupa.common.data.IMAPFolder;
-import org.apache.hupa.common.data.IMAPMessage;
-import org.apache.hupa.common.data.IMAPUser;
-import org.apache.hupa.common.data.ResultList;
-import org.apache.hupa.common.data.Session;
+import org.apache.hupa.client.data.IMAPFolder;
+import org.apache.hupa.client.data.IMAPMessage;
+import org.apache.hupa.client.data.IMAPUser;
+import org.apache.hupa.client.data.ResultList;
 
 import com.google.gwt.user.client.rpc.AsyncCallback;
 
 public interface IMAPServiceAsync {
 
 	public void login(String username, String password,
-			AsyncCallback<Session> callback);
+			AsyncCallback<IMAPUser> callback);
 
-	public void getFolders(Session session,
+	public void getFolders(IMAPUser user,
 			AsyncCallback<List<IMAPFolder>> callback);
 
-	public void getMessages(Session session, int start,
+	public void getMessages(IMAPUser user, IMAPFolder folder, int start,
 			int end, AsyncCallback<ResultList<IMAPMessage>> callback);
 
-	public void exposeMessage(Session session, AsyncCallback<IMAPMessage> callback);
+	public void exposeMessage(IMAPUser user, IMAPFolder folder, IMAPMessage message, AsyncCallback<IMAPMessage> callback);
 
-	public void addFolder(Session session, IMAPFolder folder,
+	public void addFolder(IMAPUser user, IMAPFolder folder,
 			AsyncCallback<Void> callBack);
 
-	public void removeFolder(Session session, IMAPFolder folder,
+	public void removeFolder(IMAPUser user, IMAPFolder folder,
 			AsyncCallback<Void> callBack);
 }

Modified: labs/hupa/src/main/java/org/apache/hupa/client/view/LoginView.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/view/LoginView.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/view/LoginView.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/view/LoginView.java Sun Jun 28 14:58:53 2009
@@ -3,9 +3,11 @@
 import org.apache.hupa.client.HupaConstants;
 import org.apache.hupa.client.controller.HupaController;
 import org.apache.hupa.client.controller.HupaController.HupaAction;
-import org.apache.hupa.client.model.SessionModel;
-import org.apache.hupa.common.data.IMAPUser;
-import org.apache.hupa.common.data.Session;
+import org.apache.hupa.client.data.IMAPUser;
+import org.apache.hupa.client.model.FolderModelData;
+import org.apache.hupa.client.model.LoginModel;
+import org.apache.hupa.client.model.LoginModelData;
+import org.apache.hupa.client.model.LogoutModel;
 import org.cobogw.gwt.user.client.ui.Button;
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 
@@ -26,11 +28,11 @@
 import com.googlecode.gwtmvc.client.ModelForView;
 import com.googlecode.gwtmvc.client.View;
 
-public class LoginView extends View<Session, VerticalPanel> implements
+public class LoginView extends View<IMAPUser, VerticalPanel> implements
 		ClickHandler, KeyUpHandler {
 
-	public LoginView(HupaController controller, SessionModel sModel) {
-		super("loginView", controller, sModel);
+	public LoginView(HupaController controller, LoginModel sModel,LogoutModel lModel) {
+		super("loginView", controller, sModel,lModel);
 	}
 	
 	private HupaConstants constants = GWT.create(HupaConstants.class);
@@ -71,6 +73,7 @@
 		usernameTextBox.addKeyUpHandler(this);
 		usernameTextBox.setText(Cookies.getCookie("username"));
 		usernameTextBox.setFocus(true);
+		
 		passwordTextBox.addKeyUpHandler(this);
 		passwordTextBox.setText(Cookies.getCookie("password"));
 		vPanel.add(grid);
@@ -93,14 +96,13 @@
 	}
 
 	@Override
-	public void onModelChange(ModelForView<Session> model) {
-		
+	public void onModelChange(ModelForView<IMAPUser> model) {
 		if (model.getValue() == null) {
 			error();
 		} else {
-			if (model.getValue().getIMAPUser() != null) {
-				success();
-				controller.call(new Event<Session, HupaAction>(HupaAction.LOGIN_SUCCESSFULL, model.getValue()));
+		    if (model instanceof LoginModel) {
+		        success();
+		        controller.call(new Event<FolderModelData, HupaAction>(HupaAction.LOGIN_SUCCESSFULL,new FolderModelData(model.getValue())));
 			} else {
 				clear();
 			}
@@ -119,13 +121,8 @@
 		if (resetButton.equals(event.getSource())) {
 			reset();
 		} else if (loginButton.equals(event.getSource())) {
-			IMAPUser user = new IMAPUser();
-			user.setName(getUsername());
-			user.setPassword(getPassword());
-			Session session = new Session();
-			session.setIMAPUser(user);
-			controller.call(new Event<Session, HupaAction>(HupaAction.LOGIN,
-					session,masker));
+			controller.call(new Event<LoginModelData, HupaAction>(HupaAction.LOGIN,
+					new LoginModelData(getUsername(),getPassword()),masker));
 		}
 	}
 

Modified: labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java Sun Jun 28 14:58:53 2009
@@ -30,16 +30,20 @@
 import org.apache.hupa.client.bundles.IMAPTreeImages;
 import org.apache.hupa.client.controller.HupaController;
 import org.apache.hupa.client.controller.HupaController.HupaAction;
+import org.apache.hupa.client.data.IMAPFolder;
+import org.apache.hupa.client.data.IMAPMessage;
+import org.apache.hupa.client.data.IMAPUser;
+import org.apache.hupa.client.data.ResultList;
+import org.apache.hupa.client.data.IMAPMessage.IMAPFlag;
 import org.apache.hupa.client.model.FolderModel;
+import org.apache.hupa.client.model.LogoutModel;
+import org.apache.hupa.client.model.LogoutModelData;
 import org.apache.hupa.client.model.MessageListModel;
+import org.apache.hupa.client.model.MessageListModelData;
 import org.apache.hupa.client.model.MessageModel;
-import org.apache.hupa.client.model.SessionModel;
+import org.apache.hupa.client.model.MessageModelData;
+import org.apache.hupa.client.model.LoginModel;
 import org.apache.hupa.client.widgets.IMAPMessageWidget;
-import org.apache.hupa.common.data.IMAPFolder;
-import org.apache.hupa.common.data.IMAPMessage;
-import org.apache.hupa.common.data.ResultList;
-import org.apache.hupa.common.data.Session;
-import org.apache.hupa.common.data.IMAPMessage.IMAPFlag;
 import org.cobogw.gwt.user.client.ui.Button;
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 import org.cobogw.gwt.user.client.ui.RoundedPanel;
@@ -50,6 +54,7 @@
 import com.google.gwt.event.logical.shared.SelectionEvent;
 import com.google.gwt.event.logical.shared.SelectionHandler;
 import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.user.client.Timer;
 import com.google.gwt.user.client.ui.CheckBox;
 import com.google.gwt.user.client.ui.DockPanel;
 import com.google.gwt.user.client.ui.FlexTable;
@@ -76,7 +81,6 @@
 	private DateTimeFormat dFormat = DateTimeFormat.getShortDateTimeFormat();
 	private int rowsPerPage = 20;
 
-	private Label usernameLabel = new Label();
 	private FlexTable mailTable = new FlexTable();
 	private int selectedRow = -1;
 	private DockPanel dockPanel = new DockPanel();
@@ -86,11 +90,11 @@
 	private VerticalPanel centerVP = new VerticalPanel();
 	private Maskable masker = new LoadingMasker();
 	private Cell cell;
-	private Session session;
+	private IMAPUser user;
 
-	public MainView(HupaController hupaController, SessionModel sModel,
+	public MainView(HupaController hupaController, LoginModel sModel, LogoutModel logoutModel,
 			FolderModel folderModel,MessageListModel mModel,MessageModel messageModel) {
-		super("mainView", hupaController, sModel, folderModel,mModel,messageModel);
+		super("mainView", hupaController, sModel, logoutModel, folderModel,mModel,messageModel);
 
 	}
 
@@ -103,8 +107,7 @@
 
 			public void onSelection(SelectionEvent<TreeItem> event) {
 				folder = (IMAPFolder) event.getSelectedItem().getUserObject();
-				session.setSelectedIMAPFolder(folder);
-				controller.call(new Event<Session, HupaAction>(HupaAction.FETCH_MESSAGES, session, masker));
+				controller.call(new Event<MessageListModelData, HupaAction>(HupaAction.FETCH_MESSAGES, new MessageListModelData(user,folder,0,20), masker));
 			}
 
 		});
@@ -169,8 +172,7 @@
 								cell.getRowIndex(),
 								"hupa-Mailtable-row-selected");
 					} else {
-						session.setSelectedIMAPMessage(getSelectedMessage());
-						controller.call(new Event<Session, HupaAction>(HupaAction.EXPOSE_MESSAGE,session,masker));
+						controller.call(new Event<MessageModelData, HupaAction>(HupaAction.EXPOSE_MESSAGE,new MessageModelData(user,folder,getSelectedMessage()),masker));
 					}
 					selectedRow = cell.getRowIndex();
 				}
@@ -197,7 +199,7 @@
 		logoutButton.addClickHandler(new ClickHandler() {
 
 			public void onClick(ClickEvent event) {
-				controller.call(new Event<Session, HupaAction>(HupaAction.LOGOUT,session,masker));
+				controller.call(new Event<LogoutModelData, HupaAction>(HupaAction.LOGOUT,new LogoutModelData(user),masker));
 			}
 			
 		});
@@ -211,13 +213,17 @@
 	 * 
 	 * @param user
 	 */
-	public void load(Session session) {
-		if (session != null) {
-			this.session = session;
-			usernameLabel.setText(session.getIMAPUser().getName());
-		}
-	}
+	
+	private void clearMailTableEntries() {
+	       // clear table
+        int a = 0;
+        while ((a = mailTable.getRowCount()) != 1) {
+            mailTable.removeRow(a - 1);
+        }
 
+        mMap.clear();
+	}
+	
 	private void loadMails(ResultList<IMAPMessage> result) {
 		int pages = 0;
 
@@ -227,12 +233,7 @@
 		}
 
 		// clear table
-		int a = 0;
-		while ((a = mailTable.getRowCount()) != 1) {
-			mailTable.removeRow(a - 1);
-		}
-
-		mMap.clear();
+		clearMailTableEntries();
 
 		int rows = 1;
 		for (int i = 0; i < result.size(); i++) {
@@ -344,13 +345,22 @@
 	@SuppressWarnings("unchecked")
 	public void onModelChange(ModelForView model) {
 		
-		if (model instanceof SessionModel) {
-			Session tmpSession = (Session)model.getValue();
-			if (tmpSession != null && tmpSession.getIMAPUser() == null) {
-				reset();
-			} else {
-				load(tmpSession);
-			}
+		if (model instanceof LoginModel) {
+			user = (IMAPUser) model.getValue();
+            new Timer() {
+
+                @Override
+                public void run() {
+                    controller
+                            .call(new Event<MessageListModelData, HupaAction>(
+                                    HupaAction.FETCH_MESSAGES,
+                                    new MessageListModelData(user, folder, 0,
+                                            20), masker));
+                }
+
+            }.scheduleRepeating(1000 * 60 * 5);			
+		} else if (model instanceof LogoutModel) {
+		    reset();
 		} else if (model instanceof FolderModel) {
 		    // clear off the tree 
 		    folderTree.clear();
@@ -380,9 +390,9 @@
 		}
 	}
 	private void reset() {
-		session = null;
+		user = null;
 		folderTree.clear();
-		mailTable.clear();
+        clearMailTableEntries();
 		center.clear();
 		center.add(centerVP);
 	}

Modified: labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPMessageWidget.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPMessageWidget.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPMessageWidget.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/widgets/IMAPMessageWidget.java Sun Jun 28 14:58:53 2009
@@ -23,7 +23,8 @@
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 
 import org.apache.hupa.client.HupaConstants;
-import org.apache.hupa.common.data.IMAPMessage;
+import org.apache.hupa.client.data.IMAPMessage;
+
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.shared.HandlerRegistration;

Modified: labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java
URL: http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java?rev=789106&r1=789105&r2=789106&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java (original)
+++ labs/hupa/src/main/java/org/apache/hupa/server/IMAPServiceImpl.java Sun Jun 28 14:58:53 2009
@@ -32,6 +32,7 @@
 import org.columba.ristretto.imap.IMAPFlags;
 import org.columba.ristretto.imap.IMAPProtocol;
 import org.columba.ristretto.imap.ListInfo;
+import org.columba.ristretto.imap.SearchKey;
 import org.columba.ristretto.imap.SequenceSet;
 import org.columba.ristretto.io.StreamUtils;
 import org.columba.ristretto.message.Header;
@@ -42,16 +43,15 @@
 import org.columba.ristretto.parser.DateParser;
 import org.columba.ristretto.parser.ParserException;
 
+import org.apache.hupa.client.data.IMAPFolder;
+import org.apache.hupa.client.data.IMAPHeader;
+import org.apache.hupa.client.data.IMAPMessage;
+import org.apache.hupa.client.data.IMAPMessageContent;
+import org.apache.hupa.client.data.IMAPUser;
+import org.apache.hupa.client.data.ResultList;
+import org.apache.hupa.client.data.IMAPMessage.IMAPFlag;
 import org.apache.hupa.client.services.IMAPService;
 import org.apache.hupa.client.services.IMAPServiceException;
-import org.apache.hupa.common.data.IMAPFolder;
-import org.apache.hupa.common.data.IMAPHeader;
-import org.apache.hupa.common.data.IMAPMessage;
-import org.apache.hupa.common.data.IMAPMessageContent;
-import org.apache.hupa.common.data.IMAPUser;
-import org.apache.hupa.common.data.ResultList;
-import org.apache.hupa.common.data.Session;
-import org.apache.hupa.common.data.IMAPMessage.IMAPFlag;
 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
 
 import org.apache.commons.lang.StringEscapeUtils;
@@ -64,7 +64,7 @@
 	 */
 	private static final long serialVersionUID = -1853475303345399549L;
 
-	public Session login(String username, String password)
+	public IMAPUser login(String username, String password)
 			throws IMAPServiceException {
 
 		try {
@@ -75,21 +75,16 @@
 			protocol.openPort();
 			protocol.login(username, password.toCharArray());
 
-			if (protocol.getState() == IMAPProtocol.AUTHENTICATED) {
-				user.setLoginDate(new Date());
-				user.setAuthenticated(true);
-				Session session = new Session();
-				session.setIMAPUser(user);
-				return session;
-			}
+			
+			user.setLoginDate(new Date());
+			user.setAuthenticated(true);
+			return user;
+			
 		} catch (IOException e) {
 			throw new IMAPServiceException(e.getMessage());
 		} catch (IMAPException e) {
 			throw new IMAPServiceException(e.getMessage());
 		}
-
-		return null;
-
 	}
 
 	private IMAPProtocol getProtocol(IMAPUser user) throws IOException,
@@ -103,13 +98,13 @@
 
 	}
 
-	public ResultList<IMAPMessage> getMessages(Session session, int start, int end) throws IMAPServiceException {
+	public ResultList<IMAPMessage> getMessages(IMAPUser user,IMAPFolder folder, int start, int end) throws IMAPServiceException {
 		ResultList<IMAPMessage> mList = new ResultList<IMAPMessage>();
 
 		IMAPProtocol proto = null;
 		try {
-			proto = getProtocol(session.getIMAPUser());
-			MailboxInfo mInfo = proto.select(session.getSelectedIMAPFolder().getFullName());
+			proto = getProtocol(user);
+			MailboxInfo mInfo = proto.select(folder.getFullName());
 
 			int exists = mInfo.getExists();
 			mList.setRealSize(exists);
@@ -163,11 +158,11 @@
 			return mList;
 		} catch (IOException e) {
 			throw new IMAPServiceException(
-					"Error while fetching headers for user " + session.getIMAPUser().getName()
+					"Error while fetching headers for user " + user.getName()
 							+ ": " + e.getMessage());
 		} catch (IMAPException e) {
 			throw new IMAPServiceException(
-					"Error while fetching headers for user " + session.getIMAPUser().getName()
+					"Error while fetching headers for user " + user.getName()
 							+ ": " + e.getMessage());
 		} finally {
 			if (proto != null) {
@@ -181,18 +176,19 @@
 	}
 
 
-	public IMAPMessage exposeMessage(Session session) throws IMAPServiceException {
-		IMAPMessage msg = session.getSelectedIMAPMessage();
+	public IMAPMessage exposeMessage(IMAPUser user, IMAPFolder folder, IMAPMessage msg) throws IMAPServiceException {
 		if (msg.isExposed()) {
 			return msg;
 		}
 		IMAPProtocol proto = null;
 		try {
-			proto = getProtocol(session.getIMAPUser());
-			proto.select(session.getSelectedIMAPFolder().getName());
+			proto = getProtocol(user);
+			proto.select(folder.getName());
 
 			IMAPMessageContent content = new IMAPMessageContent();
 
+			
+			
 			MimeTree mTree = proto.uidFetchBodystructure(msg.getUid());
 
 			MimePart textPart = mTree.getFirstTextPart("plain");
@@ -235,7 +231,24 @@
 			}
 
 			msg.setIMAPMessageContent(content);
+			
 
+			IMAPFlags flagsRistretto = new IMAPFlags();
+			
+			List<IMAPFlag> flags = msg.getIMAPFlags();
+		
+			if (flags.contains(IMAPFlag.SEEN) == false) {
+			    flags.add(IMAPFlag.SEEN);
+			
+			    flagsRistretto.setAnswered(flags.contains(IMAPFlag.ANSWERED));
+			    flagsRistretto.setDeleted(flags.contains(IMAPFlag.DELETED));
+			    flagsRistretto.setJunk(flags.contains(IMAPFlag.JUNK));
+			    flagsRistretto.setRecent(flags.contains(IMAPFlag.RECENT));
+			    flagsRistretto.setSeen(flags.contains(IMAPFlag.SEEN));
+		    	flagsRistretto.setDraft(flags.contains(IMAPFlag.DRAFT));
+			
+			    proto.uidStore(new SequenceSet(msg.getUid()), true, flagsRistretto);
+			}
 			return msg;
 		} catch (IOException e) {
 			e.printStackTrace();
@@ -257,25 +270,31 @@
 		}
 	}
 
-
-	public List<IMAPFolder> getFolders(Session session)
+	
+	public List<IMAPFolder> getFolders(IMAPUser user)
 			throws IMAPServiceException {
 		List<IMAPFolder> fList = new ArrayList<IMAPFolder>();
 		IMAPProtocol protocol = null;
 		try {
-			protocol = getProtocol(session.getIMAPUser());
+			protocol = getProtocol(user);
 			ListInfo[] infos = protocol.list("", "*");
+			
 			for (int i = 0; i < infos.length; i++) {
 				ListInfo info = infos[i];
+				
 				String fullName = info.getName();
 				String delimiter = info.getDelimiter();
-				// MailboxInfo mInfo= protocol.select(info.getName());
-
+				MailboxInfo mInfo= protocol.select(info.getName());
+				
+				// we are want to show the not seen flagged message count
+				int unseen = protocol.search(new SearchKey[]{ new SearchKey(SearchKey.UNSEEN)}).length;
 				IMAPFolder iFolder = new IMAPFolder(info.getName());
 				iFolder.setDelimiter(delimiter);
-				// iFolder.setMessageCount(mInfo.getExists());
-				// iFolder.setUnseenMessageCount(mInfo.);
+				iFolder.setMessageCount(mInfo.getExists());
+				
+				iFolder.setUnseenMessageCount(unseen);
 
+				System.out.println(mInfo.toString() + " " + mInfo.getRecent());
 				int index = fullName.lastIndexOf(delimiter);
 				if (index > -1) {
 					String parentFullName = fullName.substring(0, index);
@@ -288,11 +307,11 @@
 		} catch (IOException e) {
 			e.printStackTrace();
 			throw new IMAPServiceException("Unable to get folders for User "
-					+ session.getIMAPUser());
+					+ user);
 		} catch (IMAPException e) {
 			e.printStackTrace();
 			throw new IMAPServiceException("Unable to get folders for User "
-					+ session.getIMAPUser());
+					+ user);
 		} finally {
 			if (protocol != null) {
 				try {
@@ -319,38 +338,38 @@
 		}
 	}
 
-	public void addFolder(Session session, IMAPFolder folder)
+	public void addFolder(IMAPUser user, IMAPFolder folder)
 			throws IMAPServiceException {
 		try {
-			IMAPProtocol protocol = getProtocol(session.getIMAPUser());
+			IMAPProtocol protocol = getProtocol(user);
 			protocol.create(folder.getFullName());
 			protocol.subscribe(folder.getFullName());
 		} catch (IOException e) {
 			e.printStackTrace();
 			throw new IMAPServiceException("Error while removing folder "
-					+ folder + " for user " + session.getIMAPUser() + ": " + e.toString());
+					+ folder + " for user " + user + ": " + e.toString());
 		} catch (IMAPException e) {
 			e.printStackTrace();
 			throw new IMAPServiceException("Error while removing folder "
-					+ folder + " for user " + session.getIMAPUser() + ": " + e.toString());
+					+ folder + " for user " + user + ": " + e.toString());
 
 		}
 	}
 
-	public void removeFolder(Session session, IMAPFolder folder)
+	public void removeFolder(IMAPUser user, IMAPFolder folder)
 			throws IMAPServiceException {
 		try {
-			IMAPProtocol protocol = getProtocol(session.getIMAPUser());
+			IMAPProtocol protocol = getProtocol(user);
 			protocol.unsubscribe(folder.getFullName());
 			protocol.delete(folder.getFullName());
 		} catch (IOException e) {
 			e.printStackTrace();
 			throw new IMAPServiceException("Error while removing folder "
-					+ folder + " for user " + session.getIMAPUser() + ": " + e.toString());
+					+ folder + " for user " + user + ": " + e.toString());
 		} catch (IMAPException e) {
 			e.printStackTrace();
 			throw new IMAPServiceException("Error while removing folder "
-					+ folder + " for user " + session.getIMAPUser() + ": " + e.toString());
+					+ folder + " for user " +  user+ ": " + e.toString());
 
 		}
 	}



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