Hi, I'm using the Apache Camle version 2.14.0 and have found some trouble about the camel-jcr with JCR_GET_BY_ID when the node contains multi-valued property as [1].
I also have a chance to investigate to the camel-jcr source code, the org.apache.camel.component.jcr.JcrProducer, and found that it use the following:- if (JcrConstants.JCR_INSERT.equals(operation)) { ... for (String key : headers.keySet()) { Value value = converter.convertTo(Value.class, exchange, message.getHeader(key)); ... } ... } else if (JcrConstants.JCR_GET_BY_ID.equals(operation)) { ... while (properties.hasNext()) { Property property = properties.nextProperty(); Class<?> aClass = classForJCRType(property); Object value = converter.convertTo(aClass, exchange, property.getValue()); ... } } else { throw new RuntimeException("Unsupported operation: " + operation); } Please correct me if I'm wrong. Since the code uses the Value.class and property.getValue() which is for the non-multi-valued. Does it mean that the camel-jcr does not provide the support to the muli-valued? Do we have any workaround for supporting the multi-valued? At the moment I consider to replace the JcrProducer with my own interim fixing. Anyhow I thought that it may not be a proper way and would like your help to advise further? Thank you very much for your help in advance. I'm looking forward to hearing from you soon. Best Regards, Charlee Ch. [1] The stack trace 2014-09-26 10:19:21.604 [Client Event Poller] [] ERROR o.a.c.processor.DefaultErrorHandler - 215 log Failed delivery for (MessageId: ID-CharleeCh-53350-1411701537295-3-1 on ExchangeId: ID-CharleeCh-53350-1411701537295-3-12). Exhausted after delivery attempt: 1 caught: javax.jcr.ValueFormatException: property /my-parent3/my-child31/myMuliple is a multi-valued property, so it's values can only be retrieved as an array Message History // some message history Stacktrace --------------------------------------------------------------------------------------------------------------------------------------- javax.jcr.ValueFormatException: property /my-parent3/my-child31/myMuliple is a multi-valued property, so it's values can only be retrieved as an array at org.apache.jackrabbit.rmi.server.ServerObject.getRepositoryException(ServerObject.java:139) ~[jackrabbit-jcr-rmi-2.8.0.jar:na] at org.apache.jackrabbit.rmi.server.ServerProperty.getValue(ServerProperty.java:62) ~[jackrabbit-jcr-rmi-2.8.0.jar:na] at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source) ~[na:na] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_65] at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_65] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322) ~[na:1.7.0_65] at sun.rmi.transport.Transport$1.run(Transport.java:177) ~[na:1.7.0_65] at sun.rmi.transport.Transport$1.run(Transport.java:174) ~[na:1.7.0_65] at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_65] at sun.rmi.transport.Transport.serviceCall(Transport.java:173) ~[na:1.7.0_65] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556) ~[na:1.7.0_65] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811) ~[na:1.7.0_65] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670) ~[na:1.7.0_65] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[na:1.7.0_65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[na:1.7.0_65] at java.lang.Thread.run(Thread.java:745) ~[na:1.7.0_65] at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:275) ~[na:1.7.0_65] at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:252) ~[na:1.7.0_65] at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:161) ~[na:1.7.0_65] at org.apache.jackrabbit.rmi.server.ServerProperty_Stub.getValue(Unknown Source) ~[jackrabbit-jcr-rmi-2.8.0.jar:na] at org.apache.jackrabbit.rmi.client.ClientProperty.getValue(ClientProperty.java:164) ~[jackrabbit-jcr-rmi-2.8.0.jar:na] at org.apache.camel.component.jcr.JcrProducer.process(JcrProducer.java:69) ~[camel-jcr-2.14.0.jar:2.14.0]