r1277 - in trunk: script src/main/java/cc/kune/client src/main/java/cc/kune/core/client src/main/java/cc/kune/core/client/errors src/main/java/cc/kune/core/client/sitebar src/main/java/cc/kune/core/client/sn/actions src/main/java/cc/kune/core/client/state src/main/java/cc/kune/core/public src/main/java/cc/kune/wave/client src/test/java/cc/kune/core/client/state
Author: vjrj_ Date: 2011-03-15 15:25:36 +0100 (Tue, 15 Mar 2011) New Revision: 1277 Added: trunk/src/main/java/cc/kune/core/client/errors/InvalidKuneTokenException.java trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java trunk/src/main/java/cc/kune/wave/client/SitebarWaveStatus.java trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java trunk/src/main/java/cc/kune/wave/client/WaveParts.java Modified: trunk/script/generateAbout.sh trunk/src/main/java/cc/kune/client/KuneGinjector.java trunk/src/main/java/cc/kune/core/client/CoreGinModule.java trunk/src/main/java/cc/kune/core/client/CoreParts.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java trunk/src/main/java/cc/kune/core/public/ws.css trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java trunk/src/main/java/cc/kune/wave/client/WaveClientSimpleAuthenticator.java trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java Log: NEW - # 35: Spaces selector integration with login/logout and history http://kune.ourproject.org/issues/ticket/35 Modified: trunk/script/generateAbout.sh =================================================================== --- trunk/script/generateAbout.sh 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/script/generateAbout.sh 2011-03-15 14:25:36 UTC (rev 1277) @@ -17,5 +17,5 @@ #echo "--------------------------------------------------------------------------------" >> $tmp echo Version $VER '('$SVNVER')' >> $tmp -txt2html --prepend_file bin/header.html -h 80 --preserve_indent -8 --style_url frame-def.css --infile $tmp --infile CREDITS --infile COPYRIGHT --outfile src/main/java/cc/kune/core/public/about.html +txt2html --prepend_file script/header.html -h 80 --preserve_indent -8 --style_url frame-def.css --infile $tmp --infile CREDITS --infile COPYRIGHT --outfile src/main/java/cc/kune/core/public/about.html rm $tmp Modified: trunk/src/main/java/cc/kune/client/KuneGinjector.java =================================================================== --- trunk/src/main/java/cc/kune/client/KuneGinjector.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/client/KuneGinjector.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -50,6 +50,8 @@ import cc.kune.core.shared.i18n.I18nTranslationService; import cc.kune.pspace.client.PSpaceGinModule; import cc.kune.pspace.client.PSpacePresenter; +import cc.kune.wave.client.WaveGinModule; +import cc.kune.wave.client.WaveParts; import com.google.gwt.event.shared.EventBus; import com.google.gwt.inject.client.AsyncProvider; @@ -58,7 +60,7 @@ import com.google.inject.Provider; import com.gwtplatform.mvp.client.proxy.ProxyFailureHandler; -@GinModules({ CoreGinModule.class, ChatGinModule.class, PSpaceGinModule.class }) +@GinModules({ CoreGinModule.class, ChatGinModule.class, WaveGinModule.class, PSpaceGinModule.class }) public interface KuneGinjector extends Ginjector { /* @@ -125,4 +127,6 @@ AsyncProvider<UserConfirmPresenter> getUserConfirmPresenter(); AsyncProvider<UserNotifierPresenter> getUserNotifierPresenter(); + + WaveParts getWaveParts(); } Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -101,7 +101,6 @@ import cc.kune.gspace.client.WsArmorImpl; import cc.kune.msgs.client.UserMessagesPanel; import cc.kune.msgs.client.UserMessagesPresenter; -import cc.kune.wave.client.WaveClientManager; import com.google.gwt.event.shared.EventBus; import com.google.inject.Singleton; @@ -195,7 +194,6 @@ bind(CookiesManager.class).to(CookiesManagerImpl.class).in(Singleton.class); bind(BeforeSignOut.class).in(Singleton.class); bind(SiteTokenListeners.class).asEagerSingleton(); - bind(WaveClientManager.class).in(Singleton.class); bind(CoreParts.class).asEagerSingleton(); // SN Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -9,7 +9,6 @@ import cc.kune.core.client.sn.actions.registry.UserSNConfActions; import cc.kune.core.client.state.Session; import cc.kune.core.client.ui.footer.license.EntityLicensePresenter; -import cc.kune.wave.client.WaveClientManager; import com.google.inject.Inject; import com.google.inject.Provider; @@ -21,7 +20,7 @@ final Provider<UserSNPresenter> buddiesAndParticipationPresenter, final Provider<GroupSNConfActions> groupMembersConfActions, final Provider<UserSNConfActions> userSNConfActions, final Provider<SiteUserOptionsPresenter> userOptions, - final Provider<EntityLicensePresenter> licenseFooter, final Provider<WaveClientManager> waveClientManager) { + final Provider<EntityLicensePresenter> licenseFooter) { session.onInitDataReceived(true, new AppStartHandler() { @Override public void onAppStart(final AppStartEvent event) { @@ -31,7 +30,6 @@ buddiesAndParticipationPresenter.get(); userOptions.get(); licenseFooter.get(); - waveClientManager.get(); } }); } Added: trunk/src/main/java/cc/kune/core/client/errors/InvalidKuneTokenException.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/InvalidKuneTokenException.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/errors/InvalidKuneTokenException.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -0,0 +1,33 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.errors; + +public class InvalidKuneTokenException extends DefaultException { + + private static final long serialVersionUID = -4511846108911183386L; + + public InvalidKuneTokenException(String message) { + super(message); + } + + public InvalidKuneTokenException() { + super(); + } +} Property changes on: trunk/src/main/java/cc/kune/core/client/errors/InvalidKuneTokenException.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -40,6 +40,7 @@ import cc.kune.core.client.state.UserSignOutEvent; import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.i18n.I18nTranslationService; +import cc.kune.wave.client.WaveClientSimpleAuthenticator; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; @@ -59,17 +60,19 @@ private final EventBus eventBus; private final Session session; private final Provider<UserServiceAsync> userService; + private final WaveClientSimpleAuthenticator waveAuth; @Inject public SitebarSignOutAction(final EventBus eventBus, final I18nTranslationService i18n, final BeforeSignOut beforeSignOut, final Provider<UserServiceAsync> userService, final Session session, - final CookiesManager cookiesManager) { + final CookiesManager cookiesManager, final WaveClientSimpleAuthenticator waveAuth) { super(); this.eventBus = eventBus; this.userService = userService; this.session = session; this.cookiesManager = cookiesManager; this.beforeSignOut = beforeSignOut; + this.waveAuth = waveAuth; putValue(Action.NAME, i18n.t("Sign out")); } @@ -77,25 +80,28 @@ public void actionPerformed(final ActionEvent event) { eventBus.fireEvent(new ProgressShowEvent()); if (beforeSignOut.checkBeforeAction()) { - userService.get().logout(session.getUserHash(), new AsyncCallback<Void>() { + waveAuth.doLogout(new AsyncCallback<Void>() { @Override public void onFailure(final Throwable caught) { - eventBus.fireEvent(new ProgressHideEvent()); - if (caught instanceof SessionExpiredException) { - clientUIsignOut(); - } else if (caught instanceof UserMustBeLoggedException) { - clientUIsignOut(); - } else { - throw new UIException("Other kind of exception in doLogout", caught); - } + onLogoutFail(caught); } @Override - public void onSuccess(final Void arg0) { - eventBus.fireEvent(new ProgressHideEvent()); - clientUIsignOut(); + public void onSuccess(final Void result) { + userService.get().logout(session.getUserHash(), new AsyncCallback<Void>() { + @Override + public void onFailure(final Throwable caught) { + onLogoutFail(caught); + } + + @Override + public void onSuccess(final Void arg0) { + eventBus.fireEvent(new ProgressHideEvent()); + clientUIsignOut(); + } + + }); } - }); } else { eventBus.fireEvent(new ProgressHideEvent()); @@ -108,6 +114,17 @@ session.setCurrentUserInfo(null); } + private void onLogoutFail(final Throwable caught) { + eventBus.fireEvent(new ProgressHideEvent()); + if (caught instanceof SessionExpiredException) { + clientUIsignOut(); + } else if (caught instanceof UserMustBeLoggedException) { + clientUIsignOut(); + } else { + throw new UIException("Other kind of exception in doLogout", caught); + } + } + } public static final String SITE_SIGN_OUT = "k-ssolp-lb"; Added: trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -0,0 +1,45 @@ +package cc.kune.core.client.sn.actions; + +import cc.kune.common.client.actions.AbstractExtendedAction; +import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.UserSignInEvent; +import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.state.UserSignOutEvent; +import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; + +import com.google.inject.Inject; + +public abstract class SessionAction extends AbstractExtendedAction { + protected final Session session; + + @Inject + public SessionAction(final Session session, final boolean authNeed) { + this.session = session; + session.onUserSignIn(true, new UserSignInHandler() { + @Override + public void onUserSignIn(UserSignInEvent event) { + refreshStatus(authNeed, true); + } + }); + session.onUserSignOut(true, new UserSignOutHandler() { + @Override + public void onUserSignOut(UserSignOutEvent event) { + refreshStatus(authNeed, false); + } + }); + } + + public void refreshStatus(final boolean authNeed, final boolean isLogged) { + boolean newVisibility = false; + boolean newEnabled = false; + if (authNeed && !isLogged) { + newVisibility = newEnabled = false; + } else { + // Auth ok + newVisibility = newEnabled = true; + } + setEnabled(newEnabled); + putValue(GuiActionDescrip.VISIBLE, newVisibility); + } +} Property changes on: trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -22,6 +22,8 @@ import java.util.HashMap; +import org.waveprotocol.box.webclient.client.HistorySupport; + import cc.kune.common.client.actions.BeforeActionCollection; import cc.kune.common.client.actions.BeforeActionListener; import cc.kune.common.client.errors.NotImplementedException; @@ -57,13 +59,16 @@ private final Session session; private final HashMap<String, HistoryTokenCallback> siteTokens; + // private final SpaceSelectorPresenter spaceSelector; + @Inject - public StateManagerDefault(final ContentCache contentProvider, final Session session, - final HistoryWrapper history, final EventBus eventBus) { + public StateManagerDefault(final ContentCache contentProvider, final Session session, final HistoryWrapper history, + final EventBus eventBus) { this.eventBus = eventBus; this.contentProvider = contentProvider; this.session = session; this.history = history; + // this.spaceSelector = spaceSelector; this.previousToken = null; this.resumedToken = null; siteTokens = new HashMap<String, HistoryTokenCallback>(); @@ -166,7 +171,17 @@ Log.debug("StateManager: on history changed (" + historyToken + ")"); if (tokenListener == null) { // Ok, normal token change - onHistoryChanged(new StateToken(historyToken)); + // Is a Wave token? + if (historyToken == null || HistorySupport.waveRefFromHistoryToken(historyToken) == null) { + // Non wave token + onHistoryChanged(new StateToken(historyToken)); + } else { + // Wave token + // spaceSelector.onUserSpaceSelect(); + if (session.isNotLogged()) { + // use r=? argument? + } + } } else { // token is one of #newgroup #signin #translate ... if (previousToken == null) { Modified: trunk/src/main/java/cc/kune/core/public/ws.css =================================================================== --- trunk/src/main/java/cc/kune/core/public/ws.css 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-03-15 14:25:36 UTC (rev 1277) @@ -388,6 +388,24 @@ padding: 0 3px 0 0 !important; } +.k-sitebar-wave-status { + font: 13px 'Ubuntu', arial; + /* font-weight: bold; */ + color: #B3B3B3; + white-space: nowrap; + background: none; + border: 0px; + padding: 1px 7px 0 0 !important; +} + +.k-sitebar-wave-status, .k-sitebar-wave-status-online { + color: red; +} + +.k-sitebar-wave-status, .k-sitebar-wave-status-offline { + color: green; +} + .k-sitebar button:hover { border: 0px; background: none; Added: trunk/src/main/java/cc/kune/wave/client/SitebarWaveStatus.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/SitebarWaveStatus.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/SitebarWaveStatus.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -0,0 +1,59 @@ +package cc.kune.wave.client; + +import org.waveprotocol.box.webclient.client.ClientEvents; +import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent; +import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler; + +import cc.kune.common.client.actions.AbstractAction; +import cc.kune.common.client.actions.Action; +import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor; +import cc.kune.common.client.noti.NotifyUser; +import cc.kune.core.client.sitebar.SitebarActionsPresenter; +import cc.kune.core.client.sn.actions.SessionAction; +import cc.kune.core.client.state.Session; +import cc.kune.core.shared.i18n.I18nTranslationService; + +import com.google.inject.Inject; + +public class SitebarWaveStatus { + + public static class SitebarWaveStatusAction extends SessionAction { + + @Inject + public SitebarWaveStatusAction(final Session session, final I18nTranslationService i18n) { + super(session, true); + ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() { + @Override + public void onNetworkStatus(final NetworkStatusEvent event) { + switch (event.getStatus()) { + case CONNECTED: + case RECONNECTED: + putValue(Action.NAME, i18n.t("Online")); + putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-online"); + break; + case DISCONNECTED: + putValue(Action.NAME, i18n.t("Offline")); + putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-offline"); + break; + case RECONNECTING: + NotifyUser.showProgress(i18n.t("Connecting")); + break; + } + } + }); + } + + @Override + public void actionPerformed(final ActionEvent event) { + // Do nothing + } + } + + @Inject + public SitebarWaveStatus(final SitebarActionsPresenter sitebar, final SitebarWaveStatusAction action) { + final IconLabelDescriptor status = new IconLabelDescriptor(action); + status.setPosition(0); + sitebar.getRightToolbar().addAction(status); + } +} Property changes on: trunk/src/main/java/cc/kune/wave/client/SitebarWaveStatus.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -1,10 +1,5 @@ package cc.kune.wave.client; -import org.waveprotocol.box.webclient.client.ClientEvents; -import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent; -import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler; - -import cc.kune.common.client.noti.NotifyUser; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; @@ -22,6 +17,8 @@ import com.google.inject.Inject; public class WaveClientManager { + private WebClient webClient; + @Inject public WaveClientManager(final Session session, final StateManager stateManager, final UserServiceAsync userService, final WsArmor wsArmor) { @@ -29,7 +26,6 @@ @Override public void onUserSignIn(final UserSignInEvent event) { userService.getWaveClientParameters(session.getUserHash(), new AsyncCallbackSimple<WaveClientParams>() { - private WebClient webClient; @Override public void onSuccess(final WaveClientParams result) { @@ -39,10 +35,10 @@ setClientFlags(JsonUtils.safeEval(result.getClientFlags())); // Only for testing: final ForIsWidget userSpace = wsArmor.getUserSpace(); - if (userSpace.getWidgetCount() > 0) { - userSpace.remove(0); - } - if (webClient == null) { + if (webClient == null) { + if (userSpace.getWidgetCount() > 0) { + userSpace.remove(0); + } webClient = new WebClient(); userSpace.add(webClient); } @@ -53,36 +49,26 @@ session.onUserSignOut(true, new UserSignOutHandler() { @Override public void onUserSignOut(final UserSignOutEvent event) { - } - }); - ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() { - @Override - public void onNetworkStatus(NetworkStatusEvent event) { - switch (event.getStatus()) { - case CONNECTED: - case RECONNECTED: - NotifyUser.info("Online"); - break; - case DISCONNECTED: - NotifyUser.info("Offline"); - break; - case RECONNECTING: - NotifyUser.showProgress("Connecting"); - break; + // While we don't find a way to logout in WebClient + // Garbage collector + // https://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/0e48... + if (webClient != null) { + webClient.removeFromParent(); + webClient = null; } } - }); + }); } private native void setClientFlags(JavaScriptObject object) /*-{ - $wnd.__client_flags = object; + $wnd.__client_flags = object; }-*/; private native void setSessionJSON(JavaScriptObject object) /*-{ - $wnd.__session = object; + $wnd.__session = object; }-*/; private native void setUseSocketIO(boolean use) /*-{ - $wnd.__useSocketIO = use; + $wnd.__useSocketIO = use; }-*/; } Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientSimpleAuthenticator.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveClientSimpleAuthenticator.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/main/java/cc/kune/wave/client/WaveClientSimpleAuthenticator.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -1,5 +1,6 @@ package cc.kune.wave.client; +import cc.kune.common.client.log.Log; import cc.kune.common.client.noti.NotifyUser; import cc.kune.gspace.client.WsArmor; @@ -46,10 +47,33 @@ } }); } catch (final RequestException e) { - NotifyUser.error(e.getStackTrace().toString(), true); + Log.error(e.getStackTrace().toString()); } } + public void doLogout(final AsyncCallback<Void> callback) { + // Original: <a href=\"/auth/signout?r=/\">" + final RequestBuilder request = new RequestBuilder(RequestBuilder.POST, "/auth/signout"); + try { + request.setHeader("Content-Type", "application/x-www-form-urlencoded"); + final StringBuffer params = new StringBuffer(); + request.sendRequest(params.toString(), new RequestCallback() { + @Override + public void onError(final Request request, final Throwable exception) { + NotifyUser.error(exception.getStackTrace().toString(), true); + callback.onFailure(exception); + } + + @Override + public void onResponseReceived(final Request request, final Response response) { + callback.onSuccess(null); + } + }); + } catch (final RequestException e) { + Log.error(e.getStackTrace().toString()); + } + } + public String getCookieTokenValue() { return Cookies.getCookie("JSESSIONID"); } Added: trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -0,0 +1,37 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.client; + +import com.google.inject.Singleton; +import com.gwtplatform.mvp.client.gin.AbstractPresenterModule; + +public class WaveGinModule extends AbstractPresenterModule { + /* + * (non-Javadoc) + * + * @see com.google.gwt.inject.client.AbstractGinModule#configure() + */ + @Override + protected void configure() { + bind(WaveClientManager.class).in(Singleton.class); + bind(SitebarWaveStatus.class).in(Singleton.class); + bind(WaveParts.class).asEagerSingleton(); + } +} Property changes on: trunk/src/main/java/cc/kune/wave/client/WaveGinModule.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/src/main/java/cc/kune/wave/client/WaveParts.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveParts.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/WaveParts.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -0,0 +1,23 @@ +package cc.kune.wave.client; + +import cc.kune.core.client.init.AppStartEvent; +import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.state.Session; + +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class WaveParts { + + @Inject + public WaveParts(final Session session, final Provider<WaveClientManager> waveClientManager, + final Provider<SitebarWaveStatus> waveStatus) { + session.onInitDataReceived(true, new AppStartHandler() { + @Override + public void onAppStart(final AppStartEvent event) { + waveClientManager.get(); + waveStatus.get(); + } + }); + } +} Property changes on: trunk/src/main/java/cc/kune/wave/client/WaveParts.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-03-15 00:32:17 UTC (rev 1276) +++ trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-03-15 14:25:36 UTC (rev 1277) @@ -24,6 +24,7 @@ import org.mockito.Mockito; import cc.kune.common.client.actions.BeforeActionListener; +import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter; import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler; @@ -42,6 +43,7 @@ private GroupChangedHandler groupChangeHandler; private HistoryWrapper history; private Session session; + private SpaceSelectorPresenter spaceSelector; private StateAbstractDTO state; private StateChangedHandler stateChangeHandler; private StateManagerDefault stateManager; @@ -52,6 +54,7 @@ contentProvider = Mockito.mock(ContentCache.class); session = Mockito.mock(Session.class); history = Mockito.mock(HistoryWrapper.class); + spaceSelector = Mockito.mock(SpaceSelectorPresenter.class); eventBus = new EventBusTester(); stateManager = new StateManagerDefault(contentProvider, session, history, eventBus); Mockito.when(session.getUserHash()).thenReturn(HASH); @@ -159,6 +162,10 @@ (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); } + public void getWaveToken() { + stateManager.onHistoryChanged("example.com/w+abcd/~/conv+root/b+45kg"); + } + @SuppressWarnings("unchecked") @Test public void normalStartLoggedUser() {
participants (1)
-
Vicente J. Ruiz Jurado