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 5594708 Context API refactoring.
5594708 is described below
commit 5594708fdd4e5d168d2dc2ee51f051846f462231
Author: JamesBognar <[email protected]>
AuthorDate: Sun Sep 26 20:01:28 2021 -0400
Context API refactoring.
---
.../org/apache/juneau/json/SimpleJsonParser.java | 6 ++-
.../apache/juneau/json/SimpleJsonSerializer.java | 8 +++-
.../org/apache/juneau/msgpack/MsgPackParser.java | 10 +---
.../apache/juneau/msgpack/MsgPackSerializer.java | 54 ++++------------------
.../juneau/msgpack/MsgPackSerializerBuilder.java | 33 +++++++++++++
.../juneau/msgpack/annotation/MsgPackConfig.java | 4 +-
.../annotation/MsgPackConfigAnnotation.java | 15 +++---
7 files changed, 63 insertions(+), 67 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
index 82219b4..70f396d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonParser.java
@@ -28,12 +28,16 @@ import org.apache.juneau.collections.*;
public class SimpleJsonParser extends JsonParser {
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default parser, Accept=application/json+simple. */
public static final SimpleJsonParser DEFAULT = new
SimpleJsonParser(create());
+
//-------------------------------------------------------------------------------------------------------------------
+ // Instance
+
//-------------------------------------------------------------------------------------------------------------------
+
/**
* Constructor.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
index 8df84cf..afda1ad 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/SimpleJsonSerializer.java
@@ -36,7 +36,7 @@ package org.apache.juneau.json;
public class SimpleJsonSerializer extends JsonSerializer {
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, single quotes, {@link
JsonSerializerBuilder#simpleMode() simple mode}. */
@@ -46,7 +46,7 @@ public class SimpleJsonSerializer extends JsonSerializer {
public static final SimpleJsonSerializer DEFAULT_READABLE = new
Readable(create());
//-------------------------------------------------------------------------------------------------------------------
- // Predefined subclasses
+ // Static subclasses
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, single quotes, simple mode, with whitespace. */
@@ -62,6 +62,10 @@ public class SimpleJsonSerializer extends JsonSerializer {
}
}
+
//-------------------------------------------------------------------------------------------------------------------
+ // Instance
+
//-------------------------------------------------------------------------------------------------------------------
+
/**
* Constructor.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
index bc76282..8c2c6c5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
@@ -31,13 +31,7 @@ import org.apache.juneau.parser.*;
public class MsgPackParser extends InputStreamParser implements
MsgPackMetaProvider {
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
-
//-------------------------------------------------------------------------------------------------------------------
-
- static final String PREFIX = "MsgPackParser";
-
-
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default parser, all default settings.*/
@@ -50,7 +44,7 @@ public class MsgPackParser extends InputStreamParser
implements MsgPackMetaProvi
public static final MsgPackParser DEFAULT_BASE64 = new Base64(create());
//-------------------------------------------------------------------------------------------------------------------
- // Predefined subclasses
+ // Static subclasses
//-------------------------------------------------------------------------------------------------------------------
/** Default parser, string input encoded as spaced-hex. */
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index 36c4006..7ef8f8a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -34,45 +34,7 @@ import org.apache.juneau.serializer.*;
public class MsgPackSerializer extends OutputStreamSerializer implements
MsgPackMetaProvider {
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
-
//-------------------------------------------------------------------------------------------------------------------
-
- static final String PREFIX = "MsgPackSerializer";
-
- /**
- * Configuration property: Add <js>"_type"</js> properties when needed.
- *
- * <p>
- * If <jk>true</jk>, then <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
- * through reflection.
- * <p>
- * When present, this value overrides the {@link
#SERIALIZER_addBeanTypes} setting and is
- * provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.msgpack.MsgPackSerializer#MSGPACK_addBeanTypes
MSGPACK_addBeanTypes}
- * <li><b>Name:</b> <js>"MsgPackSerializer.addBeanTypes.b"</js>
- * <li><b>Data type:</b> <jk>boolean</jk>
- * <li><b>System property:</b>
<c>MsgPackSerializer.addBeanTypes</c>
- * <li><b>Environment variable:</b>
<c>MSGPACKSERIALIZER_ADDBEANTYPES</c>
- * <li><b>Default:</b> <jk>false</jk>
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.msgpack.annotation.MsgPackConfig#addBeanTypes()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.msgpack.MsgPackSerializerBuilder#addBeanTypes()}
- * </ul>
- * </ul>
- */
- public static final String MSGPACK_addBeanTypes = PREFIX +
".addBeanTypes.b";
-
-
-
//-------------------------------------------------------------------------------------------------------------------
- // Predefined instances
+ // Static
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, all default settings.*/
@@ -85,7 +47,7 @@ public class MsgPackSerializer extends OutputStreamSerializer
implements MsgPack
public static final MsgPackSerializer DEFAULT_BASE64 = new
Base64(create());
//-------------------------------------------------------------------------------------------------------------------
- // Predefined subclasses
+ // Static subclasses
//-------------------------------------------------------------------------------------------------------------------
/** Default serializer, spaced-hex string output. */
@@ -118,8 +80,9 @@ public class MsgPackSerializer extends
OutputStreamSerializer implements MsgPack
// Instance
//-------------------------------------------------------------------------------------------------------------------
- private final boolean
- addBeanTypes;
+ final boolean
+ addBeanTypesMsgPack;
+
private final Map<ClassMeta<?>,MsgPackClassMeta> msgPackClassMetas =
new ConcurrentHashMap<>();
private final Map<BeanPropertyMeta,MsgPackBeanPropertyMeta>
msgPackBeanPropertyMetas = new ConcurrentHashMap<>();
@@ -130,8 +93,7 @@ public class MsgPackSerializer extends
OutputStreamSerializer implements MsgPack
*/
protected MsgPackSerializer(MsgPackSerializerBuilder builder) {
super(builder);
- ContextProperties cp = getContextProperties();
- this.addBeanTypes = cp.getFirstBoolean(MSGPACK_addBeanTypes,
SERIALIZER_addBeanTypes).orElse(false);
+ this.addBeanTypesMsgPack = builder.addBeanTypesMsgPack;
}
@Override /* Context */
@@ -197,7 +159,7 @@ public class MsgPackSerializer extends
OutputStreamSerializer implements MsgPack
@Override
protected final boolean isAddBeanTypes() {
- return addBeanTypes;
+ return addBeanTypesMsgPack || super.isAddBeanTypes();
}
//-----------------------------------------------------------------------------------------------------------------
@@ -212,7 +174,7 @@ public class MsgPackSerializer extends
OutputStreamSerializer implements MsgPack
OMap
.create()
.filtered()
- .a("addBeanTypes", addBeanTypes)
+ .a("addBeanTypesMsgPack",
addBeanTypesMsgPack)
);
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
index 0afed03..5c95e54 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
@@ -27,6 +27,8 @@ import org.apache.juneau.serializer.*;
@FluentSetters
public class MsgPackSerializerBuilder extends OutputStreamSerializerBuilder {
+ boolean addBeanTypesMsgPack;
+
/**
* Constructor, default settings.
*/
@@ -34,6 +36,7 @@ public class MsgPackSerializerBuilder extends
OutputStreamSerializerBuilder {
super();
produces("octal/msgpack");
type(MsgPackSerializer.class);
+ addBeanTypesMsgPack =
env("MsgPackSerializer.addBeanTypesMsgPack", false);
}
/**
@@ -68,6 +71,36 @@ public class MsgPackSerializerBuilder extends
OutputStreamSerializerBuilder {
// Properties
//-----------------------------------------------------------------------------------------------------------------
+ /**
+ * Add <js>"_type"</js> properties when needed.
+ *
+ * <p>
+ * If <jk>true</jk>, then <js>"_type"</js> properties will be added to
beans if their type cannot be inferred
+ * through reflection.
+ *
+ * <p>
+ * When present, this value overrides the {@link
SerializerBuilder#addBeanTypes()} setting and is
+ * provided to customize the behavior of specific serializers in a
{@link SerializerGroup}.
+ *
+ * @return This object.
+ */
+ @FluentSetter
+ public MsgPackSerializerBuilder addBeanTypesMsgPack() {
+ return addBeanTypesMsgPack(true);
+ }
+
+ /**
+ * Same as {@link #addBeanTypesMsgPack()} but allows you to explicitly
specify the value.
+ *
+ * @param value The value for this setting.
+ * @return This object.
+ */
+ @FluentSetter
+ public MsgPackSerializerBuilder addBeanTypesMsgPack(boolean value) {
+ addBeanTypesMsgPack = value;
+ return this;
+ }
+
// <FluentSetters>
@Override
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
index a92f3ff..30be756 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfig.java
@@ -31,7 +31,7 @@ import org.apache.juneau.serializer.*;
@Target({TYPE,METHOD})
@Retention(RUNTIME)
@Inherited
-@ContextApply(MsgPackConfigAnnotation.Apply.class)
+@ContextApply(MsgPackConfigAnnotation.ApplySerializer.class)
public @interface MsgPackConfig {
/**
@@ -73,7 +73,7 @@ public @interface MsgPackConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link MsgPackSerializer#MSGPACK_addBeanTypes}
+ * <li class='jf'>{@link
MsgPackSerializerBuilder#addBeanTypesMsgPack()}
* </ul>
*/
String addBeanTypes() default "";
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
index db1de73..5b60158 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/annotation/MsgPackConfigAnnotation.java
@@ -12,9 +12,8 @@
//
***************************************************************************************************************************
package org.apache.juneau.msgpack.annotation;
-import static org.apache.juneau.msgpack.MsgPackSerializer.*;
-
import org.apache.juneau.*;
+import org.apache.juneau.msgpack.*;
import org.apache.juneau.reflect.*;
import org.apache.juneau.svl.*;
@@ -24,24 +23,24 @@ import org.apache.juneau.svl.*;
public class MsgPackConfigAnnotation {
/**
- * Applies {@link MsgPackConfig} annotations to a {@link
ContextPropertiesBuilder}.
+ * Applies {@link MsgPackConfig} annotations to a {@link
MsgPackSerializerBuilder}.
*/
- public static class Apply extends
AnnotationApplier<MsgPackConfig,ContextPropertiesBuilder> {
+ public static class ApplySerializer extends
AnnotationApplier<MsgPackConfig,MsgPackSerializerBuilder> {
/**
* Constructor.
*
* @param vr The resolver for resolving values in annotations.
*/
- public Apply(VarResolverSession vr) {
- super(MsgPackConfig.class,
ContextPropertiesBuilder.class, vr);
+ public ApplySerializer(VarResolverSession vr) {
+ super(MsgPackConfig.class,
MsgPackSerializerBuilder.class, vr);
}
@Override
- public void apply(AnnotationInfo<MsgPackConfig> ai,
ContextPropertiesBuilder b) {
+ public void apply(AnnotationInfo<MsgPackConfig> ai,
MsgPackSerializerBuilder b) {
MsgPackConfig a = ai.getAnnotation();
- bool(a.addBeanTypes()).ifPresent(x ->
b.set(MSGPACK_addBeanTypes, x));
+ bool(a.addBeanTypes()).ifPresent(x ->
b.addBeanTypesMsgPack(x));
}
}
}
\ No newline at end of file