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();

Reply via email to