@Test public void wholePayload() { Message message = Message.builder().payload(new TypedValue<>(EMPTY_JSON, JSON_STRING)).build(); assertThat(message.getPayload().getValue(), equalTo(EMPTY_JSON)); assertThat(message.getPayload().getDataType().getType(), equalTo(String.class)); assertThat(message.getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Test public void regularToString() { Message message = Message.builder() .payload(TypedValue.of("test")) .attributes(new TypedValue<>("{}", JSON_STRING)) .mediaType(TEXT) .build(); assertThat(message.toString(), is(equalToIgnoringLineBreaks("\n" + "org.mule.runtime.core.internal.message.DefaultMessageBuilder$MessageImplementation\n" + "{\n" + " payload=test\n" + " mediaType=text/plain\n" + " attributes={}\n" + " attributesMediaType=application/json\n" + "}"))); }
@Test @Description("Test that repeatable iterator is consumed into a list while maintaining the collection data type") public void consumeTypedRepeatableIteratorPayload() throws Exception { CursorIteratorProvider payload = asCursorProvider(TEST_LIST); DataType dataType = DataType.builder().collectionType(ArrayList.class).itemType(String.class).build(); CoreEvent event = consumeRepeatablePayload(getEventBuilder().message(Message.builder() .payload(new TypedValue<>(payload, dataType)) .build()) .build()); assertConsumedObjectStream(payload, event); dataType = event.getMessage().getPayload().getDataType(); assertThat(dataType, is(instanceOf(CollectionDataType.class))); assertThat(((CollectionDataType) dataType).getItemDataType(), equalTo(STRING)); }
} else { partEventBuilder.message(Message.builder().payload(typedValue).build());
private void initEventBuilder(Object sequenceValue, CoreEvent originalEvent, Builder builder, Map<String, ?> flowVarsFromLastResult) { if (sequenceValue instanceof EventBuilderConfigurer) { ((EventBuilderConfigurer) sequenceValue).configure(builder); } else if (sequenceValue instanceof CoreEvent) { final CoreEvent payloadAsEvent = (CoreEvent) sequenceValue; builder.message(payloadAsEvent.getMessage()); for (String flowVarName : payloadAsEvent.getVariables().keySet()) { if (!flowVarsFromLastResult.containsKey(flowVarName)) { builder.addVariable(flowVarName, payloadAsEvent.getVariables().get(flowVarName).getValue(), payloadAsEvent.getVariables().get(flowVarName).getDataType()); } } } else if (sequenceValue instanceof Message) { final Message message = (Message) sequenceValue; builder.message(message); } else if (sequenceValue instanceof TypedValue) { builder.message(Message.builder().payload((TypedValue) sequenceValue).build()); } else if (sequenceValue instanceof Collection) { builder.message(Message.builder(originalEvent.getMessage()).value(((Collection) sequenceValue).stream() .map(v -> v instanceof TypedValue ? ((TypedValue) v).getValue() : v).collect(toList())).build()); } else { builder.message(Message.builder(originalEvent.getMessage()).value(sequenceValue).build()); } }
@Test @Description("Test that repeatable iterator is consumed into a list while maintaining the collection data type") public void consumeTypedRepeatableIteratorPayload() throws Exception { CursorIteratorProvider payload = asCursorProvider(TEST_LIST); DataType dataType = DataType.builder().collectionType(ArrayList.class).itemType(String.class).build(); CoreEvent event = consumeRepeatablePayload(getEventBuilder().message(Message.builder() .payload(new TypedValue<>(payload, dataType)) .build()) .build()); assertConsumedObjectStream(payload, event); dataType = event.getMessage().getPayload().getDataType(); assertThat(dataType, is(instanceOf(CollectionDataType.class))); assertThat(((CollectionDataType) dataType).getItemDataType(), equalTo(STRING)); }
private CoreEvent createStreamPayloadEventWithLength(OptionalLong length) throws MuleException { return builder(testEvent()) .message(Message.builder().payload(new TypedValue(new NullInputStream(length.orElse(-1l)), INPUT_STREAM, length)) .build()) .build(); }
@Test @Description("Test that repeatable stream in the payload is consumed into another fully in memory stream provider while maintaining " + "the original media type") public void consumeJsonRepeatableInputStreamPayload() throws Exception { CursorStreamProvider payload = asCursorProvider(TEST_PAYLOAD); CoreEvent event = consumeRepeatablePayload(getEventBuilder().message(Message.builder() .payload(TypedValue.of(payload)) .mediaType(APPLICATION_JSON) .build()) .build()); assertConsumedRepeatableInputStream(payload, event); assertThat(event.getMessage().getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Override public void process(Object payload, Object attributes, Consumer<Result> onSuccess, BiConsumer<Throwable, Result> onError) { CoreEvent customEvent = CoreEvent.builder(originalEvent) .message(Message.builder() .payload(TypedValue.of(payload)) .attributes(TypedValue.of(attributes)) .build()) .build(); doProcess(customEvent, onSuccess, onError); }
@Override public Message.Builder toMessageBuilder(T value) { return Message.builder().payload(TypedValue.of(value)); }
private static Message toMessage(Result<?, ?> result, DataType dataType, Object value) { Message.Builder builder = Message.builder().payload(new TypedValue<>(value, dataType, result.getLength())); result.getAttributes().ifPresent(builder::attributesValue); result.getAttributesMediaType().ifPresent(builder::attributesMediaType); return builder.build(); } }
@Test public void wholePayload() { Message message = Message.builder().payload(new TypedValue<>(EMPTY_JSON, JSON_STRING)).build(); assertThat(message.getPayload().getValue(), equalTo(EMPTY_JSON)); assertThat(message.getPayload().getDataType().getType(), equalTo(String.class)); assertThat(message.getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Test @Description("Test that repeatable stream in the payload is consumed into another fully in memory stream provider while maintaining " + "the original media type") public void consumeJsonRepeatableInputStreamPayload() throws Exception { CursorStreamProvider payload = asCursorProvider(TEST_PAYLOAD); CoreEvent event = consumeRepeatablePayload(getEventBuilder().message(Message.builder() .payload(TypedValue.of(payload)) .mediaType(APPLICATION_JSON) .build()) .build()); assertConsumedRepeatableInputStream(payload, event); assertThat(event.getMessage().getPayload().getDataType().getMediaType(), is(APPLICATION_JSON)); }
@Override public Message.Builder toMessageBuilder(T value) { return Message.builder().payload(TypedValue.of(value)); }
@Override public void process(Object payload, Object attributes, Consumer<Result> onSuccess, BiConsumer<Throwable, Result> onError) { CoreEvent customEvent = CoreEvent.builder(originalEvent) .message(Message.builder() .payload(TypedValue.of(payload)) .attributes(TypedValue.of(attributes)) .build()) .build(); doProcess(customEvent, onSuccess, onError); }
/** * {@inheritDoc} */ @Override public Message.Builder toMessageBuilder(Map value) { return Message.builder().payload(new TypedValue<>(value, getDataType())); }
private CoreEvent createStreamPayloadEventWithLength(OptionalLong length) throws MuleException { return builder(testEvent()) .message(Message.builder().payload(new TypedValue(new NullInputStream(length.orElse(-1l)), INPUT_STREAM, length)) .build()) .build(); }
private CoreEvent createStreamPayloadEventWithLength(OptionalLong length) throws MuleException { return builder(testEvent()) .message(Message.builder().payload(new TypedValue(new NullInputStream(length.orElse(-1l)), INPUT_STREAM, length)) .build()) .build(); }
/** * {@inheritDoc} */ @Override public Message.Builder toMessageBuilder(Collection value) { return Message.builder().payload(new TypedValue<>(value, getDataType())); }