Refactor method name dispatching to switch statements
Closes gh-25163
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -237,18 +237,18 @@ public class SingleConnectionFactory extends DelegatingConnectionFactory impleme
|
||||
@Override
|
||||
@Nullable
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
if (method.getName().equals("equals")) {
|
||||
// Only consider equal when proxies are identical.
|
||||
return (proxy == args[0]);
|
||||
}
|
||||
else if (method.getName().equals("hashCode")) {
|
||||
// Use hashCode of Connection proxy.
|
||||
return System.identityHashCode(proxy);
|
||||
}
|
||||
else if (method.getName().equals("close")) {
|
||||
// Handle close method: don't pass the call on.
|
||||
return null;
|
||||
switch (method.getName()) {
|
||||
case "equals":
|
||||
// Only consider equal when proxies are identical.
|
||||
return (proxy == args[0]);
|
||||
case "hashCode":
|
||||
// Use hashCode of Connection proxy.
|
||||
return System.identityHashCode(proxy);
|
||||
case "close":
|
||||
// Handle close method: don't pass the call on.
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
return method.invoke(this.target, args);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2018 the original author or authors.
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -136,24 +136,23 @@ public class TransactionAwareConnectionFactoryProxy extends DelegatingConnection
|
||||
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
|
||||
// Invocation on Connection interface coming in...
|
||||
|
||||
if (method.getName().equals("equals")) {
|
||||
// Only consider equal when proxies are identical.
|
||||
return (proxy == args[0]);
|
||||
}
|
||||
else if (method.getName().equals("hashCode")) {
|
||||
// Use hashCode of Connection proxy.
|
||||
return System.identityHashCode(proxy);
|
||||
}
|
||||
else if (method.getName().equals("getLocalTransaction")) {
|
||||
if (ConnectionFactoryUtils.isConnectionTransactional(this.target, this.connectionFactory)) {
|
||||
throw new javax.resource.spi.IllegalStateException(
|
||||
"Local transaction handling not allowed within a managed transaction");
|
||||
}
|
||||
}
|
||||
else if (method.getName().equals("close")) {
|
||||
// Handle close method: only close if not within a transaction.
|
||||
ConnectionFactoryUtils.doReleaseConnection(this.target, this.connectionFactory);
|
||||
return null;
|
||||
switch (method.getName()) {
|
||||
case "equals":
|
||||
// Only consider equal when proxies are identical.
|
||||
return (proxy == args[0]);
|
||||
case "hashCode":
|
||||
// Use hashCode of Connection proxy.
|
||||
return System.identityHashCode(proxy);
|
||||
case "getLocalTransaction":
|
||||
if (ConnectionFactoryUtils.isConnectionTransactional(this.target, this.connectionFactory)) {
|
||||
throw new javax.resource.spi.IllegalStateException(
|
||||
"Local transaction handling not allowed within a managed transaction");
|
||||
}
|
||||
return this.target.getLocalTransaction();
|
||||
case "close":
|
||||
// Handle close method: only close if not within a transaction.
|
||||
ConnectionFactoryUtils.doReleaseConnection(this.target, this.connectionFactory);
|
||||
return null;
|
||||
}
|
||||
|
||||
// Invoke method on target Connection.
|
||||
|
||||
Reference in New Issue
Block a user