This is an automated email from the ASF dual-hosted git repository.
jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 1bc1f6762d org.apache.juneau.common.reflect API improvements
1bc1f6762d is described below
commit 1bc1f6762d254bd85b18f9202a86b37a13042f8a
Author: James Bognar <[email protected]>
AuthorDate: Tue Nov 18 11:51:17 2025 -0500
org.apache.juneau.common.reflect API improvements
---
.../juneau/common/reflect/AnnotationProvider.java | 10 +-
.../apache/juneau/common/reflect/ClassInfo.java | 103 ++++----------------
.../src/main/java/org/apache/juneau/BeanMeta.java | 10 +-
.../src/main/java/org/apache/juneau/ClassMeta.java | 27 +++---
.../src/main/java/org/apache/juneau/Context.java | 6 +-
.../apache/juneau/cp/BeanCreateMethodFinder.java | 9 +-
.../java/org/apache/juneau/cp/BeanCreator.java | 34 ++++---
.../main/java/org/apache/juneau/cp/BeanStore.java | 26 ++---
.../java/org/apache/juneau/internal/Utils2.java | 5 +-
.../java/org/apache/juneau/parser/ParserSet.java | 2 +-
.../java/org/apache/juneau/reflect/Mutaters.java | 8 +-
.../apache/juneau/serializer/SerializerSet.java | 2 +-
.../org/apache/juneau/svl/VarResolverSession.java | 30 ++----
.../java/org/apache/juneau/swap/AutoListSwap.java | 4 +-
.../java/org/apache/juneau/swap/AutoMapSwap.java | 4 +-
.../org/apache/juneau/swap/AutoNumberSwap.java | 6 +-
.../org/apache/juneau/swap/AutoObjectSwap.java | 4 +-
.../java/org/apache/juneau/swap/BuilderSwap.java | 14 +--
.../java/org/apache/juneau/swap/SurrogateSwap.java | 5 +-
.../java/org/apache/juneau/swaps/TemporalSwap.java | 9 +-
.../apache/juneau/rest/client/ResponseContent.java | 24 ++---
.../apache/juneau/rest/client/ResponseHeader.java | 4 +-
.../org/apache/juneau/rest/client/RestRequest.java | 8 +-
.../java/org/apache/juneau/http/HttpParts.java | 6 +-
.../apache/juneau/http/header/HeaderBeanMeta.java | 14 ++-
.../org/apache/juneau/http/part/PartBeanMeta.java | 14 ++-
.../java/org/apache/juneau/rest/RestContext.java | 4 +-
.../juneau/common/reflect/ClassInfo_Test.java | 48 ++++-----
.../juneau/common/reflect/ConstructorInfoTest.java | 8 +-
.../juneau/common/reflect/ExecutableInfo_Test.java | 108 ++++++++++-----------
.../reflect/FieldInfo_AnnotationInfos_Test.java | 12 +--
.../common/reflect/FieldInfo_FullName_Test.java | 8 +-
.../juneau/common/reflect/FieldInfo_Test.java | 28 +++---
.../juneau/common/reflect/ParamInfoTest.java | 30 +++---
.../java/org/apache/juneau/cp/BeanStore_Test.java | 14 +--
.../org/apache/juneau/reflect/ParamInfoTest.java | 30 +++---
.../apache/juneau/rest/client/RestClient_Test.java | 6 +-
37 files changed, 295 insertions(+), 389 deletions(-)
diff --git
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
index 1372ab0619..16f83b4a47 100644
---
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
+++
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/AnnotationProvider.java
@@ -334,21 +334,19 @@ public class AnnotationProvider {
try {
var ci = ClassInfo.of(a.getClass());
- MethodInfo mi = ci.getPublicMethod(x ->
x.hasName("onClass"));
- if (nn(mi)) {
+ ci.getPublicMethod(x ->
x.hasName("onClass")).ifPresent(mi -> {
if (!
mi.getReturnType().is(Class[].class))
throw new
BeanRuntimeException("Invalid annotation @{0} used in runtime annotations.
Annotation must define an onClass() method that returns a Class array.",
scn(a));
for (var c :
(Class<?>[])mi.accessible().invoke(a))
runtimeAnnotations.append(c.getName(), a);
- }
+ });
- mi = ci.getPublicMethod(x ->
x.hasName("on"));
- if (nn(mi)) {
+ ci.getPublicMethod(x ->
x.hasName("on")).ifPresent(mi -> {
if (!
mi.getReturnType().is(String[].class))
throw new
BeanRuntimeException("Invalid annotation @{0} used in runtime annotations.
Annotation must define an on() method that returns a String array.", scn(a));
for (var s :
(String[])mi.accessible().invoke(a))
runtimeAnnotations.append(s, a);
- }
+ });
} catch (BeanRuntimeException e) {
throw e;
diff --git
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
index b053678bce..ef226998d1 100644
---
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
+++
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/reflect/ClassInfo.java
@@ -330,7 +330,7 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* <jk>void</jk> method3() {}
* <jk>void</jk> method4() {}
* }
- *
+ *
* <jc>// getAllMethodsParentFirst() returns in parent-to-child
order:</jc>
* ClassInfo <jv>ci</jv> =
ClassInfo.<jsm>of</jsm>(Child.<jk>class</jk>);
* List<MethodInfo> <jv>methods</jv> =
<jv>ci</jv>.getAllMethodsParentFirst();
@@ -453,11 +453,8 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The declared constructor that matches the specified
predicate.
*/
- public ConstructorInfo
getDeclaredConstructor(Predicate<ConstructorInfo> filter) {
- for (var ci : declaredConstructors.get())
- if (test(filter, ci))
- return ci;
- return null;
+ public Optional<ConstructorInfo>
getDeclaredConstructor(Predicate<ConstructorInfo> filter) {
+ return declaredConstructors.get().stream().filter(x ->
test(filter, x)).findFirst();
}
/**
@@ -475,11 +472,8 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The declared field, or <jk>null</jk> if not found.
*/
- public FieldInfo getDeclaredField(Predicate<FieldInfo> filter) {
- for (var f : declaredFields.get())
- if (test(filter, f))
- return f;
- return null;
+ public Optional<FieldInfo> getDeclaredField(Predicate<FieldInfo>
filter) {
+ return declaredFields.get().stream().filter(x -> test(filter,
x)).findFirst();
}
/**
@@ -625,11 +619,8 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The first matching method, or <jk>null</jk> if no methods
matched.
*/
- public MethodInfo getDeclaredMethod(Predicate<MethodInfo> filter) {
- for (var mi : declaredMethods.get())
- if (test(filter, mi))
- return mi;
- return null;
+ public Optional<MethodInfo> getDeclaredMethod(Predicate<MethodInfo>
filter) {
+ return declaredMethods.get().stream().filter(x -> test(filter,
x)).findFirst();
}
/**
@@ -797,58 +788,14 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
.map(a -> (AnnotationInfo<A>)a);
}
- /**
- * Performs an action on all matching annotations on this class and
parent classes/interfaces.
- *
- * <p>
- * Annotations are consumed in the following order:
- * <ol>
- * <li>On the package of this class.
- * <li>On interfaces ordered parent-to-child.
- * <li>On parent classes ordered parent-to-child.
- * <li>On this class.
- * </ol>
- *
- * @param filter A predicate to apply to the entries to determine if
action should be performed. Can be <jk>null</jk>.
- * @param action An action to perform on the entry.
- * @return This object.
- */
- public ClassInfo forEachAnnotation(Predicate<AnnotationInfo<?>> filter,
Consumer<AnnotationInfo<?>> action) {
- var pi = getPackage();
- if (nn(pi))
- for (var ai : pi.getAnnotations())
- if (filter == null || filter.test(ai))
- action.accept(ai);
- var interfaces = getInterfaces();
- for (int i = interfaces.size() - 1; i >= 0; i--)
- for (var a :
interfaces.get(i).inner().getDeclaredAnnotations())
- for (var a2 : splitRepeated(a)) {
- var ai =
AnnotationInfo.of(interfaces.get(i), a2);
- if (filter == null || filter.test(ai))
- action.accept(ai);
- }
- var parents = getParents();
- for (int i = parents.size() - 1; i >= 0; i--)
- for (var a :
parents.get(i).inner().getDeclaredAnnotations())
- for (var a2 : splitRepeated(a)) {
- var ai =
AnnotationInfo.of(parents.get(i), a2);
- if (filter == null || filter.test(ai))
- action.accept(ai);
- }
- return this;
- }
-
/**
* Returns the first matching method on this class.
*
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The first matching method, or <jk>null</jk> if no methods
matched.
*/
- public MethodInfo getMethod(Predicate<MethodInfo> filter) {
- for (var mi : allMethods.get())
- if (test(filter, mi))
- return mi;
- return null;
+ public Optional<MethodInfo> getMethod(Predicate<MethodInfo> filter) {
+ return allMethods.get().stream().filter(x -> test(filter,
x)).findFirst();
}
/**
@@ -873,7 +820,7 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* <jk>void</jk> method3() {}
* <jk>void</jk> method4() {}
* }
- *
+ *
* <jc>// getAllMethods() returns in child-to-parent order:</jc>
* ClassInfo <jv>ci</jv> =
ClassInfo.<jsm>of</jsm>(Child.<jk>class</jk>);
* List<MethodInfo> <jv>methods</jv> =
<jv>ci</jv>.getAllMethods();
@@ -1006,16 +953,15 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param v The minimum visibility.
* @return The constructor, or <jk>null</jk> if no no-arg constructor
exists with the required visibility.
*/
- public ConstructorInfo getNoArgConstructor(Visibility v) {
+ public Optional<ConstructorInfo> getNoArgConstructor(Visibility v) {
if (isAbstract())
- return null;
+ return Optional.empty();
int expectedParams = isNonStaticMemberClass() ? 1 : 0;
return getDeclaredConstructors().stream()
.filter(cc -> cc.hasNumParameters(expectedParams))
.filter(cc -> cc.isVisible(v))
.map(cc -> cc.accessible(v))
- .findFirst()
- .orElse(null);
+ .findFirst();
}
/**
@@ -1148,11 +1094,8 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The public constructor that matches the specified predicate.
*/
- public ConstructorInfo getPublicConstructor(Predicate<ConstructorInfo>
filter) {
- for (var ci : publicConstructors.get())
- if (test(filter, ci))
- return ci;
- return null;
+ public Optional<ConstructorInfo>
getPublicConstructor(Predicate<ConstructorInfo> filter) {
+ return publicConstructors.get().stream().filter(x ->
test(filter, x)).findFirst();
}
/**
@@ -1168,11 +1111,8 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The public field, or <jk>null</jk> if not found.
*/
- public FieldInfo getPublicField(Predicate<FieldInfo> filter) {
- for (var f : publicFields.get())
- if (test(filter, f))
- return f;
- return null;
+ public Optional<FieldInfo> getPublicField(Predicate<FieldInfo> filter) {
+ return publicFields.get().stream().filter(x -> test(filter,
x)).findFirst();
}
/**
@@ -1194,11 +1134,8 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* @param filter A predicate to apply to the entries to determine if
value should be used. Can be <jk>null</jk>.
* @return The first matching method, or <jk>null</jk> if no methods
matched.
*/
- public MethodInfo getPublicMethod(Predicate<MethodInfo> filter) {
- for (var mi : publicMethods.get())
- if (test(filter, mi))
- return mi;
- return null;
+ public Optional<MethodInfo> getPublicMethod(Predicate<MethodInfo>
filter) {
+ return publicMethods.get().stream().filter(x -> test(filter,
x)).findFirst();
}
/**
@@ -1694,7 +1631,7 @@ public class ClassInfo extends ElementInfo implements
Annotatable {
* <p class='bjava'>
* ClassInfo <jv>intClass</jv> =
ClassInfo.<jsm>of</jsm>(<jk>int</jk>.<jk>class</jk>);
* ClassInfo <jv>wrapper</jv> =
<jv>intClass</jv>.getWrapperIfPrimitive(); <jc>// Returns ClassInfo for
Integer.class</jc>
- *
+ *
* ClassInfo <jv>stringClass</jv> =
ClassInfo.<jsm>of</jsm>(String.<jk>class</jk>);
* ClassInfo <jv>same</jv> =
<jv>stringClass</jv>.getWrapperIfPrimitive(); <jc>// Returns same
ClassInfo</jc>
* </p>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
index 69b7ef2b92..cb7bf99151 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMeta.java
@@ -298,7 +298,7 @@ public class BeanMeta<T> {
constructor = implClassConstructor;
if (constructor == null)
- constructor =
ci.getNoArgConstructor(hasBean ? Visibility.PRIVATE : conVis);
+ constructor =
ci.getNoArgConstructor(hasBean ? Visibility.PRIVATE : conVis).orElse(null);
if (constructor == null && beanFilter == null
&& ctx.isBeansRequireDefaultConstructor())
return "Class does not have the
required no-arg constructor";
@@ -706,16 +706,14 @@ public class BeanMeta<T> {
Value<Field> value = Value.empty();
forEachClass(ClassInfo.of(c), stopClass, c2 -> {
// @formatter:off
- FieldInfo f = c2.getDeclaredField(
+ c2.getDeclaredField(
x -> x.isNotStatic()
&& (x.isNotTransient() || noIgnoreTransients)
&& (! x.hasAnnotation(Transient.class) ||
noIgnoreTransients)
&&
ctx.getAnnotationProvider().find(BeanIgnore.class,
x.inner()).findAny().isEmpty()
- && x.hasName(name)
- );
+ && x.hasName(name))
+ .ifPresent(f -> value.set(f.inner()));
// @formatter:on
- if (nn(f))
- value.set(f.inner());
});
return value.get();
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
index ce9cdc1d07..77c40f056b 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ClassMeta.java
@@ -183,27 +183,25 @@ public class ClassMeta<T> implements Type {
// forName() is used by Class and Charset
String[] fromStringMethodNames =
{"fromString","fromValue","valueOf","parse","parseString","forName","forString"};
// @formatter:off
- fromStringMethod = opt(
- ci.getPublicMethod(
+ fromStringMethod = ci.getPublicMethod(
x -> x.isStatic()
&& x.isNotDeprecated()
&& x.hasReturnType(c)
&& x.hasParameterTypes(String.class)
&& contains(x.getName(),
fromStringMethodNames))
- ).map(MethodInfo::inner)
- .orElse(null);
+ .map(x -> x.inner())
+ .orElse(null);
// @formatter:on
// Find example() method if present.
// @formatter:off
- exampleMethod = opt(
- ci.getPublicMethod(
+ exampleMethod = ci.getPublicMethod(
x -> x.isStatic()
&& x.isNotDeprecated()
&& x.hasName("example")
&&
x.hasParameterTypesLenient(BeanSession.class))
- ).map(MethodInfo::inner)
- .orElse(null);
+ .map(x -> x.inner())
+ .orElse(null);
// @formatter:on
ci.getAllFields().stream().filter(x ->
bc.getAnnotationProvider().find(ParentProperty.class,
x.inner()).findAny().isPresent()).forEach(x -> {
@@ -296,7 +294,7 @@ public class ClassMeta<T> implements Type {
if (innerClass != Object.class) {
ClassInfo x = implClass == null ? ci :
ClassInfo.of(implClass);
- noArgConstructor = x.getPublicConstructor(cons
-> cons.getParameterCount() == 0);
+ noArgConstructor = x.getPublicConstructor(cons
-> cons.getParameterCount() == 0).orElse(null);
}
try {
@@ -554,15 +552,14 @@ public class ClassMeta<T> implements Type {
return null;
boolean isMemberClass = ci.isMemberClass() && ci.isNotStatic();
// @formatter:off
- ConstructorInfo cc = ci.getPublicConstructor(
+ return ci.getPublicConstructor(
x -> x.isVisible(v)
&& x.isNotDeprecated()
&& x.hasNumParameters(isMemberClass ? 1 : 0)
- );
+ )
+ .map(cc -> (Constructor<? extends T>)v.transform(cc.inner()))
+ .orElse(null);
// @formatter:on
- if (nn(cc))
- return (Constructor<? extends
T>)v.transform(cc.inner());
- return null;
}
final Class<T> innerClass; // The class
being wrapped.
@@ -1066,7 +1063,7 @@ public class ClassMeta<T> implements Type {
*/
public ConstructorInfo getImplClassConstructor(Visibility conVis) {
if (nn(implClass))
- return
ClassInfo.of(implClass).getNoArgConstructor(conVis);
+ return
ClassInfo.of(implClass).getNoArgConstructor(conVis).orElse(null);
return null;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
index 2922d9ec87..9c59ef51ba 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Context.java
@@ -650,10 +650,8 @@ public abstract class Context {
cci = ClassInfo.of(type).getPublicConstructor(
x -> x.hasNumParameters(1)
&& x.getParameter(0).canAccept(this)
- );
+ ).orElseThrow(() -> runtimeException("Public
constructor not found: {0}({1})", cn(type), cn(this)));
// @formatter:on
- if (cci == null)
- throw runtimeException("Public
constructor not found: {0}({1})", cn(type), cn(this));
CONTEXT_CONSTRUCTORS.put(type, cci);
}
return cci;
@@ -735,7 +733,7 @@ public abstract class Context {
&& x.isNotDeprecated()
&& x.hasName("create")
&&
x.hasReturnType(ci.getParameter(0).getParameterType())
- );
+ ).orElse(null);
// @formatter:on
if (nn(mi))
break;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
index 3f26b25d09..dc6e6a9554 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreateMethodFinder.java
@@ -145,16 +145,17 @@ public class BeanCreateMethodFinder<T> {
public BeanCreateMethodFinder<T> find(Predicate<MethodInfo> filter) {
// @formatter:off
if (method == null) {
- method = ClassInfo.of(resourceClass).getPublicMethod(
+ ClassInfo.of(resourceClass).getPublicMethod(
x -> x.isNotDeprecated()
&& x.hasReturnType(beanType)
&& ! x.hasAnnotation(BeanIgnore.class)
&& filter.test(x)
&& beanStore.hasAllParams(x)
&& (x.isStatic() || nn(resource))
- );
- if (nn(method))
- args = beanStore.getParams(method);
+ ).ifPresent(m -> {
+ method = m;
+ args = beanStore.getParams(m);
+ });
}
return this;
// @formatter:on
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
index 94fa1594e0..32c5459aab 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
@@ -249,7 +249,7 @@ public class BeanCreator<T> {
// Look for getInstance(Builder).
if (nn(builder)) {
// @formatter:off
- MethodInfo m = type.getPublicMethod(
+ var result = type.getPublicMethod(
x -> x.isStatic()
&& x.isNotDeprecated()
&& x.hasNumParameters(1)
@@ -257,26 +257,26 @@ public class BeanCreator<T> {
&& x.hasReturnType(type)
&& ! x.hasAnnotation(BeanIgnore.class)
&& x.hasName("getInstance")
- );
+ ).map(m -> m.<T>invoke(null, builder));
// @formatter:on
- if (nn(m))
- return m.invoke(null, builder);
+ if (result.isPresent())
+ return result.get();
}
// Look for getInstance().
if (builder == null) {
// @formatter:off
- MethodInfo m = type.getPublicMethod(
+ var result = type.getPublicMethod(
x -> x.isStatic()
&& x.isNotDeprecated()
&& x.getParameterCount() == 0
&& x.hasReturnType(type)
&& ! x.hasAnnotation(BeanIgnore.class)
&& x.hasName("getInstance")
- );
+ ).map(m -> m.<T>invoke(null));
// @formatter:on
- if (nn(m))
- return m.invoke(null);
+ if (result.isPresent())
+ return result.get();
}
if (builder == null) {
@@ -331,14 +331,16 @@ public class BeanCreator<T> {
if (builder == null) {
// Look for static-builder/protected-constructor pair.
Value<T> value = Value.empty();
- type.getDeclaredConstructors().stream().filter(x ->
x.hasNumParameters(1) && x.isVisible(PROTECTED)).forEach(x -> {
- Class<?> pt =
x.getParameter(0).getParameterType().inner();
- MethodInfo m = type.getPublicMethod(y ->
isStaticCreateMethod(y, pt));
- if (nn(m)) {
- Object builder = m.invoke(null);
-
value.set(x.accessible().newInstance(builder));
- }
- });
+ type.getDeclaredConstructors().stream()
+ .filter(x -> x.hasNumParameters(1) &&
x.isVisible(PROTECTED))
+ .forEach(x -> {
+ Class<?> pt =
x.getParameter(0).getParameterType().inner();
+ type.getPublicMethod(y ->
isStaticCreateMethod(y, pt))
+ .ifPresent(m -> {
+ Object b =
m.invoke(null);
+
value.set(x.accessible().newInstance(b));
+ });
+ });
if (value.isPresent())
return value.get();
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
index e3b6da6ef2..ae614a0252 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
@@ -116,23 +116,25 @@ public class BeanStore {
var c = ClassInfo.of(type);
// @formatter:off
- MethodInfo m = c.getDeclaredMethod(
+ Optional<BeanStore> result = c.getDeclaredMethod(
x -> x.isPublic()
&& x.getParameterCount() == 0
&& x.isStatic()
&& x.hasName("getInstance")
- );
+ ).map(m -> m.<BeanStore>invoke(null));
// @formatter:on
- if (nn(m))
- return m.invoke(null);
-
- ConstructorInfo ci = c.getPublicConstructor(x ->
x.canAccept(this));
- if (nn(ci))
- return ci.newInstance(this);
-
- ci = c.getDeclaredConstructor(x -> x.isProtected() &&
x.canAccept(this));
- if (nn(ci))
- return ci.accessible().newInstance(this);
+ if (result.isPresent())
+ return result.get();
+
+ result = c.getPublicConstructor(x -> x.canAccept(this))
+ .map(ci -> ci.<BeanStore>newInstance(this));
+ if (result.isPresent())
+ return result.get();
+
+ result = c.getDeclaredConstructor(x -> x.isProtected()
&& x.canAccept(this))
+ .map(ci ->
ci.accessible().<BeanStore>newInstance(this));
+ if (result.isPresent())
+ return result.get();
throw runtimeException("Could not find a way to
instantiate class {0}", cn(type));
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/Utils2.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/Utils2.java
index 9d034868d5..3232a14ebe 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/Utils2.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/Utils2.java
@@ -48,9 +48,8 @@ public class Utils2 extends Utils {
var methods2 = new LinkedHashMap<String,MethodInfo>();
do {
String cname = ci.getNameShort();
- MethodInfo mi = ci.getDeclaredMethod(x ->
x.hasName("properties"));
- if (nn(mi))
- methods2.put(cname, mi.accessible());
+ ci.getDeclaredMethod(x ->
x.hasName("properties"))
+ .ifPresent(mi -> methods2.put(cname,
mi.accessible()));
ci = ci.getSuperclass();
} while (nn(ci));
methods = methods2;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
index 5001ae535d..d89c4bcbc7 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSet.java
@@ -388,7 +388,7 @@ public class ParserSet {
if (o instanceof Class) {
// Check for no-arg constructor.
- ConstructorInfo ci =
ClassInfo.of((Class<?>)o).getPublicConstructor(c -> c.getParameterCount() == 0);
+ ConstructorInfo ci =
ClassInfo.of((Class<?>)o).getPublicConstructor(c -> c.getParameterCount() ==
0).orElse(null);
if (nn(ci))
return ci.newInstance();
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
index f00046fd6f..d6706fc508 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/reflect/Mutaters.java
@@ -220,7 +220,7 @@ public class Mutaters {
&& x.hasReturnType(oc2)
&& x.hasParameterTypes(ic)
&& (x.hasName("forName") ||
isStaticCreateMethodName(x, ic))
- );
+ ).orElse(null);
// @formatter:on
if (oc2.isEnum() && createMethod == null) {
@@ -252,7 +252,7 @@ public class Mutaters {
&& x.hasReturnType(oc)
&& x.hasParameterTypes(ic)
&& isStaticCreateMethodName(x, ic)
- );
+ ).orElse(null);
// @formatter:on
if (nn(createMethod)) {
@@ -270,7 +270,7 @@ public class Mutaters {
}
}
- ConstructorInfo c = oci.getPublicConstructor(x ->
x.hasParameterTypes(ic));
+ ConstructorInfo c = oci.getPublicConstructor(x ->
x.hasParameterTypes(ic)).orElse(null);
if (nn(c) && c.isNotDeprecated()) {
boolean isMemberClass = oci.isNonStaticMemberClass();
return new Mutater() {
@@ -312,7 +312,7 @@ public class Mutaters {
&& x.getParameterCount() == 0
&& x.getSimpleName().startsWith("to")
&& x.getSimpleName().substring(2).equalsIgnoreCase(tn)
- );
+ ).orElse(null);
// @formatter:on
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
index 8cba57202d..743c83638b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSet.java
@@ -384,7 +384,7 @@ public class SerializerSet {
if (o instanceof Class) {
// Check for no-arg constructor.
- ConstructorInfo ci =
ClassInfo.of((Class<?>)o).getPublicConstructor(c -> c.getParameterCount() == 0);
+ ConstructorInfo ci =
ClassInfo.of((Class<?>)o).getPublicConstructor(c -> c.getParameterCount() ==
0).orElse(null);
if (nn(ci))
return ci.newInstance();
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
index 511e2d0cf4..d5d2cea352 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/VarResolverSession.java
@@ -266,13 +266,9 @@ public class VarResolverSession {
try {
if (! containsVars(c))
return o;
- Set c2 = null;
- var ci =
ClassInfo.of(o).getDeclaredConstructor(x -> x.isPublic() &&
x.getParameterCount() == 0);
- if (ci != null) {
- c2 = (Set)ci.inner().newInstance();
- } else {
- c2 = new LinkedHashSet<>();
- }
+ Set c2 =
ClassInfo.of(o).getDeclaredConstructor(x -> x.isPublic() &&
x.getParameterCount() == 0)
+ .map(ci -> safe(() ->
(Set)ci.inner().newInstance()))
+ .orElseGet(LinkedHashSet::new);
Set c3 = c2;
c.forEach(x -> c3.add(resolve(x)));
return (T)c2;
@@ -286,13 +282,9 @@ public class VarResolverSession {
try {
if (! containsVars(c))
return o;
- List c2 = null;
- var ci =
ClassInfo.of(o).getDeclaredConstructor(x -> x.isPublic() &&
x.getParameterCount() == 0);
- if (ci != null) {
- c2 = (List)ci.inner().newInstance();
- } else {
- c2 = list();
- }
+ List c2 =
ClassInfo.of(o).getDeclaredConstructor(x -> x.isPublic() &&
x.getParameterCount() == 0)
+ .map(ci -> safe(() ->
(List)ci.inner().newInstance()))
+ .orElseGet(() -> list());
List c3 = c2;
c.forEach(x -> c3.add(resolve(x)));
return (T)c2;
@@ -306,13 +298,9 @@ public class VarResolverSession {
try {
if (! containsVars(m))
return o;
- Map m2 = null;
- var ci =
ClassInfo.of(o).getDeclaredConstructor(x -> x.isPublic() &&
x.getParameterCount() == 0);
- if (ci != null) {
- m2 = (Map)ci.inner().newInstance();
- } else {
- m2 = new LinkedHashMap<>();
- }
+ Map m2 =
ClassInfo.of(o).getDeclaredConstructor(x -> x.isPublic() &&
x.getParameterCount() == 0)
+ .map(ci -> safe(() ->
(Map)ci.inner().newInstance()))
+ .orElseGet(LinkedHashMap::new);
Map m3 = m2;
m.forEach((k, v) -> m3.put(k, resolve(v)));
return (T)m2;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
index e999dd0f8f..928792cfa5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
@@ -109,11 +109,11 @@ public class AutoListSwap<T> extends
ObjectSwap<T,List<?>> {
var rt = m.getReturnType();
- var mi = ci.getMethod(x -> isUnswapMethod(bc,
x, ci, rt));
+ var mi = ci.getMethod(x -> isUnswapMethod(bc,
x, ci, rt)).orElse(null);
if (nn(mi))
return new AutoListSwap(bc, ci, m, mi,
null);
- var cs = ci.getDeclaredConstructor(x ->
isUnswapConstructor(bc, x, rt));
+ var cs = ci.getDeclaredConstructor(x ->
isUnswapConstructor(bc, x, rt)).orElse(null);
if (nn(cs))
return new AutoListSwap(bc, ci, m,
null, cs);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
index 00b4390678..871a648dde 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
@@ -109,11 +109,11 @@ public class AutoMapSwap<T> extends
ObjectSwap<T,Map<?,?>> {
var rt = m.getReturnType();
- var mi = ci.getMethod(x -> isUnswapMethod(bc,
x, ci, rt));
+ var mi = ci.getMethod(x -> isUnswapMethod(bc,
x, ci, rt)).orElse(null);
if (nn(mi))
return new AutoMapSwap(bc, ci, m, mi,
null);
- var cs = ci.getDeclaredConstructor(x ->
isUnswapConstructor(bc, x, rt));
+ var cs = ci.getDeclaredConstructor(x ->
isUnswapConstructor(bc, x, rt)).orElse(null);
if (nn(cs))
return new AutoMapSwap(bc, ci, m, null,
cs);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
index fdc1206db7..45bfdb0345 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
@@ -131,13 +131,13 @@ public class AutoNumberSwap<T> extends
ObjectSwap<T,Number> {
if (isSwapMethod(bc, m)) {
- ClassInfo rt = m.getReturnType();
+ var rt = m.getReturnType();
- MethodInfo mi = ci.getMethod(x ->
isUnswapMethod(bc, x, ci, rt));
+ var mi = ci.getMethod(x -> isUnswapMethod(bc,
x, ci, rt)).orElse(null);
if (nn(mi))
return new AutoNumberSwap(bc, ci, m,
mi, null);
- ConstructorInfo cs =
ci.getDeclaredConstructor(x -> isUnswapConstructor(bc, x, rt));
+ var cs = ci.getDeclaredConstructor(x ->
isUnswapConstructor(bc, x, rt)).orElse(null);
if (nn(cs))
return new AutoNumberSwap(bc, ci, m,
null, cs);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
index e5c9ee0859..53af77d0e2 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
@@ -111,11 +111,11 @@ public class AutoObjectSwap<T> extends
ObjectSwap<T,Object> {
ClassInfo rt = m.getReturnType();
- MethodInfo mi = ci.getMethod(x ->
isUnswapMethod(bc, x, ci, rt));
+ MethodInfo mi = ci.getMethod(x ->
isUnswapMethod(bc, x, ci, rt)).orElse(null);
if (nn(mi))
return new AutoObjectSwap(bc, ci, m,
mi, null);
- ConstructorInfo cs =
ci.getDeclaredConstructor(x -> isUnswapConstructor(bc, x, rt));
+ ConstructorInfo cs =
ci.getDeclaredConstructor(x -> isUnswapConstructor(bc, x, rt)).orElse(null);
if (nn(cs))
return new AutoObjectSwap(bc, ci, m,
null, cs);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
index 25fc1ea0a8..93b4e1f45d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
@@ -69,11 +69,11 @@ public class BuilderSwap<T,B> {
var pci = ClassInfo.of(objectClass);
- objectConstructor = pci.getDeclaredConstructor(x ->
x.isVisible(cVis) && x.hasParameterTypes(builderClass));
+ objectConstructor = pci.getDeclaredConstructor(x ->
x.isVisible(cVis) && x.hasParameterTypes(builderClass)).orElse(null);
if (objectConstructor == null)
return null;
- builderConstructor = bci.getNoArgConstructor(cVis);
+ builderConstructor = bci.getNoArgConstructor(cVis).orElse(null);
createBuilderMethod = getBuilderCreateMethod(pci);
if (builderConstructor == null && createBuilderMethod == null)
return null;
@@ -112,7 +112,7 @@ public class BuilderSwap<T,B> {
x -> x.isVisible(cVis)
&& x.hasNumParameters(1)
&&
x.getParameter(0).getParameterType().isChildOf(Builder.class)
- );
+ ).orElse(null);
// @formatter:on
if (nn(cc)) {
objectConstructor = cc;
@@ -124,14 +124,14 @@ public class BuilderSwap<T,B> {
return null;
var bci = ClassInfo.of(builderClass.get());
- builderConstructor = bci.getNoArgConstructor(cVis);
+ builderConstructor = bci.getNoArgConstructor(cVis).orElse(null);
if (builderConstructor == null && builderCreateMethod == null)
return null;
objectCreateMethod = getBuilderBuildMethod(bci);
var builderClass2 = builderClass.get();
if (objectConstructor == null)
- objectConstructor = pci.getDeclaredConstructor(x ->
x.isVisible(cVis) && x.hasParameterTypes(builderClass2));
+ objectConstructor = pci.getDeclaredConstructor(x ->
x.isVisible(cVis) && x.hasParameterTypes(builderClass2)).orElse(null);
if (objectConstructor == null && objectCreateMethod == null)
return null;
@@ -147,7 +147,7 @@ public class BuilderSwap<T,B> {
&& x.getParameterCount() == 0
&& (!x.hasReturnType(void.class))
&& x.hasName("build")
- );
+ ).orElse(null);
// @formatter:on
}
@@ -158,7 +158,7 @@ public class BuilderSwap<T,B> {
&& (x.hasName("create") || x.hasName("builder"))
&& ! x.hasReturnType(c)
&& hasConstructorThatTakesType(c, x.getReturnType())
- );
+ ).orElse(null);
// @formatter:on
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
index 623d5856a7..e7b0cc4a0c 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
@@ -58,8 +58,9 @@ public class SurrogateSwap<T,F> extends ObjectSwap<T,F> {
var pt = x.getParameter(0).getParameterType().inner();
if (! pt.equals(c.getDeclaringClass())) {
// Find the unswap method if there is one.
- var mi = ci.getPublicMethod(y ->
y.hasReturnType(pt));
- Method unswapMethod = nn(mi) ? mi.inner() :
null;
+ Method unswapMethod = ci.getPublicMethod(y ->
y.hasReturnType(pt))
+ .map(MethodInfo::inner)
+ .orElse(null);
l.add(new SurrogateSwap(pt, x.inner(),
unswapMethod));
}
});
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/TemporalSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/TemporalSwap.java
index ab56dc2c7b..b569e0ad72 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/TemporalSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/TemporalSwap.java
@@ -339,17 +339,16 @@ public class TemporalSwap extends StringSwap<Temporal> {
Method m = FROM_METHODS.get(c);
if (m == null) {
// @formatter:off
- MethodInfo mi = ClassInfo.of(c).getPublicMethod(
+ m = ClassInfo.of(c).getPublicMethod(
x -> x.isStatic()
&& x.isNotDeprecated()
&& x.hasName("from")
&& x.hasReturnType(c)
&& x.hasParameterTypes(TemporalAccessor.class)
- );
+ )
+ .map(MethodInfo::inner)
+ .orElseThrow(() -> new ExecutableException("Parse
method not found on temporal class ''{0}''", c.getSimpleName()));
// @formatter:on
- if (mi == null)
- throw new ExecutableException("Parse method not
found on temporal class ''{0}''", c.getSimpleName());
- m = mi.inner();
FROM_METHODS.put(c, m);
}
return m;
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
index e465751880..c1a8b96ae9 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
@@ -233,14 +233,10 @@ public class ResponseContent implements HttpEntity {
if (type.is(HttpResource.class))
type =
(ClassMeta<T>)getClassMeta(BasicResource.class);
- ConstructorInfo ci =
type.getInfo().getPublicConstructor(x ->
x.hasParameterTypes(HttpResponse.class));
- if (nn(ci)) {
- try {
- return (T)ci.newInstance(response);
- } catch (ExecutableException e) {
- throw toRuntimeException(e);
- }
- }
+ var result = type.getInfo().getPublicConstructor(x ->
x.hasParameterTypes(HttpResponse.class))
+ .map(ci -> safe(() ->
(T)ci.newInstance(response)));
+ if (result.isPresent())
+ return result.get();
var ct =
firstNonEmpty(response.getHeader("Content-Type").orElse("text/plain"));
@@ -270,14 +266,10 @@ public class ResponseContent implements HttpEntity {
// Some HTTP responses have no body, so
try to create these beans if they've got no-arg constructors.
if (t == null && !
type.is(String.class)) {
- ConstructorInfo c =
type.getInfo().getPublicConstructor(cons -> cons.getParameterCount() == 0);
- if (nn(c)) {
- try {
- return
c.<T>newInstance();
- } catch
(ExecutableException e) {
- throw new
ParseException(e);
- }
- }
+ var result2 =
type.getInfo().getPublicConstructor(cons -> cons.getParameterCount() == 0)
+ .map(c -> safe(() ->
c.<T>newInstance()));
+ if (result2.isPresent())
+ return result2.get();
}
return t;
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
index e90c3181cd..f8d21f5efe 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
@@ -252,10 +252,10 @@ public class ResponseHeader extends BasicHeader {
public <T extends BasicHeader> T asHeader(Class<T> c) {
try {
var ci = ClassInfo.of(c);
- ConstructorInfo cc = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class));
+ ConstructorInfo cc = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).orElse(null);
if (nn(cc))
return cc.newInstance(getValue());
- cc = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class));
+ cc = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class)).orElse(null);
if (nn(cc))
return cc.newInstance(getName(), getValue());
} catch (Throwable e) {
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index c62e44512a..02c3f997a4 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -1943,16 +1943,16 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (t.getName().equals(className)) {
ConstructorInfo c = null;
var ci = ClassInfo.of(t);
- c = ci.getPublicConstructor(x
-> x.hasParameterTypes(HttpResponse.class));
+ c = ci.getPublicConstructor(x
-> x.hasParameterTypes(HttpResponse.class)).orElse(null);
if (nn(c))
throw
c.<Throwable>newInstance(response);
- c = ci.getPublicConstructor(x
-> x.hasParameterTypes(String.class));
+ c = ci.getPublicConstructor(x
-> x.hasParameterTypes(String.class)).orElse(null);
if (nn(c))
throw
c.<Throwable>newInstance(nn(message) ? message :
response.getContent().asString());
- c = ci.getPublicConstructor(x
-> x.hasParameterTypes(String.class, Throwable.class));
+ c = ci.getPublicConstructor(x
-> x.hasParameterTypes(String.class, Throwable.class)).orElse(null);
if (nn(c))
throw
c.<Throwable>newInstance(nn(message) ? message :
response.getContent().asString(), null);
- c =
ci.getPublicConstructor(cons -> cons.getParameterCount() == 0);
+ c =
ci.getPublicConstructor(cons -> cons.getParameterCount() == 0).orElse(null);
if (nn(c))
throw
c.<Throwable>newInstance();
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/HttpParts.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/HttpParts.java
index e628bc0933..12faa313ad 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/HttpParts.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/HttpParts.java
@@ -71,10 +71,8 @@ public class HttpParts {
private static final Function<ClassMeta<?>,ConstructorInfo>
CONSTRUCTOR_FUNCTION = x -> {
var ci = x.getInfo();
- var cc = ci.getPublicConstructor(y ->
y.hasParameterTypes(String.class));
- if (cc == null)
- cc = ci.getPublicConstructor(y ->
y.hasParameterTypes(String.class, String.class));
- return cc;
+ return ci.getPublicConstructor(y ->
y.hasParameterTypes(String.class))
+ .orElseGet(() -> ci.getPublicConstructor(y ->
y.hasParameterTypes(String.class, String.class)).orElse(null));
};
/**
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
index 2bca093c83..1ba89584f1 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
@@ -95,14 +95,12 @@ public class HeaderBeanMeta<T> {
var ci = ClassInfo.of(type);
- ConstructorInfo cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class));
- if (cci == null)
- cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(Object.class));
- if (cci == null)
- cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class));
- if (cci == null)
- cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, Object.class));
- constructor = cci == null ? null : cci.inner();
+ constructor = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class))
+ .or(() -> ci.getPublicConstructor(x ->
x.hasParameterTypes(Object.class)))
+ .or(() -> ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class)))
+ .or(() -> ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, Object.class)))
+ .map(x -> x.<T>inner())
+ .orElse(null);
this.schema =
HttpPartSchema.create(org.apache.juneau.http.annotation.Header.class, type);
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
index 3fc2b2c841..e610b8d7a2 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/PartBeanMeta.java
@@ -96,14 +96,12 @@ public class PartBeanMeta<T> {
var ci = ClassInfo.of(type);
- ConstructorInfo cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class));
- if (cci == null)
- cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(Object.class));
- if (cci == null)
- cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class));
- if (cci == null)
- cci = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, Object.class));
- constructor = cci == null ? null : cci.inner();
+ constructor = ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class))
+ .or(() -> ci.getPublicConstructor(x ->
x.hasParameterTypes(Object.class)))
+ .or(() -> ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class)))
+ .or(() -> ci.getPublicConstructor(x ->
x.hasParameterTypes(String.class, Object.class)))
+ .map(x -> x.<T>inner())
+ .orElse(null);
if (ci.hasAnnotation(Query.class))
this.schema = HttpPartSchema.create(Query.class, type);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 036037cdc2..cb8631a7e9 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -4496,7 +4496,7 @@ public class RestContext extends Context {
RestContext cc = cb.init(so).build();
- MethodInfo mi =
ClassInfo.of(so.get()).getMethod(x -> x.hasName("setContext") &&
x.hasParameterTypes(RestContext.class));
+ MethodInfo mi =
ClassInfo.of(so.get()).getMethod(x -> x.hasName("setContext") &&
x.hasParameterTypes(RestContext.class)).orElse(null);
if (nn(mi))
mi.accessible().invoke(so.get(), cc);
@@ -5765,7 +5765,7 @@ public class RestContext extends Context {
if (initialized.get())
return this;
var resource = getResource();
- var mi = ClassInfo.of(getResource()).getPublicMethod(x ->
x.hasName("setContext") && x.hasParameterTypes(RestContext.class));
+ var mi = ClassInfo.of(getResource()).getPublicMethod(x ->
x.hasName("setContext") && x.hasParameterTypes(RestContext.class)).orElse(null);
if (nn(mi)) {
try {
mi.accessible().invoke(resource, this);
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
index effef821a8..d01674f5fa 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ClassInfo_Test.java
@@ -180,10 +180,10 @@ public class ClassInfo_Test extends TestBase {
}
@Test void resolvedParams() {
- var mi2 = ClassInfo.of(A6.class).getPublicMethod(x ->
x.hasName("m1"));
+ var mi2 = ClassInfo.of(A6.class).getPublicMethod(x ->
x.hasName("m1")).get();
check("A1",
mi2.getParameter(0).getParameterType().unwrap(Optional.class));
check("A1", mi2.getReturnType().unwrap(Optional.class));
- mi2 = ClassInfo.of(A6.class).getPublicMethod(x ->
x.hasName("m2"));
+ mi2 = ClassInfo.of(A6.class).getPublicMethod(x ->
x.hasName("m2")).get();
check("A1",
mi2.getParameter(0).getParameterType().unwrap(Value.class));
check("A1", mi2.getReturnType().unwrap(Value.class));
}
@@ -411,43 +411,43 @@ public class ClassInfo_Test extends TestBase {
}
@Test void getPublicConstructor_classArgs() {
- check("E1(String)", e1.getPublicConstructor(x ->
x.hasParameterTypes(String.class)));
+ check("E1(String)", e1.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).orElse(null));
}
@Test void getPublicConstructor_objectArgs() {
- check("E1(String)", e1.getPublicConstructor(x ->
x.canAccept("foo")));
+ check("E1(String)", e1.getPublicConstructor(x ->
x.canAccept("foo")).orElse(null));
}
@Test void getNoArgConstructor() {
- check("E2()", e2.getNoArgConstructor(Visibility.PRIVATE));
- check("E2()", e2.getNoArgConstructor(Visibility.PROTECTED));
- check("E2()", e2.getNoArgConstructor(Visibility.DEFAULT));
- check(null, e2.getNoArgConstructor(Visibility.PUBLIC));
+ check("E2()",
e2.getNoArgConstructor(Visibility.PRIVATE).orElse(null));
+ check("E2()",
e2.getNoArgConstructor(Visibility.PROTECTED).orElse(null));
+ check("E2()",
e2.getNoArgConstructor(Visibility.DEFAULT).orElse(null));
+ check(null,
e2.getNoArgConstructor(Visibility.PUBLIC).orElse(null));
}
@Test void getNoArgConstructor_abstractClass() {
- check(null, e3.getNoArgConstructor(Visibility.PUBLIC));
+ check(null,
e3.getNoArgConstructor(Visibility.PUBLIC).orElse(null));
}
@Test void getNoArgConstructor_innerClass() {
- check("E4(ClassInfo_Test)",
e4.getNoArgConstructor(Visibility.PUBLIC));
+ check("E4(ClassInfo_Test)",
e4.getNoArgConstructor(Visibility.PUBLIC).orElse(null));
}
@Test void getNoArgConstructor_noConstructor() {
- check(null, e6.getNoArgConstructor(Visibility.PUBLIC));
+ check(null,
e6.getNoArgConstructor(Visibility.PUBLIC).orElse(null));
}
@Test void getPublicNoArgConstructor() {
- check("E1()", e1.getPublicConstructor(cons ->
cons.getParameterCount() == 0));
+ check("E1()", e1.getPublicConstructor(cons ->
cons.getParameterCount() == 0).orElse(null));
}
@Test void getConstructor() {
- check("E1(int)", e1.getDeclaredConstructor(x ->
x.isVisible(Visibility.PROTECTED) && x.hasParameterTypes(int.class)));
- check("E1(int)", e1.getDeclaredConstructor(x ->
x.isVisible(Visibility.PRIVATE) && x.hasParameterTypes(int.class)));
- check(null, e1.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC) && x.hasParameterTypes(int.class)));
- check("E3()", e3.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC)));
- check("E4(ClassInfo_Test)", e4.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC)));
- check("E5()", e5.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC)));
+ check("E1(int)", e1.getDeclaredConstructor(x ->
x.isVisible(Visibility.PROTECTED) &&
x.hasParameterTypes(int.class)).orElse(null));
+ check("E1(int)", e1.getDeclaredConstructor(x ->
x.isVisible(Visibility.PRIVATE) &&
x.hasParameterTypes(int.class)).orElse(null));
+ check(null, e1.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC) && x.hasParameterTypes(int.class)).orElse(null));
+ check("E3()", e3.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC)).orElse(null));
+ check("E4(ClassInfo_Test)", e4.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC)).orElse(null));
+ check("E5()", e5.getDeclaredConstructor(x ->
x.isVisible(Visibility.PUBLIC)).orElse(null));
}
//-----------------------------------------------------------------------------------------------------------------
@@ -512,15 +512,15 @@ public class ClassInfo_Test extends TestBase {
static ClassInfo f3=of(F3.class);
@Test void getPublicField() {
- check("F3.a1", f3.getPublicField(x -> x.hasName("a1")));
- check(null, f3.getPublicField(x -> x.hasName("a2")));
- check(null, f3.getPublicField(x -> x.hasName("a3")));
+ check("F3.a1", f3.getPublicField(x ->
x.hasName("a1")).orElse(null));
+ check(null, f3.getPublicField(x ->
x.hasName("a2")).orElse(null));
+ check(null, f3.getPublicField(x ->
x.hasName("a3")).orElse(null));
}
@Test void getDeclaredField() {
- check("F3.a1", f3.getDeclaredField(x -> x.hasName("a1")));
- check("F3.a2", f3.getDeclaredField(x -> x.hasName("a2")));
- check(null, f3.getDeclaredField(x -> x.hasName("a3")));
+ check("F3.a1", f3.getDeclaredField(x ->
x.hasName("a1")).orElse(null));
+ check("F3.a2", f3.getDeclaredField(x ->
x.hasName("a2")).orElse(null));
+ check(null, f3.getDeclaredField(x ->
x.hasName("a3")).orElse(null));
}
//-----------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ConstructorInfoTest.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ConstructorInfoTest.java
index 2502414f90..0861578107 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ConstructorInfoTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ConstructorInfoTest.java
@@ -107,10 +107,10 @@ class ConstructorInfoTest extends TestBase {
}
static ClassInfo b = ClassInfo.of(B.class);
static ConstructorInfo
- b_c1 = b.getPublicConstructor(cons -> cons.getParameterCount()
== 0),
- b_c2 = b.getPublicConstructor(x ->
x.hasParameterTypes(String.class)),
- b_c3 = b.getDeclaredConstructor(x ->
x.hasParameterTypes(int.class)),
- b_c4 = b.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class));
+ b_c1 = b.getPublicConstructor(cons -> cons.getParameterCount()
== 0).get(),
+ b_c2 = b.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get(),
+ b_c3 = b.getDeclaredConstructor(x ->
x.hasParameterTypes(int.class)).get(),
+ b_c4 = b.getPublicConstructor(x ->
x.hasParameterTypes(String.class, String.class)).get();
@Test void invoke() throws Exception {
assertEquals(null, b_c1.newInstanceLenient().toString());
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ExecutableInfo_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ExecutableInfo_Test.java
index 76c6dcf228..a15ab13d9a 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ExecutableInfo_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ExecutableInfo_Test.java
@@ -74,13 +74,13 @@ class ExecutableInfo_Test extends TestBase {
static ClassInfo a = ClassInfo.of(A.class);
@Test void isConstructor() {
- assertTrue(a.getPublicConstructor(cons ->
cons.getParameterCount() == 0).isConstructor());
- assertFalse(a.getPublicMethod(x ->
x.hasName("foo")).isConstructor());
+ assertTrue(a.getPublicConstructor(cons ->
cons.getParameterCount() == 0).get().isConstructor());
+ assertFalse(a.getPublicMethod(x ->
x.hasName("foo")).get().isConstructor());
}
@Test void getDeclaringClass() {
- check("A", a.getPublicConstructor(cons ->
cons.getParameterCount() == 0).getDeclaringClass());
- check("A", a.getPublicMethod(x ->
x.hasName("foo")).getDeclaringClass());
+ check("A", a.getPublicConstructor(cons ->
cons.getParameterCount() == 0).get().getDeclaringClass());
+ check("A", a.getPublicMethod(x ->
x.hasName("foo")).get().getDeclaringClass());
}
//-----------------------------------------------------------------------------------------------------------------
@@ -95,10 +95,10 @@ class ExecutableInfo_Test extends TestBase {
}
static ClassInfo b = ClassInfo.of(B.class);
static ExecutableInfo
- b_c1 = b.getPublicConstructor(cons -> cons.getParameterCount()
== 0),
- b_c2 = b.getPublicConstructor(x ->
x.hasParameterTypes(String.class)),
- b_m1 = b.getPublicMethod(x -> x.hasName("m") &&
x.getParameterCount() == 0),
- b_m2 = b.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(String.class))
+ b_c1 = b.getPublicConstructor(cons -> cons.getParameterCount()
== 0).get(),
+ b_c2 = b.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get(),
+ b_m1 = b.getPublicMethod(x -> x.hasName("m") &&
x.getParameterCount() == 0).get(),
+ b_m2 = b.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(String.class)).get()
;
@Test void getParamCount() {
@@ -148,8 +148,8 @@ class ExecutableInfo_Test extends TestBase {
@Test void getParam_nocache() {
var b2 = ClassInfo.of(B.class);
- check("B[0]", b2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).getParameter(0));
- check("m[0]", b2.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(String.class)).getParameter(0));
+ check("B[0]", b2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get().getParameter(0));
+ check("m[0]", b2.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(String.class)).get().getParameter(0));
}
@Test void getParam_indexOutOfBounds() {
@@ -160,9 +160,9 @@ class ExecutableInfo_Test extends TestBase {
@Test void getParam_indexOutOfBounds_noCache() {
var b2 = ClassInfo.of(B.class);
- assertThrowsWithMessage(IndexOutOfBoundsException.class,
"Invalid index '0'. No parameters.", ()->b2.getPublicConstructor(cons ->
cons.getParameterCount() == 0).getParameter(0));
- assertThrowsWithMessage(IndexOutOfBoundsException.class,
"Invalid index '-1'. Parameter count: 1", ()->b2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).getParameter(-1));
- assertThrowsWithMessage(IndexOutOfBoundsException.class,
"Invalid index '1'. Parameter count: 1", ()->b2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).getParameter(1));
+ assertThrowsWithMessage(IndexOutOfBoundsException.class,
"Invalid index '0'. No parameters.", ()->b2.getPublicConstructor(cons ->
cons.getParameterCount() == 0).get().getParameter(0));
+ assertThrowsWithMessage(IndexOutOfBoundsException.class,
"Invalid index '-1'. Parameter count: 1", ()->b2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get().getParameter(-1));
+ assertThrowsWithMessage(IndexOutOfBoundsException.class,
"Invalid index '1'. Parameter count: 1", ()->b2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get().getParameter(1));
}
@Test void getParamTypes() {
@@ -248,14 +248,14 @@ class ExecutableInfo_Test extends TestBase {
}
static ClassInfo c = ClassInfo.of(C.class);
static ConstructorInfo
- c_c1=c.getPublicConstructor(cons -> cons.getParameterCount() ==
0),
- c_c2=c.getPublicConstructor(x ->
x.hasParameterTypes(String.class)),
- c_c3=c.getPublicConstructor(x -> x.hasParameterTypes(int.class))
+ c_c1=c.getPublicConstructor(cons -> cons.getParameterCount() ==
0).get(),
+ c_c2=c.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get(),
+ c_c3=c.getPublicConstructor(x ->
x.hasParameterTypes(int.class)).get()
;
static MethodInfo
- c_m1=c.getPublicMethod(x -> x.hasName("m") &&
x.getParameterCount() == 0),
- c_m2=c.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(String.class)),
- c_m3=c.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(int.class))
+ c_m1=c.getPublicMethod(x -> x.hasName("m") &&
x.getParameterCount() == 0).get(),
+ c_m2=c.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(String.class)).get(),
+ c_m3=c.getPublicMethod(x -> x.hasName("m") &&
x.hasParameterTypes(int.class)).get()
;
@Test void getParameterAnnotations() {
@@ -292,8 +292,8 @@ class ExecutableInfo_Test extends TestBase {
}
static ClassInfo d = ClassInfo.of(D.class);
static ExecutableInfo
- d_c=d.getPublicConstructor(cons -> cons.getParameterCount() ==
0),
- d_m=d.getPublicMethod(x -> x.hasName("m"))
+ d_c=d.getPublicConstructor(cons -> cons.getParameterCount() ==
0).get(),
+ d_m=d.getPublicMethod(x -> x.hasName("m")).get()
;
@Test void getExceptionTypes() {
@@ -325,17 +325,17 @@ class ExecutableInfo_Test extends TestBase {
}
static ClassInfo e = ClassInfo.of(E.class);
static ExecutableInfo
- e_deprecated = e.getPublicMethod(x -> x.hasName("deprecated")),
- e_notDeprecated = e.getPublicMethod(x ->
x.hasName("notDeprecated")),
- e_hasParams = e.getPublicMethod(x -> x.hasName("hasParams")),
- e_hasStringParam = e.getPublicMethod(x ->
x.hasName("hasStringParam")),
- e_hasNoParams = e.getPublicMethod(x ->
x.hasName("hasNoParams")),
- e_isPublic = e.getPublicMethod(x -> x.hasName("isPublic")),
- e_isNotPublic = e.getMethod(x -> x.hasName("isNotPublic")),
- e_isStatic = e.getPublicMethod(x -> x.hasName("isStatic")),
- e_isNotStatic = e.getPublicMethod(x ->
x.hasName("isNotStatic")),
- e_isAbstract = e.getPublicMethod(x -> x.hasName("isAbstract")),
- e_isNotAbstract = e.getPublicMethod(x ->
x.hasName("isNotAbstract"))
+ e_deprecated = e.getPublicMethod(x ->
x.hasName("deprecated")).get(),
+ e_notDeprecated = e.getPublicMethod(x ->
x.hasName("notDeprecated")).get(),
+ e_hasParams = e.getPublicMethod(x ->
x.hasName("hasParams")).get(),
+ e_hasStringParam = e.getPublicMethod(x ->
x.hasName("hasStringParam")).get(),
+ e_hasNoParams = e.getPublicMethod(x ->
x.hasName("hasNoParams")).get(),
+ e_isPublic = e.getPublicMethod(x ->
x.hasName("isPublic")).get(),
+ e_isNotPublic = e.getMethod(x ->
x.hasName("isNotPublic")).get(),
+ e_isStatic = e.getPublicMethod(x ->
x.hasName("isStatic")).get(),
+ e_isNotStatic = e.getPublicMethod(x ->
x.hasName("isNotStatic")).get(),
+ e_isAbstract = e.getPublicMethod(x ->
x.hasName("isAbstract")).get(),
+ e_isNotAbstract = e.getPublicMethod(x ->
x.hasName("isNotAbstract")).get()
;
@Test void isAll() {
@@ -450,10 +450,10 @@ class ExecutableInfo_Test extends TestBase {
}
static ClassInfo f = ClassInfo.of(F.class);
static ExecutableInfo
- f_isPublic = f.getPublicMethod(x -> x.hasName("isPublic")),
- f_isProtected = f.getMethod(x -> x.hasName("isProtected")),
- f_isPrivate = f.getMethod(x -> x.hasName("isPrivate")),
- f_isDefault = f.getMethod(x -> x.hasName("isDefault"));
+ f_isPublic = f.getPublicMethod(x ->
x.hasName("isPublic")).get(),
+ f_isProtected = f.getMethod(x ->
x.hasName("isProtected")).get(),
+ f_isPrivate = f.getMethod(x -> x.hasName("isPrivate")).get(),
+ f_isDefault = f.getMethod(x -> x.hasName("isDefault")).get();
@Test void setAccessible() {
assertDoesNotThrow(()->f_isPublic.accessible());
@@ -499,38 +499,38 @@ class ExecutableInfo_Test extends TestBase {
static ClassInfo x2 = ClassInfo.of(X.class);
@Test void getFullName_method() {
-
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X.foo()",
x2.getPublicMethod(x -> x.hasName("foo") && x.getParameterCount() ==
0).getFullName());
-
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X.foo(java.lang.String)",
x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(String.class)).getFullName());
-
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X.foo(java.util.Map<java.lang.String,java.lang.Object>)",
x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(Map.class)).getFullName());
+
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X.foo()",
x2.getPublicMethod(x -> x.hasName("foo") && x.getParameterCount() ==
0).get().getFullName());
+
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X.foo(java.lang.String)",
x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(String.class)).get().getFullName());
+
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X.foo(java.util.Map<java.lang.String,java.lang.Object>)",
x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(Map.class)).get().getFullName());
}
@Test void getFullName_constructor() {
-
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X()",
x2.getPublicConstructor(cons -> cons.getParameterCount() == 0).getFullName());
-
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X(java.lang.String)",
x2.getPublicConstructor(x -> x.hasParameterTypes(String.class)).getFullName());
-
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X(java.util.Map<java.lang.String,java.lang.Object>)",
x2.getPublicConstructor(x -> x.hasParameterTypes(Map.class)).getFullName());
+
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X()",
x2.getPublicConstructor(cons -> cons.getParameterCount() ==
0).get().getFullName());
+
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X(java.lang.String)",
x2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get().getFullName());
+
assertEquals("org.apache.juneau.common.reflect.ExecutableInfo_Test$X(java.util.Map<java.lang.String,java.lang.Object>)",
x2.getPublicConstructor(x ->
x.hasParameterTypes(Map.class)).get().getFullName());
}
@Test void getShortName_method() {
- assertEquals("foo()", x2.getPublicMethod(x -> x.hasName("foo")
&& x.getParameterCount() == 0).getShortName());
- assertEquals("foo(String)", x2.getPublicMethod(x ->
x.hasName("foo") && x.hasParameterTypes(String.class)).getShortName());
- assertEquals("foo(Map)", x2.getPublicMethod(x ->
x.hasName("foo") && x.hasParameterTypes(Map.class)).getShortName());
+ assertEquals("foo()", x2.getPublicMethod(x -> x.hasName("foo")
&& x.getParameterCount() == 0).get().getShortName());
+ assertEquals("foo(String)", x2.getPublicMethod(x ->
x.hasName("foo") && x.hasParameterTypes(String.class)).get().getShortName());
+ assertEquals("foo(Map)", x2.getPublicMethod(x ->
x.hasName("foo") && x.hasParameterTypes(Map.class)).get().getShortName());
}
@Test void getShortName_constructor() {
- assertEquals("X()", x2.getPublicConstructor(cons ->
cons.getParameterCount() == 0).getShortName());
- assertEquals("X(String)", x2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).getShortName());
- assertEquals("X(Map)", x2.getPublicConstructor(x ->
x.hasParameterTypes(Map.class)).getShortName());
+ assertEquals("X()", x2.getPublicConstructor(cons ->
cons.getParameterCount() == 0).get().getShortName());
+ assertEquals("X(String)", x2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get().getShortName());
+ assertEquals("X(Map)", x2.getPublicConstructor(x ->
x.hasParameterTypes(Map.class)).get().getShortName());
}
@Test void getSimpleName_method() {
- assertEquals("foo", x2.getPublicMethod(x -> x.hasName("foo") &&
x.getParameterCount() == 0).getSimpleName());
- assertEquals("foo", x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(String.class)).getSimpleName());
- assertEquals("foo", x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(Map.class)).getSimpleName());
+ assertEquals("foo", x2.getPublicMethod(x -> x.hasName("foo") &&
x.getParameterCount() == 0).get().getSimpleName());
+ assertEquals("foo", x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(String.class)).get().getSimpleName());
+ assertEquals("foo", x2.getPublicMethod(x -> x.hasName("foo") &&
x.hasParameterTypes(Map.class)).get().getSimpleName());
}
@Test void getSimpleName_constructor() {
- assertEquals("X", x2.getPublicConstructor(cons ->
cons.getParameterCount() == 0).getSimpleName());
- assertEquals("X", x2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).getSimpleName());
- assertEquals("X", x2.getPublicConstructor(x ->
x.hasParameterTypes(Map.class)).getSimpleName());
+ assertEquals("X", x2.getPublicConstructor(cons ->
cons.getParameterCount() == 0).get().getSimpleName());
+ assertEquals("X", x2.getPublicConstructor(x ->
x.hasParameterTypes(String.class)).get().getSimpleName());
+ assertEquals("X", x2.getPublicConstructor(x ->
x.hasParameterTypes(Map.class)).get().getSimpleName());
}
}
\ No newline at end of file
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_AnnotationInfos_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_AnnotationInfos_Test.java
index a3909bf02b..7dfec97350 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_AnnotationInfos_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_AnnotationInfos_Test.java
@@ -55,9 +55,9 @@ public class FieldInfo_AnnotationInfos_Test {
@Test
public void testGetAnnotationInfos() {
var ci = ClassInfo.of(TestClass.class);
- var field1 = ci.getPublicField(x ->
x.getName().equals("field1"));
- var field2 = ci.getPublicField(x ->
x.getName().equals("field2"));
- var field3 = ci.getPublicField(x ->
x.getName().equals("field3"));
+ var field1 = ci.getPublicField(x ->
x.getName().equals("field1")).get();
+ var field2 = ci.getPublicField(x ->
x.getName().equals("field2")).get();
+ var field3 = ci.getPublicField(x ->
x.getName().equals("field3")).get();
// field1 has 2 annotations
var annotations1 = field1.getDeclaredAnnotations();
@@ -78,8 +78,8 @@ public class FieldInfo_AnnotationInfos_Test {
@Test
public void testGetAnnotationInfosTyped() {
var ci = ClassInfo.of(TestClass.class);
- var field1 = ci.getPublicField(x ->
x.getName().equals("field1"));
- var field2 = ci.getPublicField(x ->
x.getName().equals("field2"));
+ var field1 = ci.getPublicField(x ->
x.getName().equals("field1")).get();
+ var field2 = ci.getPublicField(x ->
x.getName().equals("field2")).get();
// Test filtering by type for field1
var ann1_type1 =
field1.getDeclaredAnnotations(TestAnnotation1.class).toList();
@@ -106,7 +106,7 @@ public class FieldInfo_AnnotationInfos_Test {
@Test
public void testGetAnnotationInfosMemoization() {
var ci = ClassInfo.of(TestClass.class);
- var field1 = ci.getPublicField(x ->
x.getName().equals("field1"));
+ var field1 = ci.getPublicField(x ->
x.getName().equals("field1")).get();
// Calling getDeclaredAnnotationInfos() multiple times should
return the same list instance
var annotations1 = field1.getDeclaredAnnotations();
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_FullName_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_FullName_Test.java
index 94dc3d803a..ece16807be 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_FullName_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_FullName_Test.java
@@ -29,8 +29,8 @@ public class FieldInfo_FullName_Test {
@Test
public void testGetFullName() {
var ci = ClassInfo.of(TestClass.class);
- var field1 = ci.getPublicField(x ->
x.getName().equals("field1"));
- var field2 = ci.getPublicField(x ->
x.getName().equals("field2"));
+ var field1 = ci.getPublicField(x ->
x.getName().equals("field1")).get();
+ var field2 = ci.getPublicField(x ->
x.getName().equals("field2")).get();
// Verify full names are correct
String fullName1 = field1.getFullName();
@@ -47,7 +47,7 @@ public class FieldInfo_FullName_Test {
@Test
public void testGetFullNameMemoization() {
var ci = ClassInfo.of(TestClass.class);
- var field1 = ci.getPublicField(x ->
x.getName().equals("field1"));
+ var field1 = ci.getPublicField(x ->
x.getName().equals("field1")).get();
// Calling getFullName() multiple times should return the same
String instance (memoized)
String name1 = field1.getFullName();
@@ -62,7 +62,7 @@ public class FieldInfo_FullName_Test {
@Test
public void testGetFullNameWithInnerClass() {
var ci = ClassInfo.of(InnerClass.class);
- var field = ci.getPublicField(x ->
x.getName().equals("innerField"));
+ var field = ci.getPublicField(x ->
x.getName().equals("innerField")).get();
String fullName = field.getFullName();
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_Test.java
index 7b2ec35704..d9f1817161 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/FieldInfo_Test.java
@@ -142,14 +142,14 @@ class FieldInfo_Test extends TestBase {
}
static ClassInfo c = ClassInfo.of(C.class);
static FieldInfo
- c_deprecated = c.getPublicField(x -> x.hasName("deprecated")),
- c_notDeprecated = c.getPublicField(x ->
x.hasName("notDeprecated")),
- c_isPublic = c.getPublicField(x -> x.hasName("isPublic")),
- c_isNotPublic = c.getDeclaredField(x ->
x.hasName("isNotPublic")),
- c_isStatic = c.getPublicField(x -> x.hasName("isStatic")),
- c_isNotStatic = c.getPublicField(x -> x.hasName("isNotStatic")),
- c_isTransient = c.getPublicField(x -> x.hasName("isTransient")),
- c_isNotTransient = c.getPublicField(x ->
x.hasName("isNotTransient"))
+ c_deprecated = c.getPublicField(x ->
x.hasName("deprecated")).get(),
+ c_notDeprecated = c.getPublicField(x ->
x.hasName("notDeprecated")).get(),
+ c_isPublic = c.getPublicField(x -> x.hasName("isPublic")).get(),
+ c_isNotPublic = c.getDeclaredField(x ->
x.hasName("isNotPublic")).get(),
+ c_isStatic = c.getPublicField(x -> x.hasName("isStatic")).get(),
+ c_isNotStatic = c.getPublicField(x ->
x.hasName("isNotStatic")).get(),
+ c_isTransient = c.getPublicField(x ->
x.hasName("isTransient")).get(),
+ c_isNotTransient = c.getPublicField(x ->
x.hasName("isNotTransient")).get()
;
@Test void isAll() {
@@ -240,10 +240,10 @@ class FieldInfo_Test extends TestBase {
}
static ClassInfo d = ClassInfo.of(D.class);
static FieldInfo
- d_isPublic = d.getPublicField(x -> x.hasName("isPublic")),
- d_isProtected = d.getDeclaredField(x ->
x.hasName("isProtected")),
- d_isPrivate = d.getDeclaredField(x -> x.hasName("isPrivate")),
- d_isDefault = d.getDeclaredField(x -> x.hasName("isDefault"));
+ d_isPublic = d.getPublicField(x -> x.hasName("isPublic")).get(),
+ d_isProtected = d.getDeclaredField(x ->
x.hasName("isProtected")).get(),
+ d_isPrivate = d.getDeclaredField(x ->
x.hasName("isPrivate")).get(),
+ d_isDefault = d.getDeclaredField(x ->
x.hasName("isDefault")).get();
@Test void setAccessible() {
assertDoesNotThrow(()->d_isPublic.setAccessible());
@@ -285,8 +285,8 @@ class FieldInfo_Test extends TestBase {
static ClassInfo e = ClassInfo.of(E.class);
static FieldInfo
- e_a1 = e.getPublicField(x -> x.hasName("a1")),
- e_a2 = e.getDeclaredField(x -> x.hasName("a2"));
+ e_a1 = e.getPublicField(x -> x.hasName("a1")).get(),
+ e_a2 = e.getDeclaredField(x -> x.hasName("a2")).get();
@Test void getType() {
check("int", e_a1.getFieldType());
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ParamInfoTest.java
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ParamInfoTest.java
index b305bd8225..c90fbbebf5 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ParamInfoTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/common/reflect/ParamInfoTest.java
@@ -112,12 +112,12 @@ class ParamInfoTest extends TestBase {
static ClassInfo b = ClassInfo.of(B.class);
static ParameterInfo
- b_b_a = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).getParameter(0), // NOSONAR
- b_b_b = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).getParameter(1), // NOSONAR
- b_a1_a = b.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- b_a1_b = b.getMethod(x -> x.hasName("a1")).getParameter(1), //
NOSONAR
- b_a2_a = b.getMethod(x -> x.hasName("a2")).getParameter(0), //
NOSONAR
- b_a2_b = b.getMethod(x -> x.hasName("a2")).getParameter(1); //
NOSONAR
+ b_b_a = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).get().getParameter(0), // NOSONAR
+ b_b_b = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).get().getParameter(1), // NOSONAR
+ b_a1_a = b.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ b_a1_b = b.getMethod(x ->
x.hasName("a1")).get().getParameter(1), // NOSONAR
+ b_a2_a = b.getMethod(x ->
x.hasName("a2")).get().getParameter(0), // NOSONAR
+ b_a2_b = b.getMethod(x ->
x.hasName("a2")).get().getParameter(1); // NOSONAR
@Test void getIndex() {
assertEquals(0, b_b_a.getIndex());
@@ -191,11 +191,11 @@ class ParamInfoTest extends TestBase {
cb = ClassInfo.of(CB.class),
cc = ClassInfo.of(CC.class);
static ParameterInfo
- cc_cc = cc.getPublicConstructor(x ->
x.hasParameterTypes(C1.class)).getParameter(0), // NOSONAR
- cb_a1 = cb.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- cb_a2 = cb.getMethod(x -> x.hasName("a2")).getParameter(0), //
NOSONAR
- cc_a1 = cc.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- cc_a2 = cc.getMethod(x -> x.hasName("a2")).getParameter(0); //
NOSONAR
+ cc_cc = cc.getPublicConstructor(x ->
x.hasParameterTypes(C1.class)).get().getParameter(0), // NOSONAR
+ cb_a1 = cb.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ cb_a2 = cb.getMethod(x ->
x.hasName("a2")).get().getParameter(0), // NOSONAR
+ cc_a1 = cc.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ cc_a2 = cc.getMethod(x ->
x.hasName("a2")).get().getParameter(0); // NOSONAR
@Test void getDeclaredAnnotations() {
check("@CA(5)", declaredAnnotations(cb_a1, CA.class));
@@ -325,8 +325,8 @@ class ParamInfoTest extends TestBase {
db = ClassInfo.of(DB.class),
dc = ClassInfo.of(DC.class);
static ParameterInfo
- db_a1 = db.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- dc_a1 = dc.getMethod(x -> x.hasName("a1")).getParameter(0); //
NOSONAR
+ db_a1 = db.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ dc_a1 = dc.getMethod(x ->
x.hasName("a1")).get().getParameter(0); // NOSONAR
@Test void getAnnotationsParentFirst_inherited() {
check("@DA(4),@DA(3),@DA(2),@DA(1),@DA(0)", annotations(db_a1,
DA.class));
@@ -357,8 +357,8 @@ class ParamInfoTest extends TestBase {
static ClassInfo e = ClassInfo.of(E.class);
static ParameterInfo
- e_a1_a = e.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- e_a1_b = e.getMethod(x -> x.hasName("a1")).getParameter(1); //
NOSONAR
+ e_a1_a = e.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ e_a1_b = e.getMethod(x ->
x.hasName("a1")).get().getParameter(1); // NOSONAR
@Test void hasName() {
// With DISABLE_PARAM_NAME_DETECTION=true, only parameters with
@Name annotation have names
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/cp/BeanStore_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/cp/BeanStore_Test.java
index f208f50351..4f7185bfae 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/cp/BeanStore_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/cp/BeanStore_Test.java
@@ -279,11 +279,11 @@ class BeanStore_Test extends TestBase {
var b2c =
BeanStore.create().outer(outer).parent(b1p).threadSafe().build();
var ci = ClassInfo.of(B1.class);
- var c1 = ci.getPublicConstructor(x ->
x.hasParameterTypes(A1.class, Optional.class, BeanStore.class));
- var c2 = ci.getPublicConstructor(x ->
x.hasParameterTypes(A1.class, Optional.class));
- var m1 = ci.getPublicMethod(x-> x.hasName("m1"));
- var m2 = ci.getPublicMethod(x-> x.hasName("m2"));
- var m3 = ci.getPublicMethod(x-> x.hasName("m3"));
+ var c1 = ci.getPublicConstructor(x ->
x.hasParameterTypes(A1.class, Optional.class, BeanStore.class)).get();
+ var c2 = ci.getPublicConstructor(x ->
x.hasParameterTypes(A1.class, Optional.class)).get();
+ var m1 = ci.getPublicMethod(x-> x.hasName("m1")).get();
+ var m2 = ci.getPublicMethod(x-> x.hasName("m2")).get();
+ var m3 = ci.getPublicMethod(x-> x.hasName("m3")).get();
for (var b : array(b1p, b1c, b2p, b2c)) {
for (var e : array(c1, m1, m3)) {
@@ -413,8 +413,8 @@ class BeanStore_Test extends TestBase {
var b2c =
BeanStore.create().outer(this).parent(b1p).threadSafe().build();
var ci = ClassInfo.of(B2.class);
- var c1 = ci.getPublicConstructor(x ->
x.hasParameterTypes(BeanStore_Test.class, A1.class, Optional.class,
BeanStore.class));
- var c2 = ci.getPublicConstructor(x ->
x.hasParameterTypes(BeanStore_Test.class, A1.class, Optional.class));
+ var c1 = ci.getPublicConstructor(x ->
x.hasParameterTypes(BeanStore_Test.class, A1.class, Optional.class,
BeanStore.class)).get();
+ var c2 = ci.getPublicConstructor(x ->
x.hasParameterTypes(BeanStore_Test.class, A1.class, Optional.class)).get();
for (var b : array(b1p, b1c, b2p, b2c)) {
assertString(A1n, b.getMissingParams(c1));
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/reflect/ParamInfoTest.java
b/juneau-utest/src/test/java/org/apache/juneau/reflect/ParamInfoTest.java
index 6626f7f510..eb3cd7420c 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/reflect/ParamInfoTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/reflect/ParamInfoTest.java
@@ -90,12 +90,12 @@ class ParamInfoTest extends TestBase {
static ClassInfo b = ClassInfo.of(B.class);
static ParameterInfo
- b_b_a = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).getParameter(0), // NOSONAR
- b_b_b = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).getParameter(1), // NOSONAR
- b_a1_a = b.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- b_a1_b = b.getMethod(x -> x.hasName("a1")).getParameter(1), //
NOSONAR
- b_a2_a = b.getMethod(x -> x.hasName("a2")).getParameter(0), //
NOSONAR
- b_a2_b = b.getMethod(x -> x.hasName("a2")).getParameter(1); //
NOSONAR
+ b_b_a = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).get().getParameter(0), // NOSONAR
+ b_b_b = b.getPublicConstructor(x ->
x.hasParameterTypes(int.class, String.class)).get().getParameter(1), // NOSONAR
+ b_a1_a = b.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ b_a1_b = b.getMethod(x ->
x.hasName("a1")).get().getParameter(1), // NOSONAR
+ b_a2_a = b.getMethod(x ->
x.hasName("a2")).get().getParameter(0), // NOSONAR
+ b_a2_b = b.getMethod(x ->
x.hasName("a2")).get().getParameter(1); // NOSONAR
@Test void getIndex() {
assertEquals(0, b_b_a.getIndex());
@@ -169,11 +169,11 @@ class ParamInfoTest extends TestBase {
cb = ClassInfo.of(CB.class),
cc = ClassInfo.of(CC.class);
static ParameterInfo
- cc_cc = cc.getPublicConstructor(x ->
x.hasParameterTypes(C1.class)).getParameter(0), // NOSONAR
- cb_a1 = cb.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- cb_a2 = cb.getMethod(x -> x.hasName("a2")).getParameter(0), //
NOSONAR
- cc_a1 = cc.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- cc_a2 = cc.getMethod(x -> x.hasName("a2")).getParameter(0); //
NOSONAR
+ cc_cc = cc.getPublicConstructor(x ->
x.hasParameterTypes(C1.class)).get().getParameter(0), // NOSONAR
+ cb_a1 = cb.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ cb_a2 = cb.getMethod(x ->
x.hasName("a2")).get().getParameter(0), // NOSONAR
+ cc_a1 = cc.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ cc_a2 = cc.getMethod(x ->
x.hasName("a2")).get().getParameter(0); // NOSONAR
@Test void getDeclaredAnnotations() {
check("@CA(5)", declaredAnnotations(cb_a1, CA.class));
@@ -303,8 +303,8 @@ class ParamInfoTest extends TestBase {
db = ClassInfo.of(DB.class),
dc = ClassInfo.of(DC.class);
static ParameterInfo
- db_a1 = db.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- dc_a1 = dc.getMethod(x -> x.hasName("a1")).getParameter(0); //
NOSONAR
+ db_a1 = db.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ dc_a1 = dc.getMethod(x ->
x.hasName("a1")).get().getParameter(0); // NOSONAR
@Test void getAnnotationsParentFirst_inherited() {
check("@DA(4),@DA(3),@DA(2),@DA(1),@DA(0)", annotations(db_a1,
DA.class));
@@ -335,8 +335,8 @@ class ParamInfoTest extends TestBase {
static ClassInfo e = ClassInfo.of(E.class);
static ParameterInfo
- e_a1_a = e.getMethod(x -> x.hasName("a1")).getParameter(0), //
NOSONAR
- e_a1_b = e.getMethod(x -> x.hasName("a1")).getParameter(1); //
NOSONAR
+ e_a1_a = e.getMethod(x ->
x.hasName("a1")).get().getParameter(0), // NOSONAR
+ e_a1_b = e.getMethod(x ->
x.hasName("a1")).get().getParameter(1); // NOSONAR
@Test void hasName() {
e_a1_a.hasName(); // This might be true or false based on the
JVM compiler used.
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
index 25546809aa..8151a78f91 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
@@ -276,9 +276,9 @@ class RestClient_Test extends TestBase {
var x1 = RestClient.create().json5().pooled().build();
var x2 = RestClient.create().json5().build();
var x3 = client().pooled().build();
-
assertEquals("PoolingHttpClientConnectionManager",ClassInfo.of(x1.httpClient).getDeclaredField(x
->
x.hasName("connManager")).accessible().get(x1.httpClient).getClass().getSimpleName());
-
assertEquals("BasicHttpClientConnectionManager",ClassInfo.of(x2.httpClient).getDeclaredField(x
->
x.hasName("connManager")).accessible().get(x2.httpClient).getClass().getSimpleName());
-
assertEquals("MockHttpClientConnectionManager",ClassInfo.of(x3.httpClient).getDeclaredField(x
->
x.hasName("connManager")).accessible().get(x3.httpClient).getClass().getSimpleName());
+
assertEquals("PoolingHttpClientConnectionManager",ClassInfo.of(x1.httpClient).getDeclaredField(x
->
x.hasName("connManager")).get().accessible().get(x1.httpClient).getClass().getSimpleName());
+
assertEquals("BasicHttpClientConnectionManager",ClassInfo.of(x2.httpClient).getDeclaredField(x
->
x.hasName("connManager")).get().accessible().get(x2.httpClient).getClass().getSimpleName());
+
assertEquals("MockHttpClientConnectionManager",ClassInfo.of(x3.httpClient).getDeclaredField(x
->
x.hasName("connManager")).get().accessible().get(x3.httpClient).getClass().getSimpleName());
}
//------------------------------------------------------------------------------------------------------------------