[kune-commits] r1530 - in trunk/src/main/java/cc/kune: core/server core/server/auth wave/client

Vicente J. Ruiz Jurado vjrj_ at ourproject.org
Fri Sep 23 23:10:32 CEST 2011


Author: vjrj_
Date: 2011-09-23 23:10:32 +0200 (Fri, 23 Sep 2011)
New Revision: 1530

Removed:
   trunk/src/main/java/cc/kune/core/server/auth/SessionService.java
   trunk/src/main/java/cc/kune/core/server/auth/SessionServiceDefault.java
Modified:
   trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
   trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
   trunk/src/main/java/cc/kune/core/server/auth/SuperAdminMethodInterceptor.java
   trunk/src/main/java/cc/kune/wave/client/KuneConversation.css
   trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java
   trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java
   trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
   trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
   trunk/src/main/java/cc/kune/wave/client/WebClient.java
Log:
CLOSED - # 105: Persist user sessions between restarts 
http://kune.ourproject.org/issues/ticket/105

Wave code updated

Some other fixes / improvements

Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -39,8 +39,6 @@
 import cc.kune.core.server.auth.AuthenticatedMethodInterceptor;
 import cc.kune.core.server.auth.Authorizated;
 import cc.kune.core.server.auth.AuthorizatedMethodInterceptor;
-import cc.kune.core.server.auth.SessionService;
-import cc.kune.core.server.auth.SessionServiceDefault;
 import cc.kune.core.server.auth.SuperAdmin;
 import cc.kune.core.server.auth.SuperAdminMethodInterceptor;
 import cc.kune.core.server.content.ContainerManager;
@@ -159,7 +157,6 @@
     bind(FinderService.class).to(FinderServiceDefault.class);
     bind(StateService.class).to(StateServiceDefault.class);
     bind(I18nTranslationService.class).to(I18nTranslationServiceDefault.class);
-    bind(SessionService.class).to(SessionServiceDefault.class);
     bind(KuneWaveService.class).to(KuneWaveServiceDefault.class);
     bind(XMLActionReader.class);
   }

Modified: trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -41,19 +41,10 @@
   Provider<HttpServletRequest> requestProvider;
 
   @Inject
-  Provider<SessionService> sessionServiceProvider;
-
-  // https://code.google.com/p/google-guice/wiki/Transactions
-  // @Inject
-  // private UnitOfWork unitOfWork;
-  @Inject
   UserSessionManager userSessionManager;
 
   @Override
   public Object invoke(final MethodInvocation invocation) throws Throwable {
-    // https://code.google.com/p/google-guice/wiki/Transactions
-    // unitOfWork.end();
-    // unitOfWork.begin();
     try {
       final Object[] arguments = invocation.getArguments();
       // Some browsers getCookie returns "null" as String instead of null
@@ -68,22 +59,18 @@
       final boolean mandatory = authAnnotation.mandatory();
 
       if (userHash == null && mandatory) {
-        // sessionService.getNewSession();
         throw new UserMustBeLoggedException();
       } else if (userSessionManager.isUserNotLoggedIn() && mandatory) {
-        // sessionService.getNewSession();
         LOG.info("Session expired (not logged in server and mandatory)");
         throw new SessionExpiredException();
       } else if (userSessionManager.isUserNotLoggedIn() && userHash == null) {
         // Ok, do nothing
       } else if (userSessionManager.isUserNotLoggedIn() && userHash != null) {
-        // sessionService.getNewSession();
         LOG.info("Session expired (not logged in server)");
         throw new SessionExpiredException();
       } else if (!userSessionManager.getHash().equals(userHash)) {
         final String serverHash = userSessionManager.getHash();
         userSessionManager.logout();
-        // sessionService.getNewSession();
         LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash
             + ")");
         throw new SessionExpiredException();
@@ -91,7 +78,6 @@
       final Object result = invocation.proceed();
       return result;
     } finally {
-      // unitOfWork.end();
     }
   }
 

Deleted: trunk/src/main/java/cc/kune/core/server/auth/SessionService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/SessionService.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/core/server/auth/SessionService.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -1,28 +0,0 @@
-/*
- *
- * 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.server.auth;
-
-public interface SessionService {
-
-    void setSessionExpiration();
-
-    void getNewSession();
-
-}

Deleted: trunk/src/main/java/cc/kune/core/server/auth/SessionServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/SessionServiceDefault.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/core/server/auth/SessionServiceDefault.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -1,69 +0,0 @@
-/*
- *
- * 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.server.auth;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-import com.google.inject.Singleton;
-
- at Singleton
- at Deprecated
-public class SessionServiceDefault implements SessionService {
-
-    private final Provider<HttpServletRequest> requestProvider;
-
-    @Inject
-    public SessionServiceDefault(final Provider<HttpServletRequest> requestProvider) {
-        this.requestProvider = requestProvider;
-    }
-
-    @Override
-    @Deprecated
-    public void getNewSession() {
-        // HttpSession session = getSession();
-        // if (session != null) {
-        // // During tests session == null
-        // session.invalidate();
-        // }
-        // getSession(true);
-        setSessionExpiration();
-    }
-
-    private HttpSession getSession() {
-        return requestProvider.get().getSession();
-    }
-
-    private HttpSession getSession(final boolean create) {
-        return requestProvider.get().getSession(create);
-    }
-
-    @Override
-    @Deprecated
-    public void setSessionExpiration() {
-        // HttpSession session = getSession();
-        // if (session != null) {
-        // session.setMaxInactiveInterval(Session.SESSION_DURATION / 1000);
-        // }
-    }
-
-}

Modified: trunk/src/main/java/cc/kune/core/server/auth/SuperAdminMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/SuperAdminMethodInterceptor.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/core/server/auth/SuperAdminMethodInterceptor.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -50,8 +50,6 @@
   Provider<KuneProperties> kuneProperties;
   @Inject
   Provider<HttpServletRequest> requestProvider;
-  @Inject
-  Provider<SessionService> sessionServiceProvider;
   private Group siteGroup;
   @Inject
   UserSessionManager userSessionManager;

Modified: trunk/src/main/java/cc/kune/wave/client/KuneConversation.css
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneConversation.css	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/wave/client/KuneConversation.css	2011-09-23 21:10:32 UTC (rev 1530)
@@ -12,11 +12,8 @@
   z-index: 0;
 }
 
- at sprite .toolbar {
-  gwt-image: 'emptyToolbar';
-}
-
-.fixedThread { /*
+.fixedThread { 
+   /*
    * Allow scrolling.  Also, keep the scrollbar there permanently, so that content does not get
    * horizontally resized by the addition and removal of a scrollbar.
    */
@@ -27,4 +24,8 @@
   /*   left: 0; */ /*   right: 0; */ /*   bottom: 0; */
   /* Layout under siblings (participant panel etc). */
   z-index: -1;
-}
\ No newline at end of file
+}
+
+ at sprite .toolbar {
+  gwt-image: 'emptyToolbar';
+}

Modified: trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/wave/client/KuneFullDomRenderer.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -1,4 +1,5 @@
 // @formatter:off
+// @formatter:off
 /**
  * Copyright 2010 Google Inc.
  *
@@ -60,40 +61,40 @@
 public final class KuneFullDomRenderer implements RenderingRules<UiBuilder> {
 
   public interface DocRefRenderer {
+    UiBuilder render(ConversationBlip blip,
+        IdentityMap<ConversationThread, UiBuilder> replies);
+
     DocRefRenderer EMPTY = new DocRefRenderer() {
       @Override
-      public UiBuilder render(final ConversationBlip blip,
-          final IdentityMap<ConversationThread, UiBuilder> replies) {
+      public UiBuilder render(ConversationBlip blip,
+          IdentityMap<ConversationThread, UiBuilder> replies) {
         return UiBuilder.Constant.of(EscapeUtils.fromSafeConstant("<div></div>"));
       }
     };
-
-    UiBuilder render(ConversationBlip blip,
-        IdentityMap<ConversationThread, UiBuilder> replies);
   }
 
   public interface ParticipantsRenderer {
+    UiBuilder render(Conversation c);
+
     ParticipantsRenderer EMPTY = new ParticipantsRenderer() {
       @Override
-      public UiBuilder render(final Conversation c) {
+      public UiBuilder render(Conversation c) {
         return UiBuilder.Constant.of(EscapeUtils.fromSafeConstant("<div></div>"));
       }
     };
-
-    UiBuilder render(Conversation c);
   }
 
   private final ShallowBlipRenderer blipPopulator;
   private final DocRefRenderer docRenderer;
+  private final ViewIdMapper viewIdMapper;
+  private final ViewFactory viewFactory;
   private final ProfileManager profileManager;
   private final ThreadReadStateMonitor readMonitor;
-  private final ViewFactory viewFactory;
-  private final ViewIdMapper viewIdMapper;
   private final boolean showParticipantsPanel;
 
-  public KuneFullDomRenderer(final ShallowBlipRenderer blipPopulator, final DocRefRenderer docRenderer,
-      final ProfileManager profileManager, final ViewIdMapper viewIdMapper, final ViewFactory viewFactory,
-      final ThreadReadStateMonitor readMonitor, boolean showParticipantsPanel) {
+  public KuneFullDomRenderer(ShallowBlipRenderer blipPopulator, DocRefRenderer docRenderer,
+      ProfileManager profileManager, ViewIdMapper viewIdMapper, ViewFactory viewFactory,
+      ThreadReadStateMonitor readMonitor, boolean showParticipantsPanel) {
     this.blipPopulator = blipPopulator;
     this.docRenderer = docRenderer;
     this.profileManager = profileManager;
@@ -103,10 +104,18 @@
     this.showParticipantsPanel = showParticipantsPanel;
   }
 
-  public UiBuilder getFirstConversation(final IdentityMap<Conversation, UiBuilder> conversations) {
+  @Override
+  public UiBuilder render(ConversationView wave,
+      IdentityMap<Conversation, UiBuilder> conversations) {
+    // return the first conversation in the view.
+    // TODO(hearnden): select the 'best' conversation.
+    return conversations.isEmpty() ? null : getFirstConversation(conversations);
+  }
+
+  public UiBuilder getFirstConversation(IdentityMap<Conversation, UiBuilder> conversations) {
     return conversations.reduce(null, new Reduce<Conversation, UiBuilder, UiBuilder>() {
       @Override
-      public UiBuilder apply(final UiBuilder soFar, final Conversation key, final UiBuilder item) {
+      public UiBuilder apply(UiBuilder soFar, Conversation key, UiBuilder item) {
         // Pick the first rendering (any will do).
         return soFar == null ? item : soFar;
       }
@@ -114,25 +123,20 @@
   }
 
   @Override
-  public UiBuilder render(final Conversation conversation, final ParticipantId participant) {
-    final Profile profile = profileManager.getProfile(participant);
-    final String id = viewIdMapper.participantOf(conversation, participant);
-    // Use ParticipantAvatarViewBuilder for avatars.
-    // Kune patch
-    // final ParticipantNameViewBuilder participantUi = ParticipantNameViewBuilder.create(id);
-    final ParticipantAvatarViewBuilder participantUi = ParticipantAvatarViewBuilder.create(id);
-    participantUi.setAvatar(profile.getImageUrl());
-    participantUi.setName(profile.getFullName());
-    return participantUi;
+  public UiBuilder render(Conversation conversation, UiBuilder participantsUi, UiBuilder threadUi) {
+    String id = viewIdMapper.conversationOf(conversation);
+    boolean isTop = !conversation.hasAnchor();
+    return isTop ? viewFactory.createTopConversationView(id, threadUi, participantsUi)
+        : viewFactory.createInlineConversationView(id, threadUi, participantsUi);
   }
 
   @Override
-  public UiBuilder render(final Conversation conversation, final StringMap<UiBuilder> participantUis) {
-    final HtmlClosureCollection participantsUi = new HtmlClosureCollection();
-    for (final ParticipantId participant : conversation.getParticipantIds()) {
+  public UiBuilder render(Conversation conversation, StringMap<UiBuilder> participantUis) {
+    HtmlClosureCollection participantsUi = new HtmlClosureCollection();
+    for (ParticipantId participant : conversation.getParticipantIds()) {
       participantsUi.add(participantUis.get(participant.getAddress()));
     }
-    final String id = viewIdMapper.participantsOf(conversation);
+    String id = viewIdMapper.participantsOf(conversation);
     // Kune patch (but not used)
     return showParticipantsPanel? ParticipantsViewBuilder.create(id, participantsUi): new UiBuilder() {
       @Override
@@ -142,112 +146,109 @@
   }
 
   @Override
-  public UiBuilder render(final Conversation conversation, final UiBuilder participantsUi, final UiBuilder threadUi) {
-    final String id = viewIdMapper.conversationOf(conversation);
-    final boolean isTop = !conversation.hasAnchor();
-    return isTop ? viewFactory.createTopConversationView(id, threadUi, participantsUi)
-        : viewFactory.createInlineConversationView(id, threadUi, participantsUi);
+  public UiBuilder render(Conversation conversation, ParticipantId participant) {
+    Profile profile = profileManager.getProfile(participant);
+    String id = viewIdMapper.participantOf(conversation, participant);
+    // Use ParticipantAvatarViewBuilder for avatars.
+    // Kune patch
+    // final ParticipantNameViewBuilder participantUi = ParticipantNameViewBuilder.create(id);
+    ParticipantAvatarViewBuilder participantUi = ParticipantAvatarViewBuilder.create(id);
+    participantUi.setAvatar(profile.getImageUrl());
+    participantUi.setName(profile.getFullName());
+    return participantUi;
   }
 
-  /**
-   */
   @Override
-  public UiBuilder render(
-      final ConversationBlip blip, final IdentityMap<ConversationThread, UiBuilder> replies) {
-    return docRenderer.render(blip, replies);
+  public UiBuilder render(final ConversationThread thread,
+      final IdentityMap<ConversationBlip, UiBuilder> blipUis) {
+    HtmlClosure blipsUi = new HtmlClosure() {
+      @Override
+      public void outputHtml(SafeHtmlBuilder out) {
+        for (ConversationBlip blip : thread.getBlips()) {
+          UiBuilder blipUi = blipUis.get(blip);
+          // Not all blips are rendered.
+          if (blipUi != null) {
+            blipUi.outputHtml(out);
+          }
+        }
+      }
+    };
+    String threadId = viewIdMapper.threadOf(thread);
+    String replyIndicatorId = viewIdMapper.replyIndicatorOf(thread);
+    UiBuilder builder = null;
+    if (thread.getConversation().getRootThread() == thread) {
+      ReplyBoxViewBuilder replyBoxBuilder =
+          ReplyBoxViewBuilder.create(replyIndicatorId);
+      builder = RootThreadViewBuilder.create(threadId, blipsUi, replyBoxBuilder);
+    } else {
+      ContinuationIndicatorViewBuilder indicatorBuilder = ContinuationIndicatorViewBuilder.create(
+          replyIndicatorId);
+      InlineThreadViewBuilder inlineBuilder =
+          InlineThreadViewBuilder.create(threadId, blipsUi, indicatorBuilder);
+      int read = readMonitor.getReadCount(thread);
+      int unread = readMonitor.getUnreadCount(thread);
+      inlineBuilder.setTotalBlipCount(read + unread);
+      inlineBuilder.setUnreadBlipCount(unread);
+      builder = inlineBuilder;
+    }
+    return builder;
   }
 
   @Override
-  public UiBuilder render(final ConversationBlip blip, final UiBuilder document,
+  public UiBuilder render(final ConversationBlip blip, UiBuilder document,
       final IdentityMap<ConversationThread, UiBuilder> anchorUis,
       final IdentityMap<Conversation, UiBuilder> nestedConversations) {
-    final UiBuilder threadsUi = new UiBuilder() {
+    UiBuilder threadsUi = new UiBuilder() {
       @Override
-      public void outputHtml(final SafeHtmlBuilder out) {
-        for (final ConversationThread thread : blip.getReplyThreads()) {
+      public void outputHtml(SafeHtmlBuilder out) {
+        for (ConversationThread thread : blip.getReplyThreads()) {
           anchorUis.get(thread).outputHtml(out);
         }
       }
     };
 
-    final UiBuilder convsUi = new UiBuilder() {
+    UiBuilder convsUi = new UiBuilder() {
       @Override
-      public void outputHtml(final SafeHtmlBuilder out) {
+      public void outputHtml(SafeHtmlBuilder out) {
         // Order by conversation id. Ideally, the sort key would be creation
         // time, but that is not exposed in the conversation API.
         final List<Conversation> ordered = CollectionUtils.newArrayList();
         nestedConversations.each(new ProcV<Conversation, UiBuilder>() {
           @Override
-          public void apply(final Conversation conv, final UiBuilder ui) {
+          public void apply(Conversation conv, UiBuilder ui) {
             ordered.add(conv);
           }
         });
         Collections.sort(ordered, new Comparator<Conversation>() {
           @Override
-          public int compare(final Conversation o1, final Conversation o2) {
+          public int compare(Conversation o1, Conversation o2) {
             return o1.getId().compareTo(o2.getId());
           }
         });
-        final List<UiBuilder> orderedUis = CollectionUtils.newArrayList();
-        for (final Conversation conv : ordered) {
+        List<UiBuilder> orderedUis = CollectionUtils.newArrayList();
+        for (Conversation conv : ordered) {
           nestedConversations.get(conv).outputHtml(out);
         }
       }
     };
 
-    final BlipMetaViewBuilder metaUi = BlipMetaViewBuilder.create(viewIdMapper.metaOf(blip), document);
+    BlipMetaViewBuilder metaUi = BlipMetaViewBuilder.create(viewIdMapper.metaOf(blip), document);
     blipPopulator.render(blip, metaUi);
 
     return BlipViewBuilder.create(viewIdMapper.blipOf(blip), metaUi, threadsUi, convsUi);
   }
 
+  /**
+   */
   @Override
-  public UiBuilder render(final ConversationThread thread,
-      final IdentityMap<ConversationBlip, UiBuilder> blipUis) {
-    final HtmlClosure blipsUi = new HtmlClosure() {
-      @Override
-      public void outputHtml(final SafeHtmlBuilder out) {
-        for (final ConversationBlip blip : thread.getBlips()) {
-          final UiBuilder blipUi = blipUis.get(blip);
-          // Not all blips are rendered.
-          if (blipUi != null) {
-            blipUi.outputHtml(out);
-          }
-        }
-      }
-    };
-    final String threadId = viewIdMapper.threadOf(thread);
-    final String replyIndicatorId = viewIdMapper.replyIndicatorOf(thread);
-    UiBuilder builder = null;
-    if (thread.getConversation().getRootThread() == thread) {
-      final ReplyBoxViewBuilder replyBoxBuilder =
-          ReplyBoxViewBuilder.create(replyIndicatorId);
-      builder = RootThreadViewBuilder.create(threadId, blipsUi, replyBoxBuilder);
-    } else {
-      final ContinuationIndicatorViewBuilder indicatorBuilder = ContinuationIndicatorViewBuilder.create(
-          replyIndicatorId);
-      final InlineThreadViewBuilder inlineBuilder =
-          InlineThreadViewBuilder.create(threadId, blipsUi, indicatorBuilder);
-      final int read = readMonitor.getReadCount(thread);
-      final int unread = readMonitor.getUnreadCount(thread);
-      inlineBuilder.setTotalBlipCount(read + unread);
-      inlineBuilder.setUnreadBlipCount(unread);
-      builder = inlineBuilder;
-    }
-    return builder;
+  public UiBuilder render(
+      ConversationBlip blip, IdentityMap<ConversationThread, UiBuilder> replies) {
+    return docRenderer.render(blip, replies);
   }
 
   @Override
-  public UiBuilder render(final ConversationThread thread, final UiBuilder threadR) {
-    final String id = EscapeUtils.htmlEscape(viewIdMapper.defaultAnchorOf(thread));
+  public UiBuilder render(ConversationThread thread, UiBuilder threadR) {
+    String id = EscapeUtils.htmlEscape(viewIdMapper.defaultAnchorOf(thread));
     return AnchorViewBuilder.create(id, threadR);
   }
-
-  @Override
-  public UiBuilder render(final ConversationView wave,
-      final IdentityMap<Conversation, UiBuilder> conversations) {
-    // return the first conversation in the view.
-    // TODO(hearnden): select the 'best' conversation.
-    return conversations.isEmpty() ? null : getFirstConversation(conversations);
-  }
 }

Modified: trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/wave/client/KuneFullDomWaveRendererImpl.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -39,7 +39,7 @@
 
 /**
  * Renders waves into HTML DOM, given a renderer that renders waves as HTML
- * closures.
+ * closures. (this is in StatesTwo.java)
  *
  */
 public final class KuneFullDomWaveRendererImpl implements DomRenderer {

Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -54,27 +54,27 @@
 
   private final static AsyncHolder<Object> HALT = new AsyncHolder<Object>() {
     @Override
-    public void call(final Accessor<Object> accessor) {
+    public void call(Accessor<Object> accessor) {
       // Never ready, so never notify the accessor.
     }
   };
 
+  private final Element wavePanelElement;
+  private final LogicalPanel rootPanel;
+  private final WaveRef waveRef;
   private final RemoteViewServiceMultiplexer channel;
-  private boolean closed;
   private final IdGenerator idGenerator;
+  private final ProfileManager profiles;
+  private final WaveStore waveStore;
   private final boolean isNewWave;
   private final String localDomain;
-  private StageOne one;
-  private final ProfileManager profiles;
-  private final LogicalPanel rootPanel;
 
-  private final boolean showParticipantsPanel;
-  private StageThree three;
+  private boolean closed;
+  private StageOne one;
   private StageTwo two;
+  private StageThree three;
   private WaveContext wave;
-  private final Element wavePanelElement;
-  private final WaveRef waveRef;
-  private final WaveStore waveStore;
+  private boolean showParticipantsPanel;
 
   /**
    * @param wavePanelElement The dom element to become the wave panel
@@ -86,9 +86,9 @@
    * @param isNewWave true if the wave is a new client-created wave
    * @param idGenerator
    */
-  public KuneStagesProvider(final Element wavePanelElement, final LogicalPanel rootPanel, final WaveRef waveRef,
-      final RemoteViewServiceMultiplexer channel, final IdGenerator idGenerator, final ProfileManager profiles,
-      final WaveStore store, final boolean isNewWave, final String localDomain, final boolean showParticipantsPanel) {
+  public KuneStagesProvider(Element wavePanelElement, LogicalPanel rootPanel, WaveRef waveRef,
+      RemoteViewServiceMultiplexer channel, IdGenerator idGenerator, ProfileManager profiles,
+      WaveStore store, boolean isNewWave, String localDomain, boolean showParticipantsPanel) {
     this.wavePanelElement = wavePanelElement;
     this.rootPanel = rootPanel;
     this.waveRef = waveRef;
@@ -102,46 +102,29 @@
   }
 
   @Override
-  protected AsyncHolder<StageOne> createStageOneLoader(final StageZero zero) {
+  protected AsyncHolder<StageZero> createStageZeroLoader() {
+    return haltIfClosed(super.createStageZeroLoader());
+  }
+
+  @Override
+  protected AsyncHolder<StageOne> createStageOneLoader(StageZero zero) {
     return haltIfClosed(new StageOne.DefaultProvider(zero) {
       @Override
-      protected LogicalPanel createWaveContainer() {
-        return rootPanel;
-      }
-
-      @Override
       protected Element createWaveHolder() {
         return wavePanelElement;
       }
-    });
-  }
-
-  @Override
-  protected AsyncHolder<StageThree> createStageThreeLoader(final StageTwo two) {
-    return haltIfClosed(new StageThree.DefaultProvider(this.two = two) {
       @Override
-      protected void create(final Accessor<StageThree> whenReady) {
-        // Prepend an init wave flow onto the stage continuation.
-        super.create(new Accessor<StageThree>() {
-          @Override
-          public void use(final StageThree x) {
-            onStageThreeLoaded(x, whenReady);
-          }
-        });
+      protected LogicalPanel createWaveContainer() {
+        return rootPanel;
       }
-
-      @Override
-      protected String getLocalDomain() {
-        return localDomain;
-      }
     });
   }
 
   @Override
-  // Kune patch
-  protected AsyncHolder<StageTwo> createStageTwoLoader(final StageOne one) {
+  protected AsyncHolder<StageTwo> createStageTwoLoader(StageOne one) {
     return haltIfClosed(new StageTwoProvider(
         this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) {
+      // Kune patch
       @Override
       protected DomRenderer createRenderer() {
         return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(),
@@ -159,51 +142,67 @@
   }
 
   @Override
-  protected AsyncHolder<StageZero> createStageZeroLoader() {
-    return haltIfClosed(super.createStageZeroLoader());
+  protected AsyncHolder<StageThree> createStageThreeLoader(final StageTwo two) {
+    return haltIfClosed(new StageThree.DefaultProvider(this.two = two) {
+      @Override
+      protected void create(final Accessor<StageThree> whenReady) {
+        // Prepend an init wave flow onto the stage continuation.
+        super.create(new Accessor<StageThree>() {
+          @Override
+          public void use(StageThree x) {
+            onStageThreeLoaded(x, whenReady);
+          }
+        });
+      }
+
+      @Override
+      protected String getLocalDomain() {
+        return localDomain;
+      }
+    });
   }
 
-  public void destroy() {
-    if (wave != null) {
-      waveStore.remove(wave);
-      wave = null;
+  private void onStageThreeLoaded(StageThree x, Accessor<StageThree> whenReady) {
+    if (closed) {
+      // Stop the loading process.
+      return;
     }
-    if (three != null) {
-      three.getEditActions().stopEditing();
-      three = null;
+    three = x;
+    if (isNewWave) {
+      initNewWave(x);
+    } else {
+      handleExistingWave(x);
     }
-    if (two != null) {
-      two.getConnector().close();
-      two = null;
-    }
-    if (one != null) {
-      one.getWavePanel().destroy();
-      one = null;
-    }
-    closed = true;
+    wave = new WaveContext(
+        two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor());
+    waveStore.add(wave);
+    whenReady.use(x);
   }
 
-  /**
-   * @return a halting provider if this stage is closed. Otherwise, returns the
-   *         given provider.
-   */
-  @SuppressWarnings("unchecked") // HALT is safe as a holder for any type
-  private <T> AsyncHolder<T> haltIfClosed(final AsyncHolder<T> provider) {
-    return closed ? (AsyncHolder<T>) HALT : provider;
+  private void initNewWave(StageThree three) {
+    // Do the new-wave flow.
+    ModelAsViewProvider views = two.getModelAsViewProvider();
+    BlipQueueRenderer blipQueue = two.getBlipQueue();
+    ConversationView wave = two.getConversations();
+
+    // Force rendering to finish.
+    blipQueue.flush();
+    BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip());
+    three.getEditActions().startEditing(blipUi);
   }
 
-  private void handleExistingWave(final StageThree three) {
+  private void handleExistingWave(StageThree three) {
     // If there's blip reference then focus on that blip.
-    final String documentId = waveRef.getDocumentId();
+    String documentId = waveRef.getDocumentId();
     if (documentId != null) {
-      final ModelAsViewProvider views = two.getModelAsViewProvider();
-      final BlipQueueRenderer blipQueue = two.getBlipQueue();
-      final ConversationView wave = two.getConversations();
+      ModelAsViewProvider views = two.getModelAsViewProvider();
+      BlipQueueRenderer blipQueue = two.getBlipQueue();
+      ConversationView wave = two.getConversations();
       blipQueue.flush();
       // Find conversation
       Conversation conversation;
       if (waveRef.hasWaveletId()) {
-        final String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId());
+        String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId());
         conversation = wave.getConversation(id);
       } else {
         // Unspecified wavelet means root.
@@ -211,9 +210,9 @@
       }
       if (conversation != null) {
         // Find selected blip.
-        final ConversationBlip blip = wave.getRoot().getBlip(documentId);
+        ConversationBlip blip = wave.getRoot().getBlip(documentId);
         if (blip != null) {
-          final BlipView blipUi = views.getBlipView(blip);
+          BlipView blipUi = views.getBlipView(blip);
           if (blipUi != null) {
             two.getStageOne().getFocusFrame().focus(blipUi);
           }
@@ -222,32 +221,32 @@
     }
   }
 
-  private void initNewWave(final StageThree three) {
-    // Do the new-wave flow.
-    final ModelAsViewProvider views = two.getModelAsViewProvider();
-    final BlipQueueRenderer blipQueue = two.getBlipQueue();
-    final ConversationView wave = two.getConversations();
-
-    // Force rendering to finish.
-    blipQueue.flush();
-    final BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip());
-    three.getEditActions().startEditing(blipUi);
-  }
-
-  private void onStageThreeLoaded(final StageThree x, final Accessor<StageThree> whenReady) {
-    if (closed) {
-      // Stop the loading process.
-      return;
+  public void destroy() {
+    if (wave != null) {
+      waveStore.remove(wave);
+      wave = null;
     }
-    three = x;
-    if (isNewWave) {
-      initNewWave(x);
-    } else {
-      handleExistingWave(x);
+    if (three != null) {
+      three.getEditActions().stopEditing();
+      three = null;
     }
-    wave = new WaveContext(
-        two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor());
-    waveStore.add(wave);
-    whenReady.use(x);
+    if (two != null) {
+      two.getConnector().close();
+      two = null;
+    }
+    if (one != null) {
+      one.getWavePanel().destroy();
+      one = null;
+    }
+    closed = true;
   }
+
+  /**
+   * @return a halting provider if this stage is closed. Otherwise, returns the
+   *         given provider.
+   */
+  @SuppressWarnings("unchecked") // HALT is safe as a holder for any type
+  private <T> AsyncHolder<T> haltIfClosed(AsyncHolder<T> provider) {
+    return closed ? (AsyncHolder<T>) HALT : provider;
+  }
 }

Modified: trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/wave/client/KuneWaveProfileManager.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -31,7 +31,7 @@
 
 /**
  * The Class KuneWaveProfileManager is a workaround to show avatars in kune
- * while the Wave part is more mature
+ * while the Wave part is more mature (see in the future RemoteProfileManagerImpl)
  * 
  */
 public class KuneWaveProfileManager extends AbstractProfileManager<ProfileImpl> implements
@@ -58,7 +58,7 @@
   }
 
   @Override
-  public ProfileImpl getProfile(final ParticipantId participantId) {
+  public ProfileImpl getProfile(ParticipantId participantId) {
     ProfileImpl profile = profiles.get(participantId.getAddress());
 
     if (profile == null) {
@@ -73,4 +73,4 @@
     profile.update(profile.getFirstName(), profile.getFullName(), avatar);
   }
 
-}
\ No newline at end of file
+}

Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java	2011-09-23 17:07:21 UTC (rev 1529)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java	2011-09-23 21:10:32 UTC (rev 1530)
@@ -282,7 +282,7 @@
           }
         });
 
-    setupConnectionIndicator();
+    //setupConnectionIndicator();
 
     // Done in StateManager
     // HistorySupport.init();




More information about the kune-commits mailing list