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 e5183d7 Context API refactoring.
e5183d7 is described below
commit e5183d7855b6dee901c2ff0c84a4c022c174affb
Author: JamesBognar <[email protected]>
AuthorDate: Fri Aug 13 14:16:31 2021 -0400
Context API refactoring.
---
.../java/org/apache/juneau/BeanContextBuilder.java | 9 +
.../java/org/apache/juneau/BeanContextable.java | 71 ++++
...extBuilder.java => BeanContextableBuilder.java} | 402 ++++++++++++---------
.../java/org/apache/juneau/ContextBuilder.java | 11 +
.../apache/juneau/ContextPropertiesBuilder.java | 5 +
5 files changed, 322 insertions(+), 176 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
index 284c317..df60143 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
@@ -72,6 +72,15 @@ public class BeanContextBuilder extends ContextBuilder {
super(copyFrom);
}
+ /**
+ * Copy constructor.
+ *
+ * @param copyFrom The builder to copy from.
+ */
+ protected BeanContextBuilder(BeanContextBuilder copyFrom) {
+ super(copyFrom);
+ }
+
@Override /* ContextBuilder */
public BeanContext build() {
return build(BeanContext.class);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
new file mode 100644
index 0000000..4f8b046
--- /dev/null
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextable.java
@@ -0,0 +1,71 @@
+//
***************************************************************************************************************************
+// * 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;
+
+/**
+ * Context class for classes that use {@link BeanContext} object.s
+ */
+public abstract class BeanContextable extends Context {
+
+ final BeanContext beanContext;
+
+ /**
+ * Constructor.
+ *
+ * @param b The builder for this object.
+ */
+ protected BeanContextable(BeanContextableBuilder b) {
+ super(b);
+ beanContext = ContextCache.INSTANCE.create(BeanContext.class,
getContextProperties());
+ }
+
+ /**
+ * Returns the bean context for this object.
+ *
+ * @return The bean context for this object.
+ */
+ public BeanContext getBeanContext() {
+ return beanContext;
+ }
+
+ @Override
+ public BeanSession createSession() {
+ return
beanContext.createBeanSession(beanContext.createDefaultSessionArgs());
+ }
+
+ /**
+ * Create a new bean session based on the properties defined on this
context combined with the specified
+ * runtime args.
+ *
+ * <p>
+ * Use this method for creating sessions if you don't need to override
any
+ * properties or locale/timezone currently set on this context.
+ *
+ * @param args
+ * The session arguments.
+ * @return A new session object.
+ */
+ public BeanSession createSession(BeanSessionArgs args) {
+ return beanContext.createBeanSession(args);
+ }
+
+ @Override /* Context */
+ public final Session createSession(SessionArgs args) {
+ throw new NoSuchMethodError();
+ }
+
+ @Override /* Context */
+ public BeanSessionArgs createDefaultSessionArgs() {
+ return beanContext.createDefaultSessionArgs();
+ }
+}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
similarity index 90%
copy from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
index 284c317..8a91278 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContextableBuilder.java
@@ -12,9 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau;
-import static org.apache.juneau.BeanContext.*;
-import static org.apache.juneau.internal.StringUtils.*;
-
import java.beans.*;
import java.io.*;
import java.lang.annotation.*;
@@ -52,15 +49,18 @@ import org.apache.juneau.transform.*;
* </ul>
*/
@FluentSetters
-public class BeanContextBuilder extends ContextBuilder {
+public abstract class BeanContextableBuilder extends ContextBuilder {
+
+ private BeanContextBuilder bcBuilder;
/**
* Constructor.
*
* All default settings.
*/
- public BeanContextBuilder() {
+ public BeanContextableBuilder() {
super();
+ this.bcBuilder = BeanContext.create();
}
/**
@@ -68,13 +68,30 @@ public class BeanContextBuilder extends ContextBuilder {
*
* @param copyFrom The bean to copy from.
*/
- public BeanContextBuilder(BeanContext copyFrom) {
+ public BeanContextableBuilder(BeanContextable copyFrom) {
super(copyFrom);
+ this.bcBuilder = copyFrom.getBeanContext().copy();
+ }
+
+ /**
+ * Copy constructor.
+ *
+ * @param copyFrom The builder to copy from.
+ */
+ public BeanContextableBuilder(BeanContextableBuilder copyFrom) {
+ bcBuilder = new BeanContextBuilder(copyFrom.bcBuilder);
}
+ /**
+ * Makes a copy of this builder.
+ *
+ * @return A new copy of this builder.
+ */
+ public abstract BeanContextableBuilder copy();
+
@Override /* ContextBuilder */
- public BeanContext build() {
- return build(BeanContext.class);
+ public BeanContextable build() {
+ return null;
}
//-----------------------------------------------------------------------------------------------------------------
@@ -123,8 +140,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanClassVisibility(Visibility value) {
- return set(BEAN_beanClassVisibility, value);
+ public BeanContextableBuilder beanClassVisibility(Visibility value) {
+ bcBuilder.beanClassVisibility(value);
+ return this;
}
/**
@@ -172,8 +190,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanConstructorVisibility(Visibility value) {
- return set(BEAN_beanConstructorVisibility, value);
+ public BeanContextableBuilder beanConstructorVisibility(Visibility
value) {
+ bcBuilder.beanConstructorVisibility(value);
+ return this;
}
/**
@@ -230,8 +249,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanFieldVisibility(Visibility value) {
- return set(BEAN_beanFieldVisibility, value);
+ public BeanContextableBuilder beanFieldVisibility(Visibility value) {
+ bcBuilder.beanFieldVisibility(value);
+ return this;
}
/**
@@ -285,8 +305,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanInterceptor(Class<?> on, Class<? extends
BeanInterceptor<?>> value) {
- return
annotations(BeanAnnotation.create(on).interceptor(value).build());
+ public BeanContextableBuilder beanInterceptor(Class<?> on, Class<?
extends BeanInterceptor<?>> value) {
+ bcBuilder.beanInterceptor(on, value);
+ return this;
}
/**
@@ -320,8 +341,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanMapPutReturnsOldValue() {
- return set(BEAN_beanMapPutReturnsOldValue);
+ public BeanContextableBuilder beanMapPutReturnsOldValue() {
+ bcBuilder.beanMapPutReturnsOldValue();
+ return this;
}
/**
@@ -368,8 +390,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanMethodVisibility(Visibility value) {
- return set(BEAN_beanMethodVisibility, value);
+ public BeanContextableBuilder beanMethodVisibility(Visibility value) {
+ bcBuilder.beanMethodVisibility(value);
+ return this;
}
/**
@@ -421,8 +444,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beansRequireDefaultConstructor() {
- return set(BEAN_beansRequireDefaultConstructor);
+ public BeanContextableBuilder beansRequireDefaultConstructor() {
+ bcBuilder.beansRequireDefaultConstructor();
+ return this;
}
/**
@@ -469,8 +493,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beansRequireSerializable() {
- return set(BEAN_beansRequireSerializable);
+ public BeanContextableBuilder beansRequireSerializable() {
+ bcBuilder.beansRequireSerializable();
+ return this;
}
/**
@@ -515,8 +540,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beansRequireSettersForGetters() {
- return set(BEAN_beansRequireSettersForGetters);
+ public BeanContextableBuilder beansRequireSettersForGetters() {
+ bcBuilder.beansRequireSettersForGetters();
+ return this;
}
/**
@@ -558,8 +584,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder disableBeansRequireSomeProperties() {
- return set(BEAN_disableBeansRequireSomeProperties);
+ public BeanContextableBuilder disableBeansRequireSomeProperties() {
+ bcBuilder.disableBeansRequireSomeProperties();
+ return this;
}
/**
@@ -618,8 +645,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanProperties(Class<?> beanClass, String
properties) {
- return
annotations(BeanAnnotation.create(beanClass).p(properties).build());
+ public BeanContextableBuilder beanProperties(Class<?> beanClass, String
properties) {
+ bcBuilder.beanProperties(beanClass, properties);
+ return this;
}
/**
@@ -680,9 +708,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanProperties(Map<String,Object> values) {
- for (Map.Entry<String,Object> e : values.entrySet())
-
annotations(BeanAnnotation.create(e.getKey()).p(stringify(e.getValue())).build());
+ public BeanContextableBuilder beanProperties(Map<String,Object> values)
{
+ bcBuilder.beanProperties(values);
return this;
}
@@ -744,8 +771,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanProperties(String beanClassName, String
properties) {
- return
annotations(BeanAnnotation.create(beanClassName).p(properties).build());
+ public BeanContextableBuilder beanProperties(String beanClassName,
String properties) {
+ bcBuilder.beanProperties(beanClassName, properties);
+ return this;
}
/**
@@ -796,8 +824,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesExcludes(Class<?> beanClass,
String properties) {
- return
annotations(BeanAnnotation.create(beanClass).xp(properties).build());
+ public BeanContextableBuilder beanPropertiesExcludes(Class<?>
beanClass, String properties) {
+ bcBuilder.beanPropertiesExcludes(beanClass, properties);
+ return this;
}
/**
@@ -850,9 +879,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesExcludes(Map<String,Object>
values) {
- for (Map.Entry<String,Object> e : values.entrySet())
-
annotations(BeanAnnotation.create(e.getKey()).xp(stringify(e.getValue())).build());
+ public BeanContextableBuilder beanPropertiesExcludes(Map<String,Object>
values) {
+ bcBuilder.beanPropertiesExcludes(values);
return this;
}
@@ -906,8 +934,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesExcludes(String beanClassName,
String properties) {
- return
annotations(BeanAnnotation.create(beanClassName).xp(properties).build());
+ public BeanContextableBuilder beanPropertiesExcludes(String
beanClassName, String properties) {
+ bcBuilder.beanPropertiesExcludes(beanClassName, properties);
+ return this;
}
/**
@@ -961,8 +990,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesReadOnly(Class<?> beanClass,
String properties) {
- return
annotations(BeanAnnotation.create(beanClass).ro(properties).build());
+ public BeanContextableBuilder beanPropertiesReadOnly(Class<?>
beanClass, String properties) {
+ bcBuilder.beanPropertiesReadOnly(beanClass, properties);
+ return this;
}
/**
@@ -1018,9 +1048,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesReadOnly(Map<String,Object>
values) {
- for (Map.Entry<String,Object> e : values.entrySet())
-
annotations(BeanAnnotation.create(e.getKey()).ro(stringify(e.getValue())).build());
+ public BeanContextableBuilder beanPropertiesReadOnly(Map<String,Object>
values) {
+ bcBuilder.beanPropertiesReadOnly(values);
return this;
}
@@ -1077,8 +1106,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesReadOnly(String beanClassName,
String properties) {
- return
annotations(BeanAnnotation.create(beanClassName).ro(properties).build());
+ public BeanContextableBuilder beanPropertiesReadOnly(String
beanClassName, String properties) {
+ bcBuilder.beanPropertiesReadOnly(beanClassName, properties);
+ return this;
}
/**
@@ -1131,8 +1161,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesWriteOnly(Class<?> beanClass,
String properties) {
- return
annotations(BeanAnnotation.create(beanClass).wo(properties).build());
+ public BeanContextableBuilder beanPropertiesWriteOnly(Class<?>
beanClass, String properties) {
+ bcBuilder.beanPropertiesWriteOnly(beanClass, properties);
+ return this;
}
/**
@@ -1187,9 +1218,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesWriteOnly(Map<String,Object>
values) {
- for (Map.Entry<String,Object> e : values.entrySet())
-
annotations(BeanAnnotation.create(e.getKey()).wo(stringify(e.getValue())).build());
+ public BeanContextableBuilder
beanPropertiesWriteOnly(Map<String,Object> values) {
+ bcBuilder.beanPropertiesWriteOnly(values);
return this;
}
@@ -1245,8 +1275,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder beanPropertiesWriteOnly(String beanClassName,
String properties) {
- return
annotations(BeanAnnotation.create(beanClassName).wo(properties).build());
+ public BeanContextableBuilder beanPropertiesWriteOnly(String
beanClassName, String properties) {
+ bcBuilder.beanPropertiesWriteOnly(beanClassName, properties);
+ return this;
}
/**
@@ -1332,7 +1363,7 @@ public class BeanContextBuilder extends ContextBuilder {
* <li class='ja'>{@link
org.apache.juneau.annotation.Beanp#dictionary()}
* <li class='ja'>{@link
org.apache.juneau.annotation.BeanConfig#dictionary()}
* <li class='ja'>{@link
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
- * <li class='jm'>{@link
org.apache.juneau.BeanContextBuilder#dictionary_replace(Object...)}
+ * <li class='jm'>{@link
org.apache.juneau.BeanContextableBuilder#dictionary_replace(Object...)}
* <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
* </ul>
*
@@ -1341,8 +1372,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder dictionary(Object...values) {
- return prependTo(BEAN_beanDictionary, values);
+ public BeanContextableBuilder dictionary(Object...values) {
+ bcBuilder.dictionary(values);
+ return this;
}
/**
@@ -1356,7 +1388,7 @@ public class BeanContextBuilder extends ContextBuilder {
* <li class='ja'>{@link
org.apache.juneau.annotation.Beanp#dictionary()}
* <li class='ja'>{@link
org.apache.juneau.annotation.BeanConfig#dictionary()}
* <li class='ja'>{@link
org.apache.juneau.annotation.BeanConfig#dictionary_replace()}
- * <li class='jm'>{@link
org.apache.juneau.BeanContextBuilder#dictionary(Object...)}
+ * <li class='jm'>{@link
org.apache.juneau.BeanContextableBuilder#dictionary(Object...)}
* <li class='jf'>{@link BeanContext#BEAN_beanDictionary}
* </ul>
*
@@ -1365,8 +1397,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder dictionary_replace(Object...values) {
- return set(BEAN_beanDictionary, values);
+ public BeanContextableBuilder dictionary_replace(Object...values) {
+ bcBuilder.dictionary_replace(values);
+ return this;
}
/**
@@ -1413,8 +1446,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder dictionaryOn(Class<?> on, Class<?>...values) {
- return
annotations(BeanAnnotation.create(on).dictionary(values).build());
+ public BeanContextableBuilder dictionaryOn(Class<?> on,
Class<?>...values) {
+ bcBuilder.dictionaryOn(on, values);
+ return this;
}
/**
@@ -1461,8 +1495,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public <T> BeanContextBuilder example(Class<T> pojoClass, T o) {
- return
annotations(MarshalledAnnotation.create(pojoClass).example(json(o)).build());
+ public <T> BeanContextableBuilder example(Class<T> pojoClass, T o) {
+ bcBuilder.example(pojoClass, o);
+ return this;
}
/**
@@ -1510,8 +1545,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public <T> BeanContextBuilder example(Class<T> pojoClass, String json) {
- return
annotations(MarshalledAnnotation.create(pojoClass).example(json).build());
+ public <T> BeanContextableBuilder example(Class<T> pojoClass, String
json) {
+ bcBuilder.example(pojoClass, json);
+ return this;
}
/**
@@ -1560,8 +1596,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder findFluentSetters() {
- return set(BEAN_findFluentSetters);
+ public BeanContextableBuilder findFluentSetters() {
+ bcBuilder.findFluentSetters();
+ return this;
}
/**
@@ -1600,8 +1637,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder findFluentSetters(Class<?> on) {
- return
annotations(BeanAnnotation.create(on).findFluentSetters(true).build());
+ public BeanContextableBuilder findFluentSetters(Class<?> on) {
+ bcBuilder.findFluentSetters(on);
+ return this;
}
/**
@@ -1638,8 +1676,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder ignoreInvocationExceptionsOnGetters() {
- return set(BEAN_ignoreInvocationExceptionsOnGetters);
+ public BeanContextableBuilder ignoreInvocationExceptionsOnGetters() {
+ bcBuilder.ignoreInvocationExceptionsOnGetters();
+ return this;
}
/**
@@ -1676,8 +1715,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder ignoreInvocationExceptionsOnSetters() {
- return set(BEAN_ignoreInvocationExceptionsOnSetters);
+ public BeanContextableBuilder ignoreInvocationExceptionsOnSetters() {
+ bcBuilder.ignoreInvocationExceptionsOnSetters();
+ return this;
}
/**
@@ -1718,8 +1758,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder disableIgnoreMissingSetters() {
- return set(BEAN_disableIgnoreMissingSetters);
+ public BeanContextableBuilder disableIgnoreMissingSetters() {
+ bcBuilder.disableIgnoreMissingSetters();
+ return this;
}
/**
@@ -1757,8 +1798,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder disableIgnoreTransientFields() {
- return set(BEAN_disableIgnoreTransientFields);
+ public BeanContextableBuilder disableIgnoreTransientFields() {
+ bcBuilder.disableIgnoreTransientFields();
+ return this;
}
/**
@@ -1793,8 +1835,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder ignoreUnknownBeanProperties() {
- return set(BEAN_ignoreUnknownBeanProperties);
+ public BeanContextableBuilder ignoreUnknownBeanProperties() {
+ bcBuilder.ignoreUnknownBeanProperties();
+ return this;
}
/**
@@ -1829,8 +1872,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder disableIgnoreUnknownNullBeanProperties() {
- return set(BEAN_disableIgnoreUnknownNullBeanProperties);
+ public BeanContextableBuilder disableIgnoreUnknownNullBeanProperties() {
+ bcBuilder.disableIgnoreUnknownNullBeanProperties();
+ return this;
}
/**
@@ -1868,8 +1912,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder implClass(Class<?> interfaceClass, Class<?>
implClass) {
- return
annotations(MarshalledAnnotation.create(interfaceClass).implClass(implClass).build());
+ public BeanContextableBuilder implClass(Class<?> interfaceClass,
Class<?> implClass) {
+ bcBuilder.implClass(interfaceClass, implClass);
+ return this;
}
/**
@@ -1907,9 +1952,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder implClasses(Map<Class<?>,Class<?>> values) {
- for (Map.Entry<Class<?>,Class<?>> e : values.entrySet())
-
annotations(MarshalledAnnotation.create(e.getKey()).implClass(e.getValue()).build());
+ public BeanContextableBuilder implClasses(Map<Class<?>,Class<?>>
values) {
+ bcBuilder.implClasses(values);
return this;
}
@@ -1955,8 +1999,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder interfaceClass(Class<?> on, Class<?> value) {
- return
annotations(BeanAnnotation.create(on).interfaceClass(value).build());
+ public BeanContextableBuilder interfaceClass(Class<?> on, Class<?>
value) {
+ bcBuilder.interfaceClass(on, value);
+ return this;
}
/**
@@ -2000,9 +2045,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder interfaces(Class<?>...value) {
- for (Class<?> v : value)
-
annotations(BeanAnnotation.create(v).interfaceClass(v).build());
+ public BeanContextableBuilder interfaces(Class<?>...value) {
+ bcBuilder.interfaces(value);
return this;
}
@@ -2053,8 +2097,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder locale(Locale value) {
- return set(BEAN_locale, value);
+ public BeanContextableBuilder locale(Locale value) {
+ bcBuilder.locale(value);
+ return this;
}
/**
@@ -2104,8 +2149,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder mediaType(MediaType value) {
- return set(BEAN_mediaType, value);
+ public BeanContextableBuilder mediaType(MediaType value) {
+ bcBuilder.mediaType(value);
+ return this;
}
/**
@@ -2163,8 +2209,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder notBeanClasses(Object...values) {
- return addTo(BEAN_notBeanClasses, values);
+ public BeanContextableBuilder notBeanClasses(Object...values) {
+ bcBuilder.notBeanClasses(values);
+ return this;
}
/**
@@ -2183,8 +2230,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder notBeanClasses_replace(Object...values) {
- return set(BEAN_notBeanClasses, values);
+ public BeanContextableBuilder notBeanClasses_replace(Object...values) {
+ bcBuilder.notBeanClasses_replace(values);
+ return this;
}
/**
@@ -2228,20 +2276,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder notBeanPackages(Object...values) {
- for (Object o : values) {
- if (o instanceof Package)
- addTo(BEAN_notBeanPackages, ((Package)
o).getName());
- else if (o instanceof String)
- addTo(BEAN_notBeanPackages, o.toString());
- else if (o instanceof Collection) {
- for (Object o2 : (Collection<?>)o)
- notBeanPackages(o2);
- } else if (o.getClass().isArray()) {
- for (int i = 0; i < Array.getLength(o); i++)
- notBeanPackages(Array.get(o, i));
- }
- }
+ public BeanContextableBuilder notBeanPackages(Object...values) {
+ bcBuilder.notBeanPackages(values);
return this;
}
@@ -2287,8 +2323,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder propertyNamer(Class<? extends PropertyNamer>
value) {
- return set(BEAN_propertyNamer, value);
+ public BeanContextableBuilder propertyNamer(Class<? extends
PropertyNamer> value) {
+ bcBuilder.propertyNamer(value);
+ return this;
}
/**
@@ -2327,8 +2364,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder propertyNamer(Class<?> on, Class<? extends
PropertyNamer> value) {
- return
annotations(BeanAnnotation.create(on).propertyNamer(value).build());
+ public BeanContextableBuilder propertyNamer(Class<?> on, Class<?
extends PropertyNamer> value) {
+ bcBuilder.propertyNamer(on, value);
+ return this;
}
/**
@@ -2375,8 +2413,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder sortProperties() {
- return set(BEAN_sortProperties);
+ public BeanContextableBuilder sortProperties() {
+ bcBuilder.sortProperties();
+ return this;
}
/**
@@ -2413,9 +2452,8 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder sortProperties(Class<?>...on) {
- for (Class<?> c : on)
-
annotations(BeanAnnotation.create(c).sort(true).build());
+ public BeanContextableBuilder sortProperties(Class<?>...on) {
+ bcBuilder.sortProperties(on);
return this;
}
@@ -2460,8 +2498,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder stopClass(Class<?> on, Class<?> value) {
- return
annotations(BeanAnnotation.create(on).stopClass(value).build());
+ public BeanContextableBuilder stopClass(Class<?> on, Class<?> value) {
+ bcBuilder.stopClass(on, value);
+ return this;
}
/**
@@ -2550,8 +2589,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder swaps(Object...values) {
- return appendTo(BEAN_swaps, values);
+ public BeanContextableBuilder swaps(Object...values) {
+ bcBuilder.swaps(values);
+ return this;
}
/**
@@ -2600,8 +2640,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder timeZone(TimeZone value) {
- return set(BEAN_timeZone, value);
+ public BeanContextableBuilder timeZone(TimeZone value) {
+ bcBuilder.timeZone(value);
+ return this;
}
/**
@@ -2646,8 +2687,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder typeName(Class<?> on, String value) {
- return
annotations(BeanAnnotation.create(on).typeName(value).build());
+ public BeanContextableBuilder typeName(Class<?> on, String value) {
+ bcBuilder.typeName(on, value);
+ return this;
}
/**
@@ -2703,8 +2745,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder typePropertyName(String value) {
- return set(BEAN_typePropertyName, value);
+ public BeanContextableBuilder typePropertyName(String value) {
+ bcBuilder.typePropertyName(value);
+ return this;
}
/**
@@ -2749,8 +2792,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder typePropertyName(Class<?> on, String value) {
- return
annotations(BeanAnnotation.create(on).typePropertyName(value).build());
+ public BeanContextableBuilder typePropertyName(Class<?> on, String
value) {
+ bcBuilder.typePropertyName(on, value);
+ return this;
}
/**
@@ -2794,8 +2838,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder useEnumNames() {
- return set(BEAN_useEnumNames);
+ public BeanContextableBuilder useEnumNames() {
+ bcBuilder.useEnumNames();
+ return this;
}
/**
@@ -2814,8 +2859,9 @@ public class BeanContextBuilder extends ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder disableInterfaceProxies() {
- return set(BEAN_disableInterfaceProxies);
+ public BeanContextableBuilder disableInterfaceProxies() {
+ bcBuilder.disableInterfaceProxies();
+ return this;
}
/**
@@ -2841,113 +2887,117 @@ public class BeanContextBuilder extends
ContextBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public BeanContextBuilder useJavaBeanIntrospector() {
- return set(BEAN_useJavaBeanIntrospector);
+ public BeanContextableBuilder useJavaBeanIntrospector() {
+ bcBuilder.useJavaBeanIntrospector();
+ return this;
}
- // <FluentSetters>
+ @Override
+ public BeanContextableBuilder applyAnnotations(AnnotationList al,
VarResolverSession r) {
+ bcBuilder.applyAnnotations(al.filter(x ->
x.isType(BeanConfig.class)), r);
+ super.applyAnnotations(al.filter(x -> !
x.isType(BeanConfig.class)), r);
+ return this;
+ }
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder add(Map<String,Object> properties) {
+ public BeanContextableBuilder add(Map<String,Object> properties) {
+ bcBuilder.add(properties);
super.add(properties);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder addTo(String name, Object value) {
+ public BeanContextableBuilder addTo(String name, Object value) {
+ bcBuilder.addTo(name, value);
super.addTo(name, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder annotations(Annotation...value) {
+ public BeanContextableBuilder annotations(Annotation...value) {
+ bcBuilder.annotations(value);
super.annotations(value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder appendTo(String name, Object value) {
+ public BeanContextableBuilder appendTo(String name, Object value) {
+ bcBuilder.appendTo(name, value);
super.appendTo(name, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder apply(ContextProperties copyFrom) {
+ public BeanContextableBuilder apply(ContextProperties copyFrom) {
+ bcBuilder.apply(copyFrom);
super.apply(copyFrom);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder
applyAnnotations(java.lang.Class<?>...fromClasses) {
- super.applyAnnotations(fromClasses);
- return this;
- }
-
- @Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder applyAnnotations(Method...fromMethods) {
- super.applyAnnotations(fromMethods);
- return this;
- }
-
- @Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder applyAnnotations(AnnotationList al,
VarResolverSession r) {
- super.applyAnnotations(al, r);
- return this;
- }
-
- @Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder debug() {
+ public BeanContextableBuilder debug() {
+ bcBuilder.debug();
super.debug();
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder prependTo(String name, Object value) {
+ public BeanContextableBuilder prependTo(String name, Object value) {
+ bcBuilder.prependTo(name, value);
super.prependTo(name, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder putAllTo(String name, Object value) {
+ public BeanContextableBuilder putAllTo(String name, Object value) {
+ bcBuilder.putAllTo(name, value);
super.putAllTo(name, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder putTo(String name, String key, Object value) {
+ public BeanContextableBuilder putTo(String name, String key, Object
value) {
+ bcBuilder.putTo(name, key, value);
super.putTo(name, key, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder removeFrom(String name, Object value) {
+ public BeanContextableBuilder removeFrom(String name, Object value) {
+ bcBuilder.removeFrom(name, value);
super.removeFrom(name, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder set(String name) {
+ public BeanContextableBuilder set(String name) {
+ bcBuilder.set(name);
super.set(name);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder set(Map<String,Object> properties) {
+ public BeanContextableBuilder set(Map<String,Object> properties) {
+ bcBuilder.set(properties);
super.set(properties);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder set(String name, Object value) {
+ public BeanContextableBuilder set(String name, Object value) {
+ bcBuilder.set(name, value);
super.set(name, value);
return this;
}
@Override /* GENERATED - ContextBuilder */
- public BeanContextBuilder unset(String name) {
+ public BeanContextableBuilder unset(String name) {
+ bcBuilder.unset(name);
super.unset(name);
return this;
}
+ // <FluentSetters>
+
// </FluentSetters>
}
\ No newline at end of file
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
index f73c49b..e561ba4 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextBuilder.java
@@ -87,6 +87,17 @@ public abstract class ContextBuilder {
}
/**
+ * Copy constructor.
+ *
+ * @param copyFrom The builder to copy from.
+ */
+ public ContextBuilder(ContextBuilder copyFrom) {
+ this.cpb = new ContextPropertiesBuilder(copyFrom.cpb);
+ this.debug = copyFrom.debug;
+ this.contextClass = copyFrom.contextClass;
+ }
+
+ /**
* Build the object.
*
* @return
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
index b0ae717..e796ef8 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextPropertiesBuilder.java
@@ -57,6 +57,11 @@ public class ContextPropertiesBuilder {
apply(cp);
}
+ /** Copy Constructor */
+ ContextPropertiesBuilder(ContextPropertiesBuilder cp) {
+ apply(cp.build());
+ }
+
/**
* Creates a new {@link ContextProperties} based on the values in this
builder.
*