Nicola Ferraro created CAMEL-11249:
--------------------------------------

             Summary: camel-core - Extend split() capabilities with pluggable 
splitters
                 Key: CAMEL-11249
                 URL: https://issues.apache.org/jira/browse/CAMEL-11249
             Project: Camel
          Issue Type: Improvement
          Components: camel-core
            Reporter: Nicola Ferraro
            Assignee: Nicola Ferraro
             Fix For: 2.20.0


Currently a "split().body()" processor will work with a limited set of value 
types.

This is an excerpt from ObjectHelper.createIterator(value):
{code}
     * Creates an iterator over the value if the value is a collection, an
     * Object[], a String with values separated by comma,
     * or a primitive type array; otherwise to simplify the caller's code,
     * we just create a singleton collection iterator over a single value
     * <p/>
     * Will default use comma for String separating String values.
     * This method does <b>not</b> allow empty values
{code}

New libraries (reactive-streams, grpc, but also java 8 collections) make heavy 
use of streams, not only standard java collections.

In order to support a wide range of streams types, we can make the split 
algorithm pluggable, e.g. by providing custom conversions from a specific type 
to a "CamelStreamingObject" (tbd).

This way we can convert any kind of streaming object (e.g. Publisher) into its 
content by putting a ".split().body()". 

In Camel 2.19.0, users should include a "UnwrapStreamProcessor" in their routes 
to do this conversion.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to