You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/09/03 18:12:14 UTC
svn commit: r691649 - in
/servicemix/components/bindings/servicemix-jms/trunk/src:
main/java/org/apache/servicemix/jms/ test/java/org/apache/servicemix/jms/
test/resources/org/apache/servicemix/jms/
Author: gnodet
Date: Wed Sep 3 09:12:13 2008
New Revision: 691649
URL: http://svn.apache.org/viewvc?rev=691649&view=rev
Log:
SM-1362: encoding problem creating JMS TextMessage from SoapMessage
Added:
servicemix/components/bindings/servicemix-jms/trunk/src/test/resources/org/apache/servicemix/jms/charsettest.xml
Modified:
servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/DefaultJmsMarshaler.java
servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/JmsMarshaler.java
servicemix/components/bindings/servicemix-jms/trunk/src/test/java/org/apache/servicemix/jms/JmsMarshalerTest.java
Modified: servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/DefaultJmsMarshaler.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/DefaultJmsMarshaler.java?rev=691649&r1=691648&r2=691649&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/DefaultJmsMarshaler.java (original)
+++ servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/DefaultJmsMarshaler.java Wed Sep 3 09:12:13 2008
@@ -32,6 +32,7 @@
import org.apache.servicemix.soap.SoapHelper;
import org.apache.servicemix.soap.marshalers.SoapMessage;
import org.apache.servicemix.soap.marshalers.SoapWriter;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
/**
* Encapsulates the conversion to and from JMS messages
@@ -47,14 +48,14 @@
/**
* Converts an {@link Exception} into an JMS message. This method will be
- * invoked when the {@link MessageExchange} contains an error.
+ * invoked when the {@link javax.jbi.messaging.MessageExchange} contains an error.
*
* @param e
* Exception to convert
* @param session
* JMS session used to create JMS messages
* @return JMS message
- * @see MessageExchange#getError()
+ * @see javax.jbi.messaging.MessageExchange#getError()
*/
public Message toJMS(Exception e, Session session) throws Exception {
return session.createObjectMessage(e);
@@ -68,7 +69,7 @@
* @param session JMS session used to create JMS messages
* @return JMS version of the specified source SOAP message
* @throws Exception if an IO error occurs
- * @throws JMSException if a JMS error occurs
+ * @throws javax.jms.JMSException if a JMS error occurs
*/
protected Message toJMS(SoapMessage message, Session session) throws Exception {
SoapHelper soapHelper = new SoapHelper(endpoint);
@@ -80,7 +81,7 @@
// create text message
TextMessage msg = session.createTextMessage();
- msg.setText(baos.toString());
+ msg.setText(baos.toString(SourceTransformer.getDefaultCharset()));
// overwrite whatever content-type was passed on to us with the one
// the SoapWriter constructed
@@ -130,7 +131,7 @@
* @throws Exception
* if JMS message is an ObjectMessage containing an Exception
* (the containing exception is thrown.)
- * @throws JMSException
+ * @throws javax.jms.JMSException
* if a JMS problem occurs
* @throws UnsupportedOperationException
* if the JMS message is an ObjectMessage which contains
Modified: servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/JmsMarshaler.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/JmsMarshaler.java?rev=691649&r1=691648&r2=691649&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/JmsMarshaler.java (original)
+++ servicemix/components/bindings/servicemix-jms/trunk/src/main/java/org/apache/servicemix/jms/JmsMarshaler.java Wed Sep 3 09:12:13 2008
@@ -29,8 +29,7 @@
* Marshalls the JMS message into an XML/SOAP message
*
* @param src Message to marshall
- * @param soapHelper
- * @throws Exception
+ * @throws Exception
*/
SoapMessage toSOAP(Message src) throws Exception;
@@ -39,8 +38,8 @@
*
* @param message Message to unmarshall
* @param session Used to create the JMS message
- * @throws MessagingException
- * @throws JMSException
+ * @throws javax.jbi.messaging.MessagingException
+ * @throws javax.jms.JMSException
*/
Message toJMS(SoapMessage message, Map headers, Session session) throws Exception;
Modified: servicemix/components/bindings/servicemix-jms/trunk/src/test/java/org/apache/servicemix/jms/JmsMarshalerTest.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-jms/trunk/src/test/java/org/apache/servicemix/jms/JmsMarshalerTest.java?rev=691649&r1=691648&r2=691649&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-jms/trunk/src/test/java/org/apache/servicemix/jms/JmsMarshalerTest.java (original)
+++ servicemix/components/bindings/servicemix-jms/trunk/src/test/java/org/apache/servicemix/jms/JmsMarshalerTest.java Wed Sep 3 09:12:13 2008
@@ -17,6 +17,7 @@
package org.apache.servicemix.jms;
import java.util.List;
+import java.nio.charset.Charset;
import javax.jbi.messaging.MessageExchange;
import javax.jbi.messaging.NormalizedMessage;
@@ -36,6 +37,8 @@
import org.apache.servicemix.jbi.container.JBIContainer;
import org.apache.servicemix.jbi.jaxp.SourceTransformer;
import org.apache.servicemix.tck.ReceiverComponent;
+import org.apache.servicemix.soap.marshalers.SoapMarshaler;
+import org.apache.servicemix.soap.marshalers.SoapMessage;
import org.springframework.core.io.ClassPathResource;
public class JmsMarshalerTest extends TestCase {
@@ -104,6 +107,42 @@
// Wait for DONE status
Thread.sleep(50);
}
+
+ public void testEncoding() throws Exception {
+ JmsEndpoint ep = new JmsEndpoint();
+ ep.setService(ReceiverComponent.SERVICE);
+ ep.setEndpoint("jms");
+ ep.setTargetService(ReceiverComponent.SERVICE);
+ ep.setTargetEndpoint(ReceiverComponent.ENDPOINT);
+ ep.setRole(MessageExchange.Role.CONSUMER);
+ ep.setDestinationStyle(AbstractJmsProcessor.STYLE_QUEUE);
+ ep.setDestination(queue);
+ ep.setDefaultMep(JbiConstants.IN_ONLY);
+ ep.setMarshaler(new DefaultJmsMarshaler(ep));
+
+ QueueConnection qConn = connectionFactory.createQueueConnection();
+ QueueSession qSess = qConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ // Test character encoding.
+ String defaultCharset = SourceTransformer.getDefaultCharset();
+ try {
+ SourceTransformer.setDefaultCharset("ISO-8859-1");
+
+ SourceTransformer sourceTransformer = new SourceTransformer();
+ SoapMarshaler marshaler = new SoapMarshaler(true);
+ SoapMessage soapMessage = marshaler.createReader().read(getClass().getResourceAsStream("charsettest.xml"));
+ soapMessage.setHeaders(null);
+ soapMessage.setBodyName(null);
+ soapMessage.setEnvelopeName(null);
+
+ soapMessage.setSource(sourceTransformer.toDOMSource(soapMessage.getSource()));
+ TextMessage m = (TextMessage) ep.getMarshaler().toJMS(soapMessage, null, qSess);
+
+ assertEquals("Messages match", new SourceTransformer().toString(soapMessage.getSource()), m.getText().replace('\'', '"'));
+ } finally {
+ SourceTransformer.setDefaultCharset(defaultCharset);
+ }
+ }
}
Added: servicemix/components/bindings/servicemix-jms/trunk/src/test/resources/org/apache/servicemix/jms/charsettest.xml
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-jms/trunk/src/test/resources/org/apache/servicemix/jms/charsettest.xml?rev=691649&view=auto
==============================================================================
--- servicemix/components/bindings/servicemix-jms/trunk/src/test/resources/org/apache/servicemix/jms/charsettest.xml (added)
+++ servicemix/components/bindings/servicemix-jms/trunk/src/test/resources/org/apache/servicemix/jms/charsettest.xml Wed Sep 3 09:12:13 2008
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+
+-->
+<e:Envelope xmlns:e="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:wsa="http://schemas.xmlsoap.org/soap/envelope/">
+ <e:Header>
+ <wsa:To>http://test/MyServiceConsumer/</wsa:To>
+ </e:Header>
+ <e:Body>
+ <ping><pingRequest><message xmlns="http://soap">german umlauts: ä ö ü</message></pingRequest></ping>
+ </e:Body>
+</e:Envelope>
\ No newline at end of file