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 aedf584 Context API refactoring.
aedf584 is described below
commit aedf584e433f527345db8cb7bfb89a275ee4336c
Author: JamesBognar <[email protected]>
AuthorDate: Mon Sep 13 21:49:26 2021 -0400
Context API refactoring.
---
.../apache/juneau/rest/BasicSwaggerProvider.java | 11 +-
.../java/org/apache/juneau/rest/RestContext.java | 114 +----------
.../org/apache/juneau/rest/RestContextBuilder.java | 93 ++++++++-
.../org/apache/juneau/rest/SwaggerProvider.java | 210 ++++++++++++++++++++-
.../apache/juneau/rest/SwaggerProviderBuilder.java | 129 -------------
5 files changed, 302 insertions(+), 255 deletions(-)
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProvider.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProvider.java
index 5164369..50cf2ec 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProvider.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/BasicSwaggerProvider.java
@@ -12,7 +12,6 @@
//
***************************************************************************************************************************
package org.apache.juneau.rest;
-import static org.apache.juneau.internal.ObjectUtils.*;
import java.util.*;
import org.apache.juneau.cp.*;
@@ -38,12 +37,12 @@ public class BasicSwaggerProvider implements
SwaggerProvider {
*
* @param builder The builder containing the settings for this Swagger
provider.
*/
- public BasicSwaggerProvider(SwaggerProviderBuilder builder) {
+ public BasicSwaggerProvider(SwaggerProvider.Builder builder) {
BeanStore bs = builder.beanStore;
- this.vr = firstNonNull(builder.varResolver,
bs.getBean(VarResolver.class).orElse(VarResolver.DEFAULT));
- this.js = firstNonNull(builder.jsonSchemaGenerator,
bs.getBean(JsonSchemaGenerator.class).orElse(JsonSchemaGenerator.DEFAULT));
- this.messages = builder.messages;
- this.fileFinder = builder.fileFinder;
+ this.vr =
builder.varResolver().orElse(bs.getBean(VarResolver.class).orElse(VarResolver.DEFAULT));
+ this.js =
builder.jsonSchemaGenerator().orElse(bs.getBean(JsonSchemaGenerator.class).orElse(JsonSchemaGenerator.DEFAULT));
+ this.messages = builder.messages().orElse(null);
+ this.fileFinder = builder.fileFinder().orElse(null);
}
/**
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 586b582..5728559 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
@@ -296,9 +296,7 @@ public class RestContext extends Context {
postCallMethods =
builder.postCallMethods().stream().map(this::toRestOpInvoker).toArray(RestOpInvoker[]::
new);
restOperations = builder.restOperations(this).build();
restChildren = builder.restChildren(this).build();
-
- Object r = resource.get();
- swaggerProvider = createSwaggerProvider(r, builder, bs,
fileFinder, messages, varResolver);
+ swaggerProvider = builder.swaggerProvider().build();
List<RestOpContext> opContexts =
restOperations.getOpContexts();
@@ -350,116 +348,6 @@ public class RestContext extends Context {
}
/**
- * Instantiates the REST info provider for this REST resource.
- *
- * <p>
- * Instantiates based on the following logic:
- * <ul>
- * <li>Returns the resource class itself is an instance of {@link
SwaggerProvider}.
- * <li>Looks for swagger provider set via any of the following:
- * <ul>
- * <li>{@link
RestContextBuilder#swaggerProvider(Class)}/{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
- * <li>{@link Rest#swaggerProvider()}.
- * </ul>
- * <li>Looks for a static or non-static
<c>createSwaggerProvider()</> method that returns {@link SwaggerProvider} on the
- * resource class with any of the following arguments:
- * <ul>
- * <li>{@link RestContext}
- * <li>{@link BeanStore}
- * <li>Any {@doc RestInjection injected beans}.
- * </ul>
- * <li>Resolves it via the bean store registered in this context.
- * <li>Instantiates a default {@link BasicSwaggerProvider}.
- * </ul>
- *
- * <ul class='seealso'>
- * <li class='jm'>{@link RestContextBuilder#swaggerProvider(Class)}
- * <li class='jm'>{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
- * </ul>
- *
- * @param resource
- * The REST servlet or bean that this context defines.
- * @param builder
- * The builder for this object.
- * @param beanStore
- * The factory used for creating beans and retrieving injected
beans.
- * <br>Created by {@link RestContextBuilder#beanStore()}.
- * @param fileFinder The file finder configured on this bean created by
{@link RestContextBuilder#createFileFinder(BeanStore,Supplier)}.
- * @param messages The localized messages configured on this bean.
- * @param varResolver The variable resolver configured on this bean.
- * @return The info provider for this REST resource.
- * @throws Exception If info provider could not be instantiated.
- */
- protected SwaggerProvider createSwaggerProvider(Object resource,
RestContextBuilder builder, BeanStore beanStore, FileFinder fileFinder,
Messages messages, VarResolver varResolver) throws Exception {
-
- SwaggerProvider x =
builder.swaggerProvider.value().orElse(null);
-
- if (resource instanceof SwaggerProvider)
- x = (SwaggerProvider)resource;
-
- if (x == null)
- x =
beanStore.getBean(SwaggerProvider.class).orElse(null);
-
- if (x == null)
- x = createSwaggerProviderBuilder(resource, builder,
beanStore, fileFinder, messages, varResolver).build();
-
- x = BeanStore
- .of(beanStore, resource)
- .addBean(SwaggerProvider.class, x)
- .beanCreateMethodFinder(SwaggerProvider.class, resource)
- .find("createSwaggerProvider")
- .withDefault(x)
- .run();
-
- return x;
- }
-
- /**
- * Instantiates the REST API builder for this REST resource.
- *
- * <p>
- * Allows subclasses to intercept and modify the builder used by the
{@link
#createSwaggerProvider(Object,RestContextBuilder,BeanStore,FileFinder,Messages,VarResolver)}
method.
- *
- * @param resource
- * The REST servlet or bean that this context defines.
- * @param builder
- * The builder for this object.
- * <br>Consists of all properties gathered through the builder and
annotations on this class and all parent classes.
- * @param beanStore
- * The factory used for creating beans and retrieving injected
beans.
- * <br>Created by {@link RestContextBuilder#beanStore()}.
- * @param fileFinder The file finder configured on this bean created by
{@link RestContextBuilder#createFileFinder(BeanStore,Supplier)}.
- * @param messages The localized messages configured on this bean.
- * @param varResolver The variable resolver configured on this bean.
- * @return The REST API builder for this REST resource.
- * @throws Exception If REST API builder could not be instantiated.
- */
- protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object
resource, RestContextBuilder builder, BeanStore beanStore, FileFinder
fileFinder, Messages messages, VarResolver varResolver) throws Exception {
-
- Class<? extends SwaggerProvider> c =
builder.swaggerProvider.type().orElse(null);
-
- SwaggerProviderBuilder x = SwaggerProvider
- .create()
- .beanStore(beanStore)
- .fileFinder(fileFinder)
- .messages(messages)
- .varResolver(varResolver)
-
.jsonSchemaGenerator(beanStore.getBean(JsonSchemaGenerator.class).get())
- .implClass(c);
-
- x = BeanStore
- .of(beanStore, resource)
- .addBean(SwaggerProviderBuilder.class, x)
- .beanCreateMethodFinder(SwaggerProviderBuilder.class,
resource)
- .find("createSwaggerProviderBuilder")
- .withDefault(x)
- .run();
-
- return x;
-
- }
-
- /**
* Returns the bean store associated with this context.
*
* <p>
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 5cb2d7b..14ae1fd 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
@@ -61,7 +61,6 @@ import org.apache.juneau.rest.vars.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.svl.*;
import org.apache.juneau.svl.vars.*;
-import org.apache.juneau.utils.*;
/**
* Defines the initial configuration of a <c>RestServlet</c> or <c>@Rest</c>
annotated object.
@@ -147,6 +146,7 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
private MethodList startCallMethods, endCallMethods, postInitMethods,
postInitChildFirstMethods, destroyMethods, preCallMethods, postCallMethods;
private RestOperations.Builder restOperations;
private RestChildren.Builder restChildren;
+ private SwaggerProvider.Builder swaggerProvider;
String
allowedHeaderParams = env("RestContext.allowedHeaderParams",
"Accept,Content-Type"),
@@ -169,7 +169,6 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
Class<? extends RestOpContext> opContextClass = RestOpContext.class;
Class<? extends RestOperations> operationsClass = RestOperations.class;
- BeanRef<SwaggerProvider> swaggerProvider =
BeanRef.of(SwaggerProvider.class);
EncoderGroup.Builder encoders =
EncoderGroup.create().add(IdentityEncoder.INSTANCE);
SerializerGroup.Builder serializers = SerializerGroup.create();
ParserGroup.Builder parsers = ParserGroup.create();
@@ -3267,8 +3266,92 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
return v.get();
}
+
//-----------------------------------------------------------------------------------------------------------------
+ // swaggerProvider
+
//-----------------------------------------------------------------------------------------------------------------
- private int TODO;
+ /**
+ * Returns the list of rest operations.
+ *
+ * @return The list of rest operations.
+ */
+ public final SwaggerProvider.Builder swaggerProvider() {
+ if (swaggerProvider == null)
+ swaggerProvider = createSwaggerProvider(beanStore(),
resource());
+ return swaggerProvider;
+ }
+
+ /**
+ * Instantiates the REST info provider for this REST resource.
+ *
+ * <p>
+ * Instantiates based on the following logic:
+ * <ul>
+ * <li>Returns the resource class itself is an instance of {@link
SwaggerProvider}.
+ * <li>Looks for swagger provider set via any of the following:
+ * <ul>
+ * <li>{@link
RestContextBuilder#swaggerProvider(Class)}/{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
+ * <li>{@link Rest#swaggerProvider()}.
+ * </ul>
+ * <li>Looks for a static or non-static
<c>createSwaggerProvider()</> method that returns {@link SwaggerProvider} on the
+ * resource class with any of the following arguments:
+ * <ul>
+ * <li>{@link RestContext}
+ * <li>{@link BeanStore}
+ * <li>Any {@doc RestInjection injected beans}.
+ * </ul>
+ * <li>Resolves it via the bean store registered in this context.
+ * <li>Instantiates a default {@link BasicSwaggerProvider}.
+ * </ul>
+ *
+ * <ul class='seealso'>
+ * <li class='jm'>{@link RestContextBuilder#swaggerProvider(Class)}
+ * <li class='jm'>{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
+ * </ul>
+ *
+ * @param beanStore
+ * The factory used for creating beans and retrieving injected
beans.
+ * @param resource
+ * The REST servlet or bean that this context defines.
+ * @return The info provider for this REST resource.
+ */
+ protected SwaggerProvider.Builder createSwaggerProvider(BeanStore
beanStore, Supplier<?> resource) {
+
+ Object r = resource.get();
+
+ Value<SwaggerProvider.Builder> v = Value.of(
+ SwaggerProvider
+ .create()
+ .beanStore(beanStore)
+
.varResolver(()->beanStore.getBean(VarResolver.class).orElseThrow(()->runtimeException("VarResolver
bean not found.")))
+
.fileFinder(()->beanStore.getBean(FileFinder.class).orElseThrow(()->runtimeException("FileFinder
bean not found.")))
+
.messages(()->beanStore.getBean(Messages.class).orElseThrow(()->runtimeException("Messages
bean not found.")))
+
.jsonSchemaGenerator(()->beanStore.getBean(JsonSchemaGenerator.class).orElseThrow(()->runtimeException("JsonSchemaGenerator
bean not found.")))
+ );
+
+ beanStore.getBean(SwaggerProvider.Builder.class).map(x ->
x.copy()).ifPresent(x -> v.set(x));
+
+ if (r instanceof SwaggerProvider)
+ v.get().impl((SwaggerProvider)r);
+
+ beanStore.getBean(SwaggerProvider.class).ifPresent(x ->
v.get().impl(x));
+
+ BeanStore
+ .of(beanStore, resource)
+ .addBean(SwaggerProvider.Builder.class, v.get())
+ .beanCreateMethodFinder(SwaggerProvider.Builder.class,
resource)
+ .find("createSwaggerProviderBuilder")
+ .run(x -> v.set(x));
+
+ BeanStore
+ .of(beanStore, resource)
+ .addBean(SwaggerProvider.Builder.class, v.get())
+ .beanCreateMethodFinder(SwaggerProvider.class, resource)
+ .find("createSwaggerProviderBuilder")
+ .run(x -> v.get().impl(x));
+
+ return v.get();
+ }
//-----------------------------------------------------------------------------------------------------------------
// Miscellaneous settings
@@ -4628,7 +4711,7 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
*/
@FluentSetter
public RestContextBuilder swaggerProvider(Class<? extends
SwaggerProvider> value) {
- swaggerProvider.type(value);
+ swaggerProvider().type(value);
return this;
}
@@ -4644,7 +4727,7 @@ public class RestContextBuilder extends ContextBuilder
implements ServletConfig
*/
@FluentSetter
public RestContextBuilder swaggerProvider(SwaggerProvider value) {
- swaggerProvider.value(value);
+ swaggerProvider().impl(value);
return this;
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProvider.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProvider.java
index 51140b9..a29b087 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProvider.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProvider.java
@@ -12,16 +12,28 @@
//
***************************************************************************************************************************
package org.apache.juneau.rest;
+import static org.apache.juneau.internal.ClassUtils.*;
+import static org.apache.juneau.rest.HttpRuntimeException.*;
+
import java.util.*;
+import java.util.function.*;
+import org.apache.juneau.cp.*;
import org.apache.juneau.dto.swagger.Swagger;
+import org.apache.juneau.http.response.*;
+import org.apache.juneau.jsonschema.*;
import org.apache.juneau.rest.annotation.*;
+import org.apache.juneau.svl.*;
/**
* Interface for retrieving Swagger on a REST resource.
*/
public interface SwaggerProvider {
+
//-----------------------------------------------------------------------------------------------------------------
+ // Static
+
//-----------------------------------------------------------------------------------------------------------------
+
/**
* Represents no SwaggerProvider.
*
@@ -36,10 +48,204 @@ public interface SwaggerProvider {
*
* @return A new builder for this object.
*/
- public static SwaggerProviderBuilder create() {
- return new SwaggerProviderBuilder();
+ public static Builder create() {
+ return new Builder();
+ }
+
+
//-----------------------------------------------------------------------------------------------------------------
+ // Builder
+
//-----------------------------------------------------------------------------------------------------------------
+
+ /**
+ * Builder class.
+ */
+ public class Builder {
+
+ Class<? extends SwaggerProvider> type;
+ BeanStore beanStore;
+ Class<?> resourceClass;
+ Supplier<VarResolver> varResolver;
+ Supplier<JsonSchemaGenerator> jsonSchemaGenerator;
+ Supplier<Messages> messages;
+ Supplier<FileFinder> fileFinder;
+ SwaggerProvider impl;
+
+ /**
+ * Constructor.
+ */
+ protected Builder() {}
+
+ /**
+ * Copy constructor.
+ *
+ * @param copyFrom The builder being copied.
+ */
+ protected Builder(Builder copyFrom) {
+ type = copyFrom.type;
+ beanStore = copyFrom.beanStore;
+ resourceClass = copyFrom.resourceClass;
+ varResolver = copyFrom.varResolver;
+ jsonSchemaGenerator = copyFrom.jsonSchemaGenerator;
+ messages = copyFrom.messages;
+ fileFinder = copyFrom.fileFinder;
+ impl = copyFrom.impl;
+ }
+ /**
+ * Creates a new {@link SwaggerProvider} object from this
builder.
+ *
+ * <p>
+ * Instantiates an instance of the {@link #type(Class)
implementation class} or
+ * else {@link BasicSwaggerProvider} if implementation class
was not specified.
+ *
+ * @return A new {@link SwaggerProvider} object.
+ */
+ public SwaggerProvider build() {
+ try {
+ if (impl != null)
+ return impl;
+ Class<? extends SwaggerProvider> ic =
isConcrete(type) ? type : getDefaultType();
+ return
BeanStore.of(beanStore).addBeans(Builder.class, this).createBean(ic);
+ } catch (Exception e) {
+ throw toHttpException(e,
InternalServerError.class);
+ }
+ }
+
+ /**
+ * Returns the var resolver in this builder if it's been
specified.
+ *
+ * @return The var resolver.
+ */
+ public Optional<VarResolver> varResolver() {
+ return Optional.ofNullable(varResolver == null ? null :
varResolver.get());
+ }
+
+ /**
+ * Returns the JSON schema generator in this builder if it's
been specified.
+ *
+ * @return The JSON schema generator.
+ */
+ public Optional<JsonSchemaGenerator> jsonSchemaGenerator() {
+ return Optional.ofNullable(jsonSchemaGenerator == null
? null : jsonSchemaGenerator.get());
+ }
+
+ /**
+ * Returns the messages in this builder if it's been specified.
+ *
+ * @return The messages.
+ */
+ public Optional<Messages> messages() {
+ return Optional.ofNullable(messages == null ? null :
messages.get());
+ }
+
+ /**
+ * Returns the file finder in this builder if it's been
specified.
+ *
+ * @return The file finder.
+ */
+ public Optional<FileFinder> fileFinder() {
+ return Optional.ofNullable(fileFinder == null ? null :
fileFinder.get());
+ }
+
+ /**
+ * Specifies the default implementation class if not specified
via {@link #type(Class)}.
+ *
+ * @return The default implementation class if not specified
via {@link #type(Class)}.
+ */
+ protected Class<? extends SwaggerProvider> getDefaultType() {
+ return BasicSwaggerProvider.class;
+ }
+
+ /**
+ * Specifies the bean store to use for instantiating the {@link
SwaggerProvider} object.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder beanStore(BeanStore value) {
+ beanStore = value;
+ return this;
+ }
+
+ /**
+ * Specifies a subclass of {@link SwaggerProvider} to create
when the {@link #build()} method is called.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder type(Class<? extends SwaggerProvider> value) {
+ type = value;
+ return this;
+ }
+
+ /**
+ * Specifies the variable resolver to use for the {@link
SwaggerProvider} object.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder varResolver(Supplier<VarResolver> value) {
+ varResolver = value;
+ return this;
+ }
+
+ /**
+ * Specifies the JSON-schema generator to use for the {@link
SwaggerProvider} object.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder
jsonSchemaGenerator(Supplier<JsonSchemaGenerator> value) {
+ jsonSchemaGenerator = value;
+ return this;
+ }
+
+ /**
+ * Specifies the messages to use for the {@link
SwaggerProvider} object.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder messages(Supplier<Messages> value) {
+ messages = value;
+ return this;
+ }
+
+ /**
+ * Specifies the file-finder to use for the {@link
SwaggerProvider} object.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder fileFinder(Supplier<FileFinder> value) {
+ fileFinder = value;
+ return this;
+ }
+
+ /**
+ * Specifies an already-instantiated bean for the {@link
#build()} method too return.
+ *
+ * @param value The new value for this setting.
+ * @return This object.
+ */
+ public Builder impl(SwaggerProvider value) {
+ impl = value;
+ return this;
+ }
+
+ /**
+ * Creates a copy of this builder.
+ *
+ * @return A copy of this builder.
+ */
+ public Builder copy() {
+ return new Builder(this);
+ }
}
+
//-----------------------------------------------------------------------------------------------------------------
+ // Instance
+
//-----------------------------------------------------------------------------------------------------------------
+
/**
* Returns the Swagger associated with the specified {@link
Rest}-annotated class.
*
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProviderBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProviderBuilder.java
deleted file mode 100644
index 5b3f930..0000000
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/SwaggerProviderBuilder.java
+++ /dev/null
@@ -1,129 +0,0 @@
-//
***************************************************************************************************************************
-// * 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.rest;
-
-import static org.apache.juneau.rest.HttpRuntimeException.*;
-import static org.apache.juneau.internal.ClassUtils.*;
-
-import org.apache.juneau.cp.*;
-import org.apache.juneau.http.response.*;
-import org.apache.juneau.jsonschema.*;
-import org.apache.juneau.svl.*;
-
-/**
- * Builder class for {@link SwaggerProvider} objects.
- */
-public class SwaggerProviderBuilder {
-
- private Class<? extends SwaggerProvider> implClass;
-
- BeanStore beanStore;
- Class<?> resourceClass;
- VarResolver varResolver;
- JsonSchemaGenerator jsonSchemaGenerator;
- Messages messages;
- FileFinder fileFinder;
-
- /**
- * Creates a new {@link SwaggerProvider} object from this builder.
- *
- * <p>
- * Instantiates an instance of the {@link #implClass(Class)
implementation class} or
- * else {@link BasicSwaggerProvider} if implementation class was not
specified.
- *
- * @return A new {@link SwaggerProvider} object.
- */
- public SwaggerProvider build() {
- try {
- Class<? extends SwaggerProvider> ic =
isConcrete(implClass) ? implClass : getDefaultImplClass();
- return
BeanStore.of(beanStore).addBeans(SwaggerProviderBuilder.class,
this).createBean(ic);
- } catch (Exception e) {
- throw toHttpException(e, InternalServerError.class);
- }
- }
-
- /**
- * Specifies the default implementation class if not specified via
{@link #implClass(Class)}.
- *
- * @return The default implementation class if not specified via {@link
#implClass(Class)}.
- */
- protected Class<? extends SwaggerProvider> getDefaultImplClass() {
- return BasicSwaggerProvider.class;
- }
-
- /**
- * Specifies the bean store to use for instantiating the {@link
SwaggerProvider} object.
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
- public SwaggerProviderBuilder beanStore(BeanStore value) {
- this.beanStore = value;
- return this;
- }
-
- /**
- * Specifies a subclass of {@link SwaggerProvider} to create when the
{@link #build()} method is called.
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
- public SwaggerProviderBuilder implClass(Class<? extends
SwaggerProvider> value) {
- this.implClass = value;
- return this;
- }
-
- /**
- * Specifies the variable resolver to use for the {@link
SwaggerProvider} object.
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
- public SwaggerProviderBuilder varResolver(VarResolver value) {
- this.varResolver = value;
- return this;
- }
-
- /**
- * Specifies the JSON-schema generator to use for the {@link
SwaggerProvider} object.
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
- public SwaggerProviderBuilder jsonSchemaGenerator(JsonSchemaGenerator
value) {
- this.jsonSchemaGenerator = value;
- return this;
- }
-
- /**
- * Specifies the messages to use for the {@link SwaggerProvider} object.
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
- public SwaggerProviderBuilder messages(Messages value) {
- this.messages = value;
- return this;
- }
-
- /**
- * Specifies the file-finder to use for the {@link SwaggerProvider}
object.
- *
- * @param value The new value for this setting.
- * @return This object (for method chaining).
- */
- public SwaggerProviderBuilder fileFinder(FileFinder value) {
- this.fileFinder = value;
- return this;
- }
-}