Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-5590

Camel josql component does not work when using specific Select

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Major Major
    • jboss-fuse-6.3
    • jboss-fuse-6.3
    • Camel
    • None
    • % %
    • Hide

      1) git clone git@gitlab.mw.lab.eng.bos.redhat.com:jbossqe-soa/jbossqe-camel-it.git -b issue-119_create-test-to-cover-script-languages
      2) cd jbossqe-camel-it/camel/architecture/scripting-languages/josql-test
      3) mvn clean install -Pjboss-fuse

      Show
      1) git clone git@gitlab.mw.lab.eng.bos.redhat.com:jbossqe-soa/jbossqe-camel-it.git -b issue-119_create-test-to-cover-script-languages 2) cd jbossqe-camel-it/camel/architecture/scripting-languages/josql-test 3) mvn clean install -Pjboss-fuse

      When I want to use sql script language and query with some attributes (eg. select name from org.jboss.qa.Person) I'll get an error:

      Caused by: org.apache.camel.RuntimeExpressionException: org.josql.QueryExecutionException: Unable to get value for column: 0 for: name[detail: Accessor: name from class: org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person] from result: 0 (Person(name=James, surname=London))
      	at org.apache.camel.builder.sql.SqlBuilder.evaluateQuery(SqlBuilder.java:118)
      	at org.apache.camel.builder.sql.SqlBuilder.evaluate(SqlBuilder.java:52)
      	at org.apache.camel.processor.SetBodyProcessor.process(SetBodyProcessor.java:49)
      	at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
      	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
      	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
      	at org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117)
      	at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
      	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
      	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
      	at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
      	at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
      	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
      	at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62)
      	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:190)
      	at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109)
      	at org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:68)
      	at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:412)
      	at org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:380)
      	at org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:270)
      	at org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:380)
      	at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:221)
      	at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:124)
      	at org.apache.camel.impl.DefaultProducerTemplate.sendBodyAndHeader(DefaultProducerTemplate.java:163)
      	... 161 more
      Caused by: org.josql.QueryExecutionException: Unable to get value for column: 0 for: name[detail: Accessor: name from class: org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person] from result: 0 (Person(name=James, surname=London))
      	at org.josql.Query.getColumnValues(Query.java:1409)
      	at org.josql.Query.execute(Query.java:1258)
      	at org.apache.camel.builder.sql.SqlBuilder.evaluateQuery(SqlBuilder.java:116)
      	... 184 more
      Caused by: org.josql.QueryExecutionException: Unable to get value from: name[detail: Accessor: name from class: org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person] passed in object type: org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person expecting: java.lang.String
      	at org.josql.expressions.Accessor.evaluate(Accessor.java:154)
      	at org.josql.expressions.ValueExpression.getValue(ValueExpression.java:28)
      	at org.josql.expressions.SelectItemExpression.getValue(SelectItemExpression.java:191)
      	at org.josql.Query.getColumnValues(Query.java:1389)
      	... 186 more
      Caused by: java.lang.RuntimeException: Unable to get value from instance of: org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person, using accessor: name expected type to be: org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person
      	at com.gentlyweb.utils.Getter.throwException(Getter.java:337)
      	at com.gentlyweb.utils.Getter.getValue(Getter.java:292)
      	at org.josql.expressions.Accessor.evaluate(Accessor.java:150)
      	... 189 more
      Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.gentlyweb.utils.Getter.getValue(Getter.java:287)
      	... 190 more
      

      When I use asterisk instead of attribute name (select * from org.jboss.qe.camel.architecture.scriptinglanguage.sql.Person) all works fine.

      I tried to create standalone maven project which uses josql library with exactly same query and Person.class as I use in my test case and this project works without failures.

            lburgazz@redhat.com Luca Burgazzoli
            jbouska@redhat.com Jan Bouska
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: