diff --git a/spring-integration-jms/.project b/spring-integration-jms/.project
index 807512b126..bd5b3e8d4b 100644
--- a/spring-integration-jms/.project
+++ b/spring-integration-jms/.project
@@ -15,8 +15,14 @@
+
+ org.springframework.ide.eclipse.core.springbuilder
+
+
+
+ org.springframework.ide.eclipse.core.springnature
org.maven.ide.eclipse.maven2Nature
org.eclipse.jdt.core.javanature
diff --git a/spring-integration-jms/pom.xml b/spring-integration-jms/pom.xml
index 11d726e001..94ae743e5f 100644
--- a/spring-integration-jms/pom.xml
+++ b/spring-integration-jms/pom.xml
@@ -31,6 +31,10 @@
spring-integration-core
+
+ org.springframework
+ spring-oxm
+
junit
junit
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundGatewayParserTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundGatewayParserTests.java
index bc85813b62..84f5ab7f88 100644
--- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundGatewayParserTests.java
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsOutboundGatewayParserTests.java
@@ -66,6 +66,7 @@ public class JmsOutboundGatewayParserTests {
assertEquals("HELLO", result);
}
+
public static interface SampleGateway{
public String echo(String value);
}
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsWithMarshallingMessageConverterTests-context.xml b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsWithMarshallingMessageConverterTests-context.xml
new file mode 100644
index 0000000000..d4770b4394
--- /dev/null
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsWithMarshallingMessageConverterTests-context.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsWithMarshallingMessageConverterTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsWithMarshallingMessageConverterTests.java
new file mode 100644
index 0000000000..1691c5e111
--- /dev/null
+++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsWithMarshallingMessageConverterTests.java
@@ -0,0 +1,93 @@
+/*
+ * 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.jms.config;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.integration.channel.PollableChannel;
+import org.springframework.integration.core.Message;
+import org.springframework.integration.core.MessageChannel;
+import org.springframework.integration.message.StringMessage;
+import org.springframework.oxm.Marshaller;
+import org.springframework.oxm.Unmarshaller;
+import org.springframework.oxm.XmlMappingException;
+
+
+/**
+ * @author Oleg Zhurakousky
+ *
+ */
+public class JmsWithMarshallingMessageConverterTests {
+
+
+ @Test
+ public void demoWithMarshallingConverter(){
+ ActiveMqTestUtils.prepare();
+ ApplicationContext ac = new ClassPathXmlApplicationContext("JmsWithMarshallingMessageConverterTests-context.xml", JmsWithMarshallingMessageConverterTests.class);
+ MessageChannel input = ac.getBean("outbound-gateway-channel", MessageChannel.class);
+ PollableChannel output = ac.getBean("output", PollableChannel.class);
+
+ input.send(new StringMessage("hello"));
+ Message replyMessage = (Message) output.receive();
+ System.out.println("Message: " + replyMessage);
+ }
+
+ public static class SampleService{
+ public String echo(String value){
+ return value.toUpperCase();
+ }
+ }
+
+ public static class SampleMarshaller implements Marshaller{
+ public void marshal(Object graph, Result result) throws IOException,
+ XmlMappingException {
+ String payload = null;
+ if (graph instanceof Message>){
+ payload = (String) ((Message>)graph).getPayload();
+ } else {
+ payload = (String) graph;
+ }
+ ((StreamResult)result).getOutputStream().write(payload.getBytes());
+
+ }
+ public boolean supports(Class> clazz) {
+ return true;
+ }
+ }
+
+ public static class SampleUnmarshaller implements Unmarshaller{
+ public boolean supports(Class> clazz) {
+ return true;
+ }
+ public Object unmarshal(Source source) throws IOException,
+ XmlMappingException {
+
+ InputStream io = ((StreamSource)source).getInputStream();
+ byte[] bytes = new byte[io.available()];
+ io.read(bytes);
+ return new StringMessage(new String(bytes));
+ }
+ }
+}