Author: norman
Date: Mon Jun 29 12:28:39 2009
New Revision: 789306

URL: http://svn.apache.org/viewvc?rev=789306&view=rev
Log:
commit some pending code which hopefully let the model stuff work more easily 
on the future

Added:
    labs/hupa/src/main/java/org/apache/hupa/client/model/ModelReturnData.java
Modified:
    
labs/hupa/src/main/java/org/apache/hupa/client/controller/HupaController.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/FolderModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java
    labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.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/view/LoginView.java
    labs/hupa/src/main/java/org/apache/hupa/client/view/MainView.java

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=789306&r1=789305&r2=789306&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 
Mon Jun 29 12:28:39 2009
@@ -26,6 +26,7 @@
 import org.apache.hupa.client.model.MessageListModel;
 import org.apache.hupa.client.model.MessageModel;
 import org.apache.hupa.client.model.LoginModel;
+import org.apache.hupa.client.model.ModelReturnData;
 import org.apache.hupa.client.view.LoginView;
 import org.apache.hupa.client.view.MainView;
 
@@ -41,14 +42,14 @@
                LOGIN, LOGIN_SUCCESSFULL, LOGIN_ERROR, LOGOUT, FETCH_FOLDERS, 
FETCH_MESSAGES, EXPOSE_MESSAGE
        }
 
-       protected IView<IMAPUser> loginView;
+       protected IView<ModelReturnData<IMAPUser>> loginView;
 
        private LoginModel model;
        private LogoutModel logoutModel;
        private FolderModel fModel;
        private MessageListModel mModel;
 
-       private IView mailboxView;
+       private IView<ModelReturnData> mailboxView;
 
        private MessageModel messageModel;
        
@@ -105,7 +106,6 @@
                initModel(mModel);
        }
 
-       @Override
        protected void renderView(IView view) {
                if (view instanceof View) {
                        RootPanel.get().clear();

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=789306&r1=789305&r2=789306&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 Mon 
Jun 29 12:28:39 2009
@@ -32,14 +32,14 @@
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Model;
 
-public class FolderModel extends Model<List<IMAPFolder>> {
+public class FolderModel extends Model<ModelReturnData<List<IMAPFolder>>> {
 
        private IMAPServiceAsync imapService = GWT.create(IMAPService.class);
 
        @Override
        protected void init() {
                // no folders as default
-               update(new ArrayList<IMAPFolder>());
+               update(new ModelReturnData<List<IMAPFolder>>(new 
ArrayList<IMAPFolder>()));
        }
 
        public void fetchFolders(final Event<FolderModelData,HupaAction> event) 
{
@@ -48,12 +48,11 @@
                imapService.getFolders(data.getUser(), new 
AsyncCallback<List<IMAPFolder>>() {
 
                        public void onFailure(Throwable caught) {
-                               // TODO Auto-generated method stub
-
+                               update(new 
ModelReturnData<List<IMAPFolder>>(caught),event);
                        }
 
                        public void onSuccess(List<IMAPFolder> result) {
-                               update(result,event);
+                               update(new 
ModelReturnData<List<IMAPFolder>>(result),event);
                        }
 
                });

Modified: labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java?rev=789306&r1=789305&r2=789306&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/LoginModel.java Mon 
Jun 29 12:28:39 2009
@@ -29,7 +29,7 @@
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Model;
 
-public class LoginModel extends Model<IMAPUser> {
+public class LoginModel extends Model<ModelReturnData<IMAPUser>> {
 
        private IMAPServiceAsync imapService = GWT.create(IMAPService.class);
 
@@ -45,11 +45,11 @@
                                new AsyncCallback<IMAPUser>() {
 
                                        public void onFailure(Throwable caught) 
{
-                                               update(null,event);
+                                               update(new 
ModelReturnData<IMAPUser>(caught),event);
                                        }
 
                     public void onSuccess(IMAPUser result) {
-                        update(result,event);
+                        update(new ModelReturnData<IMAPUser>(result),event);
                     }
 
                                });

Modified: 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=789306&r1=789305&r2=789306&view=diff
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java 
(original)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/LogoutModel.java Mon 
Jun 29 12:28:39 2009
@@ -24,7 +24,7 @@
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Model;
 
-public class LogoutModel extends Model<IMAPUser>{
+public class LogoutModel extends Model<ModelReturnData<IMAPUser>>{
 
     @Override
     protected void init() {
@@ -32,9 +32,10 @@
     }
     
     public void logout(Event<LogoutModelData,HupaAction> ev) {
-        ev.getValue().getUser().setAuthenticated(false);
+        IMAPUser user = ev.getValue().getUser();
+        user.setAuthenticated(false);
         
-        update(ev.getValue().getUser(),ev);
+        update(new ModelReturnData<IMAPUser>(user),ev);
     }
     
 

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=789306&r1=789305&r2=789306&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 
Mon Jun 29 12:28:39 2009
@@ -30,7 +30,7 @@
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Model;
 
-public class MessageListModel extends Model<ResultList<IMAPMessage>> {
+public class MessageListModel extends 
Model<ModelReturnData<ResultList<IMAPMessage>>> {
 
        private IMAPServiceAsync service = GWT.create(IMAPService.class);
 
@@ -46,12 +46,11 @@
                                new AsyncCallback<ResultList<IMAPMessage>>() {
 
                                        public void onFailure(Throwable caught) 
{
-                                               // TODO Auto-generated method 
stub
-
+                                               update(new 
ModelReturnData<ResultList<IMAPMessage>>(caught),event);
                                        }
 
                                        public void 
onSuccess(ResultList<IMAPMessage> result) {
-                                               update(result,event);
+                                               update(new 
ModelReturnData<ResultList<IMAPMessage>>(result),event);
                                        }
 
                                });

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=789306&r1=789305&r2=789306&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 Mon 
Jun 29 12:28:39 2009
@@ -30,13 +30,11 @@
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Model;
 
-public class MessageModel extends Model<IMAPMessage>{
+public class MessageModel extends Model<ModelReturnData<IMAPMessage>>{
 
        private IMAPServiceAsync service = GWT.create(IMAPService.class);
        @Override
-       protected void init() {
-               // TODO Auto-generated method stub
-               
+       protected void init() {         
        }
        
        public void exposeMessage(final Event<MessageModelData,HupaAction> 
event) {
@@ -44,12 +42,11 @@
                
service.exposeMessage(data.getUser(),data.getFolder(),data.getMessage(), new 
AsyncCallback<IMAPMessage>() {
 
                        public void onFailure(Throwable caught) {
-                               // TODO Auto-generated method stub
-                               
+                               update(new 
ModelReturnData<IMAPMessage>(caught));
                        }
 
                        public void onSuccess(IMAPMessage result) {
-                               update(result,event);
+                               update(new 
ModelReturnData<IMAPMessage>(result),event);
                        }
                        
                });

Added: labs/hupa/src/main/java/org/apache/hupa/client/model/ModelReturnData.java
URL: 
http://svn.apache.org/viewvc/labs/hupa/src/main/java/org/apache/hupa/client/model/ModelReturnData.java?rev=789306&view=auto
==============================================================================
--- labs/hupa/src/main/java/org/apache/hupa/client/model/ModelReturnData.java 
(added)
+++ labs/hupa/src/main/java/org/apache/hupa/client/model/ModelReturnData.java 
Mon Jun 29 12:28:39 2009
@@ -0,0 +1,28 @@
+package org.apache.hupa.client.model;
+
+
+public class ModelReturnData<E> {
+
+       private Throwable error = null;
+       private E obj;
+       
+       public ModelReturnData(Throwable error) {
+               this.error = error;
+       }
+       
+       public ModelReturnData(E obj) {
+               this.obj = obj;
+       }
+       
+       public boolean hasError() {
+               return error != null; 
+       }
+       
+       public Throwable getThrowable() {
+               return error;
+       }
+       
+       public E getObject() {
+               return obj;
+       }
+}

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=789306&r1=789305&r2=789306&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 Mon Jun 
29 12:28:39 2009
@@ -8,6 +8,7 @@
 import org.apache.hupa.client.model.LoginModel;
 import org.apache.hupa.client.model.LoginModelData;
 import org.apache.hupa.client.model.LogoutModel;
+import org.apache.hupa.client.model.ModelReturnData;
 import org.cobogw.gwt.user.client.ui.Button;
 import org.cobogw.gwt.user.client.ui.ButtonBar;
 
@@ -28,7 +29,7 @@
 import com.googlecode.gwtmvc.client.ModelForView;
 import com.googlecode.gwtmvc.client.View;
 
-public class LoginView extends View<IMAPUser, VerticalPanel> implements
+public class LoginView extends View<ModelReturnData<IMAPUser>, VerticalPanel> 
implements
                ClickHandler, KeyUpHandler {
 
        public LoginView(HupaController controller, LoginModel 
sModel,LogoutModel lModel) {
@@ -96,13 +97,13 @@
        }
 
        @Override
-       public void onModelChange(ModelForView<IMAPUser> model) {
-               if (model.getValue() == null) {
+       public void onModelChange(ModelForView<ModelReturnData<IMAPUser>> 
model) {
+               if (model.getValue() == null || model.getValue().hasError()) {
                        error();
                } else {
                    if (model instanceof LoginModel) {
                        success();
-                       controller.call(new Event<FolderModelData, 
HupaAction>(HupaAction.LOGIN_SUCCESSFULL,new 
FolderModelData(model.getValue())));
+                       controller.call(new Event<FolderModelData, 
HupaAction>(HupaAction.LOGIN_SUCCESSFULL,new 
FolderModelData(model.getValue().getObject())));
                        } else {
                                clear();
                        }

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=789306&r1=789305&r2=789306&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 Mon Jun 
29 12:28:39 2009
@@ -43,6 +43,7 @@
 import org.apache.hupa.client.model.MessageModel;
 import org.apache.hupa.client.model.MessageModelData;
 import org.apache.hupa.client.model.LoginModel;
+import org.apache.hupa.client.model.ModelReturnData;
 import org.apache.hupa.client.widgets.IMAPMessageWidget;
 import org.cobogw.gwt.user.client.ui.Button;
 import org.cobogw.gwt.user.client.ui.ButtonBar;
@@ -63,14 +64,13 @@
 import com.google.gwt.user.client.ui.Tree;
 import com.google.gwt.user.client.ui.TreeItem;
 import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.user.client.ui.HTMLTable.Cell;
 import com.googlecode.gwtmvc.client.Event;
 import com.googlecode.gwtmvc.client.Maskable;
 import com.googlecode.gwtmvc.client.ModelForView;
 import com.googlecode.gwtmvc.client.View;
 
-public class MainView extends View {
+public class MainView extends View<ModelReturnData,DockPanel> {
  
        private IMAPTreeImages tImages = GWT.create(IMAPTreeImages.class);
        private Tree folderTree = new Tree(tImages, true);
@@ -324,7 +324,7 @@
        }
 
        @Override
-       public Widget createWidget() {
+       public DockPanel createWidget() {
 
                dockPanel.setSpacing(10);
                dockPanel.setWidth("100%");
@@ -343,45 +343,46 @@
                return dockPanel;
        }
 
-       @Override
        @SuppressWarnings("unchecked")
        public void onModelChange(ModelForView model) {
-               
-               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();
-                   
-                       List<TreeItem> tList = 
createTreeNodes((List<IMAPFolder>) model
-                                       .getValue());
-                       for (int i = 0; i < tList.size(); i++) {
-                               folderTree.addItem(tList.get(i));
+
+               ModelReturnData data = (ModelReturnData) model.getValue();
+
+               if (data.hasError() == false) {
+                       if (model instanceof LoginModel) {
+                               user = (IMAPUser) data.getObject();
+                               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();
+
+                               List<TreeItem> tList = 
createTreeNodes((List<IMAPFolder>) data.getObject());
+                               for (int i = 0; i < tList.size(); i++) {
+                                       folderTree.addItem(tList.get(i));
+                               }
+                       } else if (model instanceof MessageListModel) {
+
+                               loadMails((ResultList<IMAPMessage>) 
data.getObject());
+                       } else if (model instanceof MessageModel) {
+
+                               msgWidget.setIMAPMessage((IMAPMessage) 
data.getObject());
+                               center.clear();
+                               center.add(msgWidget);
                        }
-               } else if (model instanceof MessageListModel) {
-                   
-                       loadMails((ResultList<IMAPMessage>)model.getValue());
-               } else if (model instanceof MessageModel) {
-                       
-                       msgWidget.setIMAPMessage((IMAPMessage)model.getValue());
-                       center.clear();
-                       center.add(msgWidget);
                }
-
        }
        
        private String truncate(String rawString) {



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

Reply via email to