From e0ad10032e0453b7f8360fe423b00d48f19b2b6d Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 1 Feb 2017 13:15:38 -0500 Subject: [PATCH] INTEXT-229: Update to SI 5.0; Spring IO Cairo JIRA: https://jira.spring.io/browse/INTEXT-229 * Move `sourceSets` before applying `spring-io` plugin to let the custom set to be applied for IO tasks as well --- .gitignore | 1 + .travis.yml | 11 ++ build.gradle | 81 +++++--- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.jar | Bin 51348 -> 54208 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 74 +++---- gradlew.bat | 174 ++++++++--------- pom.xml | 183 ------------------ src/main/java/META-INF/MANIFEST.MF | 3 - .../flow/config/xml/FlowContextTests.java | 26 +-- .../flow/config/xml/FlowWithErrorTests.java | 32 +-- .../config/xml/TransactionalFlowTests.java | 49 +++-- src/test/resources/log4j.xml | 32 --- src/test/resources/log4j2-test.xml | 15 ++ 15 files changed, 264 insertions(+), 421 deletions(-) create mode 100644 .travis.yml delete mode 100644 pom.xml delete mode 100644 src/main/java/META-INF/MANIFEST.MF delete mode 100644 src/test/resources/log4j.xml create mode 100644 src/test/resources/log4j2-test.xml diff --git a/.gitignore b/.gitignore index 1c91afb..9cff86f 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ target /.gradle /build /*.iml +/bin/ diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..e858760 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,11 @@ +language: java +jdk: oraclejdk8 +install: true +before_cache: + - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock +cache: + directories: + - $HOME/.gradle/caches/ + - $HOME/.gradle/wrapper/ +script: + - ./gradlew check --refresh-dependencies --no-daemon diff --git a/build.gradle b/build.gradle index d6a0cca..2224aa8 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,32 @@ -description = 'Spring Integration Flow' - buildscript { repositories { - maven { url 'http://repo.spring.io/plugins-release' } + maven { url 'https://repo.spring.io/plugins-release' } } + dependencies { - classpath 'io.spring.gradle:spring-io-plugin:0.0.4.RELEASE' + classpath 'io.spring.gradle:dependency-management-plugin:1.0.0.RC2' + classpath 'io.spring.gradle:spring-io-plugin:0.0.6.RELEASE' } } -apply plugin: 'java' -apply from: "${rootProject.projectDir}/publish-maven.gradle" -apply plugin: 'eclipse' -apply plugin: 'idea' +plugins { + id 'java' + id 'eclipse' + id 'idea' + id 'jacoco' + id 'org.sonarqube' version '2.1' +} + +description = 'Spring Integration Flow' + + +sourceSets { + test { + resources { + srcDirs = ['src/test/resources', 'src/test/java'] + } + } +} if (project.hasProperty('platformVersion')) { apply plugin: 'spring-io' @@ -33,17 +47,19 @@ if (project.hasProperty('platformVersion')) { group = 'org.springframework.integration' repositories { - maven { url 'http://repo.spring.io/libs-milestone' } + maven { url 'http://repo.spring.io/libs-snapshot' } } -sourceCompatibility = 1.6 -targetCompatibility = 1.6 +compileJava { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 +} ext { commonsLangVersion = '2.6' - jacocoVersion = '0.7.1.201405082137' - springIntegrationVersion = '4.0.5.RELEASE' + log4jVersion = '2.7' + springIntegrationVersion = '5.0.0.BUILD-SNAPSHOT' linkHomepage = 'https://github.com/spring-projects/spring-integration-extensions' linkCi = 'https://build.spring.io/browse/INTEXT' @@ -68,8 +84,8 @@ dependencies { testCompile "org.springframework.integration:spring-integration-test:$springIntegrationVersion" testCompile "org.springframework.integration:spring-integration-groovy:$springIntegrationVersion" testCompile "org.springframework.integration:spring-integration-jmx:$springIntegrationVersion" - - jacoco "org.jacoco:org.jacoco.agent:$jacocoVersion:runtime" + testCompile "org.apache.logging.log4j:log4j-core:$log4jVersion" + testRuntime "org.apache.logging.log4j:log4j-jcl:$log4jVersion" } @@ -79,12 +95,8 @@ eclipse { } } -sourceSets { - test { - resources { - srcDirs = ['src/test/resources', 'src/test/java'] - } - } +jacoco { + toolVersion = "0.7.8" } // enable all compiler warnings; individual projects may customize further @@ -93,9 +105,22 @@ sourceSets { test { // suppress all console output during testing unless running `gradle -i` logging.captureStandardOutput(LogLevel.INFO) - jvmArgs "-javaagent:${configurations.jacoco.asPath}=destfile=${buildDir}/jacoco.exec,includes=*" + jacoco { + append = false + destinationFile = file("$buildDir/jacoco.exec") + } } +jacocoTestReport { + reports { + xml.enabled false + csv.enabled false + html.destination "${buildDir}/reports/jacoco/html" + } +} + +build.dependsOn jacocoTestReport + task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allJava @@ -111,10 +136,8 @@ artifacts { archives javadocJar } -apply plugin: 'sonar-runner' - -sonarRunner { - sonarProperties { +sonarqube { + properties { property "sonar.jacoco.reportPath", "${buildDir.name}/jacoco.exec" property "sonar.links.homepage", linkHomepage property "sonar.links.ci", linkCi @@ -234,10 +257,4 @@ task dist(dependsOn: assemble) { description = 'Builds -dist, -docs and -schema distribution archives.' } -task wrapper(type: Wrapper) { - description = 'Generates gradlew[.bat] scripts' - gradleVersion = '1.12' - distributionUrl = "http://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip" -} - defaultTasks 'build' diff --git a/gradle.properties b/gradle.properties index 1c7ff0f..dfe1192 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.0.1.BUILD-SNAPSHOT +version=2.0.0.BUILD-SNAPSHOT diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 0087cd3b18659b5577cf6ad3ef61f8eb9416ebba..a2e2314f6cb14cf771db153ca18c1a1b73c4a470 100644 GIT binary patch delta 35549 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

%6)yA!?-oTP^-p+q5|&9Bpa}z5gM%yl5xG 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save ( ) { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282..e95643d 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,84 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 97011bb..0000000 --- a/pom.xml +++ /dev/null @@ -1,183 +0,0 @@ - - - 4.0.0 - org.springframework.integration - spring-integration-flow - 4.0.0.BUILD-SNAPSHOT - Spring Integration Flow Support - - 4.0.7.RELEASE - 4.0.4.RELEASE - UTF8 - - - - The Apache Software License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - - src/main/java - - **/* - - - **/*.java - - - - src/main/resources - - **/* - - - - - - src/test/java - - **/* - - - **/*.java - - - - src/test/resources - - **/* - - - - - - maven-compiler-plugin - - 1.6 - 1.6 - - - - maven-surefire-plugin - - - **/*Tests.java - - - **/*Abstract*.java - - - - - - - - SpringSource Plugin Repository - http://repo.springsource.org/plugins-release - - - SpringSource Milestone Repository - http://repo.springsource.org/libs-milestone - - - SpringSource Snapshot Repository - http://repo.springsource.org/libs-snapshot - - - - - org.springframework - spring-test - ${spring.version} - test - - - org.springframework - spring-tx - ${spring.version} - test - - - org.springframework.integration - spring-integration-test - ${spring.integration.version} - test - - - cglib - cglib-nodep - 2.2 - test - - - log4j - log4j - 1.2.12 - test - - - org.springframework.integration - spring-integration-core - ${spring.integration.version} - compile - - - org.easymock - easymock - 2.3 - test - - - org.easymock - easymockclassextension - 2.3 - test - - - org.springframework.integration - spring-integration-groovy - ${spring.integration.version} - test - - - org.springframework - spring-context - ${spring.version} - compile - - - org.hamcrest - hamcrest-all - 1.1 - test - - - org.mockito - mockito-all - 1.8.4 - test - - - commons-lang - commons-lang - 2.6 - compile - - - org.springframework.integration - spring-integration-jmx - ${spring.integration.version} - test - - - junit - junit-dep - 4.8.2 - test - - - diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 5e94951..0000000 --- a/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/src/test/java/org/springframework/integration/flow/config/xml/FlowContextTests.java b/src/test/java/org/springframework/integration/flow/config/xml/FlowContextTests.java index f1581e8..e5fad86 100644 --- a/src/test/java/org/springframework/integration/flow/config/xml/FlowContextTests.java +++ b/src/test/java/org/springframework/integration/flow/config/xml/FlowContextTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2002-2011 the original author or authors. - * + * Copyright 2002-2017 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. @@ -13,33 +13,35 @@ package org.springframework.integration.flow.config.xml; import org.junit.Test; + import org.springframework.beans.factory.BeanCreationException; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * @author David Turanski + * @author Gary Russell * */ - + public class FlowContextTests { @Test(expected=BeanCreationException.class) public void testChannelConflictShouldThrowException() { try { new ClassPathXmlApplicationContext( - "/org/springframework/integration/flow/config/xml/FlowContextTests-context.xml"); + "/org/springframework/integration/flow/config/xml/FlowContextTests-context.xml").close(); } catch (BeanCreationException e) { System.out.println(e.getCause().getMessage()); throw e; } } - - @Test + + @Test public void testFlowWithJMX() { - + new ClassPathXmlApplicationContext( - "/org/springframework/integration/flow/config/xml/FlowContextTests-jmx-context.xml"); - + "/org/springframework/integration/flow/config/xml/FlowContextTests-jmx-context.xml").close(); + } - + } diff --git a/src/test/java/org/springframework/integration/flow/config/xml/FlowWithErrorTests.java b/src/test/java/org/springframework/integration/flow/config/xml/FlowWithErrorTests.java index 16faa1e..89b4af3 100644 --- a/src/test/java/org/springframework/integration/flow/config/xml/FlowWithErrorTests.java +++ b/src/test/java/org/springframework/integration/flow/config/xml/FlowWithErrorTests.java @@ -1,12 +1,12 @@ /* - * Copyright 2002-2011 the original author or authors. - * + * Copyright 2002-2017 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 @@ -19,27 +19,29 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.Test; -import org.springframework.context.ApplicationContext; + +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.messaging.Message; import org.springframework.messaging.MessageChannel; -import org.springframework.messaging.MessagingException; import org.springframework.messaging.MessageHandler; +import org.springframework.messaging.MessagingException; import org.springframework.messaging.PollableChannel; import org.springframework.messaging.SubscribableChannel; import org.springframework.messaging.support.GenericMessage; /** - * + * * @author David Turanski - * + * @author Gary Russell + * */ public class FlowWithErrorTests { @Test public void testFlowThrowsExceptionWithGatewayErrorChannel() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( "/org/springframework/integration/flow/config/xml/FlowWithErrorTests-context.xml"); MessageChannel inputChannel = applicationContext.getBean("inputC", MessageChannel.class); SubscribableChannel errorChannel = applicationContext.getBean("errorChannel", SubscribableChannel.class); @@ -48,18 +50,19 @@ public class FlowWithErrorTests { errorChannel.subscribe(handler); inputChannel.send(msg); assertTrue(handler.gotResponse); - + applicationContext.close(); } @Test public void testDirectCallWithErrorChannel() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( "classpath:/META-INF/spring/integration/flows/subflow5/subflow5-context.xml"); MessageChannel inputChannel = applicationContext.getBean("subflow-input", MessageChannel.class); SubscribableChannel errorChannel = applicationContext.getBean("errorChannel", SubscribableChannel.class); errorChannel.subscribe(new MessageHandler() { + @Override public void handleMessage(Message message) throws MessagingException { assertTrue(message.getPayload() instanceof MessagingException); } @@ -67,11 +70,12 @@ public class FlowWithErrorTests { Message msg = new GenericMessage("hello"); assertTrue(inputChannel.send(msg)); + applicationContext.close(); } @Test public void testWithErrorChannel() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( "/org/springframework/integration/flow/config/xml/FlowWithErrorTests-context.xml"); MessageChannel inputChannel = applicationContext.getBean("inputC1", MessageChannel.class); PollableChannel output = applicationContext.getBean("outputC1", PollableChannel.class); @@ -81,6 +85,7 @@ public class FlowWithErrorTests { Message reply = output.receive(100); assertNotNull(reply); assertTrue(reply.getPayload() instanceof MessagingException); + applicationContext.close(); } private static class Handler implements MessageHandler { @@ -91,11 +96,12 @@ public class FlowWithErrorTests { /* * (non-Javadoc) - * + * * @see * org.springframework.messaging.MessageHandler#handleMessage * (org.springframework.messaging.Message) */ + @Override public void handleMessage(Message message) throws MessagingException { this.gotResponse = true; this.message = message; diff --git a/src/test/java/org/springframework/integration/flow/config/xml/TransactionalFlowTests.java b/src/test/java/org/springframework/integration/flow/config/xml/TransactionalFlowTests.java index e50d12f..d1382c7 100644 --- a/src/test/java/org/springframework/integration/flow/config/xml/TransactionalFlowTests.java +++ b/src/test/java/org/springframework/integration/flow/config/xml/TransactionalFlowTests.java @@ -1,11 +1,11 @@ /* - * Copyright 2002-2011 the original author or authors. - * + * Copyright 2002-2017 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. @@ -18,27 +18,30 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.junit.Test; -import org.springframework.context.ApplicationContext; + +import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessageChannel; -import org.springframework.messaging.MessagingException; -import org.springframework.messaging.MessageHandler; -import org.springframework.messaging.SubscribableChannel; import org.springframework.integration.flow.FlowConstants; import org.springframework.integration.flow.Transaction.StubTransactionManager; +import org.springframework.messaging.Message; +import org.springframework.messaging.MessageChannel; +import org.springframework.messaging.MessageHandler; +import org.springframework.messaging.MessagingException; +import org.springframework.messaging.SubscribableChannel; import org.springframework.messaging.support.ErrorMessage; import org.springframework.messaging.support.GenericMessage; /** * @author David Turanski - * + * @author Gary Russell + * */ public class TransactionalFlowTests { + @Test public void testFlowDirectCommit() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( - "/META-INF/spring/integration/flows/transactional-flow/flow-context.xml", + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( + "/META-INF/spring/integration/flows/transactional-flow/flow-context.xml", "/org/springframework/integration/flow/config/xml/txmanager-config.xml"); MessageChannel inputChannel = applicationContext.getBean("inputChannel", MessageChannel.class); SubscribableChannel outputChannel = applicationContext.getBean("outputChannel", SubscribableChannel.class); @@ -49,12 +52,13 @@ public class TransactionalFlowTests { assertTrue(handler.messageReceived); assertTrue(transactionManager.committed); assertFalse(transactionManager.rolledback); + applicationContext.close(); } @Test public void testFlowDirectRollback() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( - "/META-INF/spring/integration/flows/transactional-flow/flow-context.xml", + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( + "/META-INF/spring/integration/flows/transactional-flow/flow-context.xml", "/org/springframework/integration/flow/config/xml/txmanager-config.xml"); MessageChannel inputChannel = applicationContext.getBean("inputChannel", MessageChannel.class); SubscribableChannel outputChannel = applicationContext.getBean("outputChannel", SubscribableChannel.class); @@ -70,12 +74,13 @@ public class TransactionalFlowTests { assertTrue(transactionManager.rolledback); assertFalse(transactionManager.committed); } + applicationContext.close(); } @Test public void testFlowCommit() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( - "/org/springframework/integration/flow/config/xml/TransactionalFlowTests-context.xml", + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( + "/org/springframework/integration/flow/config/xml/TransactionalFlowTests-context.xml", "/org/springframework/integration/flow/config/xml/txmanager-config.xml"); MessageChannel inputChannel = applicationContext.getBean("inputC", MessageChannel.class); SubscribableChannel outputChannel = applicationContext.getBean("outputC", SubscribableChannel.class); @@ -86,12 +91,13 @@ public class TransactionalFlowTests { assertTrue(handler.messageReceived); assertTrue(transactionManager.committed); assertFalse(transactionManager.rolledback); + applicationContext.close(); } @Test public void testFlowRollbackWithGatewayErrorChannel() { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( - "/org/springframework/integration/flow/config/xml/TransactionalFlowTests-context.xml", + ConfigurableApplicationContext applicationContext = new ClassPathXmlApplicationContext( + "/org/springframework/integration/flow/config/xml/TransactionalFlowTests-context.xml", "/org/springframework/integration/flow/config/xml/txmanager-config.xml"); MessageChannel inputChannel = applicationContext.getBean("inputC", MessageChannel.class); SubscribableChannel errorChannel = applicationContext.getBean("errorChannel", SubscribableChannel.class); @@ -107,7 +113,7 @@ public class TransactionalFlowTests { handler.message.getHeaders().get(FlowConstants.FLOW_OUTPUT_PORT_HEADER)); assertTrue(transactionManager.rolledback); assertFalse(transactionManager.committed); - + applicationContext.close(); } private static class Handler implements MessageHandler { @@ -117,12 +123,13 @@ public class TransactionalFlowTests { /* * (non-Javadoc) - * + * * @see * org.springframework.messaging.MessageHandler#handleMessage * (org.springframework.messaging.Message) */ + @Override public void handleMessage(Message message) throws MessagingException { this.messageReceived = true; this.message = message; diff --git a/src/test/resources/log4j.xml b/src/test/resources/log4j.xml deleted file mode 100644 index 377dfd4..0000000 --- a/src/test/resources/log4j.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/test/resources/log4j2-test.xml b/src/test/resources/log4j2-test.xml new file mode 100644 index 0000000..a65bf51 --- /dev/null +++ b/src/test/resources/log4j2-test.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +