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 ec1dc5f Clean up builders.
ec1dc5f is described below
commit ec1dc5fc3cbe051872fc821d4f3a9dd3b9bdd6db
Author: JamesBognar <[email protected]>
AuthorDate: Sun Aug 8 13:17:00 2021 -0400
Clean up builders.
---
.../java/org/apache/juneau/ContextBuilder.java | 22 ++++++++
.../java/org/apache/juneau/rest/RestContext.java | 4 +-
.../org/apache/juneau/rest/RestContextBuilder.java | 27 ++++------
.../juneau/rest/RestOperationContextBuilder.java | 59 +++++-----------------
4 files changed, 47 insertions(+), 65 deletions(-)
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 707eab6..49eb13c 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
@@ -53,6 +53,7 @@ public abstract class ContextBuilder {
private final ContextPropertiesBuilder cpb;
boolean debug;
+ Class<? extends Context> contextClass;
/**
* Constructor.
@@ -83,6 +84,27 @@ public abstract class ContextBuilder {
public abstract Context build();
/**
+ * Associates a context class with this builder.
+ *
+ * @param value The context class that this builder should create.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public ContextBuilder contextClass(Class<? extends Context> value) {
+ this.contextClass = value;
+ return this;
+ }
+
+ /**
+ * Returns the context class that this builder should create.
+ *
+ * @return The context class if it was specified.
+ */
+ public Optional<Class<?>> getContextClass() {
+ return Optional.ofNullable(contextClass);
+ }
+
+ /**
* Copies the settings from the specified property store into this
builder.
*
* <h5 class='section'>Example:</h5>
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 80b5f97..e86cb57 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
@@ -5493,7 +5493,7 @@ public class RestContext extends BeanContext {
RestOperationContext roc =
RestOperationContext
.create(mi.inner(), this)
.beanStore(beanStore)
-
.implClass(properties.getClass(REST_restOperationContextClass,
RestOperationContext.class).orElse(null))
+
.contextClass(properties.getClass(REST_restOperationContextClass,
RestOperationContext.class).orElse(null))
.build();
String httpMethod = roc.getHttpMethod();
@@ -5507,7 +5507,7 @@ public class RestContext extends BeanContext {
.create(mi.inner(),
this)
.dotAll()
.beanStore(rootBeanStore)
-
.implClass(RrpcRestOperationContext.class)
+
.contextClass(RrpcRestOperationContext.class)
.build();
x
.add("GET", roc2)
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 edeb1e4..c735f31 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
@@ -188,10 +188,16 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
}
}
+ @SuppressWarnings("unchecked")
@Override /* BeanContextBuilder */
public RestContext build() {
try {
- Class<? extends RestContext> c =
getContextProperties().getClass(REST_contextClass,
RestContext.class).orElse(getDefaultImplClass());
+ // Temporary.
+ Class<? extends RestContext> c =
getContextProperties().getClass(REST_contextClass,
RestContext.class).orElse(null);
+ if (c != null)
+ contextClass(c);
+
+ c = (Class<? extends
RestContext>)getContextClass().orElse(getDefaultImplClass());
return BeanStore.of(beanStore,
resource.get()).addBeans(RestContextBuilder.class, this).createBean(c);
} catch (Exception e) {
throw toHttpException(e, InternalServerError.class);
@@ -743,22 +749,11 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
return set(REST_clientVersionHeader, value);
}
- /**
- * <i><l>RestContext</l> configuration property: </i> REST
context class.
- *
- * <p>
- * Allows you to extend the {@link RestContext} class to modify how any
of the methods are implemented.
- *
- * <ul class='seealso'>
- * <li class='jf'>{@link RestContext#REST_contextClass}
- * </ul>
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
+ @Override
@FluentSetter
- public RestContextBuilder contextClass(Class<? extends RestContext>
value) {
- return set(REST_contextClass, value);
+ public RestContextBuilder contextClass(Class<? extends Context> value) {
+ super.contextClass(value);
+ return this;
}
/**
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
index 91685ef..3352f66 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContextBuilder.java
@@ -42,17 +42,17 @@ public class RestOperationContextBuilder extends
BeanContextBuilder {
Method restMethod;
private BeanStore beanStore;
- private Class<? extends RestOperationContext> implClass;
+ @SuppressWarnings("unchecked")
@Override /* BeanContextBuilder */
public RestOperationContext build() {
try {
- ContextProperties cp = getContextProperties();
-
- Class<? extends RestOperationContext> ic = implClass;
- if (ic == null)
- ic = cp.getClass(RESTOP_contextClass,
RestOperationContext.class).orElse(getDefaultImplClass());
+ // Temporary.
+ Class<? extends RestOperationContext> c =
getContextProperties().getClass(RESTOP_contextClass,
RestOperationContext.class).orElse(null);
+ if (c != null)
+ contextClass(c);
+ Class<? extends RestOperationContext> ic = (Class<?
extends RestOperationContext>) getContextClass().orElse(getDefaultImplClass());
return
BeanStore.of(beanStore).addBean(RestOperationContextBuilder.class,
this).createBean(ic);
} catch (Exception e) {
throw toHttpException(e, InternalServerError.class);
@@ -60,9 +60,9 @@ public class RestOperationContextBuilder extends
BeanContextBuilder {
}
/**
- * Specifies the default implementation class if not specified via
{@link #implClass(Class)}.
+ * Specifies the default implementation class if not specified via
{@link #contextClass(Class)}.
*
- * @return The default implementation class if not specified via {@link
#implClass(Class)}.
+ * @return The default implementation class if not specified via {@link
#contextClass(Class)}.
*/
protected Class<? extends RestOperationContext> getDefaultImplClass() {
return RestOperationContext.class;
@@ -98,29 +98,6 @@ public class RestOperationContextBuilder extends
BeanContextBuilder {
return this;
}
-
- /**
- * Specifies a {@link RestOperationContext} implementation subclass to
use.
- *
- * <p>
- * When specified, the {@link #build()} method will create an instance
of that class instead of the default {@link RestOperationContext}.
- *
- * <p>
- * The subclass must have a public constructor that takes in any of the
following arguments:
- * <ul>
- * <li>{@link RestOperationContextBuilder} - This object.
- * <li>Any beans found in the specified {@link
#beanStore(BeanStore) bean store}.
- * <li>Any {@link Optional} beans that may or may not be found in
the specified {@link #beanStore(BeanStore) bean store}.
- * </ul>
- *
- * @param implClass The implementation class to build.
- * @return This object (for method chaining).
- */
- public RestOperationContextBuilder implClass(Class<? extends
RestOperationContext> implClass) {
- this.implClass = implClass;
- return this;
- }
-
/**
* Specifies a {@link BeanStore} to use when resolving constructor
arguments.
*
@@ -154,23 +131,11 @@ public class RestOperationContextBuilder extends
BeanContextBuilder {
return set(RESTOP_clientVersion, value);
}
- /**
- * <i><l>RestOperationContext</l> configuration property: </i>
REST method context class.
- *
- * Allows you to extend the {@link RestOperationContext} class to
modify how any of the methods are implemented.
- *
- * <p>
- * The subclass must provide the following:
- * <ul>
- * <li>A public constructor that takes in one parameter that
should be passed to the super constructor: {@link RestOperationContextBuilder}.
- * </ul>
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
+ @Override
@FluentSetter
- public RestOperationContextBuilder contextClass(Class<? extends
RestOperationContext> value) {
- return set(RESTOP_contextClass, value);
+ public RestOperationContextBuilder contextClass(Class<? extends
Context> value) {
+ super.contextClass(value);
+ return this;
}
/**