diff --git a/spring-boot-autoconfigure/pom.xml b/spring-boot-autoconfigure/pom.xml index 3f63ab1d206..39a264756b6 100644 --- a/spring-boot-autoconfigure/pom.xml +++ b/spring-boot-autoconfigure/pom.xml @@ -97,6 +97,11 @@ spring-jdbc true + + org.springframework.integration + spring-integration-core + true + org.springframework spring-jms diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java new file mode 100644 index 00000000000..75be23c1751 --- /dev/null +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java @@ -0,0 +1,39 @@ +/* + * Copyright 2014 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.autoconfigure.integration; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Configuration; +import org.springframework.integration.config.EnableIntegration; + +/** + * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration Auto-configuration} + * for Spring Integration. + * + * @author Artem Bilan + * @since 1.1 + */ +@Configuration +@ConditionalOnClass(EnableIntegration.class) +public class IntegrationAutoConfiguration { + + @Configuration + @EnableIntegration + protected static class IntegrationConfiguration { + } + +} diff --git a/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories b/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories index 2bd5dca7f5c..14dda161661 100644 --- a/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories @@ -14,6 +14,7 @@ org.springframework.boot.autoconfigure.data.MongoRepositoriesAutoConfiguration,\ org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\ org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\ org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\ +org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\ org.springframework.boot.autoconfigure.jms.JmsTemplateAutoConfiguration,\ @@ -41,4 +42,3 @@ org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider=\ org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider,\ org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider,\ org.springframework.boot.autoconfigure.web.JspTemplateAvailabilityProvider - diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java new file mode 100644 index 00000000000..db0168bfb96 --- /dev/null +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java @@ -0,0 +1,42 @@ +/* + * Copyright 2014 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.autoconfigure.integration; + +import static org.junit.Assert.*; + +import org.junit.Test; + +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.integration.support.channel.HeaderChannelRegistry; + +/** + * @author Artem Bilan + * @since 1.1 + */ +public class IntegrationAutoConfigurationTests { + + private final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + + @Test + public void integrationIsAvailable() { + this.context.register(IntegrationAutoConfiguration.class); + this.context.refresh(); + assertNotNull(this.context.getBean(HeaderChannelRegistry.class)); + this.context.close(); + } + +} diff --git a/spring-boot-cli/samples/integration.groovy b/spring-boot-cli/samples/integration.groovy index 3051fa7c13e..817e17e64b8 100644 --- a/spring-boot-cli/samples/integration.groovy +++ b/spring-boot-cli/samples/integration.groovy @@ -1,7 +1,7 @@ package org.test -@Component -@EnableIntegrationPatterns +@Configuration +@EnableIntegration class SpringIntegrationExample implements CommandLineRunner { @Bean @@ -11,7 +11,7 @@ class SpringIntegrationExample implements CommandLineRunner { @Override void run(String... args) { - print new MessagingTemplate(input()).convertSendAndReceive("World") + println new MessagingTemplate(input()).convertSendAndReceive("World", String) } } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringIntegrationCompilerAutoConfiguration.java b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringIntegrationCompilerAutoConfiguration.java index 95982d11227..75e930b0357 100644 --- a/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringIntegrationCompilerAutoConfiguration.java +++ b/spring-boot-cli/src/main/java/org/springframework/boot/cli/compiler/autoconfigure/SpringIntegrationCompilerAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2013 the original author or authors. + * Copyright 2012-2014 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,43 +21,40 @@ import org.codehaus.groovy.control.customizers.ImportCustomizer; import org.springframework.boot.cli.compiler.AstUtils; import org.springframework.boot.cli.compiler.CompilerAutoConfiguration; import org.springframework.boot.cli.compiler.DependencyCustomizer; -import org.springframework.boot.groovy.EnableIntegrationPatterns; /** * {@link CompilerAutoConfiguration} for Spring Integration. - * + * * @author Dave Syer + * @author Artem Bilan */ public class SpringIntegrationCompilerAutoConfiguration extends CompilerAutoConfiguration { @Override public boolean matches(ClassNode classNode) { - // Slightly weird detection algorithm because there is no @Enable annotation for - // Integration - return AstUtils.hasAtLeastOneAnnotation(classNode, "MessageEndpoint", - "EnableIntegrationPatterns"); + return AstUtils.hasAtLeastOneAnnotation(classNode, "EnableIntegration"); } @Override public void applyDependencies(DependencyCustomizer dependencies) { - dependencies.ifAnyMissingClasses("org.springframework.integration.Message").add( + dependencies.ifAnyMissingClasses( + "org.springframework.integration.config.EnableIntegration").add( "spring-boot-starter-integration"); - dependencies.ifAnyMissingClasses("groovy.util.XmlParser").add("groovy-xml"); } @Override public void applyImports(ImportCustomizer imports) { - imports.addImports("org.springframework.integration.Message", + imports.addImports("org.springframework.messaging.Message", + "org.springframework.messaging.MessageChannel", + "org.springframework.messaging.PollableChannel", + "org.springframework.messaging.SubscribableChannel", + "org.springframework.messaging.MessageHeaders", "org.springframework.integration.support.MessageBuilder", - "org.springframework.integration.MessageChannel", "org.springframework.integration.channel.DirectChannel", "org.springframework.integration.channel.QueueChannel", "org.springframework.integration.channel.ExecutorChannel", - "org.springframework.integration.MessageHeaders", "org.springframework.integration.core.MessagingTemplate", - "org.springframework.integration.core.SubscribableChannel", - "org.springframework.integration.core.PollableChannel", - EnableIntegrationPatterns.class.getCanonicalName()); + "org.springframework.integration.config.EnableIntegration"); imports.addStarImports("org.springframework.integration.annotation"); } } diff --git a/spring-boot-cli/src/main/java/org/springframework/boot/groovy/EnableIntegrationPatterns.java b/spring-boot-cli/src/main/java/org/springframework/boot/groovy/EnableIntegrationPatterns.java deleted file mode 100644 index 87d913a5f9e..00000000000 --- a/spring-boot-cli/src/main/java/org/springframework/boot/groovy/EnableIntegrationPatterns.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2012-2014 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.groovy; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.springframework.boot.cli.compiler.autoconfigure.SpringIntegrationCompilerAutoConfiguration; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.ImportResource; - -/** - * Pseudo annotation used to trigger {@link SpringIntegrationCompilerAutoConfiguration}. - */ -@Target(ElementType.TYPE) -@Documented -@Retention(RetentionPolicy.RUNTIME) -@Configuration -@ImportResource("classpath:/org/springframework/boot/groovy/integration.xml") -public @interface EnableIntegrationPatterns { - -} diff --git a/spring-boot-cli/src/main/resources/org/springframework/boot/groovy/integration.xml b/spring-boot-cli/src/main/resources/org/springframework/boot/groovy/integration.xml deleted file mode 100644 index 3e0c0953df2..00000000000 --- a/spring-boot-cli/src/main/resources/org/springframework/boot/groovy/integration.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/spring-boot-dependencies/pom.xml b/spring-boot-dependencies/pom.xml index 9d8b0dff163..563781e277e 100644 --- a/spring-boot-dependencies/pom.xml +++ b/spring-boot-dependencies/pom.xml @@ -86,12 +86,12 @@ 1.13 0.7-groovy-2.0 4.0.3.RELEASE - 3.0.2.RELEASE 2.2.6.RELEASE 1.3.3.RELEASE 1.1.1.RELEASE Codd-SR2 0.9.0.RELEASE + 4.0.0.RELEASE 1.0.0.RELEASE 1.2.2.RELEASE 1.1.1.RELEASE diff --git a/spring-boot-starters/spring-boot-starter-integration/pom.xml b/spring-boot-starters/spring-boot-starter-integration/pom.xml index 66369344700..7d0947e6673 100644 --- a/spring-boot-starters/spring-boot-starter-integration/pom.xml +++ b/spring-boot-starters/spring-boot-starter-integration/pom.xml @@ -27,6 +27,10 @@ org.springframework spring-aop + + org.springframework + spring-messaging + org.springframework spring-tx