You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "John Huss (JIRA)" <ji...@apache.org> on 2014/08/07 21:47:13 UTC
[jira] [Updated] (CAY-1941) Crypto - class cast exception when
using java.lang.String with VARBINARY column
[ https://issues.apache.org/jira/browse/CAY-1941?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Huss updated CAY-1941:
---------------------------
Attachment: cayenne-mvn-snippet.zip
Sample project demonstrating the problem
> Crypto - class cast exception when using java.lang.String with VARBINARY column
> -------------------------------------------------------------------------------
>
> Key: CAY-1941
> URL: https://issues.apache.org/jira/browse/CAY-1941
> Project: Cayenne
> Issue Type: Bug
> Components: Core Library
> Affects Versions: 3.2M1
> Environment: Commit 9eb1f32305ff6d232ae938ea91a9eeed9c9ed584
> Reporter: John Huss
> Attachments: cayenne-mvn-snippet.zip
>
>
> When using the cayenne-crypto module with a VARBINARY column mapped to a java.lang.String attribute, a class cast exception is thrown because the jdbc data is deserialized as a String when it was expected to be a byte[].
> java.lang.ClassCastException: java.lang.String cannot be cast to [B
> at org.apache.cayenne.crypto.transformer.value.BytesToBytesConverter.toBytes(BytesToBytesConverter.java:30)
> at org.apache.cayenne.crypto.transformer.value.DefaultValueDecryptor.decrypt(DefaultValueDecryptor.java:50)
> at org.apache.cayenne.crypto.transformer.DefaultMapTransformer.transform(DefaultMapTransformer.java:50)
> at org.apache.cayenne.crypto.reader.CryptoRowReaderFactoryDecorator$1.readRow(CryptoRowReaderFactoryDecorator.java:75)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.nextRow(JDBCResultIterator.java:104)
> at org.apache.cayenne.access.jdbc.JDBCResultIterator.allRows(JDBCResultIterator.java:80)
> at org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:181)
> at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97)
> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:293)
> at org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:438)
> at org.apache.cayenne.access.DataDomainQueryAction.access$0(DataDomainQueryAction.java:417)
> at org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:411)
> at org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:720)
> at org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:407)
> at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:121)
> at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:610)
> at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:847)
> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:602)
> at org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:350)
> at org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:106)
> at org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:93)
> at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:968)
> at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:957)
> at org.apache.cayenne.BaseContext.select(BaseContext.java:302)
> at org.apache.cayenne.tutorial.Main.main(Main.java:50)
--
This message was sent by Atlassian JIRA
(v6.2#6252)