private CoreEvent createMessageCollection(final List<CoreEvent> nonNullResults, final CoreEvent previous) { final PrivilegedEvent.Builder resultBuilder = PrivilegedEvent.builder(previous); List<Message> list = new ArrayList<>(); for (CoreEvent event : nonNullResults) { for (String flowVarName : event.getVariables().keySet()) { resultBuilder.addVariable(flowVarName, event.getVariables().get(flowVarName).getValue(), event.getVariables().get(flowVarName).getDataType()); } list.add(event.getMessage()); } final Message coll = Message.builder().collectionValue(list, Message.class).build(); PrivilegedEvent resultEvent = resultBuilder.message(coll).build(); setCurrentEvent(resultEvent); return resultEvent; } }
public CoreEvent getMessageCollectionEvent() { try { if (size() > 0) { PrivilegedEvent[] muleEvents = toArray(true); CoreEvent lastEvent = muleEvents[muleEvents.length - 1]; List<Message> messageList = Arrays.stream(muleEvents).map(event -> event.getMessage()).collect(toList()); final Message.Builder builder = Message.builder().collectionValue(messageList, Message.class); PrivilegedEvent muleEvent = PrivilegedEvent.builder(lastEvent).message(builder.build()).session(getMergedSession(muleEvents)).build(); return muleEvent; } else { return null; } } catch (ObjectStoreException e) { // Nothing to do... return null; } }
private CoreEvent createMessageCollectionWithSingleMessage(PrivilegedEvent event) { final Message coll = Message.builder().collectionValue(singletonList(event.getMessage()), Message.class).build(); event = PrivilegedEvent.builder(event).message(coll).build(); setCurrentEvent(event); return event; }
protected Message toMessage(Object value, ExecutionContextAdapter operationContext) { final MediaType mediaType = resolveMediaType(value, operationContext); final CoreEvent event = operationContext.getEvent(); if (value instanceof Result) { Result resultValue = (Result) value; return isSpecialHandling && returnHandler.handles(resultValue.getOutput()) ? MessageUtils.toMessage((Result) value, mediaType, cursorProviderFactory, event, returnHandler.getDataType()) : MessageUtils.toMessage((Result) value, mediaType, cursorProviderFactory, event); } else { if (value instanceof Collection && returnsListOfMessages) { value = toMessageCollection((Collection<Result>) value, cursorProviderFactory, event); } else if (value instanceof Iterator && returnsListOfMessages) { value = toMessageIterator((Iterator<Result>) value, cursorProviderFactory, event); } value = streamingContent(value, cursorProviderFactory, event); Message.Builder messageBuilder; //TODO MULE-13302: this doesn't completely makes sense. IT doesn't account for an Iterator<Message> // org.mule.runtime.api.metadata.DataType.MULE_MESSAGE_COLLECTION doesn't completely makes sense if (returnsListOfMessages && value instanceof Collection) { messageBuilder = Message.builder().collectionValue((Collection) value, Message.class); } else if (isSpecialHandling && returnHandler.handles(value)) { messageBuilder = returnHandler.toMessageBuilder(value); } else { messageBuilder = Message.builder().value(value); } return messageBuilder.mediaType(mediaType).build(); } }
/** * {@inheritDoc} */ @Override public Message.Builder toMessageBuilder(Collection value) { return Message.builder().collectionValue(value, dataType.getItemDataType().getType()); }
messageBuilder = Message.builder().collectionValue((Collection) value, Message.class); } else if (isSpecialHandling && returnHandler.handles(value)) { messageBuilder = returnHandler.toMessageBuilder(value);