Hi, I've created the pull request to the [1] as [2].
Best Regards, Charlee Ch [1] https://github.com/apache/camel/tree/camel-2.14.x [2] https://github.com/apache/camel/pull/287 -- 2014-09-28 19:50 GMT+07:00 Claus Ibsen <[email protected]>: > Hi > > The @user mailing list is the best place. > > On Sun, Sep 28, 2014 at 2:32 PM, Charlee Chitsuk <[email protected]> > wrote: > > Hi Claus, > > > > Thank you very much for your reply. I've forked the Apache Camel > from > > GitHub and started to remove this limitation. Anyhow I would like your > help > > to advise further as if I found some trouble during the development, I'm > > not sure if I should post the question here or at the developer list. > > > > Best Regards, > > > > Charlee Ch > > > > -- > > > > > > 2014-09-28 15:06 GMT+07:00 Claus Ibsen <[email protected]>: > > > >> Hi > >> > >> Yeah looks like you found a limitation. You are welcome to log a JIRA > >> ticket to improved this. > >> Also we love contributions, so you are welcome to implement the needed > >> code, and provide a patch or PR > >> http://camel.apache.org/contributing.html > >> > >> On Fri, Sep 26, 2014 at 5:51 AM, Charlee Chitsuk <[email protected]> > >> wrote: > >> > 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] > >> > >> > >> > >> -- > >> Claus Ibsen > >> ----------------- > >> Red Hat, Inc. > >> Email: [email protected] > >> Twitter: davsclaus > >> Blog: http://davsclaus.com > >> Author of Camel in Action: http://www.manning.com/ibsen > >> hawtio: http://hawt.io/ > >> fabric8: http://fabric8.io/ > >> > > > > -- > Claus Ibsen > ----------------- > Red Hat, Inc. > Email: [email protected] > Twitter: davsclaus > Blog: http://davsclaus.com > Author of Camel in Action: http://www.manning.com/ibsen > hawtio: http://hawt.io/ > fabric8: http://fabric8.io/ >
