|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2012-2023 the original author or authors. |
|
|
|
|
* Copyright 2012-2024 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. |
|
|
|
|
@ -122,13 +122,30 @@ public class ConnectionDetailsFactories {
@@ -122,13 +122,30 @@ public class ConnectionDetailsFactories {
|
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
private static <S, D extends ConnectionDetails> Registration<S, D> get(ConnectionDetailsFactory<S, D> factory) { |
|
|
|
|
ResolvableType type = ResolvableType.forClass(ConnectionDetailsFactory.class, factory.getClass()); |
|
|
|
|
if (!type.hasUnresolvableGenerics()) { |
|
|
|
|
Class<?>[] generics = type.resolveGenerics(); |
|
|
|
|
Class<?>[] generics = resolveGenerics(type); |
|
|
|
|
if (generics != null) { |
|
|
|
|
return new Registration<>((Class<S>) generics[0], (Class<D>) generics[1], factory); |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Resolve the generics of the given {@link ResolvableType} or {@code null} if any |
|
|
|
|
* of them cannot be resolved. |
|
|
|
|
* @param type the type to inspect |
|
|
|
|
* @return the resolved generics if they can be loaded from the classpath, |
|
|
|
|
* {@code null} otherwise |
|
|
|
|
*/ |
|
|
|
|
private static Class<?>[] resolveGenerics(ResolvableType type) { |
|
|
|
|
Class<?>[] resolvedGenerics = type.resolveGenerics(); |
|
|
|
|
for (Class<?> genericRawType : resolvedGenerics) { |
|
|
|
|
if (genericRawType == null) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return resolvedGenerics; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|