/** * Add header specifications via the consumer callback, which receives a * {@link StringStringMapBuilder}; the {@link Map} values must be String * representations of SpEL expressions that will be evaluated at run time when the * message headers are enriched. Usually used with a JDK8 lambda: * <pre class="code"> * {@code * .enrichHeaders(s -> s.headerExpressions(c -> c * .put(MailHeaders.SUBJECT, "payload.subject") * .put(MailHeaders.FROM, "payload.from[0].toString()"), true)) * } * </pre> * @param configurer the configurer. * @param overwrite true to overwrite existing headers. * @return the header enricher spec. */ public HeaderEnricherSpec headerExpressions(Consumer<StringStringMapBuilder> configurer, Boolean overwrite) { Assert.notNull(configurer, "'configurer' must not be null"); StringStringMapBuilder builder = new StringStringMapBuilder(); configurer.accept(builder); return headerExpressions(builder.get(), overwrite); }
@Bean public IntegrationFlow pop3MailFlow() { return IntegrationFlows .from(Mail.pop3InboundAdapter("localhost", pop3Server.getPort(), "user", "pw") .javaMailProperties(p -> p.put("mail.debug", "false")) .headerMapper(mailHeaderMapper()), e -> e.autoStartup(true).poller(p -> p.fixedDelay(1000))) .enrichHeaders(s -> s.headerExpressions(c -> c.put(MailHeaders.SUBJECT, "payload.subject") .put(MailHeaders.FROM, "payload.from[0].toString()"))) .channel(MessageChannels.queue("pop3Channel")) .get(); }
/** * Add header specifications via the consumer callback, which receives a * {@link StringStringMapBuilder}; the {@link Map} values must be String * representations of SpEL expressions that will be evaluated at run time when the * message headers are enriched. Usually used with a JDK8 lambda: * <pre class="code"> * {@code * .enrichHeaders(s -> s.headerExpressions(c -> c * .put(MailHeaders.SUBJECT, "payload.subject") * .put(MailHeaders.FROM, "payload.from[0].toString()"), true)) * } * </pre> * @param configurer the configurer. * @param overwrite true to overwrite existing headers. * @return the header enricher spec. */ public HeaderEnricherSpec headerExpressions(Consumer<StringStringMapBuilder> configurer, Boolean overwrite) { Assert.notNull(configurer, "'configurer' must not be null"); StringStringMapBuilder builder = new StringStringMapBuilder(); configurer.accept(builder); return headerExpressions(builder.get(), overwrite); }