[CONF] Apache Camel Using getIn or getOut methods on Exchange
Using getIn or getOut methods on Exchange Page added by Claus Ibsen Using getIn or getOut methods on Exchange The Camel API is influenced by the JBI specification which defines a concept called Message Exchange Patterns (MEP for short). The MEP defines the messaging style used such as one-way (InOnly) or request-reply (InOut). The Exchange API provides two methods to get a message, either getIn or getOut. Important for Camel end usersAs a Camel end user you should always prefer to use the getIn method, and frankly just forget about the getOut method. The getOut method is only needed in special use cases and by certain Camel component such as the JBI or NMR components. If you use the getOut method, then data from the in message would be lost. For example several Camel end users who got started with Camel, couldn't understand why their message headers was lost during route in Camel. The problem was they used getOut method in a Camel Processor. They should as said use the getIn method. Change Notification Preferences View Online | Add Comment
[CONF] Apache Camel Why do my message lose its headers during routing?
Why do my message lose its headers during routing? Page added by Claus Ibsen Why do my message lose its headers during routing? See this FAQ entry Change Notification Preferences View Online | Add Comment
svn commit: r1000757 - /camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java
Author: jstrachan Date: Fri Sep 24 08:38:42 2010 New Revision: 1000757 URL: http://svn.apache.org/viewvc?rev=1000757view=rev Log: Added a helper constructor in case folks want to reuse the jaxb resolver with a different set of packages Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java Modified: camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java?rev=1000757r1=1000756r2=1000757view=diff == --- camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java (original) +++ camel/trunk/components/camel-web/src/main/java/org/apache/camel/web/util/JAXBContextResolver.java Fri Sep 24 08:38:42 2010 @@ -19,6 +19,7 @@ package org.apache.camel.web.util; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; /** * A resolver of the JAXB context primed for the Camel XML languages @@ -27,12 +28,16 @@ import javax.xml.bind.JAXBContext; * @version $Revision$ */ @Provider -public final class JAXBContextResolver implements ContextResolverJAXBContext { +public class JAXBContextResolver implements ContextResolverJAXBContext { private final JAXBContext context; private String packages; public JAXBContextResolver() throws Exception { -this.packages = org.apache.camel.web.resources.Constants.JAXB_PACKAGES; +this(org.apache.camel.web.resources.Constants.JAXB_PACKAGES); +} + +public JAXBContextResolver(String packages) throws JAXBException { +this.packages = packages; this.context = JAXBContext.newInstance(packages); }
svn commit: r1000776 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/model/dataformat/ components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/ components/camel-xstream
Author: davsclaus Date: Fri Sep 24 09:37:08 2010 New Revision: 1000776 URL: http://svn.apache.org/viewvc?rev=1000776view=rev Log: CAMEL-3153: Added omitFeilds to xstream data format. Thanks to Henryk for part of the work. Added: camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.java camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatOmitFieldsTest.java (with props) camel/trunk/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml - copied, changed from r1000757, camel/trunk/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java?rev=1000776r1=1000775r2=1000776view=diff == --- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java Fri Sep 24 09:37:08 2010 @@ -57,6 +57,10 @@ public class XStreamDataFormat extends D @XmlElement(name = aliases) private MapString, String aliases; +@XmlJavaTypeAdapter(OmitFieldsAdapter.class) +@XmlElement(name = omitFields) +private MapString, String[] omitFields; + @XmlJavaTypeAdapter(ImplicitCollectionsAdapter.class) @XmlElement(name = implicitCollections) private MapString, String[] implicitCollections; @@ -103,6 +107,14 @@ public class XStreamDataFormat extends D this.aliases = aliases; } +public MapString, String[] getOmitFields() { +return omitFields; +} + +public void setOmitFields(MapString, String[] omitFields) { +this.omitFields = omitFields; +} + public MapString, String[] getImplicitCollections() { return implicitCollections; } @@ -124,15 +136,15 @@ public class XStreamDataFormat extends D if (encoding != null) { setProperty(dataFormat, encoding, encoding); } - if (this.converters != null) { setProperty(dataFormat, converters, this.converters); } - if (this.aliases != null) { setProperty(dataFormat, aliases, this.aliases); } - +if (this.omitFields != null) { +setProperty(dataFormat, omitFields, this.omitFields); +} if (this.implicitCollections != null) { setProperty(dataFormat, implicitCollections, this.implicitCollections); } @@ -202,8 +214,7 @@ public class XStreamDataFormat extends D public ImplicitCollectionList marshal(MapString, String[] v) throws Exception { ListImplicitCollectionEntry list = new ArrayListImplicitCollectionEntry(); for (String clsName : v.keySet()) { -ImplicitCollectionEntry entry = new ImplicitCollectionEntry( -clsName, v.get(clsName)); +ImplicitCollectionEntry entry = new ImplicitCollectionEntry(clsName, v.get(clsName)); list.add(entry); } @@ -271,7 +282,7 @@ public class XStreamDataFormat extends D @Override public String toString() { -return Alias [ImplicitCollection= + clsName + , fields= + Arrays.asList(this.fields) + ]; +return Alias[ImplicitCollection= + clsName + , fields= + Arrays.asList(this.fields) + ]; } } @@ -290,7 +301,7 @@ public class XStreamDataFormat extends D } AliasList jaxbMap = new AliasList(); jaxbMap.setList(ret); -return jaxbMap; // ret.toArray( new JaxbMapEntry[ret.size()] ); +return jaxbMap; } @Override @@ -353,7 +364,88 @@ public class XStreamDataFormat extends D @Override public String toString() { -return Alias [name= + name + , class= + clsName + ]; +return Alias[name= + name + , class= + clsName + ]; +} +} + +@XmlTransient +public static class OmitFieldsAdapter +extends XmlAdapterOmitFieldList, MapString, String[] { + +@Override +public OmitFieldList marshal(MapString, String[] v) throws Exception { +ListOmitFieldEntry list = new ArrayListOmitFieldEntry(); +for (String clsName : v.keySet()) { +OmitFieldEntry entry = new
svn commit: r1000916 - /camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java
Author: davsclaus Date: Fri Sep 24 15:38:14 2010 New Revision: 1000916 URL: http://svn.apache.org/viewvc?rev=1000916view=rev Log: Added unit test based on user forum Added: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java Added: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java?rev=1000916view=auto == --- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java (added) +++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/xml/XPathNestedNamespaceTest.java Fri Sep 24 15:38:14 2010 @@ -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.builder.xml; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.RouteBuilder; + +/** + * @version $Revision$ + */ +public class XPathNestedNamespaceTest extends ContextTestSupport { + +public void testXPathNamespace() throws Exception { +String xml = STPTradeML xmlns=\http://www.barcap.com/gcd/stpengine/1-0\;FpMLtrade//FpML/STPTradeML; + +getMockEndpoint(mock:FOO).expectedMessageCount(0); +getMockEndpoint(mock:BAR).expectedMessageCount(1); +getMockEndpoint(mock:OTHER).expectedMessageCount(0); + +template.sendBody(direct:start, xml); + +assertMockEndpointsSatisfied(); +} + +@Override +protected RouteBuilder createRouteBuilder() throws Exception { +return new RouteBuilder() { +@Override +public void configure() throws Exception { +Namespaces ns = new Namespaces(stp, http://www.barcap.com/gcd/stpengine/1-0;); + +from(direct:start) +.choice() +.when().xpath(//stp:termination, ns) +.to(mock:FOO) +.when().xpath(/stp:STPTradeML/stp:FpML/stp:trade, ns) +.to(mock:BAR) +.otherwise() +.to(mock:OTHER); +} +}; +} + +}
svn commit: r1001004 - /camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java
Author: akarpe Date: Fri Sep 24 18:15:52 2010 New Revision: 1001004 URL: http://svn.apache.org/viewvc?rev=1001004view=rev Log: Added an API to RoutePolicySupport for stopRoute to control timeout for graceful shutdown Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java?rev=1001004r1=1001003r2=1001004view=diff == --- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/RoutePolicySupport.java Fri Sep 24 18:15:52 2010 @@ -16,6 +16,8 @@ */ package org.apache.camel.impl; +import java.util.concurrent.TimeUnit; + import org.apache.camel.Consumer; import org.apache.camel.Exchange; import org.apache.camel.Route; @@ -71,6 +73,10 @@ public abstract class RoutePolicySupport route.getRouteContext().getCamelContext().stopRoute(route.getId()); } +protected void stopRoute(Route route, long timeout, TimeUnit timeUnit) throws Exception { +route.getRouteContext().getCamelContext().stopRoute(route.getId(), timeout, timeUnit); +} + /** * Handles the given exception using the {...@link #getExceptionHandler()} *
svn commit: r1001028 - in /camel/trunk/components/camel-quartz/src: main/java/org/apache/camel/routepolicy/ main/java/org/apache/camel/routepolicy/quartz/ test/java/org/apache/camel/routepolicy/ test/
Author: akarpe Date: Fri Sep 24 18:55:30 2010 New Revision: 1001028 URL: http://svn.apache.org/viewvc?rev=1001028view=rev Log: CAMEL-2936 Provided a ScheduledRoutePolicy to make it easy to define when routes should be active, stopped or suspended Added: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicy.java (with props) camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java (with props) camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledRouteDetails.java (with props) camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledRoutePolicy.java (with props) camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledRoutePolicyConstants.java (with props) camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicy.java (with props) camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicyTest.java (with props) camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java (with props) Added: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicy.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicy.java?rev=1001028view=auto == --- camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicy.java (added) +++ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicy.java Fri Sep 24 18:55:30 2010 @@ -0,0 +1,149 @@ +/** + * 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.routepolicy.quartz; + +import java.util.Properties; + +import org.apache.camel.Route; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.quartz.CronTrigger; +import org.quartz.Trigger; + +public class CronScheduledRoutePolicy extends ScheduledRoutePolicy implements ScheduledRoutePolicyConstants { +private static final transient Log LOG = LogFactory.getLog(CronScheduledRoutePolicy.class); +private String routeStartTime; +private String routeStopTime; +private String routeSuspendTime; +private String routeResumeTime; + +public CronScheduledRoutePolicy() { +super(); +} + +public CronScheduledRoutePolicy(String propertiesFile) { +super(propertiesFile); +} + +public CronScheduledRoutePolicy(Properties properties) { +super(properties); +} + +public void onInit(Route route) { +try { +if ((getRouteStartTime() == null) (getRouteStopTime() == null) (getRouteSuspendTime() == null) (getRouteResumeTime() == null)) { +if (LOG.isWarnEnabled()) { +LOG.warn(Scheduled Route Policy for route + route.getId() + is not set since the no start, stop and/or suspend times are specified); +} +return; +} + +if (scheduledRouteDetails == null) { +scheduledRouteDetails = new ScheduledRouteDetails(); +scheduledRouteDetails.setRoute(route); + +if (getRouteStartTime() != null) { +scheduleRoute(Action.START); +} + +if (getRouteStopTime() != null) { +scheduleRoute(Action.STOP); +
svn commit: r1001031 - in /camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy: ./ quartz/ quartz/myquartz.properties
Author: akarpe Date: Fri Sep 24 19:13:52 2010 New Revision: 1001031 URL: http://svn.apache.org/viewvc?rev=1001031view=rev Log: CAMEL-2936 Provided a ScheduledRoutePolicy to make it easy to define when routes should be active, stopped or suspended Added: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/ camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/ camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/myquartz.properties (with props) Added: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/myquartz.properties URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/myquartz.properties?rev=1001031view=auto == --- camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/myquartz.properties (added) +++ camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/myquartz.properties Fri Sep 24 19:13:52 2010 @@ -0,0 +1,26 @@ +## +## 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. +## + +org.quartz.scheduler.instanceName = MyScheduler +org.quartz.scheduler.instanceId = 2 +org.quartz.scheduler.rmi.export = false +org.quartz.scheduler.rmi.proxy = false + +org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool +org.quartz.threadPool.threadCount = 3 + +org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore \ No newline at end of file Propchange: camel/trunk/components/camel-quartz/src/test/resources/org/apache/camel/routepolicy/quartz/myquartz.properties -- svn:eol-style = native
svn commit: r1001043 - /camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java
Author: akarpe Date: Fri Sep 24 19:36:35 2010 New Revision: 1001043 URL: http://svn.apache.org/viewvc?rev=1001043view=rev Log: Cosmetic change extra blank line removed Modified: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java Modified: camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java?rev=1001043r1=1001042r2=1001043view=diff == --- camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java (original) +++ camel/trunk/components/camel-quartz/src/main/java/org/apache/camel/routepolicy/quartz/ScheduledJob.java Fri Sep 24 19:36:35 2010 @@ -52,5 +52,4 @@ public class ScheduledJob implements Job } } - }
svn commit: r1001049 - in /camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz: CronScheduledRoutePolicyTest.java SimpleScheduledRoutePolicyTest.java
Author: akarpe Date: Fri Sep 24 19:42:45 2010 New Revision: 1001049 URL: http://svn.apache.org/viewvc?rev=1001049view=rev Log: Cosmetic changes, removed unncessary blank lines Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicyTest.java camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicyTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicyTest.java?rev=1001049r1=1001048r2=1001049view=diff == --- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicyTest.java (original) +++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/CronScheduledRoutePolicyTest.java Fri Sep 24 19:42:45 2010 @@ -129,7 +129,6 @@ public class CronScheduledRoutePolicyTes consumerSuspended = true; } assertTrue(consumerSuspended); - } @Test @@ -162,6 +161,6 @@ public class CronScheduledRoutePolicyTes template.sendBody(direct:start, Ready or not, Here, I come); success.assertIsSatisfied(); - } -} \ No newline at end of file + +} Modified: camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java?rev=1001049r1=1001048r2=1001049view=diff == --- camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java (original) +++ camel/trunk/components/camel-quartz/src/test/java/org/apache/camel/routepolicy/quartz/SimpleScheduledRoutePolicyTest.java Fri Sep 24 19:42:45 2010 @@ -136,7 +136,6 @@ public class SimpleScheduledRoutePolicyT consumerSuspended = true; } assertTrue(consumerSuspended); - } @Test @@ -172,7 +171,6 @@ public class SimpleScheduledRoutePolicyT template.sendBody(direct:start, Ready or not, Here, I come); success.assertIsSatisfied(); - } -} \ No newline at end of file +}
svn commit: r1001128 - in /camel/trunk: camel-core/src/main/java/org/apache/camel/model/dataformat/ components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/ components/camel-xstream
Author: ningjiang Date: Sat Sep 25 02:51:53 2010 New Revision: 1001128 URL: http://svn.apache.org/viewvc?rev=1001128view=rev Log: CAMEL-3154 Support to set the customer xstream dirver Added: camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java (with props) Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java?rev=1001128r1=1001127r2=1001128view=diff == --- camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java (original) +++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java Sat Sep 25 02:51:53 2010 @@ -49,6 +49,9 @@ public class XStreamDataFormat extends D @XmlAttribute private String driver = xml; +@XmlAttribute +private String driverRef; + @XmlJavaTypeAdapter(ConvertersAdapter.class) @XmlElement(name = converters) private ListString converters; @@ -91,6 +94,14 @@ public class XStreamDataFormat extends D this.driver = driver; } +public String getDriverRef() { +return driverRef; +} + +public void setDriverRef(String driverRef) { +this.driverRef = driverRef; +} + public ListString getConverters() { return converters; } @@ -148,9 +159,11 @@ public class XStreamDataFormat extends D if (this.implicitCollections != null) { setProperty(dataFormat, implicitCollections, this.implicitCollections); } +if (this.driverRef != null) { +setProperty(dataFormat, xstreamDriver, this.driverRef); +} } - @XmlTransient public static class ConvertersAdapter extends XmlAdapterConverterList, ListString { @Override Modified: camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java?rev=1001128r1=1001127r2=1001128view=diff == --- camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java (original) +++ camel/trunk/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java Sat Sep 25 02:51:53 2010 @@ -28,6 +28,7 @@ import javax.xml.stream.XMLStreamExcepti import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.Converter; +import com.thoughtworks.xstream.io.HierarchicalStreamDriver; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; @@ -46,6 +47,7 @@ import org.apache.camel.util.ObjectHelpe public abstract class AbstractXStreamWrapper implements DataFormat { private XStream xstream; +private HierarchicalStreamDriver xstreamDriver; private StaxConverter staxConverter; private ListString converters; private MapString, String aliases; @@ -71,7 +73,11 @@ public abstract class AbstractXStreamWra } protected XStream createXStream(ClassResolver resolver) { -xstream = new XStream(); +if(xstreamDriver != null) { +xstream = new XStream(xstreamDriver); +} else { +xstream = new XStream(); +} try { if (this.implicitCollections != null) { @@ -174,6 +180,14 @@ public abstract class AbstractXStreamWra this.omitFields = omitFields; } +public HierarchicalStreamDriver getXstreamDriver() { +return xstreamDriver; +} + +public void setXstreamDriver(HierarchicalStreamDriver xstreamDriver) { +this.xstreamDriver = xstreamDriver; +} + public XStream getXstream() { return xstream; } Added: camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java?rev=1001128view=auto == --- camel/trunk/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatDriverConfigTest.java (added) +++