From 59dcdd915e42fb7f403e223095610f57ca5a722d Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Mon, 8 Sep 2014 12:55:53 -0500 Subject: [PATCH] SpringOne 2014 @Config to DSL (E-G) --- .../samples/si4demo/springone/f/FMail.java | 44 +++++++++++++++++-- .../samples/si4demo/springone/g/GIMAP.java | 26 +++++++++-- 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/f/FMail.java b/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/f/FMail.java index 40bc3d0f..79549a6c 100644 --- a/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/f/FMail.java +++ b/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/f/FMail.java @@ -16,16 +16,21 @@ package org.springframework.integration.samples.si4demo.springone.f; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.integration.annotation.BridgeTo; import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.annotation.MessagingGateway; +import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.dsl.IntegrationFlow; +import org.springframework.integration.dsl.IntegrationFlows; +import org.springframework.integration.dsl.mail.Mail; import org.springframework.integration.samples.si4demo.springone.GMailProperties; +import org.springframework.messaging.MessageChannel; /** * @@ -43,7 +48,9 @@ public class FMail { public static void main(String[] args) throws Exception { ConfigurableApplicationContext ctx = - SpringApplication.run(FMail.class); + new SpringApplicationBuilder(FMail.class) + .web(false) + .run(args); System.out.println(ctx.getBean(FooService.class).foo("foo")); ctx.close(); } @@ -60,8 +67,37 @@ public class FMail { return f -> f .transform("payload + payload") .handle(String.class, (p, h) -> p.toUpperCase()) - //RLR - ; + .routeToRecipients(r -> + r.recipient("bridgeToNowhere", "true") + .recipient("smtpChannel", "true")); + } + + @BridgeTo + @Bean + public MessageChannel bridgeToNowhere() { + return new DirectChannel(); + } + + @Bean + public MessageChannel smtpChannel() { + return new DirectChannel(); + } + + @Bean + IntegrationFlow smtp() { + return IntegrationFlows.from(smtpChannel()) + .enrichHeaders(Mail.headers() + .subject("SpringOne 2014") + .to("sispringone@gmail.com") + .from("sispringone@gmail.com")) + .handle(Mail.outboundAdapter("smtp.gmail.com") + .port(465) + .protocol("smtps") + .credentials(gmail.getUser(), gmail.getPassword()) + .javaMailProperties(p -> + p.put("mail.debug", "false")) + , e -> e.id("smtpOut")) + .get(); } } diff --git a/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/g/GIMAP.java b/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/g/GIMAP.java index ac93156a..53f67811 100644 --- a/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/g/GIMAP.java +++ b/dsl/si4demo/src/main/java/org/springframework/integration/samples/si4demo/springone/g/GIMAP.java @@ -16,13 +16,16 @@ package org.springframework.integration.samples.si4demo.springone.g; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.dsl.IntegrationFlow; +import org.springframework.integration.dsl.IntegrationFlows; +import org.springframework.integration.dsl.mail.Mail; +import org.springframework.integration.mail.MailHeaders; import org.springframework.integration.samples.si4demo.springone.GMailProperties; /** @@ -41,7 +44,9 @@ public class GIMAP { public static void main(String[] args) throws Exception { ConfigurableApplicationContext ctx = - SpringApplication.run(GIMAP.class); + new SpringApplicationBuilder(GIMAP.class) + .web(false) + .run(args); System.out.println("Hit Enter to terminate"); System.in.read(); ctx.close(); @@ -49,7 +54,22 @@ public class GIMAP { @Bean IntegrationFlow imapIdle() { - return null; + return IntegrationFlows.from(Mail.imapIdleAdapter( + "imaps://" + + gmail.getUser().replaceAll("@", "%40") + + ":" + + gmail.getPassword() + + "@imap.gmail.com:993/INBOX") + .id("imapIn") + .autoStartup(true) + .javaMailProperties(p -> + p.put("mail.debug", "false"))) + .enrichHeaders(s -> s.headerExpressions(h -> h + .put(MailHeaders.SUBJECT, "payload.subject") + .put(MailHeaders.FROM, "payload.from[0].toString()"))) + .transform("payload.content") + .handle(System.out::println) + .get(); } }