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);