WAVE-311 WAVE-371 Ensures that search providers always include the user data wavelet for genenerating the digest.
Project: http://git-wip-us.apache.org/repos/asf/incubator-wave/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-wave/commit/731f434e Tree: http://git-wip-us.apache.org/repos/asf/incubator-wave/tree/731f434e Diff: http://git-wip-us.apache.org/repos/asf/incubator-wave/diff/731f434e Branch: refs/heads/master Commit: 731f434e86099dd20957b7c8a85399284e3a9a57 Parents: c180e4f Author: Yuri Zelikov <[email protected]> Authored: Thu Aug 21 22:07:44 2014 +0300 Committer: Yuri Zelikov <[email protected]> Committed: Wed Aug 27 20:50:29 2014 +0300 ---------------------------------------------------------------------- .../waveserver/AbstractSearchProviderImpl.java | 17 +++++++++++++++++ .../waveserver/SimpleSearchProviderImpl.java | 2 ++ .../server/waveserver/SolrSearchProviderImpl.java | 3 +++ 3 files changed, 22 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/731f434e/src/org/waveprotocol/box/server/waveserver/AbstractSearchProviderImpl.java ---------------------------------------------------------------------- diff --git a/src/org/waveprotocol/box/server/waveserver/AbstractSearchProviderImpl.java b/src/org/waveprotocol/box/server/waveserver/AbstractSearchProviderImpl.java index 111a24c..e026a81 100644 --- a/src/org/waveprotocol/box/server/waveserver/AbstractSearchProviderImpl.java +++ b/src/org/waveprotocol/box/server/waveserver/AbstractSearchProviderImpl.java @@ -25,6 +25,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.waveprotocol.box.server.util.WaveletDataUtil; +import org.waveprotocol.wave.model.id.IdConstants; import org.waveprotocol.wave.model.id.IdUtil; import org.waveprotocol.wave.model.id.WaveId; import org.waveprotocol.wave.model.id.WaveletId; @@ -157,4 +158,20 @@ public abstract class AbstractSearchProviderImpl implements SearchProvider { // explicit or implicit participant and therefore has access permission. return true; } + + /** + * Ensures that each wave in the current waves view has the user data wavelet by always adding + * it to the view. + */ + protected void ensureWavesHaveUserDataWavelet( + LinkedHashMultimap<WaveId, WaveletId> currentUserWavesView, ParticipantId user) { + WaveletId udw = + WaveletId.of(user.getDomain(), + IdUtil.join(IdConstants.USER_DATA_WAVELET_PREFIX, user.getAddress())); + Set<WaveId> waveIds = currentUserWavesView.keySet(); + for (WaveId waveId : waveIds) { + Set<WaveletId> waveletIds = currentUserWavesView.get(waveId); + waveletIds.add(udw); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/731f434e/src/org/waveprotocol/box/server/waveserver/SimpleSearchProviderImpl.java ---------------------------------------------------------------------- diff --git a/src/org/waveprotocol/box/server/waveserver/SimpleSearchProviderImpl.java b/src/org/waveprotocol/box/server/waveserver/SimpleSearchProviderImpl.java index a1db671..d0104b6 100644 --- a/src/org/waveprotocol/box/server/waveserver/SimpleSearchProviderImpl.java +++ b/src/org/waveprotocol/box/server/waveserver/SimpleSearchProviderImpl.java @@ -97,6 +97,8 @@ public class SimpleSearchProviderImpl extends AbstractSearchProviderImpl { createWavesViewToFilter(user, isAllQuery); Function<ReadableWaveletData, Boolean> filterWaveletsFunction = createFilterWaveletsFunction(user, isAllQuery, withParticipantIds, creatorParticipantIds); + + ensureWavesHaveUserDataWavelet(currentUserWavesView, user); List<WaveViewData> results = Lists.newArrayList(filterWavesViewBySearchCriteria(filterWaveletsFunction, http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/731f434e/src/org/waveprotocol/box/server/waveserver/SolrSearchProviderImpl.java ---------------------------------------------------------------------- diff --git a/src/org/waveprotocol/box/server/waveserver/SolrSearchProviderImpl.java b/src/org/waveprotocol/box/server/waveserver/SolrSearchProviderImpl.java index 137681e..e870339 100644 --- a/src/org/waveprotocol/box/server/waveserver/SolrSearchProviderImpl.java +++ b/src/org/waveprotocol/box/server/waveserver/SolrSearchProviderImpl.java @@ -134,6 +134,7 @@ public class SolrSearchProviderImpl extends AbstractSearchProviderImpl { LOG.fine("Search query '" + query + "' from user: " + user + " [" + startAt + ", " + ((startAt + numResults) - 1) + "]"); + // Maybe should be changed in case other folders in addition to 'inbox' are // added. final boolean isAllQuery = isAllQuery(query); @@ -198,6 +199,8 @@ public class SolrSearchProviderImpl extends AbstractSearchProviderImpl { } } + ensureWavesHaveUserDataWavelet(currentUserWavesView, user); + Function<ReadableWaveletData, Boolean> matchesFunction = new Function<ReadableWaveletData, Boolean>() {
