diff --git a/basic/jdbc/README.md b/basic/jdbc/README.md new file mode 100644 index 00000000..e6c5bec1 --- /dev/null +++ b/basic/jdbc/README.md @@ -0,0 +1,28 @@ +Spring Integration - JDBC Sample +================================ + +# Overview + +This sample provides example of how the Jdbc Adapters can be used. + +# Getting Started + +You can run the application by either + +* running the "Main" class from within STS (Right-click on Main class --> Run As --> Java Application) +* or from the command line: + - mvn package + - mvn exec:java + +Currently one example exists. On the command prompt you can enter the following valid values and get a response back: + +* 'a' +* 'b' +* 'foo' + +# Resources + +For help please take a look at the Spring Integration documentation: + +http://www.springsource.org/spring-integration + diff --git a/basic/jdbc/pom.xml b/basic/jdbc/pom.xml new file mode 100644 index 00000000..33e8ae93 --- /dev/null +++ b/basic/jdbc/pom.xml @@ -0,0 +1,129 @@ + + 4.0.0 + + org.springframework.integration.samples + jdbc + 1.0-SNAPSHOT + jar + + jdbc-sample + http://www.springsource.org/spring-integration + + + UTF-8 + 2.1.0.M3 + 1.6.1 + 4.7 + + + + + repository.springframework.maven.release + Spring Framework Maven Release Repository + http://maven.springframework.org/release + + + repository.springframework.maven.milestone + Spring Framework Maven Milestone Repository + http://maven.springframework.org/milestone + + + + + + + maven-eclipse-plugin + 2.8 + + + org.springframework.ide.eclipse.core.springnature + + + org.springframework.ide.eclipse.core.springbuilder + + true + true + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + -Xlint:all + true + true + + + + org.codehaus.mojo + exec-maven-plugin + 1.2 + + org.springframework.integration.samples.jdbc.Main + + + + + + + + + + + junit + junit + ${junit.version} + test + + + + + + org.springframework.integration + spring-integration-core + ${spring.integration.version} + + + + org.springframework.integration + spring-integration-jdbc + ${spring.integration.version} + + + + + + ch.qos.logback + logback-classic + 0.9.28 + + + org.slf4j + slf4j-api + ${slf4j.version} + + + org.slf4j + log4j-over-slf4j + ${slf4j.version} + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + + + + com.h2database + h2 + 1.3.160 + + + + diff --git a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Main.java b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Main.java new file mode 100644 index 00000000..0edab38b --- /dev/null +++ b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Main.java @@ -0,0 +1,97 @@ +/* + * Copyright 2002-2010 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.integration.samples.jdbc; + +import java.util.Scanner; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.AbstractApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.samples.jdbc.service.UserService; + + +/** + * Starts the Spring Context and will initialize the Spring Integration routes. + * + * @author Gunnar Hillert + * @version 1.0 + * + */ +public final class Main { + + private static final Logger LOGGER = LoggerFactory.getLogger(Main.class); + + private Main() { } + + /** + * Load the Spring Integration Application Context + * + * @param args - command line arguments + */ + public static void main(final String... args) { + + LOGGER.info("\n=========================================================" + + "\n " + + "\n Welcome to Spring Integration! " + + "\n " + + "\n For more information please visit: " + + "\n http://www.springsource.org/spring-integration " + + "\n " + + "\n=========================================================" ); + + final AbstractApplicationContext context = + new ClassPathXmlApplicationContext("classpath:META-INF/spring/integration/*-context.xml"); + + context.registerShutdownHook(); + + final Scanner scanner = new Scanner(System.in); + + final UserService service = context.getBean(UserService.class); + + LOGGER.info("\n=========================================================" + + "\n " + + "\n Please press 'q + Enter' to quit the application. " + + "\n " + + "\n=========================================================" ); + + System.out.print("Please enter a string and press : "); + while (!scanner.hasNext("q")) { + + final String input = scanner.nextLine(); + final User user = service.findUser(input); + + if (user != null) { + + System.out.println( + String.format("User found - Username: '%s', Email: '%s', Password: '%s'", + user.getUsername(), user.getEmail(), user.getPassword())); + + } else { + System.out.println( + String.format("No User found for username: '%s'.", input)); + } + + System.out.print("Please enter a string and press :"); + + } + + LOGGER.info("Exiting application...bye."); + + System.exit(0); + + } +} diff --git a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/User.java b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/User.java new file mode 100644 index 00000000..2fcbd1f5 --- /dev/null +++ b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/User.java @@ -0,0 +1,38 @@ +/* + * Copyright 2002-2011 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.integration.samples.jdbc; + +public class User { + private String username; + private String password; + private String email; + + public User(String username, String password, String email) { + super(); + this.username = username; + this.password = password; + this.email = email; + } + + public String getUsername() { + return this.username; + } + + public String getPassword() { + return this.password; + } + + public String getEmail() { + return this.email; + } +} diff --git a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/UserMapper.java b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/UserMapper.java new file mode 100644 index 00000000..ce87ceb3 --- /dev/null +++ b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/UserMapper.java @@ -0,0 +1,24 @@ +/* + * Copyright 2002-2011 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.integration.samples.jdbc; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import org.springframework.jdbc.core.RowMapper; + +public class UserMapper implements RowMapper { + public User mapRow(ResultSet rs, int rowNum) throws SQLException { + return new User(rs.getString("username"), rs.getString("password"), rs.getString("email")); + } +} diff --git a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/service/UserService.java b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/service/UserService.java new file mode 100644 index 00000000..38d03fa6 --- /dev/null +++ b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/service/UserService.java @@ -0,0 +1,33 @@ +/* + * Copyright 2002-2011 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.integration.samples.jdbc.service; + +import org.springframework.integration.samples.jdbc.User; + +/** + * Provides user services. + */ +public interface UserService { + + /** + * Retrieves a user based on the provided username. + * + * @param username Find users by username + * @return The user if exists, null otherwise. + */ + User findUser(String username); + +} diff --git a/basic/jdbc/src/main/resources/META-INF/spring/integration/spring-integration-context.xml b/basic/jdbc/src/main/resources/META-INF/spring/integration/spring-integration-context.xml new file mode 100644 index 00000000..bd04abaa --- /dev/null +++ b/basic/jdbc/src/main/resources/META-INF/spring/integration/spring-integration-context.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/basic/jdbc/src/main/resources/logback.xml b/basic/jdbc/src/main/resources/logback.xml new file mode 100644 index 00000000..eee6b966 --- /dev/null +++ b/basic/jdbc/src/main/resources/logback.xml @@ -0,0 +1,24 @@ + + + + + + + %d %5p | %t | %-55logger{55} | %m %n + + + + + + + + + + + + + + + + + diff --git a/basic/jdbc/src/main/resources/setup-tables.sql b/basic/jdbc/src/main/resources/setup-tables.sql new file mode 100644 index 00000000..a57cd2a0 --- /dev/null +++ b/basic/jdbc/src/main/resources/setup-tables.sql @@ -0,0 +1,5 @@ +create table IF NOT EXISTS USERS(USERNAME varchar(100),PASSWORD varchar(100), EMAIL varchar(100)); +create table IF NOT EXISTS DUMMY(DUMMY_VALUE varchar(10)); +INSERT INTO USERS(USERNAME, PASSWORD, EMAIL) VALUES ('a', 'secret', 'spring-integration@awesome.com'); +INSERT INTO USERS(USERNAME, PASSWORD, EMAIL) VALUES ('b', 's3cr3t', 'spring@rocks.com'); +INSERT INTO USERS(USERNAME, PASSWORD, EMAIL) VALUES ('foo', 'bar', 'foo@bar.de'); \ No newline at end of file diff --git a/basic/jdbc/src/test/java/org/springframework/integration/sts/StringConversionServiceTest.java b/basic/jdbc/src/test/java/org/springframework/integration/sts/StringConversionServiceTest.java new file mode 100644 index 00000000..d20bc4f4 --- /dev/null +++ b/basic/jdbc/src/test/java/org/springframework/integration/sts/StringConversionServiceTest.java @@ -0,0 +1,59 @@ +/* + * Copyright 2002-2010 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.integration.sts; + +import static junit.framework.Assert.*; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.integration.samples.jdbc.User; +import org.springframework.integration.samples.jdbc.service.UserService; + + +/** + * Verify that the Spring Integration Application Context starts successfully. + */ +public class StringConversionServiceTest { + + @Test + public void testStartupOfSpringInegrationContext() throws Exception{ + final ApplicationContext context + = new ClassPathXmlApplicationContext("/META-INF/spring/integration/spring-integration-context.xml", + StringConversionServiceTest.class); + Thread.sleep(2000); + } + + @Test + public void testConvertStringToUpperCase() { + final ApplicationContext context + = new ClassPathXmlApplicationContext("/META-INF/spring/integration/spring-integration-context.xml", + StringConversionServiceTest.class); + + final UserService service = context.getBean(UserService.class); + + final String userNameToUse = "a"; + final String expectedResult = "I LOVE SPRING INTEGRATION"; + + final User user = service.findUser(userNameToUse); + + assertEquals("Expecting that the returned username is 'a'.", + userNameToUse, user.getUsername()); + + } + +} diff --git a/basic/pom.xml b/basic/pom.xml index 22943de9..6a0492e0 100644 --- a/basic/pom.xml +++ b/basic/pom.xml @@ -15,6 +15,7 @@ file ftp helloworld + jdbc jms jmx mail