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 0b7ea71 Context API refactoring.
0b7ea71 is described below
commit 0b7ea716ef5f21f33a751fe7d24b6e674b0c0e52
Author: JamesBognar <[email protected]>
AuthorDate: Tue Sep 28 10:51:38 2021 -0400
Context API refactoring.
---
.../java/org/apache/juneau/marshall/Marshall.java | 2 +-
.../juneau/serializer/OutputStreamSerializer.java | 41 ++--------------------
.../serializer/OutputStreamSerializerBuilder.java | 14 ++++----
.../serializer/OutputStreamSerializerSession.java | 2 +-
.../org/apache/juneau/serializer/Serializer.java | 2 +-
.../juneau/serializer/SerializerSession.java | 2 +-
.../serializer/annotation/SerializerConfig.java | 4 +--
.../annotation/SerializerConfigAnnotation.java | 23 +++++++++++-
8 files changed, 38 insertions(+), 52 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
index 2af5ba9..5339d1f 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/marshall/Marshall.java
@@ -133,7 +133,7 @@ public abstract class Marshall {
* <p>
* For writer-based serializers, this is identical to calling {@link
Serializer#serialize(Object)}.
* <br>For stream-based serializers, this converts the returned byte
array to a string based on
- * the {@link OutputStreamSerializer#OSSERIALIZER_binaryFormat} setting.
+ * the {@link OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)}
setting.
*
* @param o The object to serialize.
* @return The output serialized to a string.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
index 8f5dea7..7048e3b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
@@ -24,44 +24,10 @@ import org.apache.juneau.collections.*;
public abstract class OutputStreamSerializer extends Serializer {
//-------------------------------------------------------------------------------------------------------------------
- // Configurable properties
-
//-------------------------------------------------------------------------------------------------------------------
-
- static final String PREFIX = "OutputStreamSerializer";
-
- /**
- * Configuration property: Binary output format.
- *
- * <p>
- * When using the {@link #serializeToString(Object)} method on
stream-based serializers, this defines the format to use
- * when converting the resulting byte array to a string.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.serializer.OutputStreamSerializer#OSSERIALIZER_binaryFormat
OSSERIALIZER_binaryFormat}
- * <li><b>Name:</b>
<js>"OutputStreamSerializer.binaryFormat.s"</js>
- * <li><b>Data type:</b> {@link org.apache.juneau.BinaryFormat}
- * <li><b>System property:</b>
<c>OutputStreamSerializer.binaryFormat</c>
- * <li><b>Environment variable:</b>
<c>OUTPUTSTREAMSERIALIZER_BINARYFORMAT</c>
- * <li><b>Default:</b> {@link org.apache.juneau.BinaryFormat#HEX}
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.serializer.annotation.SerializerConfig#binaryFormat()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.serializer.OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)}
- * </ul>
- * </ul>
- */
- public static final String OSSERIALIZER_binaryFormat = PREFIX +
".binaryFormat.s";
-
-
//-------------------------------------------------------------------------------------------------------------------
// Instance
//-------------------------------------------------------------------------------------------------------------------
- private final BinaryFormat binaryFormat;
+ final BinaryFormat binaryFormat;
/**
* Constructor.
@@ -72,8 +38,7 @@ public abstract class OutputStreamSerializer extends
Serializer {
protected OutputStreamSerializer(OutputStreamSerializerBuilder builder)
{
super(builder);
- ContextProperties cp = getContextProperties();
- binaryFormat = cp.get(OSSERIALIZER_binaryFormat,
BinaryFormat.class).orElse(BinaryFormat.HEX);
+ binaryFormat = builder.binaryFormat;
}
@Override
@@ -120,7 +85,7 @@ public abstract class OutputStreamSerializer extends
Serializer {
/**
* Binary output format.
*
- * @see #OSSERIALIZER_binaryFormat
+ * @see OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)
* @return
* The format to use for the {@link #serializeToString(Object)}
method on stream-based serializers when converting byte arrays to strings.
*/
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
index e3072d9..d83c979 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerBuilder.java
@@ -12,8 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.serializer;
-import static org.apache.juneau.serializer.OutputStreamSerializer.*;
-
import java.lang.annotation.*;
import java.lang.reflect.*;
import java.util.*;
@@ -29,11 +27,14 @@ import org.apache.juneau.internal.*;
@FluentSetters
public abstract class OutputStreamSerializerBuilder extends SerializerBuilder {
+ BinaryFormat binaryFormat;
+
/**
* Constructor, default settings.
*/
protected OutputStreamSerializerBuilder() {
super();
+ binaryFormat = env("OutputStreamSerializer.binaryFormat",
BinaryFormat.HEX);
}
/**
@@ -43,6 +44,7 @@ public abstract class OutputStreamSerializerBuilder extends
SerializerBuilder {
*/
protected OutputStreamSerializerBuilder(OutputStreamSerializer
copyFrom) {
super(copyFrom);
+ binaryFormat = copyFrom.binaryFormat;
}
/**
@@ -52,6 +54,7 @@ public abstract class OutputStreamSerializerBuilder extends
SerializerBuilder {
*/
protected OutputStreamSerializerBuilder(OutputStreamSerializerBuilder
copyFrom) {
super(copyFrom);
+ binaryFormat = copyFrom.binaryFormat;
}
@Override /* ContextBuilder */
@@ -88,10 +91,6 @@ public abstract class OutputStreamSerializerBuilder extends
SerializerBuilder {
* String <jv>msgPack</jv> =
<jv>serializer</jv>.serializeToString(<jk>new</jk> MyBean());
* </p>
*
- * <ul class='seealso'>
- * <li class='jf'>{@link
OutputStreamSerializer#OSSERIALIZER_binaryFormat}
- * </ul>
- *
* @param value
* The new value for this property.
* <br>The default is {@link BinaryFormat#HEX}.
@@ -99,7 +98,8 @@ public abstract class OutputStreamSerializerBuilder extends
SerializerBuilder {
*/
@FluentSetter
public OutputStreamSerializerBuilder binaryFormat(BinaryFormat value) {
- return set(OSSERIALIZER_binaryFormat, value);
+ binaryFormat = value;
+ return this;
}
// <FluentSetters>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerSession.java
index a2b6e12..a953097 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializerSession.java
@@ -97,7 +97,7 @@ public abstract class OutputStreamSerializerSession extends
SerializerSession {
/**
* Configuration property: Binary output format.
*
- * @see OutputStreamSerializer#OSSERIALIZER_binaryFormat
+ * @see OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)
* @return
* The format to use for the {@link #serializeToString(Object)}
method on stream-based serializers when converting byte arrays to strings.
*/
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
index 9a8d268..3e1bef2 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
@@ -550,7 +550,7 @@ public abstract class Serializer extends
BeanTraverseContext {
* <p>
* For writer-based serializers, this is identical to calling {@link
#serialize(Object)}.
* <br>For stream-based serializers, this converts the returned byte
array to a string based on
- * the {@link OutputStreamSerializer#OSSERIALIZER_binaryFormat} setting.
+ * the {@link OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)}
setting.
*
* @param o The object to serialize.
* @return The output serialized to a string.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 5baf6f6..7e469db 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -167,7 +167,7 @@ public abstract class SerializerSession extends
BeanTraverseSession {
* @return
* The serialized object.
* <br>Character-based serializers will return a <c>String</c>
- * <br>Stream-based serializers will return a
<code><jk>byte</jk>[]</code> converted to a string based on the {@link
OutputStreamSerializer#OSSERIALIZER_binaryFormat} setting.
+ * <br>Stream-based serializers will return a
<code><jk>byte</jk>[]</code> converted to a string based on the {@link
OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)} setting.
* @throws SerializeException If a problem occurred trying to convert
the output.
*/
public abstract String serializeToString(Object o) throws
SerializeException;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
index 9ed376e..9c43828 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfig.java
@@ -33,7 +33,7 @@ import org.apache.juneau.serializer.*;
@Target({TYPE,METHOD})
@Retention(RUNTIME)
@Inherited
-@ContextApply({SerializerConfigAnnotation.Apply.class,SerializerConfigAnnotation.WriterSerializerApply.class})
+@ContextApply({SerializerConfigAnnotation.Apply.class,SerializerConfigAnnotation.OutputStreamSerializerApply.class,SerializerConfigAnnotation.WriterSerializerApply.class})
public @interface SerializerConfig {
/**
@@ -68,7 +68,7 @@ public @interface SerializerConfig {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
OutputStreamSerializer#OSSERIALIZER_binaryFormat}
+ * <li class='jm'>{@link
OutputStreamSerializerBuilder#binaryFormat(BinaryFormat)}
* </ul>
*/
String binaryFormat() default "";
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
index db02a6d..3ad79a4 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/annotation/SerializerConfigAnnotation.java
@@ -55,7 +55,6 @@ public class SerializerConfigAnnotation {
string(a.uriContext()).ifPresent(x ->
b.set(SERIALIZER_uriContext, x));
string(a.uriRelativity()).ifPresent(x ->
b.set(SERIALIZER_uriRelativity, x));
string(a.uriResolution()).ifPresent(x ->
b.set(SERIALIZER_uriResolution, x));
- string(a.binaryFormat()).ifPresent(x ->
b.set(OSSERIALIZER_binaryFormat, x));
bool(a.detectRecursions()).ifPresent(x ->
b.set(BEANTRAVERSE_detectRecursions, x));
bool(a.ignoreRecursions()).ifPresent(x ->
b.set(BEANTRAVERSE_ignoreRecursions, x));
integer(a.initialDepth(), "initialDepth").ifPresent(x
-> b.set(BEANTRAVERSE_initialDepth, x));
@@ -64,6 +63,28 @@ public class SerializerConfigAnnotation {
}
/**
+ * Applies {@link SerializerConfig} annotations to a {@link
OutputStreamSerializerBuilder}.
+ */
+ public static class OutputStreamSerializerApply extends
AnnotationApplier<SerializerConfig,OutputStreamSerializerBuilder> {
+
+ /**
+ * Constructor.
+ *
+ * @param vr The resolver for resolving values in annotations.
+ */
+ public OutputStreamSerializerApply(VarResolverSession vr) {
+ super(SerializerConfig.class,
OutputStreamSerializerBuilder.class, vr);
+ }
+
+ @Override
+ public void apply(AnnotationInfo<SerializerConfig> ai,
OutputStreamSerializerBuilder b) {
+ SerializerConfig a = ai.getAnnotation();
+
+
string(a.binaryFormat()).map(BinaryFormat::valueOf).ifPresent(x ->
b.binaryFormat(x));
+ }
+ }
+
+ /**
* Applies {@link SerializerConfig} annotations to a {@link
WriterSerializerBuilder}.
*/
public static class WriterSerializerApply extends
AnnotationApplier<SerializerConfig,WriterSerializerBuilder> {