[ 
https://issues.apache.org/jira/browse/OPENJPA-2605?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14996843#comment-14996843
 ] 

ASF subversion and git services commented on OPENJPA-2605:
----------------------------------------------------------

Commit 1713475 from [~fyrewyld] in branch 'openjpa/branches/2.2.x'
[ https://svn.apache.org/r1713475 ]

OPENJPA-2605: DelegatingConnection.unwrap() doesn't adhere to 
java.sql.Wrapper.unwrap() contract

> DelegatingConnection.unwrap() doesn't adhere to java.sql.Wrapper.unwrap() 
> contract
> ----------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2605
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2605
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: lib
>    Affects Versions: 2.2.2, 2.4.0
>            Reporter: Jody Grassel
>            Assignee: Jody Grassel
>         Attachments: OJ-2605.2.2.x.patch
>
>
> The implementation of DelegatingConnection.unwrap() checks if the delegate is 
> assignable to the class type provided in the unwrap argument() and returns 
> null if it is not.  The negative result is not consistent with the unwrap() 
> contract as specified by the Wrapper.unwrap() contract, as specified:
> "Returns an object that implements the given interface to allow access to 
> non-standard methods, or standard methods not exposed by the proxy. If the 
> receiver implements the interface then the result is the receiver or a proxy 
> for the receiver. If the receiver is a wrapper and the wrapped object 
> implements the interface then the result is the wrapped object or a proxy for 
> the wrapped object. Otherwise return the the result of calling unwrap 
> recursively on the wrapped object or a proxy for that result. If the receiver 
> is not a wrapper and does not implement the interface, then an SQLException 
> is thrown."
> Since DelegatingConnection is effectively a wrapper, it should check if the 
> delegate is assignable to the type specified by the argument and return the 
> delegate if it is, otherwise it should call the delegate's unwrap() method 
> with the type argument provided as the argument to the underlying unwrap() 
> call.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to