Hi,

i am using the LevelDB repository of Camel to store exchange while
aggregating.

Every exchange contains a simple POJO in the header that serves as
aggregation predicate.

But Camel don't wont to serialize my class because:

WARN  org.apache.camel.impl.DefaultExchangeHolder -- Exchange in headers
containing key: RECID with object: CEN-PRJ-22 of type: com.domain.ID is not
valid header type, it will be excluded by the holder.

I look into the DefaultExchangeHolder and this function seems to be the
problem:

protected static Object getValidHeaderValue(String headerName, Object
headerValue) {

Why does this class do a check with the default java types?
In the official documentation of LevelDB (
http://camel.apache.org/leveldb.html <http://camel.apache.org/leveldb.html> 
) you can read:

LevelDBAggregationRepository will only preserve any Serializable compatible
data types. If a data type is not such a type its dropped and a WARN is
logged. And it only persists the Message body and the Message headers. The
Exchange properties are not persisted. 

So my class got the signature:

public class ID implements Cloneable, Serializable {

and only 3 properties:

        private final String org;
        private final String type;
        private String key;

So it should be possible to store/restore this as header field?
Did i miss something here?

Thanks in advance.

Best regards,

Hubertus Willuhn



--
View this message in context: 
http://camel.465427.n5.nabble.com/LevelDB-and-Serializable-Bug-tp5777469.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to