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> {

Reply via email to