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>