DataFormat's should allow url query like parameters ---------------------------------------------------
Key: CAMEL-2921 URL: https://issues.apache.org/activemq/browse/CAMEL-2921 Project: Apache Camel Issue Type: Improvement Components: camel-core Reporter: Mark Proctor It would be nice if we could customise DataFormatDefinitions inline: marshal( "jaxb?contextPath=org.domain.package" ) Here is an outline of some code I think that would achieve this, however to be safe (imho) the resolver should only ever returned "cloned" copies of any registered DataFormatDefinition; to save the originally source from being altered. DataFormatDefinition public static DataFormat getDataFormat(RouteContext routeContext, DataFormatDefinition type, String ref) { if (type == null) { ObjectHelper.notNull(ref, "ref or type"); int pos = ref.indexOf( '?' ); if ( pos < 0 ) { type = routeContext.getCamelContext().resolveDataFormatDefinition( ref ); } else { type = routeContext.getCamelContext().resolveDataFormatDefinition( ref.substring(0, pos -1 ) ); } // try to let resolver see if it can resolve it, its not always possible type = routeContext.getCamelContext().resolveDataFormatDefinition(ref); if (type != null && pos >= 0 ) { try { Map<String, Object> parameters = URISupport.parseQuery( ref.substring( pos ) ); // 1 to skip the leading ? try { IntrospectionSupport.setProperties(routeContext.getCamelContext().getTypeConverter(), type, parameters); } catch (Exception e) { throw new RuntimeException( "Unable to set DataFormatDefinition properties '" + ref + "'", e); } } catch (URISyntaxException e) { throw new RuntimeException( "Unable to parse parameters " + ref, e); } return type.getDataFormat(routeContext); } DataFormat dataFormat = routeContext.getCamelContext().resolveDataFormat(ref); if (dataFormat == null) { throw new IllegalArgumentException("Cannot find data format in registry with ref: " + ref); } return dataFormat; } else { return type.getDataFormat(routeContext); } } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.