Author: yurize
Date: Sat Feb 11 17:47:56 2012
New Revision: 1243112

URL: http://svn.apache.org/viewvc?rev=1243112&view=rev
Log:
Fixes issue WAVE-333 - Welcome wave is not displayed after registration. 
https://reviews.apache.org/r/3864/

Modified:
    
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/PerUserWaveViewSubscriber.java
    incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/Wave.java
    incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveMap.java

Modified: 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/PerUserWaveViewSubscriber.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/PerUserWaveViewSubscriber.java?rev=1243112&r1=1243111&r2=1243112&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/PerUserWaveViewSubscriber.java
 (original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/PerUserWaveViewSubscriber.java
 Sat Feb 11 17:47:56 2012
@@ -19,13 +19,11 @@ package org.waveprotocol.box.server.wave
 
 import com.google.common.base.Function;
 import com.google.common.collect.HashMultimap;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.MapMaker;
 import com.google.common.collect.Multimap;
 import com.google.inject.Inject;
 
 import org.waveprotocol.box.common.DeltaSequence;
-import org.waveprotocol.box.common.ExceptionalIterator;
 import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber;
 import org.waveprotocol.wave.model.id.WaveId;
 import org.waveprotocol.wave.model.id.WaveletId;
@@ -39,6 +37,7 @@ import org.waveprotocol.wave.model.wave.
 import org.waveprotocol.wave.model.wave.data.ReadableWaveletData;
 import org.waveprotocol.wave.util.logging.Log;
 
+import java.util.Map;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.TimeUnit;
 
@@ -77,28 +76,21 @@ public class PerUserWaveViewSubscriber i
                 // the subscriber.waveletUpdate method until the user logs of
                 // and the key is expired.
                 // On the next login the waves view will be rebuild.
-                ExceptionalIterator<WaveId, WaveServerException> waveIds = 
waveMap.getWaveIds();
-                try {
-                  while (waveIds.hasNext()) {
-                    WaveId waveId = waveIds.next();
-                    ImmutableSet<WaveletId> waveletIds = 
waveMap.lookupWavelets(waveId);
-                    for (WaveletId waveletId : waveletIds) {
-                      WaveletContainer c = 
waveMap.getLocalWavelet(WaveletName.of(waveId, waveletId));
-                      try {
-                        if (!c.hasParticipant(user)) {
-                          continue;
-                        }
-                        // Add this wave to the user view.
-                        userView.put(waveId, waveletId);
-                      } catch (WaveletStateException e) {
-                        LOG.warning("Failed to access wavelet " + 
c.getWaveletName(), e);
+                Map<WaveId, Wave> waves = waveMap.getWaves();
+                for (Map.Entry<WaveId, Wave> entry : waves.entrySet()) {
+                  Wave wave = entry.getValue();
+                  for (WaveletContainer c : wave) {
+                    WaveletId waveletId = c.getWaveletName().waveletId;
+                    try {
+                      if (!c.hasParticipant(user)) {
+                        continue;
                       }
+                      // Add this wave to the user view.
+                      userView.put(entry.getKey(), waveletId);
+                    } catch (WaveletStateException e) {
+                      LOG.warning("Failed to access wavelet " + 
c.getWaveletName(), e);
                     }
                   }
-                } catch (WaveletStateException e) {
-                  LOG.severe(String.format("Failed to initialise waves view 
for user %s", user.getAddress()), e);
-                } catch (WaveServerException e) {
-                  LOG.severe(String.format("Failed to initialise waves view 
for user %s", user.getAddress()), e);
                 }
                 LOG.info("Initalized waves view for user: " + user.getAddress()
                     + ", number of waves in view: " + userView.size());

Modified: 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/Wave.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/Wave.java?rev=1243112&r1=1243111&r2=1243112&view=diff
==============================================================================
--- incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/Wave.java 
(original)
+++ incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/Wave.java 
Sat Feb 11 17:47:56 2012
@@ -109,7 +109,7 @@ final class Wave implements Iterable<Wav
     ImmutableSet<WaveletId> storedWavelets;
     try {
       storedWavelets =
-          FutureUtil.getResultOrPropagateException(getLookedupWavelets(), 
PersistenceException.class);
+          FutureUtil.getResultOrPropagateException(lookedupWavelets, 
PersistenceException.class);
     } catch (PersistenceException e) {
       throw new WaveletStateException(
           "Failed to lookup wavelet " + WaveletName.of(waveId, waveletId), e);

Modified: 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveMap.java
URL: 
http://svn.apache.org/viewvc/incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveMap.java?rev=1243112&r1=1243111&r2=1243112&view=diff
==============================================================================
--- 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveMap.java 
(original)
+++ 
incubator/wave/trunk/src/org/waveprotocol/box/server/waveserver/WaveMap.java 
Sat Feb 11 17:47:56 2012
@@ -18,6 +18,7 @@
 package org.waveprotocol.box.server.waveserver;
 
 import com.google.common.base.Function;
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.MapMaker;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -33,6 +34,7 @@ import org.waveprotocol.wave.model.id.Wa
 import org.waveprotocol.wave.model.id.WaveletName;
 
 import java.util.Iterator;
+import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.Executor;
@@ -107,6 +109,13 @@ public class WaveMap {
     }
   }
 
+  /**
+   * Returns defensive copy of the map that holds waves.
+   */
+  Map<WaveId, Wave> getWaves() {
+    return ImmutableMap.copyOf(waves);
+  }
+
   public ExceptionalIterator<WaveId, WaveServerException> getWaveIds() {
     Iterator<WaveId> inner = waves.keySet().iterator();
     return ExceptionalIterator.FromIterator.create(inner);


Reply via email to