You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Nicola Ferraro (JIRA)" <ji...@apache.org> on 2017/05/09 14:03:04 UTC

[jira] [Created] (CAMEL-11249) camel-core - Extend split() capabilities with pluggable splitters

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)