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)