You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by cm...@apache.org on 2012/04/15 13:34:26 UTC
svn commit: r1326314 - in
/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel:
converter/jaxb/JaxbDataFormatMultipleNamespacesTest.java
example/Address.java example/Order.java
Author: cmueller
Date: Sun Apr 15 11:34:26 2012
New Revision: 1326314
URL: http://svn.apache.org/viewvc?rev=1326314&view=rev
Log:
added unit test for user forum issue
Added:
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatMultipleNamespacesTest.java
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Address.java
camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Order.java
Added: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatMultipleNamespacesTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatMultipleNamespacesTest.java?rev=1326314&view=auto
==============================================================================
--- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatMultipleNamespacesTest.java (added)
+++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/JaxbDataFormatMultipleNamespacesTest.java Sun Apr 15 11:34:26 2012
@@ -0,0 +1,103 @@
+/**
+ * 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.
+ */
+package org.apache.camel.converter.jaxb;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.example.Address;
+import org.apache.camel.example.Order;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.stream.XMLStreamException;
+
+public class JaxbDataFormatMultipleNamespacesTest extends CamelTestSupport {
+
+ @EndpointInject(uri = "mock:marshall")
+ private MockEndpoint mockMarshall;
+
+ @EndpointInject(uri = "mock:unmarshall")
+ private MockEndpoint mockUnmarshall;
+
+ @Test
+ public void testMarshallMultipleNamespaces() throws Exception {
+ mockMarshall.expectedMessageCount(1);
+
+ Order order = new Order();
+ order.setId("1");
+ Address address = new Address();
+ address.setStreet("Main Street");
+ address.setStreetNumber("3a");
+ address.setZip("65843");
+ address.setCity("Sulzbach");
+ order.setAddress(address);
+ template.sendBody("direct:marshall", order);
+
+ assertMockEndpointsSatisfied();
+
+ String payload = mockMarshall.getExchanges().get(0).getIn().getBody(String.class);
+ assertTrue(payload.startsWith("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"));
+ assertTrue(payload.contains("id>1</"));
+ assertTrue(payload.contains("street>Main Street</"));
+ assertTrue(payload.contains("streetNumber>3a</"));
+ assertTrue(payload.contains("zip>65843</"));
+ assertTrue(payload.contains("city>Sulzbach</"));
+ assertTrue(payload.contains("order>"));
+ }
+
+ @Test
+ public void testUnarshallMultipleNamespaces() throws Exception {
+ mockUnmarshall.expectedMessageCount(1);
+
+ String payload = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><ns1:order xmlns:ns2=\"http://www.camel.apache.org/jaxb/example/address/1\" xmlns:ns1=\"http://www.camel.apache.org/jaxb/example/order/1\"><ns1:id>1</ns1:id><ns2:address><ns2:street>Main Street</ns2:street><ns2:streetNumber>3a</ns2:streetNumber><ns2:zip>65843</ns2:zip><ns2:city>Sulzbach</ns2:city></ns2:address></ns1:order>";
+ template.sendBody("direct:unmarshall", payload);
+
+ assertMockEndpointsSatisfied();
+
+ Order order = (Order) mockUnmarshall.getExchanges().get(0).getIn().getBody();
+ Address address = order.getAddress();
+ assertEquals("1", order.getId());
+ assertEquals("Main Street", address.getStreet());
+ assertEquals("3a", address.getStreetNumber());
+ assertEquals("65843", address.getZip());
+ assertEquals("Sulzbach", address.getCity());
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ JaxbDataFormat jaxbDataFormat = new JaxbDataFormat(JAXBContext.newInstance(Order.class, Address.class));
+
+ from("direct:marshall")
+ .marshal(jaxbDataFormat)
+ .to("mock:marshall");
+
+ from("direct:unmarshall")
+ .unmarshal(jaxbDataFormat)
+ .to("mock:unmarshall");
+ }
+ };
+ }
+}
Added: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Address.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Address.java?rev=1326314&view=auto
==============================================================================
--- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Address.java (added)
+++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Address.java Sun Apr 15 11:34:26 2012
@@ -0,0 +1,68 @@
+/**
+ * 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.
+ */
+package org.apache.camel.example;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Address")
+public class Address {
+
+ @XmlElement(namespace = "http://www.camel.apache.org/jaxb/example/address/1")
+ private String street;
+ @XmlElement(namespace = "http://www.camel.apache.org/jaxb/example/address/1")
+ private String streetNumber;
+ @XmlElement(namespace = "http://www.camel.apache.org/jaxb/example/address/1")
+ private String zip;
+ @XmlElement(namespace = "http://www.camel.apache.org/jaxb/example/address/1")
+ private String city;
+
+ public String getStreet() {
+ return street;
+ }
+
+ public String getStreetNumber() {
+ return streetNumber;
+ }
+
+ public String getZip() {
+ return zip;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setStreet(String street) {
+ this.street = street;
+ }
+
+ public void setStreetNumber(String streetNumber) {
+ this.streetNumber = streetNumber;
+ }
+
+ public void setZip(String zip) {
+ this.zip = zip;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+}
Added: camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Order.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Order.java?rev=1326314&view=auto
==============================================================================
--- camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Order.java (added)
+++ camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/Order.java Sun Apr 15 11:34:26 2012
@@ -0,0 +1,50 @@
+/**
+ * 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.
+ */
+package org.apache.camel.example;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(namespace = "http://www.camel.apache.org/jaxb/example/order/1")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class Order {
+
+ @XmlElement(namespace = "http://www.camel.apache.org/jaxb/example/order/1")
+ private String id;
+
+ @XmlElement(namespace = "http://www.camel.apache.org/jaxb/example/address/1")
+ private Address address;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public Address getAddress() {
+ return address;
+ }
+
+ public void setAddress(Address address) {
+ this.address = address;
+ }
+}