Skip to content

Commit

Permalink
AbstractSqlObjectFactory: extract constants
Browse files Browse the repository at this point in the history
  • Loading branch information
stevenschlansker committed Jul 13, 2023
1 parent 8f74600 commit 563240d
Showing 1 changed file with 7 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
*/
package org.jdbi.v3.sqlobject;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
Expand All @@ -30,21 +31,22 @@

abstract class AbstractSqlObjectFactory implements ExtensionFactory {

@SuppressWarnings("unchecked")
private static final ExtensionHandler WITH_HANDLE_HANDLER = (handleSupplier, target, args) ->
((HandleCallback<?, RuntimeException>) args[0]).withHandle(handleSupplier.getHandle());
private static final ExtensionHandler GET_HANDLE_HANDLER = (handleSupplier, target, args) -> handleSupplier.getHandle();
private static final Method GET_HANDLE_METHOD = JdbiClassUtils.methodLookup(SqlObject.class, "getHandle");
private static final Method WITH_HANDLE_METHOD = JdbiClassUtils.methodLookup(SqlObject.class, "withHandle", HandleCallback.class);

@Override
public void buildExtensionMetadata(ExtensionMetadata.Builder builder) {
final Class<?> extensionType = builder.getExtensionType();

ExtensionHandler toStringHandler = (handlerSupplier, target, args) ->
"Jdbi sqlobject proxy for " + extensionType.getName() + "@" + Integer.toHexString(target.hashCode());
JdbiClassUtils.safeMethodLookup(Object.class, "toString").ifPresent(m -> builder.addMethodHandler(m, toStringHandler));

JdbiClassUtils.safeMethodLookup(SqlObject.class, "getHandle").ifPresent(m -> builder.addMethodHandler(m, GET_HANDLE_HANDLER));
JdbiClassUtils.safeMethodLookup(SqlObject.class, "withHandle", HandleCallback.class)
.ifPresent(m -> builder.addMethodHandler(m, WITH_HANDLE_HANDLER));
builder.addMethodHandler(JdbiClassUtils.TOSTRING_METHOD, toStringHandler);
builder.addMethodHandler(GET_HANDLE_METHOD, GET_HANDLE_HANDLER);
builder.addMethodHandler(WITH_HANDLE_METHOD, WITH_HANDLE_HANDLER);
}

@Override
Expand Down

0 comments on commit 563240d

Please sign in to comment.