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)); + } + } +}