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 b4e96dac95 Marshall module improvements
b4e96dac95 is described below
commit b4e96dac953379680d3f5c1111c849059fd992c9
Author: James Bognar <[email protected]>
AuthorDate: Sun Dec 7 19:30:47 2025 -0500
Marshall module improvements
---
.../main/java/org/apache/juneau/BeanSession.java | 4 +++
.../src/main/java/org/apache/juneau/ClassMeta.java | 30 ----------------------
.../org/apache/juneau/html/HtmlParserSession.java | 2 +-
.../apache/juneau/html/HtmlSerializerSession.java | 4 +--
.../juneau/httppart/bean/RequestBeanMeta.java | 3 ++-
.../jsonschema/JsonSchemaGeneratorSession.java | 2 +-
6 files changed, 10 insertions(+), 35 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
index 1e553f5a81..9033dfc322 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanSession.java
@@ -300,6 +300,10 @@ public class BeanSession extends ContextSession {
return ctx._class();
}
+ public AnnotationProvider getAnnotationProvider() {
+ return ctx.getAnnotationProvider();
+ }
+
/**
* Logs a warning message.
*
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 9333e93279..7085150203 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
@@ -140,7 +140,6 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
}
private final Map<Class<?>,Annotation[]> annotationArrayMap = new
ConcurrentHashMap<>();
- private final Map<Class<?>,Optional<?>> annotationLastMap = new
ConcurrentHashMap<>();
private final ClassMeta<?>[] args;
// Arg types if this is an array of
args.
private final BeanContext beanContext;
// The bean context that created this
object.
private final Supplier<BeanFilter> beanFilter;
@@ -681,25 +680,6 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
*/
public ClassMeta<?> getKeyType() { return keyType; }
- /**
- * Shortcut for calling <c>getInnerClass().getAnnotation(a)</c>.
- *
- * @param <A> The annotation type to look for.
- * @param a The annotation to retrieve.
- * @return The specified annotation, or <jk>null</jk> if the class does
not have the specified annotation.
- */
- @SuppressWarnings("unchecked")
- public <A extends Annotation> A getLastAnnotation(Class<A> a) {
- var o = annotationLastMap.get(a);
- if (o == null) {
- if (beanContext == null)
- return AP.find(a,
this).stream().findFirst().map(AnnotationInfo::inner).orElse(null);
- o = beanContext.getAnnotationProvider().find(a,
this).stream().findFirst().map(AnnotationInfo::inner);
- annotationLastMap.put(a, o);
- }
- return (A)o.orElse(null);
- }
-
/**
* Returns the method or field annotated with {@link NameProperty
@NameProperty}.
*
@@ -881,16 +861,6 @@ public class ClassMeta<T> extends ClassInfoTyped<T> {
*/
public ClassMeta<?> getValueType() { return valueType; }
- /**
- * Shortcut for calling <code>getInnerClass().getAnnotation(a) !=
<jk>null</jk></code>.
- *
- * @param a The annotation to check for.
- * @return <jk>true</jk> if the inner class has the annotation.
- */
- public boolean hasAnnotation2(Class<? extends Annotation> a) {
- return nn(getLastAnnotation(a));
- }
-
/**
* Returns <jk>true</jk> if this class has a transform associated with
it that allows it to be created from an InputStream.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
index 56f381efa1..51348799c0 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlParserSession.java
@@ -255,7 +255,7 @@ public class HtmlParserSession extends XmlParserSession {
private <T> T parseAnchor(XmlReader r, ClassMeta<T> beanType) throws
IOException, ParseException, XMLStreamException {
String href = r.getAttributeValue(null, "href");
String name = getElementText(r);
- if (nn(beanType) && beanType.hasAnnotation2(HtmlLink.class)) {
+ if (nn(beanType) && getAnnotationProvider().has(HtmlLink.class,
beanType)) {
var uriProperty = Value.<String>empty();
var nameProperty = Value.<String>empty();
beanType.forEachAnnotation(HtmlLink.class, x ->
isNotEmpty(x.uriProperty()), x -> uriProperty.set(x.uriProperty()));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
index e1a67acdc4..d05dca7f2e 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializerSession.java
@@ -356,7 +356,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
if (nn(swap))
cm1 = swap.getSwapClassMeta(this);
- if (cm1 == null || ! cm1.isMapOrBean() ||
cm1.hasAnnotation2(HtmlLink.class))
+ if (cm1 == null || ! cm1.isMapOrBean() ||
getAnnotationProvider().has(HtmlLink.class, cm1))
return null;
HtmlClassMeta cHtml = getHtmlClassMeta(cm1);
@@ -933,7 +933,7 @@ public class HtmlSerializerSession extends
XmlSerializerSession {
} else if (sType.isBean()) {
BeanMap m = toBeanMap(o);
- if (aType.hasAnnotation2(HtmlLink.class)) {
+ if (getAnnotationProvider().has(HtmlLink.class,
aType)) {
var uriProperty = Value.<String>empty();
var nameProperty =
Value.<String>empty();
aType.forEachAnnotation(HtmlLink.class,
x -> isNotEmpty(x.uriProperty()), x -> uriProperty.set(x.uriProperty()));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index 0d1249ebc7..8452e84c2a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -55,7 +55,8 @@ public class RequestBeanMeta {
Builder apply(Class<?> c) {
this.cm = BeanContext.DEFAULT.getClassMeta(c);
- apply(cm.getLastAnnotation(Request.class));
+ var ap = cm.getBeanContext().getAnnotationProvider();
+ apply(ap.find(Request.class,
cm).stream().findFirst().map(x -> x.inner()).orElse(null));
cm.getPublicMethods().stream().forEach(x -> {
var n = x.getSimpleName();
if (x.hasAnnotation(Header.class)) {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
index ab127d0deb..0b28eb59f2 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGeneratorSession.java
@@ -341,7 +341,7 @@ public class JsonSchemaGeneratorSession extends
BeanTraverseSession {
var jscm = (JsonSchemaClassMeta)null;
var objectSwapCM = objectSwap == null ? null :
getClassMeta(objectSwap.getClass());
- if (nn(objectSwapCM) &&
objectSwapCM.hasAnnotation2(Schema.class))
+ if (nn(objectSwapCM) &&
getAnnotationProvider().has(Schema.class, objectSwapCM))
jscm = getJsonSchemaClassMeta(objectSwapCM);
if (jscm == null)
jscm = getJsonSchemaClassMeta(sType);