Hi, Here is a StackOverflow question [1].
Best Regards, Charlee Ch. [1] http://stackoverflow.com/questions/26051930/the-trouble-about-the-jcr-multi-valued-property-when-using-jcr-get-by-id -- 2014-09-26 10:51 GMT+07:00 Charlee Chitsuk <[email protected]>: > 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] > >
