You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Matthew Zipay (JIRA)" <ji...@apache.org> on 2016/06/29 02:19:46 UTC
[jira] [Created] (CAMEL-10099) AbstractJdbcMessageIdRepository
is not actually parameterizable
Matthew Zipay created CAMEL-10099:
-------------------------------------
Summary: AbstractJdbcMessageIdRepository<T> is not actually parameterizable
Key: CAMEL-10099
URL: https://issues.apache.org/jira/browse/CAMEL-10099
Project: Camel
Issue Type: Bug
Components: camel-core, camel-sql
Affects Versions: 2.15.1
Environment: Camel 2.15.1.redhat-620133
JBoss Fuse 6.2.0.redhat-133
openjdk version "1.8.0_45"
OpenJDK Runtime Environment (build 1.8.0_45-b13)
OpenJDK 64-Bit Server VM (build 25.45-b02, mixed mode)
Linux 3.10.0-229.1.2.el7.x86_64 #1 SMP Fri Mar 6 17:12:08 EST 2015 x86_64 GNU/Linux (RHEL 7)
Reporter: Matthew Zipay
Priority: Minor
The org.apache.camel.processor.idempotent.jdbc.AbstractJdbcMessageIdRepository class is advertised as being extendable in the documentation, and is declared as parameterized in the source code, so that developers "can extend to build custom JDBC idempotent repository."
However, attempting to parameterize with anything other than String fails. The cause appears to be org.apache.camel.processor.idempotent.IdempotentConsumer, whose process() method assumes that the key is always a String before handing it off to the repository instance (which may in fact be a AbstractJdbcMessageIdRepository<T> where T is *not* String). The results is an unavoidable ClassCastException.
Here is the relevant bit from a stack trace using {{public class IdempRepository extends AbstractJdbcMessageIdRepository<IdempKey>}}:
{code}
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to my.custom.IdempKey
at my.custom.IdempRepository.queryForInt(IdempRepository.java:18)[515:my-bundle:1.0.0.SNAPSHOT]
at org.apache.camel.processor.idempotent.jdbc.AbstractJdbcMessageIdRepository$1.doInTransaction(AbstractJdbcMessageIdRepository.java:122)[273:org.apache.camel.camel-sql:2.15.1.redhat-620133]
at org.apache.camel.processor.idempotent.jdbc.AbstractJdbcMessageIdRepository$1.doInTransaction(AbstractJdbcMessageIdRepository.java:120)[273:org.apache.camel.camel-sql:2.15.1.redhat-620133]
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:131)[202:org.apache.servicemix.bundles.spring-tx:3.2.12.RELEASE_1]
at org.apache.camel.processor.idempotent.jdbc.AbstractJdbcMessageIdRepository.add(AbstractJdbcMessageIdRepository.java:120)[273:org.apache.camel.camel-sql:2.15.1.redhat-620133]
at org.apache.camel.processor.idempotent.IdempotentConsumer.process(IdempotentConsumer.java:94)[198:org.apache.camel.camel-core:2.15.1.redhat-620133]
{code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)