You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2020/10/16 14:03:09 UTC
[juneau] branch master updated: Add @X(onClass) annotations.
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 988c777 Add @X(onClass) annotations.
988c777 is described below
commit 988c7776e8519e2fa82b2ef181997a04d7d6ee2f
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Fri Oct 16 10:03:03 2020 -0400
Add @X(onClass) annotations.
---
.../org/apache/juneau/jena/annotation/Rdf.java | 14 +-
.../juneau/jena/annotation/RdfAnnotation.java | 106 +++--------
.../main/java/org/apache/juneau/BeanContext.java | 24 ++-
.../java/org/apache/juneau/annotation/Bean.java | 14 +-
.../apache/juneau/annotation/BeanAnnotation.java | 62 +++----
.../org/apache/juneau/annotation/BeanIgnore.java | 14 +-
.../juneau/annotation/BeanIgnoreAnnotation.java | 116 +++---------
.../java/org/apache/juneau/annotation/Beanc.java | 2 +-
.../apache/juneau/annotation/BeancAnnotation.java | 64 ++-----
.../java/org/apache/juneau/annotation/Beanp.java | 2 +-
.../apache/juneau/annotation/BeanpAnnotation.java | 91 +++------
.../java/org/apache/juneau/annotation/Example.java | 14 +-
.../juneau/annotation/ExampleAnnotation.java | 107 +++--------
.../org/apache/juneau/annotation/NameProperty.java | 2 +-
.../juneau/annotation/NamePropertyAnnotation.java | 73 ++------
.../apache/juneau/annotation/ParentProperty.java | 2 +-
.../annotation/ParentPropertyAnnotation.java | 72 ++------
.../java/org/apache/juneau/annotation/Swap.java | 14 +-
.../apache/juneau/annotation/SwapAnnotation.java | 120 ++++--------
.../juneau/annotation/TargetedAnnotation.java | 205 +++++++++++++++++++++
.../java/org/apache/juneau/annotation/URI.java | 14 +-
.../apache/juneau/annotation/UriAnnotation.java | 93 +---------
.../java/org/apache/juneau/csv/annotation/Csv.java | 14 +-
.../juneau/csv/annotation/CsvAnnotation.java | 96 +++-------
.../org/apache/juneau/html/annotation/Html.java | 14 +-
.../juneau/html/annotation/HtmlAnnotation.java | 107 +++--------
.../apache/juneau/html/annotation/HtmlLink.java | 14 +-
.../juneau/html/annotation/HtmlLinkAnnotation.java | 70 +++----
.../juneau/http/annotation/AnnotationUtils.java | 4 +-
.../java/org/apache/juneau/jso/annotation/Jso.java | 14 +-
.../juneau/jso/annotation/JsoAnnotation.java | 96 +++-------
.../org/apache/juneau/json/annotation/Json.java | 14 +-
.../juneau/json/annotation/JsonAnnotation.java | 106 +++--------
.../juneau/jsonschema/annotation/Schema.java | 14 +-
.../jsonschema/annotation/SchemaAnnotation.java | 70 +++----
.../apache/juneau/msgpack/annotation/MsgPack.java | 14 +-
.../msgpack/annotation/MsgPackAnnotation.java | 96 +++-------
.../org/apache/juneau/oapi/annotation/OpenApi.java | 14 +-
.../juneau/oapi/annotation/OpenApiAnnotation.java | 96 +++-------
.../juneau/plaintext/annotation/PlainText.java | 14 +-
.../plaintext/annotation/PlainTextAnnotation.java | 96 +++-------
.../org/apache/juneau/soap/annotation/SoapXml.java | 14 +-
.../juneau/soap/annotation/SoapXmlAnnotation.java | 96 +++-------
.../java/org/apache/juneau/uon/annotation/Uon.java | 14 +-
.../juneau/uon/annotation/UonAnnotation.java | 96 +++-------
.../juneau/urlencoding/annotation/UrlEncoding.java | 14 +-
.../annotation/UrlEncodingAnnotation.java | 98 +++-------
.../java/org/apache/juneau/xml/annotation/Xml.java | 14 +-
.../juneau/xml/annotation/XmlAnnotation.java | 106 +++--------
.../main/ConfigurablePropertyCodeGenerator.java | 51 ++++-
50 files changed, 1061 insertions(+), 1630 deletions(-)
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java
index ca7854a..1ed4d1a 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/Rdf.java
@@ -149,7 +149,19 @@ public @interface Rdf {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* Sets the XML prefix of this property or class.
diff --git a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
index 39dae75..4563811 100644
--- a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
+++ b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/annotation/RdfAnnotation.java
@@ -16,8 +16,8 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
import org.apache.juneau.jena.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link Rdf} annotation.
@@ -26,10 +26,9 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class RdfAnnotation implements Rdf {
+public class RdfAnnotation extends TargetedAnnotation.OnClassMethodField implements Rdf {
private String
- on = "",
namespace = "",
prefix = "";
private boolean
@@ -43,45 +42,10 @@ public class RdfAnnotation implements Rdf {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Rdf#on()}
*/
- public RdfAnnotation(String on) {
+ public RdfAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Rdf#on()}
- */
- public RdfAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Rdf#on()}
- */
- public RdfAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Rdf#on()}
- */
- public RdfAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Rdf.class;
- }
-
@Override
public boolean beanUri() {
return beanUri;
@@ -131,68 +95,52 @@ public class RdfAnnotation implements Rdf {
}
@Override
- public String on() {
- return on;
+ public String prefix() {
+ return prefix;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>prefix</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public RdfAnnotation on(String value) {
- this.on = value;
+ public RdfAnnotation prefix(String value) {
+ this.prefix = value;
return this;
}
+ // <FluentSetters>
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public RdfAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - TargetedAnnotation */
+ public RdfAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public RdfAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClass */
+ public RdfAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public RdfAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public RdfAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- @Override
- public String prefix() {
- return prefix;
+ @Override /* GENERATED - OnClassMethodField */
+ public RdfAnnotation on(Field...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>prefix</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public RdfAnnotation prefix(String value) {
- this.prefix = value;
+ @Override /* GENERATED - OnClassMethodField */
+ public RdfAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 241af65..67ecd61 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -2316,12 +2316,24 @@ public class BeanContext extends Context implements MetaProvider {
ReflectionMap.Builder<Annotation> rmb = ReflectionMap.create(Annotation.class);
for (Annotation a : ps.getListProperty(BEAN_annotations, Annotation.class)) {
try {
- Method m = a.getClass().getMethod("on");
- m.setAccessible(true);
- String on = (String)m.invoke(a);
- rmb.append(on, a);
- } catch (NoSuchMethodException e) {
- throw new ConfigException("Invalid annotation @{0} used in BEAN_annotations property. Annotation must define an on() method.", a.getClass().getSimpleName());
+ ClassInfo ci = ClassInfo.of(a.getClass());
+
+ MethodInfo mi = ci.getMethod("onClass");
+ if (mi != null) {
+ if (! mi.getReturnType().is(Class[].class))
+ throw new ConfigException("Invalid annotation @{0} used in BEAN_annotations property. Annotation must define an onClass() method that returns a Class array.", a.getClass().getSimpleName());
+ for (Class<?> c : (Class<?>[])mi.accessible().invoke(a))
+ rmb.append(c.getName(), a);
+ }
+
+ mi = ci.getMethod("on");
+ if (mi != null) {
+ if (! mi.getReturnType().is(String[].class))
+ throw new ConfigException("Invalid annotation @{0} used in BEAN_annotations property. Annotation must define an on() method that returns a String array.", a.getClass().getSimpleName());
+ for (String s : (String[])mi.accessible().invoke(a))
+ rmb.append(s, a);
+ }
+
} catch (Exception e) {
throw new ConfigException(e, "Invalid annotation @{0} used in BEAN_annotations property.", a.getClass().getName());
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
index 9c1450f..a3e3e37 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
@@ -279,7 +279,19 @@ public @interface Bean {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* Associates a {@link PropertyNamer} with this bean to tailor the names of the bean properties.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
index 31d19fe..7216191 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanAnnotation.java
@@ -24,9 +24,7 @@ import org.apache.juneau.transform.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class BeanAnnotation implements Bean {
-
- private String on = "";
+public class BeanAnnotation extends TargetedAnnotation.OnClass implements Bean {
private Class<?>[]
dictionary = new Class[0];
@@ -53,7 +51,7 @@ public class BeanAnnotation implements Bean {
*
* @param on The initial value for the <c>on</c> property.
*/
- public BeanAnnotation(String on) {
+ public BeanAnnotation(String...on) {
on(on);
}
@@ -62,16 +60,11 @@ public class BeanAnnotation implements Bean {
*
* @param on The initial value for the <c>on</c> property.
*/
- public BeanAnnotation(Class<?> on) {
+ public BeanAnnotation(Class<?>...on) {
on(on);
}
@Override
- public Class<? extends Annotation> annotationType() {
- return Bean.class;
- }
-
- @Override
public String bpi() {
return bpi;
}
@@ -184,33 +177,6 @@ public class BeanAnnotation implements Bean {
}
@Override
- public String on() {
- return on;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanAnnotation on(String value) {
- this.on = value;
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanAnnotation on(Class<?> value) {
- this.on = value.getName();
- return this;
- }
-
- @Override
public Class<? extends BeanInterceptor<?>> interceptor() {
return interceptor;
}
@@ -305,4 +271,26 @@ public class BeanAnnotation implements Bean {
this.typePropertyName = value;
return this;
}
+
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public BeanAnnotation on(String...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClass */
+ public BeanAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClass */
+ public BeanAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
+ return this;
+ }
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java
index 6ca9845..966079a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnore.java
@@ -144,6 +144,18 @@ public @interface BeanIgnore {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
index 90b4ac8..2454d6a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanIgnoreAnnotation.java
@@ -16,7 +16,6 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link BeanIgnore} annotation.
@@ -25,29 +24,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class BeanIgnoreAnnotation implements BeanIgnore {
-
- private String on = "";
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link BeanIgnore#on()}
- */
- public BeanIgnoreAnnotation(String on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link BeanIgnore#on()}
- */
- public BeanIgnoreAnnotation(Class<?> on) {
- on(on);
- }
+public class BeanIgnoreAnnotation extends TargetedAnnotation.OnClassMethodFieldConstructor implements BeanIgnore {
/**
* Constructor.
@@ -55,92 +32,47 @@ public class BeanIgnoreAnnotation implements BeanIgnore {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link BeanIgnore#on()}
*/
- public BeanIgnoreAnnotation(Method on) {
+ public BeanIgnoreAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link BeanIgnore#on()}
- */
- public BeanIgnoreAnnotation(Field on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link BeanIgnore#on()}
- */
- public BeanIgnoreAnnotation(Constructor<?> on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return BeanIgnore.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public BeanIgnoreAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanIgnoreAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public BeanIgnoreAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanIgnoreAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public BeanIgnoreAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanIgnoreAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public BeanIgnoreAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanIgnoreAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public BeanIgnoreAnnotation on(Method...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanIgnoreAnnotation on(Constructor<?> value) {
- this.on = ConstructorInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodFieldConstructor */
+ public BeanIgnoreAnnotation on(java.lang.reflect.Constructor<?>...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java
index 194e874..34ab54e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanc.java
@@ -125,7 +125,7 @@ public @interface Beanc {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
/**
* The names of the properties of the constructor arguments.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
index 90384c5..470024a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeancAnnotation.java
@@ -13,10 +13,8 @@
package org.apache.juneau.annotation;
import java.lang.annotation.*;
-import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link Beanc} annotation.
@@ -25,9 +23,9 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class BeancAnnotation implements Beanc {
+public class BeancAnnotation extends TargetedAnnotation.OnConstructor implements Beanc {
- private String on="", properties="";
+ private String properties="";
/**
* Constructor.
@@ -35,65 +33,39 @@ public class BeancAnnotation implements Beanc {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Beanc#on()}
*/
- public BeancAnnotation(String on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Beanc#on()}
- */
- public BeancAnnotation(Constructor<?> on) {
+ public BeancAnnotation(String...on) {
on(on);
}
@Override
- public Class<? extends Annotation> annotationType() {
- return Beanc.class;
- }
-
- @Override
- public String on() {
- return on;
+ public String properties() {
+ return properties;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>properties</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public BeancAnnotation on(String value) {
- this.on = value;
+ public BeancAnnotation properties(String value) {
+ this.properties = value;
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeancAnnotation on(Constructor<?> value) {
- this.on = ConstructorInfo.of(value).getFullName();
- return this;
- }
+ // <FluentSetters>
- @Override
- public String properties() {
- return properties;
+ @Override /* GENERATED - TargetedAnnotation */
+ public BeancAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>properties</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeancAnnotation properties(String value) {
- this.properties = value;
+ @Override /* GENERATED - OnConstructor */
+ public BeancAnnotation on(java.lang.reflect.Constructor<?>...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
index bdd404b..0aad82e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Beanp.java
@@ -265,7 +265,7 @@ public @interface Beanp {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
/**
* For bean properties of maps and collections, this annotation can be used to identify the class types of the
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
index 3c1c994..919af2d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/BeanpAnnotation.java
@@ -16,7 +16,6 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link Beanp} annotation.
@@ -25,10 +24,9 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class BeanpAnnotation implements Beanp {
+public class BeanpAnnotation extends TargetedAnnotation.OnMethodField implements Beanp {
private String
- on = "",
name = "",
value = "",
properties = "",
@@ -47,35 +45,10 @@ public class BeanpAnnotation implements Beanp {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Beanp#on()}
*/
- public BeanpAnnotation(String on) {
+ public BeanpAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Beanp#on()}
- */
- public BeanpAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Beanp#on()}
- */
- public BeanpAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Beanp.class;
- }
-
@Override
public String name() {
return name;
@@ -125,44 +98,6 @@ public class BeanpAnnotation implements Beanp {
}
@Override
- public String on() {
- return on;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanpAnnotation on(String value) {
- this.on = value;
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanpAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public BeanpAnnotation on(Field value) {
- this.on = value.getName();
- return this;
- }
-
- @Override
public Class<?>[] params() {
return params;
}
@@ -257,4 +192,26 @@ public class BeanpAnnotation implements Beanp {
this.wo = value;
return this;
}
+
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public BeanpAnnotation on(String...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnMethodField */
+ public BeanpAnnotation on(Field...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnMethodField */
+ public BeanpAnnotation on(Method...value) {
+ super.on(value);
+ return this;
+ }
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Example.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Example.java
index d77f699..e3d1fb5 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Example.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Example.java
@@ -144,7 +144,19 @@ public @interface Example {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* An example of a POJO class.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
index 207a2eb..65b48ef 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ExampleAnnotation.java
@@ -16,7 +16,6 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link Example} annotation.
@@ -25,9 +24,9 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class ExampleAnnotation implements Example {
+public class ExampleAnnotation extends TargetedAnnotation.OnClassMethodField implements Example {
- private String on = "", value = "";
+ private String value = "";
/**
* Constructor.
@@ -35,107 +34,57 @@ public class ExampleAnnotation implements Example {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Example#on()}
*/
- public ExampleAnnotation(String on) {
+ public ExampleAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Example#on()}
- */
- public ExampleAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Example#on()}
- */
- public ExampleAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Example#on()}
- */
- public ExampleAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Example.class;
- }
-
@Override
- public String on() {
- return on;
+ public String value() {
+ return value;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>value</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public ExampleAnnotation on(String value) {
- this.on = value;
+ public ExampleAnnotation value(String value) {
+ this.value = value;
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ExampleAnnotation on(Field value) {
- this.on = value.getName();
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public ExampleAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ExampleAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClass */
+ public ExampleAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ExampleAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public ExampleAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- @Override
- public String value() {
- return value;
+ @Override /* GENERATED - OnClassMethodField */
+ public ExampleAnnotation on(Field...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>value</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ExampleAnnotation value(String value) {
- this.value = value;
+ @Override /* GENERATED - OnClassMethodField */
+ public ExampleAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NameProperty.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NameProperty.java
index 14c6806..02fcb48 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NameProperty.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NameProperty.java
@@ -96,5 +96,5 @@ public @interface NameProperty {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
index a7a1ae8..b862fce 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NamePropertyAnnotation.java
@@ -16,7 +16,6 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link NameProperty} annotation.
@@ -25,9 +24,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class NamePropertyAnnotation implements NameProperty {
-
- private String on = "";
+public class NamePropertyAnnotation extends TargetedAnnotation.OnMethodField implements NameProperty {
/**
* Constructor.
@@ -35,69 +32,29 @@ public class NamePropertyAnnotation implements NameProperty {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link NameProperty#on()}
*/
- public NamePropertyAnnotation(String on) {
+ public NamePropertyAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link NameProperty#on()}
- */
- public NamePropertyAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link NameProperty#on()}
- */
- public NamePropertyAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return NameProperty.class;
- }
-
- @Override
- public String on() {
- return on;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public NamePropertyAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - TargetedAnnotation */
+ public NamePropertyAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public NamePropertyAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+
+ @Override /* GENERATED - OnMethodField */
+ public NamePropertyAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public NamePropertyAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnMethodField */
+ public NamePropertyAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentProperty.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentProperty.java
index e2dbed7..d84ae43 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentProperty.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentProperty.java
@@ -99,5 +99,5 @@ public @interface ParentProperty {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
index ee45fe2..d1b37de 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ParentPropertyAnnotation.java
@@ -16,7 +16,6 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link ParentProperty} annotation.
@@ -25,29 +24,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class ParentPropertyAnnotation implements ParentProperty {
-
- private String on = "";
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link ParentProperty#on()}
- */
- public ParentPropertyAnnotation(String on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link ParentProperty#on()}
- */
- public ParentPropertyAnnotation(Method on) {
- on(on);
- }
+public class ParentPropertyAnnotation extends TargetedAnnotation.OnMethodField implements ParentProperty {
/**
* Constructor.
@@ -55,50 +32,29 @@ public class ParentPropertyAnnotation implements ParentProperty {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link ParentProperty#on()}
*/
- public ParentPropertyAnnotation(Field on) {
+ public ParentPropertyAnnotation(String...on) {
on(on);
}
- @Override
- public Class<? extends Annotation> annotationType() {
- return ParentProperty.class;
- }
-
- @Override
- public String on() {
- return on;
- }
+ // <FluentSetters>
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ParentPropertyAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - TargetedAnnotation */
+ public ParentPropertyAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ParentPropertyAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnMethodField */
+ public ParentPropertyAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public ParentPropertyAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnMethodField */
+ public ParentPropertyAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Swap.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Swap.java
index 15d9183..8a6f256 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Swap.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Swap.java
@@ -154,7 +154,19 @@ public @interface Swap {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* Identifies a template string along with this swap.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
index 55f8c73..b90dc5e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/SwapAnnotation.java
@@ -16,7 +16,6 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link Swap} annotation.
@@ -25,10 +24,9 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class SwapAnnotation implements Swap {
+public class SwapAnnotation extends TargetedAnnotation.OnClassMethodField implements Swap {
private String
- on = "",
template = "";
private Class<?>
impl = Null.class,
@@ -42,45 +40,10 @@ public class SwapAnnotation implements Swap {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Swap#on()}
*/
- public SwapAnnotation(String on) {
+ public SwapAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Swap#on()}
- */
- public SwapAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Swap#on()}
- */
- public SwapAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Swap#on()}
- */
- public SwapAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Swap.class;
- }
-
@Override
public Class<?> impl() {
return impl;
@@ -114,83 +77,68 @@ public class SwapAnnotation implements Swap {
}
@Override
- public String on() {
- return on;
+ public String template() {
+ return template;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>template</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public SwapAnnotation on(String value) {
- this.on = value;
+ public SwapAnnotation template(String value) {
+ this.template = value;
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SwapAnnotation on(Class<?> value) {
- this.on = value.getName();
- return this;
+ @Override
+ public Class<?> value() {
+ return value;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>value</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public SwapAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ public SwapAnnotation value(Class<?> value) {
+ this.value = value;
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SwapAnnotation on(Field value) {
- this.on = value.getName();
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public SwapAnnotation on(String...value) {
+ super.on(value);
return this;
}
- @Override
- public String template() {
- return template;
+ @Override /* GENERATED - OnClass */
+ public SwapAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>template</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SwapAnnotation template(String value) {
- this.template = value;
+ @Override /* GENERATED - OnClass */
+ public SwapAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- @Override
- public Class<?> value() {
- return value;
+ @Override /* GENERATED - OnClassMethodField */
+ public SwapAnnotation on(Field...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>value</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SwapAnnotation value(Class<?> value) {
- this.value = value;
+ @Override /* GENERATED - OnClassMethodField */
+ public SwapAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/TargetedAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/TargetedAnnotation.java
new file mode 100644
index 0000000..10af000
--- /dev/null
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/TargetedAnnotation.java
@@ -0,0 +1,205 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+// * with the License. You may obtain a copy of the License at *
+// * *
+// * http://www.apache.org/licenses/LICENSE-2.0 *
+// * *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+// * specific language governing permissions and limitations under the License. *
+// ***************************************************************************************************************************
+package org.apache.juneau.annotation;
+
+import java.lang.annotation.*;
+import java.lang.reflect.*;
+
+import org.apache.juneau.internal.*;
+import org.apache.juneau.reflect.*;
+
+/**
+ * An implementation of an annotation that has an <code>on</code> value targeting classes/methods/fields/constructors.
+ */
+public class TargetedAnnotation {
+
+ private String[] on = new String[0];
+
+ /**
+ * The targets this annotation applies to.
+ *
+ * @return The targets this annotation applies to.
+ */
+ public String[] on() {
+ return on;
+ }
+
+ /**
+ * Appends the targets this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(String...value) {
+ for (String v : value)
+ on = ArrayUtils.append(on, v);
+ return this;
+ }
+
+ /**
+ * Implements the {@link Annotation#annotationType()} method for child classes.
+ *
+ * @return This class.
+ */
+ @SuppressWarnings("unchecked")
+ public Class<? extends Annotation> annotationType() {
+ return (Class<? extends Annotation>) getClass();
+ }
+
+ /**
+ * An implementation of an annotation that can be applied to classes.
+ */
+ public static class OnClass extends TargetedAnnotation {
+
+ private Class<?>[] onClass = new Class[0];
+
+ /**
+ * The target classes this annotation applies to.
+ *
+ * @return The target classes this annotation applies to.
+ */
+ public Class<?>[] onClass() {
+ return onClass;
+ }
+
+ /**
+ * Appends the classes that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @SuppressWarnings("unchecked")
+ @FluentSetter
+ public TargetedAnnotation onClass(Class<?>...value) {
+ for (Class<?> v : value)
+ onClass = ArrayUtils.append(onClass, v);
+ return this;
+ }
+
+ /**
+ * Appends the classes that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Class<?>...value) {
+ for (Class<?> v : value)
+ on(v.getName());
+ return this;
+ }
+ }
+
+ /**
+ * An implementation of an annotation that can be applied to classes, methods, and fields.
+ */
+ public static class OnClassMethodField extends OnClass {
+
+ /**
+ * Appends the methods that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Method...value) {
+ for (Method v : value)
+ on(MethodInfo.of(v).getFullName());
+ return this;
+ }
+
+ /**
+ * Appends the fields that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Field...value) {
+ for (Field v : value)
+ on(v.getName());
+ return this;
+ }
+ }
+
+ /**
+ * An implementation of an annotation that can be applied to methods and fields.
+ */
+ public static class OnMethodField extends TargetedAnnotation {
+
+ /**
+ * Appends the methods that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Method...value) {
+ for (Method v : value)
+ on(MethodInfo.of(v).getFullName());
+ return this;
+ }
+
+ /**
+ * Appends the fields that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Field...value) {
+ for (Field v : value)
+ on(v.getName());
+ return this;
+ }
+ }
+
+ /**
+ * An implementation of an annotation that can be applied to classes, methods, fields, and constructors.
+ */
+ public static class OnClassMethodFieldConstructor extends OnClassMethodField {
+
+ /**
+ * Appends the constructors that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Constructor<?>...value) {
+ for (Constructor<?> v : value)
+ on(ConstructorInfo.of(v).getFullName());
+ return this;
+ }
+ }
+
+ /**
+ * An implementation of an annotation that can be applied to constructors.
+ */
+ public static class OnConstructor extends TargetedAnnotation {
+
+ /**
+ * Appends the constructors that this annotation applies to.
+ *
+ * @param value The values to append.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public TargetedAnnotation on(Constructor<?>...value) {
+ for (Constructor<?> v : value)
+ on(ConstructorInfo.of(v).getFullName());
+ return this;
+ }
+ }
+}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/URI.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/URI.java
index 6b6825d..d1e8d4e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/URI.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/URI.java
@@ -116,5 +116,17 @@ public @interface URI {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
index 2274355..84129b0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/UriAnnotation.java
@@ -13,10 +13,8 @@
package org.apache.juneau.annotation;
import java.lang.annotation.*;
-import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link URI} annotation.
@@ -25,29 +23,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class UriAnnotation implements URI {
-
- private String on = "";
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link URI#on()}
- */
- public UriAnnotation(String on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link URI#on()}
- */
- public UriAnnotation(Class<?> on) {
- on(on);
- }
+public class UriAnnotation extends TargetedAnnotation.OnClassMethodField implements URI {
/**
* Constructor.
@@ -55,71 +31,10 @@ public class UriAnnotation implements URI {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link URI#on()}
*/
- public UriAnnotation(Method on) {
+ public UriAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link URI#on()}
- */
- public UriAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return URI.class;
- }
-
- @Override
- public String on() {
- return on;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UriAnnotation on(String value) {
- this.on = value;
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UriAnnotation on(Class<?> value) {
- this.on = value.getName();
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UriAnnotation on(Field value) {
- this.on = value.getName();
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UriAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
- return this;
- }
+ // <FluentSetters>
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java
index 2c212aa..24fb47e 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/Csv.java
@@ -114,5 +114,17 @@ public @interface Csv {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
index c79390e..b1ab9b1 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/csv/annotation/CsvAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link Csv} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class CsvAnnotation implements Csv {
-
- private String on = "";
+public class CsvAnnotation extends TargetedAnnotation.OnClassMethodField implements Csv {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class CsvAnnotation implements Csv {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Csv#on()}
*/
- public CsvAnnotation(String on) {
+ public CsvAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Csv#on()}
- */
- public CsvAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Csv#on()}
- */
- public CsvAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Csv#on()}
- */
- public CsvAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Csv.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public CsvAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public CsvAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public CsvAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public CsvAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public CsvAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public CsvAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public CsvAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public CsvAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public CsvAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
index d8505e1..02c146a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/Html.java
@@ -185,7 +185,19 @@ public @interface Html {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* Associates an {@link HtmlRender} with a bean property for custom HTML rendering of the property.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
index 1b8fb2c..8ba2c9f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlAnnotation.java
@@ -16,8 +16,8 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
import org.apache.juneau.html.*;
-import org.apache.juneau.reflect.*;
/**
* A concrete implementation of the {@link Html} annotation.
@@ -27,10 +27,9 @@ import org.apache.juneau.reflect.*;
* </ul>
*/
@SuppressWarnings("rawtypes")
-public class HtmlAnnotation implements Html {
+public class HtmlAnnotation extends TargetedAnnotation.OnClassMethodField implements Html {
private String
- on = "",
anchorText = "",
link = "";
private HtmlFormat
@@ -47,45 +46,10 @@ public class HtmlAnnotation implements Html {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Html#on()}
*/
- public HtmlAnnotation(String on) {
+ public HtmlAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Html#on()}
- */
- public HtmlAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Html#on()}
- */
- public HtmlAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Html#on()}
- */
- public HtmlAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Html.class;
- }
-
@Override
public String anchorText() {
return anchorText;
@@ -167,67 +131,52 @@ public class HtmlAnnotation implements Html {
}
@Override
- public String on() {
- return on;
+ public Class<? extends HtmlRender> render() {
+ return render;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>render</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public HtmlAnnotation on(String value) {
- this.on = value;
+ public HtmlAnnotation render(Class<? extends HtmlRender> value) {
+ this.render = value;
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public HtmlAnnotation on(Class<?> value) {
- this.on = value.getName();
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public HtmlAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public HtmlAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClass */
+ public HtmlAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public HtmlAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public HtmlAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- @Override
- public Class<? extends HtmlRender> render() {
- return render;
+ @Override /* GENERATED - OnClassMethodField */
+ public HtmlAnnotation on(Field...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>render</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public HtmlAnnotation render(Class<? extends HtmlRender> value) {
- this.render = value;
+ @Override /* GENERATED - OnClassMethodField */
+ public HtmlAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLink.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLink.java
index 1548be3..e88a13c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLink.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLink.java
@@ -69,7 +69,19 @@ public @interface HtmlLink {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* The bean property whose value becomes the url in the hyperlink.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
index ff3b962..b0d6f2d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlLinkAnnotation.java
@@ -15,6 +15,7 @@ package org.apache.juneau.html.annotation;
import java.lang.annotation.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link HtmlLink} annotation.
@@ -23,10 +24,9 @@ import org.apache.juneau.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class HtmlLinkAnnotation implements HtmlLink {
+public class HtmlLinkAnnotation extends TargetedAnnotation.OnClass implements HtmlLink {
private String
- on = "",
nameProperty = "",
uriProperty = "";
@@ -36,52 +36,10 @@ public class HtmlLinkAnnotation implements HtmlLink {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link HtmlLink#on()}
*/
- public HtmlLinkAnnotation(String on) {
+ public HtmlLinkAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link HtmlLink#on()}
- */
- public HtmlLinkAnnotation(Class<?> on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return HtmlLink.class;
- }
-
- @Override
- public String on() {
- return on;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public HtmlLinkAnnotation on(String value) {
- this.on = value;
- return this;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public HtmlLinkAnnotation on(Class<?> value) {
- this.on = value.getName();
- return this;
- }
-
@Override
public String nameProperty() {
return nameProperty;
@@ -113,4 +71,26 @@ public class HtmlLinkAnnotation implements HtmlLink {
this.uriProperty = value;
return this;
}
+
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public HtmlLinkAnnotation on(String...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClass */
+ public HtmlLinkAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClass */
+ public HtmlLinkAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
+ return this;
+ }
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/AnnotationUtils.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/AnnotationUtils.java
index 5d725f0..72648e2 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/AnnotationUtils.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/AnnotationUtils.java
@@ -133,8 +133,8 @@ public class AnnotationUtils {
if (a == null)
return true;
return
- allEmpty(a.value(), a.description(), a.d(), a._default(), a.df(), a._enum(), a.e(), a.allOf(), a.properties(), a.additionalProperties(), a.xml(), a.example(), a.ex(), a.examples(), a.exs())
- && allEmpty(a.$ref(), a.format(), a.f(), a.title(), a.multipleOf(), a.mo(), a.maximum(), a.max(), a.minimum(), a.min(), a.pattern(), a.p(), a.type(), a.t(), a.discriminator(), a.collectionFormat(), a.cf(), a.on())
+ allEmpty(a.value(), a.description(), a.d(), a._default(), a.df(), a._enum(), a.e(), a.allOf(), a.properties(), a.additionalProperties(), a.xml(), a.example(), a.ex(), a.examples(), a.exs(), a.on())
+ && allEmpty(a.$ref(), a.format(), a.f(), a.title(), a.multipleOf(), a.mo(), a.maximum(), a.max(), a.minimum(), a.min(), a.pattern(), a.p(), a.type(), a.t(), a.discriminator(), a.collectionFormat(), a.cf())
&& allMinusOne(a.maxProperties(), a.maxp(), a.minProperties(), a.minp())
&& allFalse(a.ignore(), a.exclusiveMaximum(), a.emax(), a.exclusiveMinimum(), a.emin(), a.readOnly(), a.ro(), a.required(), a.r(), a.uniqueItems(), a.ui())
&& allMinusOne(a.maxLength(), a.maxl(), a.minLength(), a.minl(), a.maxItems(), a.maxi(), a.minItems(), a.mini())
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java
index 2c0574b..1d23de6 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/Jso.java
@@ -114,5 +114,17 @@ public @interface Jso {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
index fc0b303..511cf13 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jso/annotation/JsoAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link Jso} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class JsoAnnotation implements Jso {
-
- private String on = "";
+public class JsoAnnotation extends TargetedAnnotation.OnClassMethodField implements Jso {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class JsoAnnotation implements Jso {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Jso#on()}
*/
- public JsoAnnotation(String on) {
+ public JsoAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Jso#on()}
- */
- public JsoAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Jso#on()}
- */
- public JsoAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Jso#on()}
- */
- public JsoAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Jso.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public JsoAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsoAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public JsoAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsoAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public JsoAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsoAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public JsoAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsoAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public JsoAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java
index f92eb18..29fd8ee 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/Json.java
@@ -119,7 +119,19 @@ public @interface Json {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* Wraps beans in a JSON object with the specified attribute name.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
index 9c32c33..c9a2960 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/annotation/JsonAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link Json} annotation.
@@ -25,9 +25,8 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class JsonAnnotation implements Json {
+public class JsonAnnotation extends TargetedAnnotation.OnClassMethodField implements Json {
- private String on = "";
private String wrapperAttr = "";
/**
@@ -36,108 +35,57 @@ public class JsonAnnotation implements Json {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Json#on()}
*/
- public JsonAnnotation(String on) {
+ public JsonAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Json#on()}
- */
- public JsonAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Json#on()}
- */
- public JsonAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Json#on()}
- */
- public JsonAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Json.class;
- }
-
@Override
- public String on() {
- return on;
+ public String wrapperAttr() {
+ return wrapperAttr;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>wrapperAttr</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public JsonAnnotation on(String value) {
- this.on = value;
+ public JsonAnnotation wrapperAttr(String value) {
+ this.wrapperAttr = value;
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsonAnnotation on(Class<?> value) {
- this.on = value.getName();
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public JsonAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsonAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClass */
+ public JsonAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsonAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public JsonAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- @Override
- public String wrapperAttr() {
- return wrapperAttr;
+ @Override /* GENERATED - OnClassMethodField */
+ public JsonAnnotation on(Field...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>wrapperAttr</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public JsonAnnotation wrapperAttr(String value) {
- this.wrapperAttr = value;
+ @Override /* GENERATED - OnClassMethodField */
+ public JsonAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java
index e25e3ca..2745694 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/Schema.java
@@ -911,5 +911,17 @@ public @interface Schema {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
index 171a11e..42390e8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/annotation/SchemaAnnotation.java
@@ -13,8 +13,10 @@
package org.apache.juneau.jsonschema.annotation;
import java.lang.annotation.*;
+import java.lang.reflect.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link Schema} annotation.
@@ -22,9 +24,7 @@ import org.apache.juneau.*;
* <p>
* Annotations can be applied programmatically using {@link BeanContextBuilder#annotations(Annotation...)}.
*/
-public class SchemaAnnotation implements Schema {
-
- private String on = "";
+public class SchemaAnnotation extends TargetedAnnotation.OnClassMethodField implements Schema {
private String
$ref = "",
@@ -99,18 +99,8 @@ public class SchemaAnnotation implements Schema {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Schema#on()}
*/
- public SchemaAnnotation(String on) {
- this.on = on;
- }
-
- /**
- * Constructor.
- */
- public SchemaAnnotation() {}
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Schema.class;
+ public SchemaAnnotation(String...on) {
+ on(on);
}
@Override /* Schema */
@@ -802,22 +792,6 @@ public class SchemaAnnotation implements Schema {
}
@Override /* Schema */
- public String on() {
- return on;
- }
-
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SchemaAnnotation on(String value) {
- this.on = value;
- return this;
- }
-
- @Override /* Schema */
public String pattern() {
return pattern;
}
@@ -1040,4 +1014,38 @@ public class SchemaAnnotation implements Schema {
this.xml = value;
return this;
}
+
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public SchemaAnnotation on(String...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClass */
+ public SchemaAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClass */
+ public SchemaAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClassMethodField */
+ public SchemaAnnotation on(Field...value) {
+ super.on(value);
+ return this;
+ }
+
+ @Override /* GENERATED - OnClassMethodField */
+ public SchemaAnnotation on(Method...value) {
+ super.on(value);
+ return this;
+ }
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java
index 1417155..665ec3f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPack.java
@@ -114,5 +114,17 @@ public @interface MsgPack {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
index e3195f3..100d030 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link MsgPack} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class MsgPackAnnotation implements MsgPack {
-
- private String on = "";
+public class MsgPackAnnotation extends TargetedAnnotation.OnClassMethodField implements MsgPack {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class MsgPackAnnotation implements MsgPack {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link MsgPack#on()}
*/
- public MsgPackAnnotation(String on) {
+ public MsgPackAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link MsgPack#on()}
- */
- public MsgPackAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link MsgPack#on()}
- */
- public MsgPackAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link MsgPack#on()}
- */
- public MsgPackAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return MsgPack.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public MsgPackAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public MsgPackAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public MsgPackAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public MsgPackAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public MsgPackAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public MsgPackAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public MsgPackAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public MsgPackAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public MsgPackAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java
index 4f2b185..742ef82 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApi.java
@@ -114,5 +114,17 @@ public @interface OpenApi {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
index b0c1985..0517197 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link OpenApi} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class OpenApiAnnotation implements OpenApi {
-
- private String on = "";
+public class OpenApiAnnotation extends TargetedAnnotation.OnClassMethodField implements OpenApi {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class OpenApiAnnotation implements OpenApi {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link OpenApi#on()}
*/
- public OpenApiAnnotation(String on) {
+ public OpenApiAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link OpenApi#on()}
- */
- public OpenApiAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link OpenApi#on()}
- */
- public OpenApiAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link OpenApi#on()}
- */
- public OpenApiAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return OpenApi.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public OpenApiAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public OpenApiAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public OpenApiAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public OpenApiAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public OpenApiAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public OpenApiAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public OpenApiAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public OpenApiAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public OpenApiAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java
index 9aa82a0..a4551e4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainText.java
@@ -114,5 +114,17 @@ public @interface PlainText {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
index 3f900ea..ce87e03 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/plaintext/annotation/PlainTextAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link PlainText} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class PlainTextAnnotation implements PlainText {
-
- private String on = "";
+public class PlainTextAnnotation extends TargetedAnnotation.OnClassMethodField implements PlainText {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class PlainTextAnnotation implements PlainText {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link PlainText#on()}
*/
- public PlainTextAnnotation(String on) {
+ public PlainTextAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link PlainText#on()}
- */
- public PlainTextAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link PlainText#on()}
- */
- public PlainTextAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link PlainText#on()}
- */
- public PlainTextAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return PlainText.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public PlainTextAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public PlainTextAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public PlainTextAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public PlainTextAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public PlainTextAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public PlainTextAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public PlainTextAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public PlainTextAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public PlainTextAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java
index 660c09b..c92e4c9 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXml.java
@@ -114,5 +114,17 @@ public @interface SoapXml {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
index 0038ca3..25e6f28 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/soap/annotation/SoapXmlAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link SoapXml} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class SoapXmlAnnotation implements SoapXml {
-
- private String on = "";
+public class SoapXmlAnnotation extends TargetedAnnotation.OnClassMethodField implements SoapXml {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class SoapXmlAnnotation implements SoapXml {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link SoapXml#on()}
*/
- public SoapXmlAnnotation(String on) {
+ public SoapXmlAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link SoapXml#on()}
- */
- public SoapXmlAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link SoapXml#on()}
- */
- public SoapXmlAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link SoapXml#on()}
- */
- public SoapXmlAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return SoapXml.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public SoapXmlAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SoapXmlAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public SoapXmlAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SoapXmlAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public SoapXmlAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SoapXmlAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public SoapXmlAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public SoapXmlAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public SoapXmlAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java
index 6817bb1..02e4ca0 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/Uon.java
@@ -114,5 +114,17 @@ public @interface Uon {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
index c014989..32207c8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/annotation/UonAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link Uon} annotation.
@@ -25,9 +25,7 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class UonAnnotation implements Uon {
-
- private String on = "";
+public class UonAnnotation extends TargetedAnnotation.OnClassMethodField implements Uon {
/**
* Constructor.
@@ -35,91 +33,41 @@ public class UonAnnotation implements Uon {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Uon#on()}
*/
- public UonAnnotation(String on) {
+ public UonAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Uon#on()}
- */
- public UonAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Uon#on()}
- */
- public UonAnnotation(Method on) {
- on(on);
- }
+ // <FluentSetters>
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Uon#on()}
- */
- public UonAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Uon.class;
- }
-
- @Override
- public String on() {
- return on;
+ @Override /* GENERATED - TargetedAnnotation */
+ public UonAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UonAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public UonAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UonAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public UonAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UonAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public UonAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UonAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public UonAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java
index 499fe39..6b76816 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncoding.java
@@ -121,5 +121,17 @@ public @interface UrlEncoding {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
}
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
index 812cfd6..705e106 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/annotation/UrlEncodingAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link UrlEncoding} annotation.
@@ -25,10 +25,8 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class UrlEncodingAnnotation implements UrlEncoding {
+public class UrlEncodingAnnotation extends TargetedAnnotation.OnClassMethodField implements UrlEncoding {
- private String
- on = "";
private boolean
expandedParams = false;
@@ -38,46 +36,11 @@ public class UrlEncodingAnnotation implements UrlEncoding {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link UrlEncoding#on()}
*/
- public UrlEncodingAnnotation(String on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link UrlEncoding#on()}
- */
- public UrlEncodingAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link UrlEncoding#on()}
- */
- public UrlEncodingAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link UrlEncoding#on()}
- */
- public UrlEncodingAnnotation(Field on) {
+ public UrlEncodingAnnotation(String...on) {
on(on);
}
@Override
- public Class<? extends Annotation> annotationType() {
- return UrlEncoding.class;
- }
-
- @Override
public boolean expandedParams() {
return expandedParams;
}
@@ -93,52 +56,37 @@ public class UrlEncodingAnnotation implements UrlEncoding {
return this;
}
- @Override
- public String on() {
- return on;
+ // <FluentSetters>
+
+ @Override /* GENERATED - TargetedAnnotation */
+ public UrlEncodingAnnotation on(String...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UrlEncodingAnnotation on(String value) {
- this.on = value;
+ @Override /* GENERATED - OnClass */
+ public UrlEncodingAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UrlEncodingAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public UrlEncodingAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UrlEncodingAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClassMethodField */
+ public UrlEncodingAnnotation on(Field...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public UrlEncodingAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClassMethodField */
+ public UrlEncodingAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
\ No newline at end of file
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java
index 4129063..2445497 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/Xml.java
@@ -216,7 +216,19 @@ public @interface Xml {
* <li class='link'>{@doc DynamicallyAppliedAnnotations}
* </ul>
*/
- String on() default "";
+ String[] on() default {};
+
+ /**
+ * Dynamically apply this annotation to the specified classes.
+ *
+ * <p>
+ * Identical to {@link #on()} except allows you to specify class objects instead of a strings.
+ *
+ * <ul class='seealso'>
+ * <li class='link'>{@doc DynamicallyAppliedAnnotations}
+ * </ul>
+ */
+ Class<?>[] onClass() default {};
/**
* Sets the XML prefix of this property or class.
diff --git a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
index 956c5bb..80f2074 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/annotation/XmlAnnotation.java
@@ -16,7 +16,7 @@ import java.lang.annotation.*;
import java.lang.reflect.*;
import org.apache.juneau.*;
-import org.apache.juneau.reflect.*;
+import org.apache.juneau.annotation.*;
/**
* A concrete implementation of the {@link Xml} annotation.
@@ -25,10 +25,9 @@ import org.apache.juneau.reflect.*;
* <li class='jm'>{@link BeanContextBuilder#annotations(Annotation...)}
* </ul>
*/
-public class XmlAnnotation implements Xml {
+public class XmlAnnotation extends TargetedAnnotation.OnClassMethodField implements Xml {
private String
- on = "",
childName = "",
namespace = "",
prefix = "";
@@ -41,45 +40,10 @@ public class XmlAnnotation implements Xml {
* @param on The initial value for the <c>on</c> property.
* <br>See {@link Xml#on()}
*/
- public XmlAnnotation(String on) {
+ public XmlAnnotation(String...on) {
on(on);
}
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Xml#on()}
- */
- public XmlAnnotation(Class<?> on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Xml#on()}
- */
- public XmlAnnotation(Method on) {
- on(on);
- }
-
- /**
- * Constructor.
- *
- * @param on The initial value for the <c>on</c> property.
- * <br>See {@link Xml#on()}
- */
- public XmlAnnotation(Field on) {
- on(on);
- }
-
- @Override
- public Class<? extends Annotation> annotationType() {
- return Xml.class;
- }
-
@Override
public String childName() {
return childName;
@@ -129,68 +93,52 @@ public class XmlAnnotation implements Xml {
}
@Override
- public String on() {
- return on;
+ public String prefix() {
+ return prefix;
}
/**
- * Sets the <c>on</c> property on this annotation.
+ * Sets the <c>prefix</c> property on this annotation.
*
* @param value The new value for this property.
* @return This object (for method chaining).
*/
- public XmlAnnotation on(String value) {
- this.on = value;
+ public XmlAnnotation prefix(String value) {
+ this.prefix = value;
return this;
}
+ // <FluentSetters>
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public XmlAnnotation on(Class<?> value) {
- this.on = value.getName();
+ @Override /* GENERATED - TargetedAnnotation */
+ public XmlAnnotation on(String...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public XmlAnnotation on(Method value) {
- this.on = MethodInfo.of(value).getFullName();
+ @Override /* GENERATED - OnClass */
+ public XmlAnnotation on(java.lang.Class<?>...value) {
+ super.on(value);
return this;
}
- /**
- * Sets the <c>on</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public XmlAnnotation on(Field value) {
- this.on = value.getName();
+ @Override /* GENERATED - OnClass */
+ public XmlAnnotation onClass(java.lang.Class<?>...value) {
+ super.onClass(value);
return this;
}
- @Override
- public String prefix() {
- return prefix;
+ @Override /* GENERATED - OnClassMethodField */
+ public XmlAnnotation on(Field...value) {
+ super.on(value);
+ return this;
}
- /**
- * Sets the <c>prefix</c> property on this annotation.
- *
- * @param value The new value for this property.
- * @return This object (for method chaining).
- */
- public XmlAnnotation prefix(String value) {
- this.prefix = value;
+ @Override /* GENERATED - OnClassMethodField */
+ public XmlAnnotation on(Method...value) {
+ super.on(value);
return this;
}
+
+ // </FluentSetters>
}
diff --git a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
index c3bd758..31a0716 100644
--- a/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
+++ b/juneau-releng/juneau-all/src/java/main/ConfigurablePropertyCodeGenerator.java
@@ -17,33 +17,47 @@ import java.util.*;
import java.util.stream.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
import org.apache.juneau.assertions.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.config.*;
import org.apache.juneau.config.store.*;
import org.apache.juneau.csv.*;
+import org.apache.juneau.csv.annotation.*;
import org.apache.juneau.html.*;
+import org.apache.juneau.html.annotation.*;
import org.apache.juneau.http.*;
import org.apache.juneau.http.exception.*;
import org.apache.juneau.http.response.*;
import org.apache.juneau.internal.*;
import org.apache.juneau.jena.*;
+import org.apache.juneau.jena.annotation.*;
import org.apache.juneau.jso.*;
+import org.apache.juneau.jso.annotation.*;
import org.apache.juneau.json.*;
+import org.apache.juneau.json.annotation.*;
import org.apache.juneau.jsonschema.*;
+import org.apache.juneau.jsonschema.annotation.*;
import org.apache.juneau.msgpack.*;
+import org.apache.juneau.msgpack.annotation.*;
import org.apache.juneau.oapi.*;
+import org.apache.juneau.oapi.annotation.*;
import org.apache.juneau.parser.*;
import org.apache.juneau.plaintext.*;
+import org.apache.juneau.plaintext.annotation.*;
import org.apache.juneau.reflect.*;
import org.apache.juneau.rest.*;
import org.apache.juneau.rest.client.*;
import org.apache.juneau.rest.mock.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.soap.*;
+import org.apache.juneau.soap.annotation.*;
import org.apache.juneau.uon.*;
+import org.apache.juneau.uon.annotation.*;
import org.apache.juneau.urlencoding.*;
+import org.apache.juneau.urlencoding.annotation.*;
import org.apache.juneau.xml.*;
+import org.apache.juneau.xml.annotation.*;
public class ConfigurablePropertyCodeGenerator {
@@ -200,7 +214,38 @@ public class ConfigurablePropertyCodeGenerator {
ExecutableInfo.class,
ConstructorInfo.class,
- MethodInfo.class
+ MethodInfo.class,
+
+ TargetedAnnotation.class,
+ TargetedAnnotation.OnClass.class,
+ TargetedAnnotation.OnClassMethodField.class,
+ TargetedAnnotation.OnConstructor.class,
+ TargetedAnnotation.OnMethodField.class,
+ TargetedAnnotation.OnClassMethodFieldConstructor.class,
+ BeanAnnotation.class,
+ BeancAnnotation.class,
+ BeanIgnoreAnnotation.class,
+ BeanpAnnotation.class,
+ ExampleAnnotation.class,
+ NamePropertyAnnotation.class,
+ ParentPropertyAnnotation.class,
+ SwapAnnotation.class,
+ UriAnnotation.class,
+ CsvAnnotation.class,
+ HtmlAnnotation.class,
+ HtmlLinkAnnotation.class,
+ JsoAnnotation.class,
+ JsonAnnotation.class,
+ SchemaAnnotation.class,
+ MsgPackAnnotation.class,
+ OpenApiAnnotation.class,
+ PlainTextAnnotation.class,
+ SoapXmlAnnotation.class,
+ UonAnnotation.class,
+ UrlEncodingAnnotation.class,
+ XmlAnnotation.class,
+ RdfAnnotation.class
+
};
static Set<Class<?>> ignoreClasses = ASet.of(
@@ -233,6 +278,8 @@ public class ConfigurablePropertyCodeGenerator {
for (Class<?> c : classes) {
File f = findClassFile(c);
+ if (f == null)
+ continue;
System.out.println("Processing " + f.getName());
String s = IOUtils.read(f);
@@ -371,7 +418,7 @@ public class ConfigurablePropertyCodeGenerator {
if (f.exists())
return f;
}
- throw new RuntimeException("Could not find source for class " + c.getName());
+ return null;
}
private static class MethodComparator implements Comparator<Method> {