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 b05c7d6  Context API refactoring.
b05c7d6 is described below

commit b05c7d62345abcaa26d4b993a07e5eb52f82afc1
Author: JamesBognar <[email protected]>
AuthorDate: Fri Sep 24 12:20:27 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/ContextProperties.java  |  2 +-
 .../java/org/apache/juneau/cp/BeanCreator.java     | 26 ++++++++++++++++++--
 .../juneau/httppart/bean/RequestBeanMeta.java      |  4 ++--
 .../httppart/bean/RequestBeanPropertyMeta.java     |  4 ++--
 .../apache/juneau/mstat/ThrownStatsBuilder.java    |  2 +-
 .../juneau/rest/client/RestClientBuilder.java      |  2 +-
 .../rest/client/remote/RemoteOperationArg.java     |  2 +-
 .../org/apache/juneau/rest/DebugEnablement.java    | 28 +++++-----------------
 .../org/apache/juneau/rest/RestContextBuilder.java |  2 +-
 .../org/apache/juneau/rest/RestConverterList.java  | 21 ++++++----------
 .../java/org/apache/juneau/rest/RestGuardList.java | 20 +++++-----------
 .../org/apache/juneau/rest/RestMatcherList.java    | 20 +++++-----------
 .../apache/juneau/rest/RestOpContextBuilder.java   |  2 +-
 .../org/apache/juneau/rest/SwaggerProvider.java    | 17 +++++--------
 .../org/apache/juneau/cp/BeanCreator_Test.java     | 18 +++++++-------
 15 files changed, 74 insertions(+), 96 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
index eededa1..b411d02 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ContextProperties.java
@@ -919,7 +919,7 @@ public final class ContextProperties {
                        return (T)value;
                try {
                        if 
(ClassInfo.of(value.getClass()).isChildOf(Class.class))
-                               return 
BeanCreator.create((Class<T>)value).store(beanStore).run();
+                               return 
BeanCreator.of((Class<T>)value).store(beanStore).run();
                } catch (ExecutableException e) {
                        throw new ConfigException(e, "Could not create bean of 
type ''{0}''.", value);
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
index 313d5c4..2c8cc91 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanCreator.java
@@ -44,7 +44,7 @@ public class BeanCreator<T> {
         * @param type The bean type being created.
         * @return A new creator object.
         */
-       public static <T> BeanCreator<T> create(Class<T> type) {
+       public static <T> BeanCreator<T> of(Class<T> type) {
                return new BeanCreator<>(type);
        }
 
@@ -58,6 +58,29 @@ public class BeanCreator<T> {
        }
 
        /**
+        * Copy constructor.
+        *
+        * @param copyFrom The creator being copied.
+        */
+       protected BeanCreator(BeanCreator<T> copyFrom) {
+               type = copyFrom.type;
+               store = copyFrom.store;
+               outer = copyFrom.outer;
+               builder = copyFrom.builder;
+               findSingleton = copyFrom.findSingleton;
+               impl = copyFrom.impl;
+       }
+
+       /**
+        * Creates a copy of this bean creator.
+        *
+        * @return A copy of this bean creator.
+        */
+       public BeanCreator<T> copy() {
+               return new BeanCreator<>(this);
+       }
+
+       /**
         * Allows you to specify a subclass of the specified bean type to 
create.
         *
         * @param value The value for this setting.
@@ -337,5 +360,4 @@ public class BeanCreator<T> {
                        return AnnotationInfo.of((ClassInfo)null, 
namedAnnotation.get()).getValue(String.class, "value").orElse(null);
                return null;
        }
-
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index 039f11c..6a3c32d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -67,8 +67,8 @@ public class RequestBeanMeta {
 
        RequestBeanMeta(Builder b) {
                this.cm = b.cm;
-               this.serializer = 
BeanCreator.create(HttpPartSerializer.class).type(b.serializer).run();
-               this.parser = 
BeanCreator.create(HttpPartParser.class).type(b.parser).run();
+               this.serializer = 
BeanCreator.of(HttpPartSerializer.class).type(b.serializer).run();
+               this.parser = 
BeanCreator.of(HttpPartParser.class).type(b.parser).run();
                Map<String,RequestBeanPropertyMeta> properties = new 
LinkedHashMap<>();
                for (Map.Entry<String,RequestBeanPropertyMeta.Builder> e : 
b.properties.entrySet())
                        properties.put(e.getKey(), 
e.getValue().build(serializer, parser));
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
index 6f6b925..bb06d7c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanPropertyMeta.java
@@ -50,8 +50,8 @@ public class RequestBeanPropertyMeta {
                this.partType = b.partType;
                this.schema = b.schema;
                this.getter = b.getter;
-               this.serializer = ofNullable(schema.getSerializer() == null ? 
serializer : 
BeanCreator.create(HttpPartSerializer.class).type(schema.getSerializer()).run());
-               this.parser = schema.getParser() == null ? parser : 
BeanCreator.create(HttpPartParser.class).type(schema.getParser()).run();
+               this.serializer = ofNullable(schema.getSerializer() == null ? 
serializer : 
BeanCreator.of(HttpPartSerializer.class).type(schema.getSerializer()).run());
+               this.parser = schema.getParser() == null ? parser : 
BeanCreator.of(HttpPartParser.class).type(schema.getParser()).run();
        }
 
        static class Builder {
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ThrownStatsBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ThrownStatsBuilder.java
index 03fdde1..463ed54 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ThrownStatsBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/mstat/ThrownStatsBuilder.java
@@ -28,7 +28,7 @@ public class ThrownStatsBuilder {
        List<String> stackTrace;
        ThrownStats causedBy;
 
-       BeanCreator<ThrownStats> creator = 
BeanCreator.create(ThrownStats.class).builder(this);
+       BeanCreator<ThrownStats> creator = 
BeanCreator.of(ThrownStats.class).builder(this);
 
        /**
         * Create a new {@link ThrownStats} using this builder.
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index cd2e1f5..c272a7b 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -1979,7 +1979,7 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         * @see #callHandler()
         */
        protected BeanCreator<RestCallHandler> createCallHandler() {
-               return 
BeanCreator.create(RestCallHandler.class).type(BasicRestCallHandler.class).store(beanStore);
+               return 
BeanCreator.of(RestCallHandler.class).type(BasicRestCallHandler.class).store(beanStore);
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationArg.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationArg.java
index 6a3ab18..e1135d2 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationArg.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteOperationArg.java
@@ -40,7 +40,7 @@ public final class RemoteOperationArg {
        RemoteOperationArg(int index, HttpPartType partType, HttpPartSchema 
schema) {
                this.index = index;
                this.partType = partType;
-               this.serializer = 
ofNullable(BeanCreator.create(schema.getSerializer()).run());
+               this.serializer = 
ofNullable(BeanCreator.of(schema.getSerializer()).run());
                this.schema = schema;
        }
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/DebugEnablement.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/DebugEnablement.java
index 2087c7d..15adaa7 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/DebugEnablement.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/DebugEnablement.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.rest;
 
 import static org.apache.juneau.Enablement.*;
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 
 import java.util.function.*;
@@ -59,11 +58,9 @@ public interface DebugEnablement {
        public class Builder {
 
                ReflectionMap.Builder<Enablement> mapBuilder;
-               private Class<? extends DebugEnablement> type;
                Enablement defaultEnablement = NEVER;
-               BeanStore beanStore;
                Predicate<HttpServletRequest> conditionalPredicate;
-               DebugEnablement impl;
+               BeanCreator<DebugEnablement> creator = 
BeanCreator.of(DebugEnablement.class).type(BasicDebugEnablement.class).builder(this);
 
                /**
                 * Constructor.
@@ -81,11 +78,9 @@ public interface DebugEnablement {
                 */
                protected Builder(Builder copyFrom) {
                        mapBuilder = copyFrom.mapBuilder.copy();
-                       type = copyFrom.type;
+                       creator = copyFrom.creator.copy();
                        defaultEnablement = copyFrom.defaultEnablement;
-                       beanStore = copyFrom.beanStore;
                        conditionalPredicate = copyFrom.conditionalPredicate;
-                       impl = copyFrom.impl;
                }
 
                /**
@@ -99,31 +94,20 @@ public interface DebugEnablement {
                 */
                public DebugEnablement build() {
                        try {
-                               if (impl != null)
-                                       return impl;
-                               return 
BeanCreator.create(DebugEnablement.class).type(isConcrete(type) ? type : 
getDefaultImplClass()).store(beanStore).builder(this).run();
+                               return creator.run();
                        } catch (Exception e) {
                                throw toHttpException(e, 
InternalServerError.class);
                        }
                }
 
                /**
-                * 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 DebugEnablement> 
getDefaultImplClass() {
-                       return BasicDebugEnablement.class;
-               }
-
-               /**
                 * Specifies the bean store to use for instantiating the {@link 
DebugEnablement} object.
                 *
                 * @param value The new value for this setting.
                 * @return  This object.
                 */
                public Builder beanStore(BeanStore value) {
-                       beanStore = value;
+                       creator.store(value);
                        return this;
                }
 
@@ -134,7 +118,7 @@ public interface DebugEnablement {
                 * @return  This object.
                 */
                public Builder type(Class<? extends DebugEnablement> value) {
-                       type = value;
+                       creator.type(value == null ? BasicDebugEnablement.class 
: value);
                        return this;
                }
 
@@ -145,7 +129,7 @@ public interface DebugEnablement {
                 * @return This object.
                 */
                public Builder impl(DebugEnablement value) {
-                       impl = value;
+                       creator.impl(value);
                        return this;
                }
 
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 3108a8d..a349eec 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
@@ -210,7 +210,7 @@ public class RestContextBuilder extends ContextBuilder 
implements ServletConfig
        @Override /* BeanContextBuilder */
        public RestContext build() {
                try {
-                       return 
BeanCreator.create(RestContext.class).outer(resource.get()).store(beanStore()).builder(this).type(getType().orElse(RestContext.class)).run();
+                       return 
BeanCreator.of(RestContext.class).outer(resource.get()).store(beanStore()).builder(this).type(getType().orElse(RestContext.class)).run();
                } catch (Exception e) {
                        throw toHttpException(e, InternalServerError.class);
                }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestConverterList.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestConverterList.java
index 56142af..9859fd1 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestConverterList.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestConverterList.java
@@ -43,7 +43,7 @@ public class RestConverterList {
         */
        public static class Builder extends BeanBuilder<RestConverterList> {
 
-               AList<Object> entries;
+               AList<BeanCreator<RestConverter>> entries;
 
                /**
                 * Create an empty builder.
@@ -85,7 +85,8 @@ public class RestConverterList {
                 */
                @SuppressWarnings("unchecked")
                public Builder append(Class<? extends RestConverter>...values) {
-                       entries.append((Object[])values);
+                       for (Class<? extends RestConverter> v : values)
+                               
entries.append(BeanCreator.of(RestConverter.class).type(v));
                        return this;
                }
 
@@ -96,7 +97,8 @@ public class RestConverterList {
                 * @return This object (for method chaining).
                 */
                public Builder append(RestConverter...values) {
-                       entries.append((Object[])values);
+                       for (RestConverter v : values)
+                               
entries.append(BeanCreator.of(RestConverter.class).impl(v));
                        return this;
                }
 
@@ -142,24 +144,15 @@ public class RestConverterList {
         */
        protected RestConverterList(Builder builder) {
                BeanStore bs = builder.beanStore().orElse(BeanStore.INSTANCE);
+               builder.entries.stream().forEach(x -> x.store(bs));
                entries =
                        builder
                                .entries
                                .stream()
-                               .map(x -> instantiate(x, bs))
+                               .map(x -> x.store(bs).run())
                                .toArray(RestConverter[]::new);
        }
 
-       private static RestConverter instantiate(Object o, BeanStore bs) {
-               if (o instanceof RestConverter)
-                       return (RestConverter)o;
-               try {
-                       return 
BeanCreator.create(RestConverter.class).type((Class<?>)o).store(bs).run();
-               } catch (ExecutableException e) {
-                       throw new ConfigException(e, "Could not instantiate 
class {0}", o);
-               }
-       }
-
        /**
         * Returns the contents of this list as a {@link RestConverter} array.
         *
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestGuardList.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestGuardList.java
index 34b7a98..5594805 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestGuardList.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestGuardList.java
@@ -43,7 +43,7 @@ public class RestGuardList {
         */
        public static class Builder extends BeanBuilder<RestGuardList> {
 
-               AList<Object> entries;
+               AList<BeanCreator<RestGuard>> entries;
 
                /**
                 * Constructor.
@@ -85,7 +85,8 @@ public class RestGuardList {
                 */
                @SuppressWarnings("unchecked")
                public Builder append(Class<? extends RestGuard>...values) {
-                       entries.append((Object[])values);
+                       for (Class<? extends RestGuard> v : values)
+                               
entries.append(BeanCreator.of(RestGuard.class).type(v));
                        return this;
                }
 
@@ -96,7 +97,8 @@ public class RestGuardList {
                 * @return This object (for method chaining).
                 */
                public Builder append(RestGuard...values) {
-                       entries.append((Object[])values);
+                       for (RestGuard v : values)
+                               
entries.append(BeanCreator.of(RestGuard.class).impl(v));
                        return this;
                }
 
@@ -146,20 +148,10 @@ public class RestGuardList {
                        builder
                                .entries
                                .stream()
-                               .map(x -> instantiate(x, bs))
+                               .map(x -> x.store(bs).run())
                                .toArray(RestGuard[]::new);
        }
 
-       private static RestGuard instantiate(Object o, BeanStore bs) {
-               if (o instanceof RestGuard)
-                       return (RestGuard)o;
-               try {
-                       return 
BeanCreator.create(RestGuard.class).type((Class<?>)o).store(bs).run();
-               } catch (ExecutableException e) {
-                       throw new ConfigException(e, "Could not instantiate 
class {0}", o);
-               }
-       }
-
        /**
         * Returns the entries in this list.
         *
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcherList.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcherList.java
index 5a33d6a..40f9e35 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcherList.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestMatcherList.java
@@ -47,7 +47,7 @@ public class RestMatcherList {
         */
        public static class Builder extends BeanBuilder<RestMatcherList> {
 
-               AList<Object> entries;
+               AList<BeanCreator<RestMatcher>> entries;
 
                /**
                 * Constructor.
@@ -89,7 +89,8 @@ public class RestMatcherList {
                 */
                @SuppressWarnings("unchecked")
                public Builder append(Class<? extends RestMatcher>...values) {
-                       entries.append((Object[])values);
+                       for (Class<? extends RestMatcher> v : values)
+                               
entries.append(BeanCreator.of(RestMatcher.class).type(v));
                        return this;
                }
 
@@ -100,7 +101,8 @@ public class RestMatcherList {
                 * @return This object (for method chaining).
                 */
                public Builder append(RestMatcher...values) {
-                       entries.append((Object[])values);
+                       for (RestMatcher v : values)
+                               
entries.append(BeanCreator.of(RestMatcher.class).impl(v));
                        return this;
                }
 
@@ -151,22 +153,12 @@ public class RestMatcherList {
                        builder
                                .entries
                                .stream()
-                               .map(x -> instantiate(x, bs))
+                               .map(x -> x.store(bs).run())
                                .collect(toList());
                optionalEntries = l.stream().filter(x -> ! 
x.required()).toArray(RestMatcher[]::new);
                requiredEntries = l.stream().filter(x -> 
x.required()).toArray(RestMatcher[]::new);
        }
 
-       private static RestMatcher instantiate(Object o, BeanStore bs) {
-               if (o instanceof RestMatcher)
-                       return (RestMatcher)o;
-               try {
-                       return 
BeanCreator.create(RestMatcher.class).type((Class<?>)o).store(bs).run();
-               } catch (ExecutableException e) {
-                       throw new ConfigException(e, "Could not instantiate 
class {0}", o);
-               }
-       }
-
        /**
         * Returns the entries in this list that are specified as optional.
         *
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
index f2a0cf5..f1716b6 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
@@ -96,7 +96,7 @@ public class RestOpContextBuilder extends ContextBuilder {
        @Override /* BeanContextBuilder */
        public RestOpContext build() {
                try {
-                       return 
BeanCreator.create(RestOpContext.class).type(getType().orElse(getDefaultImplClass())).store(beanStore).builder(this).run();
+                       return 
BeanCreator.of(RestOpContext.class).type(getType().orElse(getDefaultImplClass())).store(beanStore).builder(this).run();
                } catch (Exception e) {
                        throw toHttpException(e, InternalServerError.class);
                }
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 e064ba6..2607b9d 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,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
-import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 
 import java.util.*;
@@ -61,14 +60,13 @@ public interface SwaggerProvider {
         */
        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;
+               BeanCreator<SwaggerProvider> creator = 
BeanCreator.of(SwaggerProvider.class).type(BasicSwaggerProvider.class).builder(this);
 
                /**
                 * Constructor.
@@ -81,14 +79,12 @@ public interface SwaggerProvider {
                 * @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;
+                       creator = copyFrom.creator.copy();
                }
                /**
                 * Creates a new {@link SwaggerProvider} object from this 
builder.
@@ -101,9 +97,7 @@ public interface SwaggerProvider {
                 */
                public SwaggerProvider build() {
                        try {
-                               if (impl != null)
-                                       return impl;
-                               return 
BeanCreator.create(SwaggerProvider.class).type(isConcrete(type) ? type : 
getDefaultType()).store(beanStore).builder(this).run();
+                               return creator.run();
                        } catch (Exception e) {
                                throw toHttpException(e, 
InternalServerError.class);
                        }
@@ -161,6 +155,7 @@ public interface SwaggerProvider {
                 * @return  This object.
                 */
                public Builder beanStore(BeanStore value) {
+                       creator.store(value);
                        beanStore = value;
                        return this;
                }
@@ -172,7 +167,7 @@ public interface SwaggerProvider {
                 * @return  This object.
                 */
                public Builder type(Class<? extends SwaggerProvider> value) {
-                       type = value;
+                       creator.type(value == null ? BasicSwaggerProvider.class 
: value);
                        return this;
                }
 
@@ -227,7 +222,7 @@ public interface SwaggerProvider {
                 * @return  This object.
                 */
                public Builder impl(SwaggerProvider value) {
-                       impl = value;
+                       creator.impl(value);
                        return this;
                }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/cp/BeanCreator_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/cp/BeanCreator_Test.java
index bdd0021..c89f24a 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/cp/BeanCreator_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/cp/BeanCreator_Test.java
@@ -35,8 +35,8 @@ public class BeanCreator_Test {
 
        @Test
        public void a01_basic() {
-               assertObject(create(A1.class).run()).isNotNull();
-               assertObject(create(null).run()).isNull();
+               assertObject(of(A1.class).run()).isNotNull();
+               assertObject(of(null).run()).isNull();
        }
 
        public class A2 {}
@@ -44,7 +44,7 @@ public class BeanCreator_Test {
        @Test
        public void a02_outer() {
                BeanCreator_Test outer = new BeanCreator_Test();
-               assertObject(create(A2.class).outer(outer).run()).isNotNull();
+               assertObject(of(A2.class).outer(outer).run()).isNotNull();
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
@@ -62,7 +62,7 @@ public class BeanCreator_Test {
 
        @Test
        public void b01_staticCreator_create() {
-               assertString(create(B1.class).run().a).is("foo");
+               assertString(of(B1.class).run().a).is("foo");
 
        }
 
@@ -77,7 +77,7 @@ public class BeanCreator_Test {
 
        @Test
        public void b02_staticCreator_getInstance() {
-               assertString(create(B2.class).run().a).is("foo");
+               assertString(of(B2.class).run().a).is("foo");
        }
 
        public static class B3a {
@@ -188,7 +188,7 @@ public class BeanCreator_Test {
 
        @Test
        public void b05_staticCreator_ignoredWithBuilder() {
-               assertString(create(B5.class).builder("bar").run().a).is("bar");
+               assertString(of(B5.class).builder("bar").run().a).is("bar");
        }
 
        public static class B6 {
@@ -239,8 +239,8 @@ public class BeanCreator_Test {
 
        @Test
        public void c01_staticCreator_withBeans() {
-               assertThrown(()->create(C1.class).run()).message().is("Could 
not instantiate class "+C1.class.getName()+": Class is abstract.");
-               assertThrown(()->create(C2.class).run()).message().is("Could 
not instantiate class "+C2.class.getName()+": Class is an interface.");
+               assertThrown(()->of(C1.class).run()).message().is("Could not 
instantiate class "+C1.class.getName()+": Class is abstract.");
+               assertThrown(()->of(C2.class).run()).message().is("Could not 
instantiate class "+C2.class.getName()+": Class is an interface.");
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
@@ -322,7 +322,7 @@ public class BeanCreator_Test {
 
        @Test
        public void d04_constructors_private() {
-               assertThrown(()->create(D4.class).run()).message().is("Could 
not instantiate class "+D4.class.getName()+": No public/protected constructors 
found.");
+               assertThrown(()->of(D4.class).run()).message().is("Could not 
instantiate class "+D4.class.getName()+": No public/protected constructors 
found.");
        }
 
        public static class D5 {

Reply via email to