private static DataFormatDefinition processDataFormatType(RouteContext routeContext,
String ref,
DataFormatDefinition dformatDefinition) {
if ( dformatDefinition == null ) {
if ( "json".equals( ref ) ) {
dformatDefinition = new XStreamDataFormat();
((XStreamDataFormat) dformatDefinition).setDriver( "json" );
} else if ( "xstream".equals( ref ) ) {
dformatDefinition = new XStreamDataFormat();
} else if ( "jaxb".equals( ref ) ) {
dformatDefinition = new JaxbDataFormat();
} else {
dformatDefinition = routeContext.getCamelContext().resolveDataFormatDefinition( ref );
}
}
// always clone before changing
dformatDefinition = new FastCloner().deepClone( dformatDefinition );
if ( dformatDefinition instanceof JaxbDataFormat ) {
dformatDefinition = augmentJaxbDataFormatDefinition( (JaxbDataFormat) dformatDefinition );
} else if ( dformatDefinition instanceof XStreamDataFormat ) {
XStreamDataFormat xstreamDataFormat = (XStreamDataFormat) dformatDefinition;
if ( "json".equals( xstreamDataFormat.getDriver() ) ) {
dformatDefinition = XStreamJson.newJSonMarshaller( xstreamDataFormat );;
} else {
dformatDefinition = XStreamXml.newXStreamMarshaller( (XStreamDataFormat) dformatDefinition );
}