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 168fae0 Context API refactoring.
168fae0 is described below
commit 168fae0f2e032754b4edc7813f8e73ae2bb75314
Author: JamesBognar <[email protected]>
AuthorDate: Sun Aug 29 19:10:22 2021 -0400
Context API refactoring.
---
.../main/java/org/apache/juneau/utils/BeanRef.java | 78 ++++++++++++++++++++++
.../java/org/apache/juneau/rest/RestContext.java | 20 +++---
.../org/apache/juneau/rest/RestContextBuilder.java | 43 +++++-------
3 files changed, 105 insertions(+), 36 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanRef.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanRef.java
new file mode 100644
index 0000000..9f9c875
--- /dev/null
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/BeanRef.java
@@ -0,0 +1,78 @@
+//
***************************************************************************************************************************
+// * 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.utils;
+
+import static java.util.Optional.*;
+
+import java.util.*;
+
+/**
+ * Represents a holder for a bean or bean type.
+ *
+ * @param <T> The bean type.
+ */
+public class BeanRef<T> {
+
+ private T value;
+ private Class<? extends T> type;
+
+ /**
+ * Creator.
+ *
+ * @param type The bean type.
+ * @return A new object.
+ */
+ public static <T> BeanRef<T> of(Class<T> type) {
+ return new BeanRef<>();
+ }
+
+ /**
+ * Sets the bean on this reference.
+ *
+ * @param value The bean.
+ * @return This object (for method chaining).
+ */
+ public BeanRef<T> value(T value) {
+ this.value = value;
+ return this;
+ }
+
+ /**
+ * Sets the bean type on this reference.
+ *
+ * @param value The bean type.
+ * @return This object (for method chaining).
+ */
+ public BeanRef<T> type(Class<? extends T> value) {
+ this.type = value;
+ return this;
+ }
+
+ /**
+ * Returns the bean on this reference if the reference contains an
instantiated bean.
+ *
+ * @return The bean on this reference if the reference contains an
instantiated bean.
+ */
+ public Optional<T> value() {
+ return ofNullable(value);
+ }
+
+ /**
+ * Returns the bean type on this reference if the reference contains a
bean type.
+ *
+ * @return The bean type on this reference if the reference contains a
bean type.
+ */
+ public Optional<Class<? extends T>> type() {
+ return ofNullable(type);
+ }
+}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 6d4b785..9065918 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1362,8 +1362,7 @@ public class RestContext extends BeanContext {
final Charset defaultCharset;
final long maxInput;
- final RestLogger callLoggerDefault;
- final Class<? extends RestLogger> callLoggerDefaultClass;
+ final BeanRef<RestLogger> callLoggerDefault;
final Enablement debugDefault;
@@ -1473,7 +1472,6 @@ public class RestContext extends BeanContext {
responseProcessors = createResponseProcessors(r,
builder, bf).toArray();
callLoggerDefault = builder.callLoggerDefault;
- callLoggerDefaultClass = builder.callLoggerDefaultClass;
debugDefault = builder.debugDefault;
callLogger = createCallLogger(r, builder, bf, l, ts);
@@ -2018,13 +2016,13 @@ public class RestContext extends BeanContext {
x = (RestLogger)resource;
if (x == null)
- x = builder.callLogger;
+ x = builder.callLogger.value().orElse(null);
if (x == null)
x = beanStore.getBean(RestLogger.class).orElse(null);
if (x == null)
- x = builder.callLoggerDefault;
+ x = builder.callLoggerDefault.value().orElse(null);
if (x == null)
x = createCallLoggerBuilder(resource, builder,
beanStore, logger, thrownStore).build();
@@ -2064,10 +2062,10 @@ public class RestContext extends BeanContext {
*/
protected RestLoggerBuilder createCallLoggerBuilder(Object resource,
RestContextBuilder builder, BeanStore beanStore, Logger logger, ThrownStore
thrownStore) throws Exception {
- Class<? extends RestLogger> c = builder.callLoggerClass;
+ Class<? extends RestLogger> c =
builder.callLogger.type().orElse(null);
if (c == null)
- c = builder.callLoggerDefaultClass;
+ c = builder.callLoggerDefault.type().orElse(null);
RestLoggerBuilder x = RestLogger
.create()
@@ -2593,7 +2591,7 @@ public class RestContext extends BeanContext {
*/
protected SwaggerProvider createSwaggerProvider(Object resource,
RestContextBuilder builder, BeanStore beanStore, FileFinder fileFinder,
Messages messages, VarResolver varResolver) throws Exception {
- SwaggerProvider x = builder.swaggerProvider;
+ SwaggerProvider x =
builder.swaggerProvider.value().orElse(null);
if (resource instanceof SwaggerProvider)
x = (SwaggerProvider)resource;
@@ -2637,7 +2635,7 @@ public class RestContext extends BeanContext {
*/
protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object
resource, RestContextBuilder builder, BeanStore beanStore, FileFinder
fileFinder, Messages messages, VarResolver varResolver) throws Exception {
- Class<? extends SwaggerProvider> c =
builder.swaggerProviderClass;
+ Class<? extends SwaggerProvider> c =
builder.swaggerProvider.type().orElse(null);
SwaggerProviderBuilder x = SwaggerProvider
.create()
@@ -3042,7 +3040,7 @@ public class RestContext extends BeanContext {
x = (DebugEnablement)resource;
if (x == null)
- x = builder.debugEnablement;
+ x = builder.debugEnablement.value().orElse(null);
if (x == null)
x =
beanStore.getBean(DebugEnablement.class).orElse(null);
@@ -3077,7 +3075,7 @@ public class RestContext extends BeanContext {
*/
protected DebugEnablementBuilder createDebugEnablementBuilder(Object
resource, RestContextBuilder builder, BeanStore beanStore) throws Exception {
- Class<? extends DebugEnablement> c =
builder.debugEnablementClass;
+ Class<? extends DebugEnablement> c =
builder.debugEnablement.type().orElse(null);
DebugEnablementBuilder x = DebugEnablement
.create()
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index 570f35e..40c6dea 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -117,34 +117,28 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
allowedMethodHeaders = env("RestContext.allowedMethodHeaders",
""),
allowedMethodParams = env("RestContext.allowedMethodParams",
"HEAD,OPTIONS"),
clientVersionHeader = env("RestContext.clientVersionHeader",
"Client-Version"),
+ debugOn = env("RestContext.debugOn", null),
+ path = null,
uriAuthority = env("RestContext.uriAuthority", (String)null),
- uriContext = env("RestContext.uriContext", (String)null),
- path;
+ uriContext = env("RestContext.uriContext", (String)null);
UriRelativity uriRelativity = env("RestContext.uriRelativity",
UriRelativity.RESOURCE);
UriResolution uriResolution = env("RestContext.uriResolution",
UriResolution.ROOT_RELATIVE);
Charset defaultCharset = env("RestContext.defaultCharset",
IOUtils.UTF8);
long maxInput = parseLongWithSuffix(env("RestContext.maxInput",
"100M"));
List<MediaType> consumes, produces;
Boolean disableBodyParam = env("RestContext.disableBodyParam", false);
+
Class<? extends RestChildren> childrenClass = RestChildren.class;
Class<? extends RestOpContext> opContextClass = RestOpContext.class;
Class<? extends RestOperations> operationsClass = RestOperations.class;
- Class<? extends SwaggerProvider> swaggerProviderClass;
- SwaggerProvider swaggerProvider;
-
- RestLogger callLoggerDefault;
- Class<? extends RestLogger> callLoggerDefaultClass;
- RestLogger callLogger;
- Class<? extends RestLogger> callLoggerClass;
+ BeanRef<SwaggerProvider> swaggerProvider =
BeanRef.of(SwaggerProvider.class);
+ BeanRef<RestLogger> callLoggerDefault = BeanRef.of(RestLogger.class);
+ BeanRef<RestLogger> callLogger = BeanRef.of(RestLogger.class);
+ BeanRef<DebugEnablement> debugEnablement =
BeanRef.of(DebugEnablement.class);
Enablement debugDefault, debug;
- DebugEnablement debugEnablement;
- Class<? extends DebugEnablement> debugEnablementClass;
-
- String debugOn = env("RestContext.debugOn", null);
-
@SuppressWarnings("unchecked")
ResponseProcessorList.Builder responseProcessors =
ResponseProcessorList.create().append(
ReaderProcessor.class,
@@ -179,7 +173,6 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
if (parentContext.isPresent()) {
RestContext pc = parentContext.get();
callLoggerDefault = pc.callLoggerDefault;
- callLoggerDefaultClass =
pc.callLoggerDefaultClass;
debugDefault = pc.debugDefault;
ContextProperties pcp =
pc.getContextProperties();
set(REST_staticFilesDefault,
pcp.get(REST_staticFilesDefault).orElse(null));
@@ -773,7 +766,7 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
*/
@FluentSetter
public RestContextBuilder callLogger(Class<? extends RestLogger> value)
{
- callLoggerClass = value;
+ callLogger.type(value);
return this;
}
@@ -795,7 +788,7 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
*/
@FluentSetter
public RestContextBuilder callLogger(RestLogger value) {
- callLogger = value;
+ callLogger.value(value);
return this;
}
@@ -815,7 +808,7 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
*/
@FluentSetter
public RestContextBuilder callLoggerDefault(Class<? extends RestLogger>
value) {
- callLoggerDefaultClass = value;
+ callLoggerDefault.type(value);
return this;
}
@@ -835,7 +828,7 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
*/
@FluentSetter
public RestContextBuilder callLoggerDefault(RestLogger value) {
- callLoggerDefault = value;
+ callLoggerDefault.value(value);
return this;
}
@@ -1085,7 +1078,7 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
}
/**
- * <i><l>RestContext</l> configuration property: </i> Debug
enablement bean.
+ * Debug enablement bean.
*
* TODO
*
@@ -1094,12 +1087,12 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
*/
@FluentSetter
public RestContextBuilder debugEnablement(Class<? extends
DebugEnablement> value) {
- debugEnablementClass = value;
+ debugEnablement.type(value);
return this;
}
/**
- * <i><l>RestContext</l> configuration property: </i> Debug
enablement bean.
+ * Debug enablement bean.
*
* TODO
*
@@ -1108,7 +1101,7 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
*/
@FluentSetter
public RestContextBuilder debugEnablement(DebugEnablement value) {
- debugEnablement = value;
+ debugEnablement.value(value);
return this;
}
@@ -2546,7 +2539,7 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
*/
@FluentSetter
public RestContextBuilder swaggerProvider(Class<? extends
SwaggerProvider> value) {
- swaggerProviderClass = value;
+ swaggerProvider.type(value);
return this;
}
@@ -2562,7 +2555,7 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
*/
@FluentSetter
public RestContextBuilder swaggerProvider(SwaggerProvider value) {
- swaggerProvider = value;
+ swaggerProvider.value(value);
return this;
}