You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Jody Grassel (JIRA)" <ji...@apache.org> on 2015/08/11 20:36:48 UTC

[jira] [Created] (OPENJPA-2605) DelegatingConnection.unwrap() doesn't adhere to java.sql.Wrapper.unwrap() contract

Jody Grassel created OPENJPA-2605:
-------------------------------------

             Summary: 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.4.0, 2.2.2
            Reporter: Jody Grassel
            Assignee: Jody Grassel


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)