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/10/12 12:43:53 UTC

svn commit: r584122 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/model/ camel-core/src/main/java/org/apache/camel/model/dataformat/ components/camel-jaxb/src/test/java/org/apache/camel/example/ components/camel-jaxb/src/test/re...

Author: jstrachan
Date: Fri Oct 12 03:43:52 2007
New Revision: 584122

URL: http://svn.apache.org/viewvc?rev=584122&view=rev
Log:
allow the dataFormat to be specified using either the DataFormat configured via a Spring bean or via the DataFormatType configured via the Spring 2 XML

Added:
    activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest.java
      - copied, changed from r583907, activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingRefTest.java
    activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithSpringBean.xml
      - copied, changed from r583907, activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithRef.xml
Modified:
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalType.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalType.java
    activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalType.java?rev=584122&r1=584121&r2=584122&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/MarshalType.java Fri Oct 12 03:43:52 2007
@@ -93,12 +93,7 @@
 
     @Override
     public Processor createProcessor(RouteContext routeContext) {
-        DataFormatType type = getDataFormatType();
-        if (type == null) {
-            notNull(ref, "ref or dataFormatType");
-            type = routeContext.lookup(ref, DataFormatType.class);
-        }
-        DataFormat dataFormat = type.getDataFormat(routeContext);
+        DataFormat dataFormat = DataFormatType.getDataFormat(routeContext, getDataFormatType(), ref);
         return new MarshalProcessor(dataFormat);
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalType.java?rev=584122&r1=584121&r2=584122&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/UnmarshalType.java Fri Oct 12 03:43:52 2007
@@ -19,25 +19,23 @@
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
-import javax.xml.bind.annotation.XmlElementRef;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlElements;
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
 
 import org.apache.camel.Processor;
 import org.apache.camel.impl.RouteContext;
-import org.apache.camel.model.dataformat.DataFormatType;
 import org.apache.camel.model.dataformat.ArtixDSDataFormat;
+import org.apache.camel.model.dataformat.DataFormatType;
 import org.apache.camel.model.dataformat.JaxbDataFormat;
 import org.apache.camel.model.dataformat.SerializationDataFormat;
 import org.apache.camel.model.dataformat.XMLBeansDataFormat;
 import org.apache.camel.processor.UnmarshalProcessor;
 import org.apache.camel.spi.DataFormat;
-import static org.apache.camel.util.ObjectHelper.notNull;
 
 /**
  * Unmarshals the binary payload using the given {@link DataFormatType}
- * 
+ *
  * @version $Revision: 1.1 $
  */
 @XmlRootElement(name = "unmarshal")
@@ -94,12 +92,7 @@
 
     @Override
     public Processor createProcessor(RouteContext routeContext) {
-        DataFormatType type = getDataFormatType();
-        if (type == null) {
-            notNull(ref, "ref or dataFormatType");
-            type = routeContext.lookup(ref, DataFormatType.class);
-        }
-        DataFormat dataFormat = type.getDataFormat(routeContext);
+        DataFormat dataFormat = DataFormatType.getDataFormat(routeContext, getDataFormatType(), ref);
         return new UnmarshalProcessor(dataFormat);
     }
 }

Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java?rev=584122&r1=584121&r2=584122&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java Fri Oct 12 03:43:52 2007
@@ -17,28 +17,47 @@
  */
 package org.apache.camel.model.dataformat;
 
+import java.io.InputStream;
+import java.io.OutputStream;
+
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlTransient;
 import javax.xml.bind.annotation.XmlType;
 
+import org.apache.camel.Exchange;
 import org.apache.camel.impl.RouteContext;
 import org.apache.camel.model.IdentifiedType;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.util.IntrospectionSupport;
 import org.apache.camel.util.ObjectHelper;
+import static org.apache.camel.util.ObjectHelper.notNull;
 
 /**
  * @version $Revision: 1.1 $
  */
 @XmlType(name = "dataFormatType")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class DataFormatType extends IdentifiedType {
+public class DataFormatType extends IdentifiedType implements DataFormat {
     @XmlTransient
     private DataFormat dataFormat;
     @XmlTransient
     private String dataFormatTypeName;
 
+    public static DataFormat getDataFormat(RouteContext routeContext, DataFormatType type, String ref) {
+        if (type == null) {
+            notNull(ref, "ref or dataFormatType");
+            DataFormat dataFormat = routeContext.lookup(ref, DataFormat.class);
+            if (dataFormat instanceof DataFormatType) {
+                type = (DataFormatType) dataFormat;
+            }
+            else {
+                return dataFormat;
+            }
+        }
+        return type.getDataFormat(routeContext);
+    }
+
     public DataFormatType() {
     }
 
@@ -46,8 +65,14 @@
         this.dataFormat = dataFormat;
     }
 
-    protected DataFormatType(String dataFormatTypeName) {
-        this.dataFormatTypeName = dataFormatTypeName;
+    public void marshal(Exchange exchange, Object graph, OutputStream stream) throws Exception {
+        ObjectHelper.notNull(dataFormat, "dataFormat");
+        dataFormat.marshal(exchange, graph, stream);
+    }
+
+    public Object unmarshal(Exchange exchange, InputStream stream) throws Exception {
+        ObjectHelper.notNull(dataFormat, "dataFormat");
+        return dataFormat.unmarshal(exchange, stream);
     }
 
     public DataFormat getDataFormat(RouteContext routeContext) {
@@ -84,11 +109,14 @@
      */
     protected void setProperty(DataFormat dataFormat, String name, Object value) {
         try {
-            IntrospectionSupport.setProperty(dataFormat,name, value);
+            IntrospectionSupport.setProperty(dataFormat, name, value);
         }
         catch (Exception e) {
             throw new IllegalArgumentException("Failed to set property " + name + " on " + dataFormat + ". Reason: " + e, e);
         }
+    }
 
+    protected DataFormatType(String dataFormatTypeName) {
+        this.dataFormatTypeName = dataFormatTypeName;
     }
 }

Copied: activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest.java (from r583907, activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingRefTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest.java?p2=activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest.java&p1=activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingRefTest.java&r1=583907&r2=584122&rev=584122&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingRefTest.java (original)
+++ activemq/camel/trunk/components/camel-jaxb/src/test/java/org/apache/camel/example/SpringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest.java Fri Oct 12 03:43:52 2007
@@ -26,9 +26,9 @@
 /**
  * @version $Revision: 1.1 $
  */
-public class SpringDataFormatWithMarshalAndUnmarshalUsingRefTest extends SpringDataFormatTest {
+public class SpringDataFormatWithMarshalAndUnmarshalUsingSpringBeanTest extends SpringDataFormatTest {
 
     protected ClassPathXmlApplicationContext createApplicationContext() {
-        return new ClassPathXmlApplicationContext("org/apache/camel/example/marshalAndUnmarshalWithRef.xml");
+        return new ClassPathXmlApplicationContext("org/apache/camel/example/marshalAndUnmarshalWithSpringBean.xml");
     }
 }

Copied: activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithSpringBean.xml (from r583907, activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithRef.xml)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithSpringBean.xml?p2=activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithSpringBean.xml&p1=activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithRef.xml&r1=583907&r2=584122&rev=584122&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithRef.xml (original)
+++ activemq/camel/trunk/components/camel-jaxb/src/test/resources/org/apache/camel/example/marshalAndUnmarshalWithSpringBean.xml Fri Oct 12 03:43:52 2007
@@ -34,9 +34,11 @@
       <unmarshal ref="myJaxb"/>
       <to uri="mock:result"/>
     </route>
-
-    <jaxb id="myJaxb" prettyPrint="true" contextPath="org.apache.camel.example"/>
   </camelContext>
+
+  <bean id="myJaxb" class="org.apache.camel.converter.jaxb.JaxbDataFormat">
+    <property name="contextPath" value="org.apache.camel.example"/>
+  </bean>
   <!-- END SNIPPET: example -->
 
 </beans>