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 1921a84d53 New BeanCreator API
1921a84d53 is described below
commit 1921a84d533216f8d1d63ca92ef95a68f4738d89
Author: James Bognar <[email protected]>
AuthorDate: Wed Jan 21 12:15:32 2026 -0500
New BeanCreator API
---
.../org/apache/juneau/commons/reflect/ClassInfo.java | 19 ++++++++++---------
.../apache/juneau/commons/reflect/ExecutableInfo.java | 14 +++++++-------
.../org/apache/juneau/commons/reflect/FieldInfo.java | 8 ++++----
3 files changed, 21 insertions(+), 20 deletions(-)
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
index 67c39840d5..60fbd14a98 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
@@ -186,9 +186,9 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
private final Supplier<PackageInfo> packageInfo; // The package this
class belongs to (null for primitive types and arrays).
private final Supplier<List<ClassInfo>> parents; // All superclasses
of this class in child-to-parent order, starting with this class.
private final Supplier<List<AnnotationInfo>> declaredAnnotations; //
All annotations declared directly on this class, wrapped in AnnotationInfo.
- private final Supplier<String> fullName; // Fully qualified class name
with generics (e.g., "java.util.List<java.lang.String>").
- private final Supplier<String> shortName; // Simple class name with
generics (e.g., "List<String>").
- private final Supplier<String> readableName; // Human-readable class
name without generics (e.g., "List").
+ private final Supplier<String> nameFull; // Fully qualified class name
with generics (e.g., "java.util.List<java.lang.String>").
+ private final Supplier<String> nameShort; // Simple class name with
generics (e.g., "List<String>").
+ private final Supplier<String> nameReadable; // Human-readable class
name without generics (e.g., "List").
private final Supplier<String> toString; // String representation with
modifiers, class type, name, and type parameters.
private final Supplier<List<ClassInfo>> declaredInterfaces; // All
interfaces declared directly by this class.
private final Supplier<List<ClassInfo>> interfaces; // All interfaces
implemented by this class and its parents, in child-to-parent order.
@@ -232,9 +232,9 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
this.packageInfo = mem(() -> opt(inner).map(x ->
x.getPackage()).filter(p -> p != null).map(PackageInfo::of).orElse(null)); //
PackageInfo may be null for primitive types and arrays.
this.parents = mem(this::findParents);
this.declaredAnnotations = mem(() -> (List)opt(inner).map(x ->
u(l(x.getDeclaredAnnotations()))).orElse(liste()).stream().flatMap(a ->
streamRepeated(a)).map(a -> ai(this, a)).toList());
- this.fullName = mem(() -> getNameFormatted(FULL, true, '$',
BRACKETS));
- this.shortName = mem(() -> getNameFormatted(SHORT, true, '$',
BRACKETS));
- this.readableName = mem(() -> getNameFormatted(SIMPLE, false,
'$', WORD));
+ this.nameFull = mem(() -> getNameFormatted(FULL, true, '$',
BRACKETS));
+ this.nameShort = mem(() -> getNameFormatted(SHORT, true, '$',
BRACKETS));
+ this.nameReadable = mem(() -> getNameFormatted(SIMPLE, false,
'$', WORD));
this.toString = mem(this::findToString);
this.declaredInterfaces = mem(() -> opt(inner).map(x ->
stream(x.getGenericInterfaces()).map(ClassInfo::of).map(ClassInfo.class::cast).toList()).orElse(liste()));
this.interfaces = mem(() -> getParents().stream().flatMap(x ->
x.getDeclaredInterfaces().stream()).flatMap(ci2 -> concat(Stream.of(ci2),
ci2.getInterfaces().stream())).distinct().toList());
@@ -1233,14 +1233,14 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
*
* @return The underlying class name.
*/
- public String getNameFull() { return fullName.get(); }
+ public String getNameFull() { return nameFull.get(); }
/**
* Same as {@link #getNameSimple()} but uses <js>"Array"</js> instead
of <js>"[]"</js>.
*
* @return The readable name for this class.
*/
- public String getNameReadable() { return readableName.get(); }
+ public String getNameReadable() { return nameReadable.get(); }
/**
* Returns all possible names for this class.
@@ -1264,7 +1264,7 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
*
* @return The short name of the underlying class.
*/
- public String getNameShort() { return shortName.get(); }
+ public String getNameShort() { return nameShort.get(); }
/**
* Returns the simple name of the underlying class.
@@ -2794,6 +2794,7 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
*
* <p>
* This method performs field and method injection based on {@code
@Inject} or {@code @Autowired} annotations.
+ * After all injection is complete, it calls any methods annotated with
{@code @PostConstruct}.
*
* <h5 class='section'>Injectable Fields:</h5>
* <ul class='spaced-list'>
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
index 8a768e0f37..92efa6a1ef 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
@@ -90,8 +90,8 @@ public abstract class ExecutableInfo extends AccessibleInfo {
private final Supplier<List<ClassInfo>> parameterTypes; // All
parameter types of this executable.
private final Supplier<List<ClassInfo>> exceptions; // All exceptions
declared by this executable.
private final Supplier<List<AnnotationInfo<Annotation>>>
declaredAnnotations; // All annotations declared directly on this executable.
- private final Supplier<String> shortName; // Short name
(method/constructor name with parameters).
- private final Supplier<String> fullName; // Fully qualified name
(declaring-class.method-name with parameters).
+ private final Supplier<String> nameShort; // Short name
(method/constructor name with parameters).
+ private final Supplier<String> nameFull; // Fully qualified name
(declaring-class.method-name with parameters).
private final Supplier<String> toString; // String representation with
modifiers, return type, name, and throws declarations.
/**
@@ -114,8 +114,8 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
this.parameterTypes = mem(() ->
getParameters().stream().map(ParameterInfo::getParameterType).toList());
this.exceptions = mem(() ->
stream(inner.getExceptionTypes()).map(ClassInfo::of).map(ClassInfo.class::cast).toList());
this.declaredAnnotations = mem(() ->
stream(inner.getDeclaredAnnotations()).flatMap(a ->
AnnotationUtils.streamRepeated(a)).map(a -> ai((Annotatable)this, a)).toList());
- this.shortName = mem(() -> f("{0}({1})", getNameSimple(),
getParameters().stream().map(p ->
p.getParameterType().getNameSimple()).collect(joining(","))));
- this.fullName = mem(this::findFullName);
+ this.nameShort = mem(() -> f("{0}({1})", getNameSimple(),
getParameters().stream().map(p ->
p.getParameterType().getNameSimple()).collect(joining(","))));
+ this.nameFull = mem(this::findNameFull);
this.toString = mem(this::findToString);
}
@@ -300,7 +300,7 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
*
* @return The underlying executable name.
*/
- public final String getNameFull() { return fullName.get(); }
+ public final String getNameFull() { return nameFull.get(); }
/**
* Returns parameter information at the specified index.
@@ -364,7 +364,7 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
*
* @return The underlying executable name.
*/
- public final String getNameShort() { return shortName.get(); }
+ public final String getNameShort() { return nameShort.get(); }
/**
* Returns the simple name of the underlying method.
@@ -945,7 +945,7 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
throw new IndexOutOfBoundsException(f("Invalid index
''{0}''. Parameter count: {1}", index, pc));
}
- private String findFullName() {
+ private String findNameFull() {
var sb = new StringBuilder(128);
var dc = declaringClass;
var pi = dc.getPackage();
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/FieldInfo.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/FieldInfo.java
index f3b988e3f1..2332b250b4 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/FieldInfo.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/FieldInfo.java
@@ -130,7 +130,7 @@ public class FieldInfo extends AccessibleInfo implements
Comparable<FieldInfo>,
private final ClassInfo declaringClass;
private final Supplier<ClassInfo> type;
private final Supplier<List<AnnotationInfo<Annotation>>> annotations;
// All annotations declared directly on this field.
- private final Supplier<String> fullName; // Fully qualified field name
(declaring-class.field-name).
+ private final Supplier<String> nameFull; // Fully qualified field name
(declaring-class.field-name).
private final Supplier<String> toString; // String representation with
modifiers, type, and full name.
/**
@@ -151,7 +151,7 @@ public class FieldInfo extends AccessibleInfo implements
Comparable<FieldInfo>,
this.inner = inner;
this.type = mem(() -> ClassInfo.of(inner.getType(),
inner.getGenericType()));
this.annotations = mem(() ->
stream(inner.getAnnotations()).flatMap(a ->
AnnotationUtils.streamRepeated(a)).map(a -> ai(this, a)).toList());
- this.fullName = mem(this::findFullName);
+ this.nameFull = mem(this::findNameFull);
this.toString = mem(this::findToString);
}
@@ -262,7 +262,7 @@ public class FieldInfo extends AccessibleInfo implements
Comparable<FieldInfo>,
*
* @return The underlying executable name.
*/
- public String getNameFull() { return fullName.get(); }
+ public String getNameFull() { return nameFull.get(); }
@Override /* Annotatable */
public String getLabel() { return getDeclaringClass().getNameSimple() +
"." + getName(); }
@@ -536,7 +536,7 @@ public class FieldInfo extends AccessibleInfo implements
Comparable<FieldInfo>,
return sb.toString();
}
- private String findFullName() {
+ private String findNameFull() {
var sb = new StringBuilder(128);
var dc = declaringClass;
var pi = dc.getPackage();