Author: manolo
Date: Wed Feb 17 19:50:49 2010
New Revision: 911156

URL: http://svn.apache.org/viewvc?rev=911156&view=rev
Log:
Decouple contacts from SendMessagePresenter and IMAPMessageListPresenter in 
favor of using the eventbus.

Added:
    james/hupa/trunk/client/.settings/
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEvent.java
    
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEventHandler.java
    james/hupa/trunk/widgets/.settings/
    james/hupa/trunk/widgets/.settings/org.eclipse.jdt.core.prefs
Modified:
    james/hupa/trunk/   (props changed)
    james/hupa/trunk/client/   (props changed)
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsPresenter.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsView.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
    
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
    
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/HupaMvpTestCase.java
    
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/mvp/ContactsPresenterTest.java
    james/hupa/trunk/client/war/WEB-INF/   (props changed)
    james/hupa/trunk/server/   (props changed)
    james/hupa/trunk/shared/   (props changed)

Propchange: james/hupa/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Feb 17 19:50:49 2010
@@ -1 +1,3 @@
 target
+tomcat
+www-test

Propchange: james/hupa/trunk/client/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Feb 17 19:50:49 2010
@@ -1 +1,3 @@
 target
+.gwt-tmp
+tomcat

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsPresenter.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsPresenter.java?rev=911156&r1=911155&r2=911156&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsPresenter.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsPresenter.java
 Wed Feb 17 19:50:49 2010
@@ -26,42 +26,68 @@
 import net.customware.gwt.presenter.client.widget.WidgetPresenter;
 
 import org.apache.hupa.client.HupaCallback;
+import org.apache.hupa.shared.events.ContactsUpdatedEvent;
+import org.apache.hupa.shared.events.ContactsUpdatedEventHandler;
+import org.apache.hupa.shared.events.MessagesReceivedEvent;
+import org.apache.hupa.shared.events.MessagesReceivedEventHandler;
+import org.apache.hupa.shared.events.SentMessageEvent;
+import org.apache.hupa.shared.events.SentMessageEventHandler;
 import org.apache.hupa.shared.rpc.Contacts;
 import org.apache.hupa.shared.rpc.ContactsResult;
 import org.apache.hupa.shared.rpc.ContactsResult.Contact;
 
 public class ContactsPresenter extends 
WidgetPresenter<ContactsPresenter.Display>{
 
+    public interface Display extends NameAwareWidgetDisplay, WidgetDisplay {
+        public void setContacts(Contact[] contacts);
+        public Contact[] getContacts();
+    }
+
     DispatchAsync dispatcher;
     protected Contact[] contacts;
+    protected EventBus eventBus;
     
     @Inject
     public ContactsPresenter(Display display, EventBus eventBus, DispatchAsync 
dispatcher) {
         super(display, eventBus);
         this.dispatcher = dispatcher;
-    }
-
-    public interface Display extends NameAwareWidgetDisplay, WidgetDisplay {
-        public void setContacts(Contact[] contacts);
-        public Contact[] getContacts();
+        this.eventBus = eventBus;
     }
     
     @Override
     protected void onBind() {
+        registerHandler(eventBus.addHandler(ContactsUpdatedEvent.TYPE, new 
ContactsUpdatedEventHandler() {
+            public void onContactsUpdated(ContactsUpdatedEvent event) {
+                contacts = event.getContacts();
+                display.setContacts(contacts);
+            }
+        }));
+        registerHandler(eventBus.addHandler(MessagesReceivedEvent.TYPE, new 
MessagesReceivedEventHandler() {
+            public void onMessagesReceived(MessagesReceivedEvent event) {
+                updateContactsFromServer();
+            }
+        }));
+        registerHandler(eventBus.addHandler(SentMessageEvent.TYPE, new 
SentMessageEventHandler() {
+            public void onSentMessageEvent(SentMessageEvent ev) {
+                updateContactsFromServer();
+            }
+        }));
     }
 
     @Override
     protected void onRevealDisplay() {
-        dispatcher.execute(new Contacts(),  new 
HupaCallback<ContactsResult>(dispatcher, eventBus) {
-            public void callback(ContactsResult result) {
-                contacts = result.getContacts();
-                display.setContacts(contacts);
-            }
-        }); 
     }
 
     @Override
     protected void onUnbind() {
     }
 
+    protected void updateContactsFromServer() {
+        dispatcher.execute(new Contacts(),  new 
HupaCallback<ContactsResult>(dispatcher, eventBus) {
+            public void callback(ContactsResult result) {
+                eventBus.fireEvent(new 
ContactsUpdatedEvent(result.getContacts()));
+            }
+        }); 
+    }
+    
 }

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsView.java?rev=911156&r1=911155&r2=911156&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/ContactsView.java
 Wed Feb 17 19:50:49 2010
@@ -64,6 +64,9 @@
         return this;
     }
 
+    /* (non-Javadoc)
+     * @see 
org.apache.hupa.client.mvp.ContactsPresenter.Display#setContacts(org.apache.hupa.shared.rpc.ContactsResult.Contact[])
+     */
     public void setContacts(Contact[] contacts) {
         ctable.clearAll();
         for(int i=0; i<contacts.length; i++) {
@@ -72,6 +75,9 @@
         }
     }
     
+    /* (non-Javadoc)
+     * @see org.apache.hupa.client.mvp.ContactsPresenter.Display#getContacts()
+     */
     public Contact[] getContacts() {
         ArrayList<Contact> contacts = new ArrayList<Contact>();
         for (int i=0; i < ctable.getRowCount(); i++) {

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java?rev=911156&r1=911155&r2=911156&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendPresenter.java
 Wed Feb 17 19:50:49 2010
@@ -55,8 +55,6 @@
 import org.apache.hupa.shared.events.LoadMessagesEvent;
 import org.apache.hupa.shared.events.LoadMessagesEventHandler;
 import org.apache.hupa.shared.events.SentMessageEvent;
-import org.apache.hupa.shared.rpc.Contacts;
-import org.apache.hupa.shared.rpc.ContactsResult;
 import org.apache.hupa.shared.rpc.ForwardMessage;
 import org.apache.hupa.shared.rpc.GenericResult;
 import org.apache.hupa.shared.rpc.ReplyMessage;
@@ -193,29 +191,26 @@
     
     protected ClickHandler sendClickHandler = new ClickHandler() {
         public void onClick(ClickEvent event) {
-            
-            if (validate() == false) {
-                return;
-            }
-
-            message = new SMTPMessage();
-            message.setFrom(display.getFromText().getText());
-            message.setSubject(display.getSubjectText().getText());
-            message.setText(display.getMessageHTML().getHTML());
-            message.setMessageAttachments(attachments);
-            message.setTo(emailTextToArray(display.getToText().getText()));
-            message.setCc(emailTextToArray(display.getCcText().getText()));
-            message.setBcc(emailTextToArray(display.getBccText().getText()));
-
-            SendMessage command;
-            if (type == Type.NEW) {
-                command = new SendMessage(message);
-            } else if (type == Type.FORWARD) {
-                command = new ForwardMessage(message, folder, 
oldmessage.getUid());
-            } else {
-                command = new ReplyMessage(message, folder, 
oldmessage.getUid());
+            if (validate()) {
+                message = new SMTPMessage();
+                message.setFrom(display.getFromText().getText());
+                message.setSubject(display.getSubjectText().getText());
+                message.setText(display.getMessageHTML().getHTML());
+                message.setMessageAttachments(attachments);
+                message.setTo(emailTextToArray(display.getToText().getText()));
+                message.setCc(emailTextToArray(display.getCcText().getText()));
+                
message.setBcc(emailTextToArray(display.getBccText().getText()));
+
+                SendMessage command;
+                if (type == Type.NEW) {
+                    command = new SendMessage(message);
+                } else if (type == Type.FORWARD) {
+                    command = new ForwardMessage(message, folder, 
oldmessage.getUid());
+                } else {
+                    command = new ReplyMessage(message, folder, 
oldmessage.getUid());
+                }
+                dispatchMessage(dispatcher, eventBus, command);
             }
-            dispatchMessage(dispatcher, eventBus, command);
         }
     };
 
@@ -291,13 +286,6 @@
         this.folder = folder;
         this.type = type;
 
-        // Get user's contacts, so the user will be able to use suggestion 
boxes
-        dispatcher.execute(new Contacts(),  new 
HupaCallback<ContactsResult>(dispatcher, eventBus) {
-            public void callback(ContactsResult result) {
-                display.fillContactList(result.getContacts());
-            }
-        }); 
-        
         // Depending on the type, we have to automatically fill the view inputs
         display.getFromText().setText(user.getName());
         display.getMessageHTML().setHTML(wrapMessage(oldmessage, oldDetails, 
type));

Modified: 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java?rev=911156&r1=911155&r2=911156&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
 (original)
+++ 
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
 Wed Feb 17 19:50:49 2010
@@ -107,7 +107,6 @@
         
         buttonsBar.add(sendButton);
         buttonsBar.add(loading);
-        buttonsBar.add(new Label("ASDFASF"));
         buttonsBar.add(backButton);
         
         sendContainer.add(headers);

Modified: 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/HupaMvpTestCase.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/test/java/org/apache/hupa/client/HupaMvpTestCase.java?rev=911156&r1=911155&r2=911156&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/HupaMvpTestCase.java
 (original)
+++ 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/HupaMvpTestCase.java
 Wed Feb 17 19:50:49 2010
@@ -27,6 +27,8 @@
 
 import junit.framework.TestCase;
 
+import net.customware.gwt.presenter.client.EventBus;
+
 import org.apache.hupa.client.guice.GuiceMvpTestModule;
 import org.apache.hupa.server.IMAPStoreCache;
 import org.apache.hupa.server.guice.GuiceServerTestModule;
@@ -55,6 +57,7 @@
     protected IMAPStoreCache storeCache;
     protected User testUser;
     protected IMAPStore store;
+    protected EventBus eventBus;
     
     protected Module[] getModules() {
         return new Module[]{new GuiceServerTestModule(), new 
GuiceMvpTestModule()};
@@ -68,6 +71,7 @@
             session = injector.getInstance(Session.class);
             userPreferences = 
injector.getInstance(UserPreferencesStorage.class);
             storeCache = injector.getInstance(IMAPStoreCache.class);
+            eventBus = injector.getInstance(EventBus.class);
             
             SessionUtils.cleanSessionAttributes(httpSession);
             testUser = injector.getInstance(User.class);

Modified: 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/mvp/ContactsPresenterTest.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/client/src/test/java/org/apache/hupa/client/mvp/ContactsPresenterTest.java?rev=911156&r1=911155&r2=911156&view=diff
==============================================================================
--- 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/mvp/ContactsPresenterTest.java
 (original)
+++ 
james/hupa/trunk/client/src/test/java/org/apache/hupa/client/mvp/ContactsPresenterTest.java
 Wed Feb 17 19:50:49 2010
@@ -19,6 +19,7 @@
 package org.apache.hupa.client.mvp;
 
 import org.apache.hupa.client.HupaMvpTestCase;
+import org.apache.hupa.shared.events.ContactsUpdatedEvent;
 import org.apache.hupa.shared.rpc.ContactsResult.Contact;
 import org.easymock.EasyMock;
 
@@ -28,12 +29,15 @@
     ContactsPresenter.Display display = presenter.getDisplay();
     
     public void testRevealDisplayWhenListIsEmpty() throws Exception {
+        // Register an event listener
+        presenter.onBind();
         Contact[] contacts = new Contact[]{};
         
+        EasyMock.reset(display);
         display.setContacts(EasyMock.aryEq(contacts));
         EasyMock.replay(display);
-        // get the contacts list from the server
-        presenter.onRevealDisplay();
+        // send an event
+        eventBus.fireEvent(new ContactsUpdatedEvent(contacts));
         assertNotNull(presenter.contacts);
         assertEquals(0, presenter.contacts.length);
         EasyMock.verify(display);
@@ -46,16 +50,35 @@
         assertEquals("[email protected]", c.mail);
         Contact[] contacts = new Contact[]{c};
         
-        // add the contact list to the server
-        userPreferences.addContact(contacts);
+        // Register an event listener
+        presenter.onBind();
         
+        EasyMock.reset(display);
         display.setContacts(EasyMock.aryEq(contacts));
         EasyMock.replay(display);
-        // get the contacts list from the server
-        presenter.onRevealDisplay();
+        // send an event
+        eventBus.fireEvent(new ContactsUpdatedEvent(contacts));
+        assertNotNull(presenter.contacts);
         assertEquals(1, presenter.contacts.length);
         EasyMock.verify(display);
         EasyMock.reset(display);
     }
+
+    public void testUpdateContactsFromServer() throws Exception {
+        Contact c = new Contact("Somebody <[email protected]>");
+        assertEquals("Somebody", c.realname);
+        assertEquals("[email protected]", c.mail);
+        Contact[] contacts = new Contact[]{c};
+        
+        assertNull(presenter.contacts);
+        // Register the event listener
+        presenter.onBind();
+        // Put contacts in server side
+        userPreferences.addContact(contacts);
+        // Call to the server
+        presenter.updateContactsFromServer();
+        assertNotNull(presenter.contacts);
+        assertEquals(1, presenter.contacts.length);
+    }
 }
 

Propchange: james/hupa/trunk/client/war/WEB-INF/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Feb 17 19:50:49 2010
@@ -1 +1,2 @@
 lib
+classes

Propchange: james/hupa/trunk/server/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Feb 17 19:50:49 2010
@@ -1,2 +1,3 @@
 target
 war
+.settings

Propchange: james/hupa/trunk/shared/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Wed Feb 17 19:50:49 2010
@@ -1 +1,2 @@
 target
+.settings

Added: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEvent.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEvent.java?rev=911156&view=auto
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEvent.java
 (added)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEvent.java
 Wed Feb 17 19:50:49 2010
@@ -0,0 +1,50 @@
+/****************************************************************
+ * 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.events;
+
+import com.google.gwt.event.shared.GwtEvent;
+
+import org.apache.hupa.shared.rpc.ContactsResult.Contact;
+
+public class ContactsUpdatedEvent extends 
GwtEvent<ContactsUpdatedEventHandler> {
+    
+    public final static Type<ContactsUpdatedEventHandler> TYPE = new 
Type<ContactsUpdatedEventHandler>();
+    
+    Contact[] contacts;
+    
+    public Contact[] getContacts() {
+        return contacts;
+    }
+
+    public ContactsUpdatedEvent(Contact[] contacts) {
+        this.contacts = contacts;
+    }
+    
+    @Override
+    protected void dispatch(ContactsUpdatedEventHandler handler) {
+        handler.onContactsUpdated(this);
+    }
+
+    @Override
+    public 
com.google.gwt.event.shared.GwtEvent.Type<ContactsUpdatedEventHandler> 
getAssociatedType() {
+        return TYPE;
+    }
+    
+}

Added: 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEventHandler.java
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEventHandler.java?rev=911156&view=auto
==============================================================================
--- 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEventHandler.java
 (added)
+++ 
james/hupa/trunk/shared/src/main/java/org/apache/hupa/shared/events/ContactsUpdatedEventHandler.java
 Wed Feb 17 19:50:49 2010
@@ -0,0 +1,28 @@
+/****************************************************************
+ * 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.events;
+
+import com.google.gwt.event.shared.EventHandler;
+
+public interface ContactsUpdatedEventHandler extends EventHandler{
+
+    public void onContactsUpdated(ContactsUpdatedEvent event);
+    
+}

Added: james/hupa/trunk/widgets/.settings/org.eclipse.jdt.core.prefs
URL: 
http://svn.apache.org/viewvc/james/hupa/trunk/widgets/.settings/org.eclipse.jdt.core.prefs?rev=911156&view=auto
==============================================================================
--- james/hupa/trunk/widgets/.settings/org.eclipse.jdt.core.prefs (added)
+++ james/hupa/trunk/widgets/.settings/org.eclipse.jdt.core.prefs Wed Feb 17 
19:50:49 2010
@@ -0,0 +1,5 @@
+#Sun Feb 14 17:36:42 CET 2010
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5



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

Reply via email to