You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2017/02/21 08:10:47 UTC
tomee git commit: ensure ManagedConnection.equals works based on
handlers too
Repository: tomee
Updated Branches:
refs/heads/master e96f3e3f8 -> 4983a0d45
ensure ManagedConnection.equals works based on handlers too
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/4983a0d4
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/4983a0d4
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/4983a0d4
Branch: refs/heads/master
Commit: 4983a0d45c8c96398806b19dd973f9b3f81036b8
Parents: e96f3e3
Author: rmannibucau <rm...@apache.org>
Authored: Tue Feb 21 09:10:39 2017 +0100
Committer: rmannibucau <rm...@apache.org>
Committed: Tue Feb 21 09:10:39 2017 +0100
----------------------------------------------------------------------
.../jdbc/managed/local/ManagedConnection.java | 22 ++++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/4983a0d4/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
index e1844b1..3d35b7d 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
@@ -78,7 +78,8 @@ public class ManagedConnection implements InvocationHandler {
return hashCode();
}
if ("equals".equals(mtdName)) {
- return args[0] == this || (delegate != null && delegate.equals(unwrapIfNeeded(args[0])));
+ InvocationHandler handler;
+ return args[0] == this || ((handler = unwrapHandler(args[0])) == this) || (delegate != null && delegate.equals(unwrapDelegate(args[0], handler)));
}
// allow to get delegate if needed by the underlying program
@@ -181,12 +182,15 @@ public class ManagedConnection implements InvocationHandler {
}
}
- private Object unwrapIfNeeded(final Object arg) {
+ private InvocationHandler unwrapHandler(final Object arg) {
if (arg == null || !Proxy.isProxyClass(arg.getClass())) {
- return arg;
+ return null;
}
- final InvocationHandler handler = Proxy.getInvocationHandler(arg);
- return ManagedConnection.class.isInstance(handler) ? ManagedConnection.class.cast(handler).delegate : arg;
+ return Proxy.getInvocationHandler(arg);
+ }
+
+ private Object unwrapDelegate(final Object arg, final InvocationHandler handler) {
+ return handler != null && ManagedConnection.class.isInstance(handler) ? ManagedConnection.class.cast(handler).delegate : arg;
}
protected Object newConnection() throws SQLException {
@@ -222,10 +226,10 @@ public class ManagedConnection implements InvocationHandler {
private Object invokeUnderTransaction(final Method method, final Object[] args) throws Exception {
final String mtdName = method.getName();
if ("setAutoCommit".equals(mtdName)
- || "commit".equals(mtdName)
- || "rollback".equals(mtdName)
- || "setSavepoint".equals(mtdName)
- || "setReadOnly".equals(mtdName)) {
+ || "commit".equals(mtdName)
+ || "rollback".equals(mtdName)
+ || "setSavepoint".equals(mtdName)
+ || "setReadOnly".equals(mtdName)) {
throw forbiddenCall(mtdName);
}
if ("close".equals(mtdName)) {