You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2013/01/09 09:06:04 UTC
svn commit: r1430724 - in /camel/trunk/components/camel-hl7/src:
main/java/org/apache/camel/component/hl7/HL7DataFormat.java
test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java
Author: ningjiang
Date: Wed Jan 9 08:06:04 2013
New Revision: 1430724
URL: http://svn.apache.org/viewvc?rev=1430724&view=rev
Log:
CAMEL-5943 Applied the patch with thanks to Andrea
Modified:
camel/trunk/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java
camel/trunk/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java
Modified: camel/trunk/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java?rev=1430724&r1=1430723&r2=1430724&view=diff
==============================================================================
--- camel/trunk/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java (original)
+++ camel/trunk/components/camel-hl7/src/main/java/org/apache/camel/component/hl7/HL7DataFormat.java Wed Jan 9 08:06:04 2013
@@ -30,6 +30,7 @@ import ca.uhn.hl7v2.validation.impl.NoVa
import org.apache.camel.Exchange;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.util.IOHelper;
import static org.apache.camel.component.hl7.HL7Constants.HL7_MESSAGE_CONTROL;
import static org.apache.camel.component.hl7.HL7Constants.HL7_MESSAGE_TYPE;
@@ -100,7 +101,8 @@ public class HL7DataFormat implements Da
public void marshal(Exchange exchange, Object body, OutputStream outputStream) throws Exception {
Message message = ExchangeHelper.convertToMandatoryType(exchange, Message.class, body);
String encoded = HL7Converter.encode(message, parser);
- outputStream.write(encoded.getBytes());
+ String charsetName = IOHelper.getCharsetName(exchange);
+ outputStream.write(encoded.getBytes(charsetName));
}
public Object unmarshal(Exchange exchange, InputStream inputStream) throws Exception {
Modified: camel/trunk/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java?rev=1430724&r1=1430723&r2=1430724&view=diff
==============================================================================
--- camel/trunk/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java (original)
+++ camel/trunk/components/camel-hl7/src/test/java/org/apache/camel/component/hl7/HL7DataFormatTest.java Wed Jan 9 08:06:04 2013
@@ -21,7 +21,7 @@ import ca.uhn.hl7v2.model.v24.message.AD
import ca.uhn.hl7v2.model.v24.segment.MSA;
import ca.uhn.hl7v2.model.v24.segment.MSH;
import ca.uhn.hl7v2.model.v24.segment.QRD;
-
+import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
@@ -31,7 +31,9 @@ import org.junit.Test;
* Unit test for HL7 DataFormat.
*/
public class HL7DataFormatTest extends CamelTestSupport {
-
+ private static final String NONE_ISO_8859_1 =
+ "\u221a\u00c4\u221a\u00e0\u221a\u00e5\u221a\u00ed\u221a\u00f4\u2248\u00ea";
+
@Test
public void testMarshal() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:marshal");
@@ -45,6 +47,32 @@ public class HL7DataFormatTest extends C
assertMockEndpointsSatisfied();
}
+
+ @Test
+ public void testMarshalISO8859() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:marshal");
+ mock.expectedMessageCount(1);
+ mock.message(0).body().isInstanceOf(byte[].class);
+ mock.message(0).body(String.class).contains("MSA|AA|123");
+ mock.message(0).body(String.class).contains("QRD|20080805120000");
+ mock.message(0).body(String.class).not().contains(NONE_ISO_8859_1);
+ Message message = createHL7AsMessage();
+ template.sendBodyAndProperty("direct:marshal", message, Exchange.CHARSET_NAME, "ISO-8859-1");
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testMarshalUTF8() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:marshal");
+ mock.expectedMessageCount(1);
+ mock.message(0).body().isInstanceOf(byte[].class);
+ mock.message(0).body(String.class).contains("MSA|AA|123");
+ mock.message(0).body(String.class).contains("QRD|20080805120000");
+ mock.message(0).body(String.class).contains(NONE_ISO_8859_1);
+ Message message = createHL7AsMessage();
+ template.sendBodyAndProperty("direct:marshal", message, Exchange.CHARSET_NAME, "UTF-8");
+ assertMockEndpointsSatisfied();
+ }
@Test
public void testUnmarshal() throws Exception {
@@ -98,7 +126,7 @@ public class HL7DataFormatTest extends C
private static Message createHL7AsMessage() throws Exception {
ADR_A19 adr = new ADR_A19();
-
+
// Populate the MSH Segment
MSH mshSegment = adr.getMSH();
mshSegment.getFieldSeparator().setValue("|");
@@ -113,6 +141,7 @@ public class HL7DataFormatTest extends C
MSA msa = adr.getMSA();
msa.getAcknowledgementCode().setValue("AA");
msa.getMessageControlID().setValue("123");
+ msa.getMsa3_TextMessage().setValue(NONE_ISO_8859_1);
QRD qrd = adr.getQRD();
qrd.getQueryDateTime().getTimeOfAnEvent().setValue("20080805120000");