diff --git a/basic/jdbc/README.md b/basic/jdbc/README.md
index e6c5bec1..6561f77c 100644
--- a/basic/jdbc/README.md
+++ b/basic/jdbc/README.md
@@ -20,6 +20,36 @@ Currently one example exists. On the command prompt you can enter the following
* 'b'
* 'foo'
+#Sample "Person Outbound Gateway"
+
+We use the outbound gateway to insert records in a Person table based on the values contained
+in the message payload that is received over the channel to the adapter.
+
+The following are used to configure the gateway
+* The request and reply channels
+* The data source for the database
+* The the update/insert statement to be executed.
+* Optional request SQL Parameter source factory
+* The select query to be executed after the insert is done
+* Optional reply SQL Parameter source factory
+* RowMapper if you intend to map the ResultSet to your custom object
+
+The following sequence of events happen when we invoke the createPerson method on the gateway
+* The parameter of type Person is sent as a payload of a message over the reply-channel
+* The outbound gateway reads this message and extracts the payload
+* It then executes the given insert statement, the values to be inserted are derived from the payload
+ request-sql-parameter-source-factory provided is used to generate a parameter source.
+* Since we expect an identity column to be generated, keys-generated is set to true
+* The result of the insert is then use to create a reply sql parameter source,
+ the factory reply-sql-parameter-source-factory generates the required parameter source
+* The select query provided is executed
+* The ResultMapper is used to convert this ResultSet to a Person object
+* The Person object is then sent as a payload of the Message over the reply channel.
+* The Person payload is extracted from the Message and returned to the calling application.
+
+For executing the program and see the results, execute the junit test case
+org.springframework.integration.samples.jdbc.OutboundGatewayTest
+
# Resources
For help please take a look at the Spring Integration documentation:
diff --git a/basic/jdbc/README.txt b/basic/jdbc/README.txt
deleted file mode 100644
index 436bd1e8..00000000
--- a/basic/jdbc/README.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-The project contains sample JDBC adapters using Spring integration
-JDBC Adapters are used to connectthe database systems from Spring integration application
-
-
-###########################Setting up derby###########################
-
-If you intend to use some other database, skip this section and goto outbound channel adapters section
-
-1. Goto http://db.apache.org/derby/derby_downloads.html and download the latest version of derby DB.
-When this sample was developed 10.8.2.2 was the latest version. If you however choose to use
-a newer or older version, update the property value for property "derbyclient.driver.version" in pom.xml
-to the right version you are using.
-
-2. Extract the downloaded jar file
-
-3. Go to folder bin in the extracted derby folder and execute startNetworkServer (.bat for windows)
-This should start the Derby server. By default it starts listening on port 1527
-
-4. The simple in built client "ij" can be used to create the required table in derby.
-
-5. Execute ij (.bat for windows)
-
-6. run the command "connect 'jdbc:derby://localhost:1527/TestDatabase;create=true';" for first time
-subequently use "connect 'jdbc:derby://localhost:1527/TestDatabase';"
-
-7. Execute the create table script from the file Person_Derby.sql
-
-The above steps should setup derby for use.
-You can use ij to execute the select commands to query the table data.
-
-
-We have the following examples in this particular Project
-
-###########################Outbound Channel Adapter######################################
-
-This adapter is used to insert/update records in a table based on the values contained
-in the message payload that is received over the channel to the adapter.
-
-The following are necessary for configuring the adapter
-1. The datasource or the JDBC template
-2. The the update/insert query to be executed.
-3. Optional SQL Parameter source factory
-
-In our config file "jdbcOutboundAdapterConfig.xml", we have defined an outbound-channel-adapter
-for the datasource of derby database. Some instructions given to setup derby database.
-You are free to use any other databae, however you need to appropriately change the datasource
-details defined in the config
-
-The adapter does the following.
-1. It creates a message with payload of type org.springframework.integration.samples.jdbc.Person
-2. This message is sent over the channel outboundJdbcChannelOne.
-3. Messages over this channel are delivered to the outbound-channel-adapter to execute the given insert.
-4. The provided org.springframework.integration.jdbc.ExpressionEvaluatingSqlParameterSourceFactory
-is used to get an instance of org.springframework.jdbc.core.namedparam.SqlParameterSource. That is
-used to resolve the given named parameter to the value. In our case the SpEL is executed to yield
-a value that will be inserted. See the config for more details.
-
-For executing the program and see the results, execute the junit test case
-org.springframework.integration.samples.jdbc.OutboundChannelAdapterTest
-
-Query the database for table Person to see the result.
-
diff --git a/basic/jdbc/pom.xml b/basic/jdbc/pom.xml
index bd571995..976b160b 100644
--- a/basic/jdbc/pom.xml
+++ b/basic/jdbc/pom.xml
@@ -15,8 +15,6 @@
2.1.0.M3
1.6.1
4.7
- 3.0.6.RELEASE
- 10.8.2.2
@@ -125,20 +123,7 @@
com.h2database
h2
1.3.160
-
-
-
-
- org.apache.derby
- derbyclient
- ${derbyclient.driver.version}
-
+
-
-
- org.springframework
- spring-test
- ${spring.test.version}
-
\ No newline at end of file
diff --git a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Gender.java b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Gender.java
index 6d8a751a..24a2f65a 100644
--- a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Gender.java
+++ b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Gender.java
@@ -15,6 +15,10 @@
*/
package org.springframework.integration.samples.jdbc;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Represents the gender of the person
* @author Amol Nayak
@@ -23,6 +27,7 @@ package org.springframework.integration.samples.jdbc;
public enum Gender {
MALE("M"),FEMALE("F");
+ private static Map map;
private String identifier;
@@ -33,4 +38,15 @@ public enum Gender {
public String getIdentifier() {
return identifier;
}
+
+ public static Gender getGenderByIdentifier(String identifier) {
+ return map.get(identifier);
+ }
+
+ static {
+ map = new HashMap();
+ for(Gender gender:EnumSet.allOf(Gender.class)) {
+ map.put(gender.getIdentifier(), gender);
+ }
+ }
}
diff --git a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Person.java b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Person.java
index 52bd2b97..b6781e36 100644
--- a/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Person.java
+++ b/basic/jdbc/src/main/java/org/springframework/integration/samples/jdbc/Person.java
@@ -24,11 +24,28 @@ import java.util.Date;
*/
public class Person {
+ private int personId;
private String name;
private Gender gender;
private Date dateOfBirth;
+
+ /**
+ * Sets the person id
+ * @return
+ */
+ public int getPersonId() {
+ return personId;
+ }
+ /**
+ * Get the person Id
+ * @param personId
+ */
+ public void setPersonId(int personId) {
+ this.personId = personId;
+ }
+
/**
* Gets the name of the person
* @return
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
index bd04abaa..5c9e0f98 100644
--- 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
@@ -13,7 +13,7 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/basic/jdbc/src/main/resources/Person_Derby.sql b/basic/jdbc/src/main/resources/Person_Derby.sql
deleted file mode 100644
index 2d0d6cb7..00000000
--- a/basic/jdbc/src/main/resources/Person_Derby.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-create table Person (
- id integer primary key not null generated always as identity (start with 1, increment by 1),
- name varchar(100) not null,
- gender varchar(1) not null,
- dateOfBirth date
-);
\ No newline at end of file
diff --git a/basic/jdbc/src/main/resources/setup-tables.sql b/basic/jdbc/src/main/resources/setup-tables.sql
index a57cd2a0..dee1726a 100644
--- a/basic/jdbc/src/main/resources/setup-tables.sql
+++ b/basic/jdbc/src/main/resources/setup-tables.sql
@@ -1,5 +1,6 @@
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));
+create table IF NOT EXISTS Person(id integer identity primary key , name varchar(100), gender varchar(1), dateOfBirth date);
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/samples/jdbc/OutboundChannelAdapterTest.java b/basic/jdbc/src/test/java/org/springframework/integration/samples/jdbc/OutboundChannelAdapterTest.java
deleted file mode 100644
index eb9b8987..00000000
--- a/basic/jdbc/src/test/java/org/springframework/integration/samples/jdbc/OutboundChannelAdapterTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.util.Calendar;
-
-import org.apache.log4j.Logger;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.integration.Message;
-import org.springframework.integration.MessageChannel;
-import org.springframework.integration.support.MessageBuilder;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-/**
- * The test class for jdbc outbound channel adapter
- * @author Amol Nayak
- *
- */
-@ContextConfiguration("classpath:jdbcOutboundAdapterConfig.xml")
-@RunWith(SpringJUnit4ClassRunner.class)
-public class OutboundChannelAdapterTest {
-
- private Logger logger = Logger.getLogger(OutboundChannelAdapterTest.class);
- @Autowired
- @Qualifier("outboundJdbcChannelOne")
- private MessageChannel channel;
-
- @Test
- public void insertPersonRecord() {
-
- logger.info("Creating person Instance");
- Person person = new Person();
- Calendar dateOfBirth = Calendar.getInstance();
- dateOfBirth.set(1980, 0, 1);
- person.setDateOfBirth(dateOfBirth.getTime());
- person.setName("Name Of The Person");
- person.setGender(Gender.MALE);
- Message message = MessageBuilder.withPayload(person).build();
- channel.send(message);
- logger.info("Sent person Instance");
-
- }
-
-}
diff --git a/basic/jdbc/src/test/resources/jdbcOutboundAdapterConfig.xml b/basic/jdbc/src/test/resources/jdbcOutboundAdapterConfig.xml
deleted file mode 100644
index d84826fa..00000000
--- a/basic/jdbc/src/test/resources/jdbcOutboundAdapterConfig.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/basic/jdbc/src/test/resources/log4j.properties b/basic/jdbc/src/test/resources/log4j.properties
deleted file mode 100644
index 7aa7d540..00000000
--- a/basic/jdbc/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-log4j.rootCategory=DEBUG, stdout
-
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %t %c{2}:%L - %m%n
-
-
-log4j.category.org.springframework=DEBUG