/** * Accept a {@link Map} of values to be used for the * {@link Message} header enrichment. * {@code values} can apply an {@link org.springframework.expression.Expression} * to be evaluated against a request {@link Message}. * @param headers the Map of headers to enrich. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(Map<String, Object> headers) { return enrichHeaders(headers, null); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"})) * } * </pre> * @param headers the {@link MapBuilder} to use. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(MapBuilder<?, String, Object> headers) { return enrichHeaders(headers, null); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * In addition accept options for the integration endpoint using {@link GenericEndpointSpec}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"}), * e -> e.autoStartup(false)) * } * </pre> * @param headers the {@link MapBuilder} to use. * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options. * @return the current {@link IntegrationFlowDefinition}. * @see GenericEndpointSpec */ public B enrichHeaders(MapBuilder<?, String, Object> headers, Consumer<GenericEndpointSpec<MessageTransformingHandler>> endpointConfigurer) { return enrichHeaders(headers.get(), endpointConfigurer); }
@Bean public IntegrationFlow errorFlow() { return f -> f .enrichHeaders(h -> h.header(HttpHeaders.STATUS_CODE, HttpStatus.BAD_GATEWAY)); }
/** * Accept a {@link Map} of values to be used for the * {@link Message} header enrichment. * {@code values} can apply an {@link org.springframework.expression.Expression} * to be evaluated against a request {@link Message}. * @param headers the Map of headers to enrich. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(Map<String, Object> headers) { return enrichHeaders(headers, null); }
/** * Accept a {@link Map} of values to be used for the * {@link org.springframework.messaging.Message} header enrichment. * {@code values} can apply an {@link org.springframework.expression.Expression} * to be evaluated against a request {@link org.springframework.messaging.Message}. * @param headers the Map of headers to enrich. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(Map<String, Object> headers) { return enrichHeaders(headers, null); }
@Bean public IntegrationFlow pojoTransformFlow() { return f -> f .enrichHeaders(h -> h .header("Foo", "Bar") .advice(idempotentReceiverInterceptor(), requestHandlerAdvice())) .transform(new PojoTransformer()); }
/** * Accept a {@link Map} of values to be used for the * {@link org.springframework.messaging.Message} header enrichment. * {@code values} can apply an {@link org.springframework.expression.Expression} * to be evaluated against a request {@link org.springframework.messaging.Message}. * @param headers the Map of headers to enrich. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(Map<String, Object> headers) { return enrichHeaders(headers, null); }
/** * Accept a {@link Map} of values to be used for the * {@link org.springframework.messaging.Message} header enrichment. * {@code values} can apply an {@link org.springframework.expression.Expression} * to be evaluated against a request {@link org.springframework.messaging.Message}. * @param headers the Map of headers to enrich. * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options. * @return the current {@link IntegrationFlowDefinition}. * @see GenericEndpointSpec */ public B enrichHeaders(final Map<String, Object> headers, Consumer<GenericEndpointSpec<MessageTransformingHandler>> endpointConfigurer) { return enrichHeaders(new Consumer<HeaderEnricherSpec>() { @Override public void accept(HeaderEnricherSpec spec) { spec.headers(headers); } }, endpointConfigurer); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * as the result of provided {@link Consumer}. * Typically used with a Java 8 Lambda expression: * <pre class="code"> * {@code * .enrichHeaders(h -> h.header(FileHeaders.FILENAME, "foo.sitest") * .header("directory", new File(tmpDir, "fileWritingFlow"))) * } * </pre> * @param headerEnricherConfigurer the {@link Consumer} to use. * @return the current {@link IntegrationFlowDefinition}. * @see HeaderEnricherSpec */ public B enrichHeaders(Consumer<HeaderEnricherSpec> headerEnricherConfigurer) { return this.enrichHeaders(headerEnricherConfigurer, null); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"})) * } * </pre> * @param headers the {@link MapBuilder} to use. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(MapBuilder<?, String, Object> headers) { return enrichHeaders(headers, null); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * as the result of provided {@link Consumer}. * Typically used with a Java 8 Lambda expression: * <pre class="code"> * {@code * .enrichHeaders(h -> h.header(FileHeaders.FILENAME, "foo.sitest") * .header("directory", new File(tmpDir, "fileWritingFlow"))) * } * </pre> * @param headerEnricherConfigurer the {@link Consumer} to use. * @return the current {@link IntegrationFlowDefinition}. * @see HeaderEnricherSpec */ public B enrichHeaders(Consumer<HeaderEnricherSpec> headerEnricherConfigurer) { return this.enrichHeaders(headerEnricherConfigurer, null); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"})) * } * </pre> * @param headers the {@link MapBuilder} to use. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(MapBuilder<?, String, Object> headers) { return enrichHeaders(headers, null); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"})) * } * </pre> * @param headers the {@link MapBuilder} to use. * @return the current {@link IntegrationFlowDefinition}. */ public B enrichHeaders(MapBuilder<?, String, Object> headers) { return enrichHeaders(headers, null); }
/** * Accept a {@link Map} of values to be used for the * {@link org.springframework.messaging.Message} header enrichment. * {@code values} can apply an {@link org.springframework.expression.Expression} * to be evaluated against a request {@link org.springframework.messaging.Message}. * @param headers the Map of headers to enrich. * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options. * @return the current {@link IntegrationFlowDefinition}. * @see GenericEndpointSpec */ public B enrichHeaders(final Map<String, Object> headers, Consumer<GenericEndpointSpec<MessageTransformingHandler>> endpointConfigurer) { return enrichHeaders(new Consumer<HeaderEnricherSpec>() { @Override public void accept(HeaderEnricherSpec spec) { spec.headers(headers); } }, endpointConfigurer); }
@Bean @SuppressWarnings("rawtypes") public IntegrationFlow splitResequenceFlow(MessageChannel executorChannel) { return f -> f.enrichHeaders(s -> s.header("FOO", "BAR")) .split("testSplitterData", "buildList", c -> c.applySequence(false)) .channel(executorChannel) .split(Message.class, Message::getPayload, c -> c.applySequence(false)) .channel(MessageChannels.executor(taskExecutor())) .split(s -> s .applySequence(false) .delimiters(",")) .channel(MessageChannels.executor(taskExecutor())) .<String, Integer>transform(Integer::parseInt) .enrichHeaders(h -> h.headerFunction(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, Message::getPayload)) .resequence(r -> r.releasePartialSequences(true).correlationExpression("'foo'")) .headerFilter("foo", false); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * In addition accept options for the integration endpoint using {@link GenericEndpointSpec}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"}), * e -> e.autoStartup(false)) * } * </pre> * @param headers the {@link MapBuilder} to use. * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options. * @return the current {@link IntegrationFlowDefinition}. * @see GenericEndpointSpec */ public B enrichHeaders(MapBuilder<?, String, Object> headers, Consumer<GenericEndpointSpec<MessageTransformingHandler>> endpointConfigurer) { return enrichHeaders(headers.get(), endpointConfigurer); }
/** * Populate a {@link MessageTransformingHandler} for * a {@link org.springframework.integration.transformer.HeaderEnricher} * using header values from provided {@link MapBuilder}. * In addition accept options for the integration endpoint using {@link GenericEndpointSpec}. * Can be used together with {@code Namespace Factory}: * <pre class="code"> * {@code * .enrichHeaders(Mail.headers() * .subjectFunction(m -> "foo") * .from("foo@bar") * .toFunction(m -> new String[] {"bar@baz"}), * e -> e.autoStartup(false)) * } * </pre> * @param headers the {@link MapBuilder} to use. * @param endpointConfigurer the {@link Consumer} to provide integration endpoint options. * @return the current {@link IntegrationFlowDefinition}. * @see GenericEndpointSpec */ public B enrichHeaders(MapBuilder<?, String, Object> headers, Consumer<GenericEndpointSpec<MessageTransformingHandler>> endpointConfigurer) { return enrichHeaders(headers.get(), endpointConfigurer); }
@Bean public IntegrationFlow pojoTransformFlow() { return f -> f .enrichHeaders(h -> h.header("Foo", "Bar"), e -> e.advice(idempotentReceiverInterceptor())) .transform(new PojoTransformer()); }
@Bean public IntegrationFlow splitResequenceFlow() { return f -> f.enrichHeaders(s -> s.header("FOO", "BAR")) .split("testSplitterData", "buildList", c -> c.applySequence(false)) .channel(c -> c.executor(taskExecutor())) .split(Message.class, m -> m.getPayload(), c -> c.applySequence(false)) .channel(MessageChannels.executor(taskExecutor())) .split(s -> s .applySequence(false) .delimiters(",")) .channel(c -> c.executor(taskExecutor())) .<String, Integer>transform(Integer::parseInt) .enrichHeaders(h -> h.headerFunction(IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER, Message::getPayload)) .resequence(r -> r.releasePartialSequences(true).correlationExpression("'foo'")) .headerFilter("foo", false); }