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]