You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/08/19 16:41:41 UTC

svn commit: r567411 - in /activemq/camel/trunk: camel-core/src/test/java/org/apache/camel/ camel-core/src/test/java/org/apache/camel/processor/ components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ components/camel-jaxb/src/main/resource...

Author: jstrachan
Date: Sun Aug 19 07:41:39 2007
New Revision: 567411

URL: http://svn.apache.org/viewvc?view=rev&rev=567411
Log:
added a JAXB marshalling support for Camel messages

Added:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/ExchangeTestSupport.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ExchangeType.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/HeaderType.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/IntegerHeader.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/LongHeader.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ObjectHeader.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/PropertyType.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/StringHeader.java   (with props)
    activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/
    activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/
    activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/
    activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/
    activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/jaxb/
    activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/jaxb/jaxb.index
    activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/MessageTypeTest.java   (with props)
Removed:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/BeanWithExpressionInjectionTest.java
Modified:
    activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
    activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConverter.java

Added: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/ExchangeTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/ExchangeTestSupport.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/ExchangeTestSupport.java (added)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/ExchangeTestSupport.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,56 @@
+/**
+ *
+ * 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;
+
+import org.apache.camel.impl.DefaultExchange;
+
+/**
+ * A base class for a test which requires a {@link CamelContext} and
+ * a populated {@link Exchange}
+ *
+ * @version $Revision: 1.1 $
+ */
+public class ExchangeTestSupport extends ContextTestSupport {
+    protected Exchange exchange;
+
+    /**
+     * A factory method to create an Exchange implementation
+     */
+    protected Exchange createExchange() {
+        return new DefaultExchange(context);
+    }
+
+    /**
+     * A strategy method to populate an exchange with some example values for use
+     * by language plugins
+     */
+    protected void populateExchange(Exchange exchange) {
+        Message in = exchange.getIn();
+        in.setHeader("foo", "abc");
+        in.setHeader("bar", 123);
+        in.setBody("<hello id='m123'>world!</hello>");
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        exchange = createExchange();
+        assertNotNull("No exchange created!", exchange);
+        populateExchange(exchange);
+    }
+}

Propchange: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/ExchangeTestSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java?view=diff&rev=567411&r1=567410&r2=567411
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/LanguageTestSupport.java Sun Aug 19 07:41:39 2007
@@ -22,9 +22,7 @@
  * A useful base class for testing the language plugins in Camel
  * @version $Revision: $
  */
-public abstract class LanguageTestSupport extends ContextTestSupport {
-    protected Exchange exchange;
-
+public abstract class LanguageTestSupport extends ExchangeTestSupport {
     protected abstract String getLanguageName();
 
 
@@ -61,32 +59,5 @@
      */
     protected void assertExpression(String expressionText, Object expectedValue) {
         assertExpression(exchange, expressionText, expectedValue);
-    }
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        exchange = createExchange();
-        assertNotNull("No exchange created!", exchange);
-        populateExchange(exchange);
-    }
-
-    /**
-     * A factory method to create an Exchange implementation
-     */
-    protected Exchange createExchange() {
-        return new DefaultExchange(context);
-    }
-
-
-    /**
-     * A strategy method to populate an exchange with some example values for use
-     * by language plugins
-     */
-    protected void populateExchange(Exchange exchange) {
-        Message in = exchange.getIn();
-        in.setHeader("foo", "abc");
-        in.setHeader("bar", 123);
-        in.setBody("<hello id='m123'>world!</hello>");
     }
 }

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ExchangeType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ExchangeType.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ExchangeType.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ExchangeType.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,53 @@
+/*
+ * 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 javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @version $Revision: $
+ */
+@XmlRootElement(name = "exchange")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class ExchangeType {
+    @XmlElement(name = "property", required = false)
+    List<PropertyType> properties = new ArrayList<PropertyType>();
+    @XmlAnyElement(lax = true)
+    private Object body;
+
+    public Object getBody() {
+        return body;
+    }
+
+    public void setBody(Object body) {
+        this.body = body;
+    }
+
+    public List<PropertyType> getProperties() {
+        return properties;
+    }
+
+    public void setProperties(List<PropertyType> properties) {
+        this.properties = properties;
+    }
+}
\ No newline at end of file

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ExchangeType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java?view=diff&rev=567411&r1=567410&r2=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java (original)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/FallbackTypeConverter.java Sun Aug 19 07:41:39 2007
@@ -16,24 +16,23 @@
  */
 package org.apache.camel.converter.jaxb;
 
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.TypeConverter;
+import org.apache.camel.spi.TypeConverterAware;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.util.JAXBSource;
 import javax.xml.transform.Source;
-
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.TypeConverter;
-import org.apache.camel.spi.TypeConverterAware;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
 
 /**
  * @version $Revision: 1.1 $
@@ -66,7 +65,8 @@
                 }
             }
             return null;
-        } catch (JAXBException e) {
+        }
+        catch (JAXBException e) {
             throw new RuntimeCamelException(e);
         }
     }
@@ -102,14 +102,14 @@
             }
         }
         if (value instanceof String) {
-            value = new StringReader((String)value);
+            value = new StringReader((String) value);
         }
         if (value instanceof InputStream) {
-            Object unmarshalled = unmarshaller.unmarshal((InputStream)value);
+            Object unmarshalled = unmarshaller.unmarshal((InputStream) value);
             return type.cast(unmarshalled);
         }
         if (value instanceof Reader) {
-            Object unmarshalled = unmarshaller.unmarshal((Reader)value);
+            Object unmarshalled = unmarshaller.unmarshal((Reader) value);
             return type.cast(unmarshalled);
         }
         return null;

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/HeaderType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/HeaderType.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/HeaderType.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/HeaderType.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,56 @@
+/**
+ *
+ * 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.Message;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Represents a JAXB2 representation of a Camel {@link Message} header
+ *
+ * @version $Revision: 1.1 $
+ */
+@XmlType(name = "headerType")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public abstract class HeaderType {
+    @XmlAttribute
+    private String name;
+
+    public HeaderType() {
+    }
+
+    protected HeaderType(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public abstract Object getValue();
+
+    public abstract void setValue(Object value);
+}
\ No newline at end of file

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/HeaderType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/IntegerHeader.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/IntegerHeader.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/IntegerHeader.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/IntegerHeader.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,63 @@
+/**
+ *
+ * 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 javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAccessType;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+@XmlRootElement(name = "intHeader")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class IntegerHeader extends HeaderType {
+    @XmlAttribute(name = "value")
+    private Integer number;
+
+    public IntegerHeader() {
+    }
+
+    public IntegerHeader(String name, Integer number) {
+        super(name);
+        this.number = number;
+    }
+
+    public Integer getNumber() {
+        return number;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Object getValue() {
+        return getNumber();
+    }
+
+    public void setValue(Object value) {
+        if (value instanceof Number) {
+            Number n = (Number) value;
+            setNumber(n.intValue());
+        }
+        else {
+            throw new IllegalArgumentException("Value must be an Integer");
+        }
+    }
+}
\ No newline at end of file

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/IntegerHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConverter.java?view=diff&rev=567411&r1=567410&r2=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConverter.java (original)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/JaxbConverter.java Sun Aug 19 07:41:39 2007
@@ -16,6 +16,13 @@
  */
 package org.apache.camel.converter.jaxb;
 
+import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.converter.HasAnnotation;
+import org.apache.camel.converter.jaxp.XmlConverter;
+import org.w3c.dom.Document;
+
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
@@ -23,11 +30,6 @@
 import javax.xml.bind.util.JAXBSource;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.w3c.dom.Document;
-
-import org.apache.camel.converter.HasAnnotation;
-import org.apache.camel.converter.jaxp.XmlConverter;
-
 /**
  * @version $Revision$
  */
@@ -45,12 +47,15 @@
         this.jaxbConverter = jaxbConverter;
     }
 
+    @Converter
     public static JAXBSource toSource(@HasAnnotation(XmlRootElement.class)Object value) throws JAXBException {
         JAXBContext context = createJaxbContext(value);
         return new JAXBSource(context, value);
     }
 
-    public Document toDocument(@HasAnnotation(XmlRootElement.class)Object value) throws JAXBException, ParserConfigurationException {
+    @Converter
+    public Document toDocument(
+            @HasAnnotation(XmlRootElement.class)Object value) throws JAXBException, ParserConfigurationException {
         JAXBContext context = createJaxbContext(value);
         Marshaller marshaller = context.createMarshaller();
 
@@ -59,6 +64,18 @@
         return doc;
     }
 
+    @Converter
+    public static MessageType toMessageType(Exchange exchange) {
+        return toMessageType(exchange.getIn());
+    }
+
+    @Converter
+    public static MessageType toMessageType(Message in) {
+        MessageType answer = new MessageType();
+        answer.copyFrom(in);
+        return answer;
+    }
+
     protected static JAXBContext createJaxbContext(Object value) throws JAXBException {
         if (value == null) {
             throw new IllegalArgumentException("Cannot convert from null value to JAXBSource");
@@ -73,5 +90,4 @@
 //        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
 //        marshaller.marshal(value, out);
 //    }
-
 }

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/LongHeader.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/LongHeader.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/LongHeader.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/LongHeader.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,63 @@
+/**
+ *
+ * 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 javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAccessType;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+@XmlRootElement(name = "longHeader")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class LongHeader extends HeaderType {
+    @XmlAttribute(name = "value")
+    private Long number;
+
+    public LongHeader() {
+    }
+
+    public LongHeader(String name, Long number) {
+        super(name);
+        this.number = number;
+    }
+
+    public Long getNumber() {
+        return number;
+    }
+
+    public void setNumber(Long number) {
+        this.number = number;
+    }
+
+    public Object getValue() {
+        return getNumber();
+    }
+
+    public void setValue(Object value) {
+        if (value instanceof Number) {
+            Number n = (Number) value;
+            setNumber(n.longValue());
+        }
+        else {
+            throw new IllegalArgumentException("Value must be a Long");
+        }
+    }
+}
\ No newline at end of file

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/LongHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ObjectHeader.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ObjectHeader.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ObjectHeader.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ObjectHeader.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,49 @@
+/**
+ *
+ * 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 javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+@XmlRootElement(name = "objectHeader")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class ObjectHeader extends HeaderType {
+    @XmlAnyElement(lax = true)
+    private Object value;
+
+    public ObjectHeader() {
+    }
+
+    public ObjectHeader(String name, Object value) {
+        super(name);
+        this.value = value;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+}

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/ObjectHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/PropertyType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/PropertyType.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/PropertyType.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/PropertyType.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,52 @@
+/**
+ *
+ * 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 javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+@XmlRootElement(name = "property")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class PropertyType {
+    @XmlAttribute
+    private String key;
+    @XmlAnyElement(lax = true)
+    private Object value;
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public void setValue(Object value) {
+        this.value = value;
+    }
+}
\ No newline at end of file

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/PropertyType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/StringHeader.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/StringHeader.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/StringHeader.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/StringHeader.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,62 @@
+/**
+ *
+ * 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 javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAccessType;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+@XmlRootElement(name = "header")
+@XmlAccessorType(value = XmlAccessType.FIELD)
+public class StringHeader extends HeaderType {
+    @XmlAttribute(name = "value", required = true)
+    private String text;
+
+    public StringHeader() {
+    }
+
+    public StringHeader(String name, String text) {
+        super(name);
+        this.text = text;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+
+    public Object getValue() {
+        return getText();
+    }
+
+    public void setValue(Object value) {
+        if (value instanceof String) {
+            setText((String) value);
+        }
+        else {
+            throw new IllegalArgumentException("Value must be a String");
+        }
+    }
+}

Propchange: activemq/camel/trunk/components/camel-jaxb/src/main/java/org/apache/camel/converter/jaxb/StringHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/jaxb/jaxb.index
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/jaxb/jaxb.index?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/jaxb/jaxb.index (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/main/resources/org/apache/camel/converter/jaxb/jaxb.index Sun Aug 19 07:41:39 2007
@@ -0,0 +1,7 @@
+ExchangeType
+HeaderType
+IntegerHeader
+LongHeader
+MessageType
+PropertyType
+StringHeader

Added: activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/MessageTypeTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/MessageTypeTest.java?view=auto&rev=567411
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/MessageTypeTest.java (added)
+++ activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/MessageTypeTest.java Sun Aug 19 07:41:39 2007
@@ -0,0 +1,58 @@
+/**
+ *
+ * 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.ExchangeTestSupport;
+import org.apache.camel.model.RouteContainer;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import java.io.StringWriter;
+
+/**
+ * @version $Revision: 1.1 $
+ */
+public class MessageTypeTest extends ExchangeTestSupport {
+    protected JAXBContext jaxbContext;
+
+    public void testCamelToJaxbUsingExplicitJaxbConverter() throws Exception {
+        MessageType messageType = JaxbConverter.toMessageType(exchange);
+
+        assertNotNull("Should have created a valid message Type");
+
+        log.info("headers: " + messageType.getHeaderMap());
+        log.info("body: " + messageType.getBody());
+        
+        dump(messageType);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        jaxbContext = JAXBContext.newInstance("org.apache.camel.converter.jaxb");
+    }
+
+    protected void dump(Object object) throws Exception {
+        Marshaller marshaller = jaxbContext.createMarshaller();
+        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+        StringWriter buffer = new StringWriter();
+        marshaller.marshal(object, buffer);
+        log.info("Created: " + buffer);
+    }
+}

Propchange: activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/converter/jaxb/MessageTypeTest.java
------------------------------------------------------------------------------
    svn:eol-style = native