/** * Maps a wavelet and its conversation to a new {@link EventMessageBundle}. * * @param converter to convert to API objects. * @param participant the participant who the bundle is for. * @param wavelet the wavelet to put in the bundle. * @param conversation the conversation to put in the bundle. */ private EventMessageBundle mapWaveletToMessageBundle(EventDataConverter converter, ParticipantId participant, Wavelet wavelet, Conversation conversation) { EventMessageBundle messages = new EventMessageBundle(participant.getAddress(), ""); WaveletData waveletData = converter.toWaveletData(wavelet, conversation, messages); messages.setWaveletData(waveletData); ContextResolver.addAllBlipsToEventMessages(messages, conversation, wavelet, converter); return messages; }
/** * @return A singleton instance of a {@link EventDataConverterManager}. */ @Singleton @Provides static EventDataConverterManager provideEventDataConverterManager() { // v0.1 till v0.21 use the same event data converter. NavigableMap<ProtocolVersion, EventDataConverter> converters = Maps.newTreeMap(); EventDataConverterV21 eventDataConverterV21 = new EventDataConverterV21(); converters.put(ProtocolVersion.V1, eventDataConverterV21); converters.put(ProtocolVersion.V2, eventDataConverterV21); converters.put(ProtocolVersion.V2_1, eventDataConverterV21); converters.put(ProtocolVersion.V2_2, new EventDataConverterV22()); return new EventDataConverterManager(converters); }
eventDataConverter.toWaveletData(wavelet, conversation, eventMessageBundle); eventMessageBundle.setWaveletData(waveletData); for (Map.Entry<String, Set<Context>> entry : eventMessageBundle.getRequiredBlips().entrySet()) { ConversationBlip requiredBlip = conversation.getBlip(entry.getKey()); if (contextSet.contains(Context.ALL)) { ContextResolver.addAllBlipsToEventMessages( eventMessageBundle, conversation, wavelet, eventDataConverter); ConversationBlip rootBlip = conversation.getRootThread().getFirstBlip(); if (rootBlip != requiredBlip) { ContextResolver.addBlipToEventMessages( eventMessageBundle, rootBlip, wavelet, eventDataConverter); ContextResolver.addBlipToEventMessages( eventMessageBundle, requiredBlip, wavelet, eventDataConverter); if (contextSet.contains(Context.CHILDREN)) { for (ConversationBlip child : eventDataConverter.findBlipChildren(requiredBlip)) { ContextResolver.addBlipToEventMessages( eventMessageBundle, child, wavelet, eventDataConverter); ConversationBlip parent = eventDataConverter.findBlipParent(requiredBlip); if (parent != null) { ContextResolver.addBlipToEventMessages( eventMessageBundle, parent, wavelet, eventDataConverter); for (ConversationBlip blip : containingThread.getBlips()) { if (blip != requiredBlip) { ContextResolver.addBlipToEventMessages(
public void testResolveRootContext() throws Exception { ConversationBlip newBlip = conversation.getRootThread().appendBlip(); eventMessages.requireBlip(newBlip.getId(), Lists.newArrayList(Context.ROOT)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); assertTrue(blips.contains(conversation.getRootThread().getFirstBlip().getId())); assertTrue(blips.contains(newBlip.getId())); }
@Override protected void setUp() throws Exception { super.setUp(); Blips.init(); conversation = makeConversation(); wavelet = createMockWavelet(conversation); eventMessages = new EventMessageBundle("foo@appspot.com", "http://opensocial.example.com"); }
ContextResolver.resolveContext(messages, wavelet, conversation, converter);
/** * Applies the operations within the context of the wavelet. * * @param operations the operations to apply * @param wavelet the wavelet which is the context in which this operation is * performed. * @param hashedVersion the version of the wavelet to which to apply the * operations to. * @param account the account for which to apply robot operations. */ void applyOperations(List<OperationRequest> operations, ReadableWaveletData wavelet, HashedVersion hashedVersion, RobotAccountData account) { // The robots we support should be sending us their version in their first // operation ProtocolVersion protocolVersion = OperationUtil.getProtocolVersion(operations); OperationContextImpl context = new OperationContextImpl(waveletProvider, converterManager.getEventDataConverter(protocolVersion), conversationUtil, new RobotWaveletData(wavelet, hashedVersion)); executeOperations(context, operations, account); handleResults(context, account); }
/** * Adds a single {@link ConversationBlip} to the {@link EventMessageBundle}. * * @param eventMessageBundle to add the blip to * @param blip {@link ConversationBlip} to add * @param wavelet {@link Wavelet} that the blip is based on * @param eventDataConverter {@link EventDataConverter} used for conversion */ private static void addBlipToEventMessages(EventMessageBundle eventMessageBundle, ConversationBlip blip, Wavelet wavelet, EventDataConverter eventDataConverter) { if (blip != null && !eventMessageBundle.hasBlipId(blip.getId())) { eventMessageBundle.addBlip( blip.getId(), eventDataConverter.toBlipData(blip, wavelet, eventMessageBundle)); } }
@Override protected void configure() { install(new EventDataConverterModule()); install(new RobotSerializerModule()); bind(String.class).annotatedWith(Names.named("authorize_token_path")).toInstance( AUTHORIZE_TOKEN_PATH); bind(String.class).annotatedWith(Names.named("request_token_path")).toInstance( REQUEST_TOKEN_PATH); bind(String.class).annotatedWith(Names.named("access_token_path")).toInstance( ACCESS_TOKEN_PATH); bind(String.class).annotatedWith(Names.named("all_tokens_path")).toInstance( ALL_TOKENS_PATH); }
/** * Adds all blips in the given conversation to the {@link EventMessageBundle}. * * @param eventMessageBundle to add the blips to * @param conversation {@link Conversation} to get all blips from * @param wavelet {@link Wavelet} that the {@link Conversation} is based on * @param eventDataConverter {@link EventDataConverter} used for conversion */ public static void addAllBlipsToEventMessages(EventMessageBundle eventMessageBundle, Conversation conversation, Wavelet wavelet, EventDataConverter eventDataConverter) { Queue<ConversationThread> threads = new LinkedList<ConversationThread>(); threads.add(conversation.getRootThread()); while (!threads.isEmpty()) { ConversationThread thread = threads.remove(); for (ConversationBlip blip : thread.getBlips()) { addBlipToEventMessages(eventMessageBundle, blip, wavelet, eventDataConverter); for (ConversationThread replyThread : blip.getReplyThreads()) { threads.add(replyThread); } } } } }
public void testResolveContext() throws Exception { eventMessages.requireBlip( conversation.getRootThread().getFirstBlip().getId(), Lists.newArrayList(Context.CHILDREN)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); for (ConversationBlip blip : conversation.getRootThread().getBlips()) { assertTrue(blips.contains(blip.getId())); } }
@Override protected void setUp() throws Exception { super.setUp(); Blips.init(); conversation = makeConversation(); wavelet = createMockWavelet(conversation); eventMessages = new EventMessageBundle("foo@appspot.com", "http://opensocial.example.com"); }
/** * Fetches multiple profiles using Data API. */ private FetchProfilesResult fetchProfilesFromService(ParticipantId user, List<String> addresses) { OperationQueue opQueue = new OperationQueue(); FetchProfilesRequest request = new FetchProfilesRequest(addresses); opQueue.fetchProfiles(request); OperationContextImpl context = new OperationContextImpl(waveletProvider, converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); OperationRequest operationRequest = opQueue.getPendingOperations().get(0); String opId = operationRequest.getId(); OperationUtil.executeOperation(operationRequest, operationRegistry, context, user); JsonRpcResponse jsonRpcResponse = context.getResponses().get(opId); FetchProfilesResult profileResults = (FetchProfilesResult) jsonRpcResponse.getData().get(ParamsProperty.FETCH_PROFILES_RESULT); return profileResults; }
oldState.put(name, oldValue); BlipData b = converter.toBlipData(blip, wavelet, messages); Map<Integer, com.google.wave.api.Element> elements = b.getElements(); Set<Integer> keys = elements.keySet();
public void testResolveRootContext() throws Exception { ConversationBlip newBlip = conversation.getRootThread().appendBlip(); eventMessages.requireBlip(newBlip.getId(), Lists.newArrayList(Context.ROOT)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); assertTrue(blips.contains(conversation.getRootThread().getFirstBlip().getId())); assertTrue(blips.contains(newBlip.getId())); }
waveletProvider, converterManager.getEventDataConverter(version), conversationUtil);
public void testResolveContext() throws Exception { eventMessages.requireBlip( conversation.getRootThread().getFirstBlip().getId(), Lists.newArrayList(Context.CHILDREN)); ContextResolver.resolveContext( eventMessages, wavelet, conversation, new EventDataConverterV21()); Set<String> blips = eventMessages.getBlipData().keySet(); assertEquals(2, blips.size()); for (ConversationBlip blip : conversation.getRootThread().getBlips()) { assertTrue(blips.contains(blip.getId())); } }
/** * Performs search using Data API. */ protected SearchResult performSearch(SearchRequest searchRequest, ParticipantId user) { OperationQueue opQueue = new OperationQueue(); opQueue.search(searchRequest.getQuery(), searchRequest.getIndex(), searchRequest.getNumResults()); OperationContextImpl context = new OperationContextImpl(waveletProvider, converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); LOG.fine( "Performing query: " + searchRequest.getQuery() + " [" + searchRequest.getIndex() + ", " + (searchRequest.getIndex() + searchRequest.getNumResults()) + "]"); OperationRequest operationRequest = opQueue.getPendingOperations().get(0); String opId = operationRequest.getId(); OperationUtil.executeOperation(operationRequest, operationRegistry, context, user); JsonRpcResponse jsonRpcResponse = context.getResponses().get(opId); SearchResult searchResult = (SearchResult) jsonRpcResponse.getData().get(ParamsProperty.SEARCH_RESULTS); return searchResult; } }
EventMessageBundle messages = eventGenerator.generateEvents(wavelet, capabilities.getCapabilitiesMap(), converterManager.getEventDataConverter(capabilities.getProtocolVersion()));