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 af8618e PropertyStore refactoring.
af8618e is described below
commit af8618e5598f1fce9f2d068f68525690aa2c125f
Author: JamesBognar <[email protected]>
AuthorDate: Sun Feb 7 15:41:24 2021 -0500
PropertyStore refactoring.
---
.../main/java/org/apache/juneau/PropertyStore.java | 34 ++++++
.../java/org/apache/juneau/rest/RestContext.java | 115 +++++----------------
2 files changed, 62 insertions(+), 87 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
index b996166..7987a28 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyStore.java
@@ -282,6 +282,40 @@ public final class PropertyStore {
}
/**
+ * Returns the raw property value with the specified name if the
property value type is the one specified.
+ *
+ * @param key The property name.
+ * @param c The expected property type.
+ * @return The property value, never <jk>null</jk>j.
+ */
+ public <T> Optional<T> getIfType(String key, Class<T> c) {
+ Property p = findProperty(key);
+ if (p != null) {
+ Object o = p.value;
+ if (c.isInstance(o))
+ Optional.of((T)o);
+ }
+ return Optional.empty();
+ }
+
+ /**
+ * Returns the raw property value with the specified name if the
property value is a class.
+ *
+ * @param key The property name.
+ * @param c The expected property type.
+ * @return The property value, never <jk>null</jk>j.
+ */
+ public <T> Optional<Class<T>> getIfClass(String key, Class<T> c) {
+ Property p = findProperty(key);
+ if (p != null) {
+ Object o = p.value;
+ if (Class.class.isInstance(o))
+ return Optional.of((Class<T>)o);
+ }
+ return Optional.empty();
+ }
+
+ /**
* Returns the property value with the specified name.
*
* @param key The property name.
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 53e5d22..92a8e86 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
@@ -3662,9 +3662,8 @@ public class RestContext extends BeanContext {
if (resource instanceof BeanFactory)
x = (BeanFactory)resource;
- Object o = properties.get(REST_beanFactory);
- if (o instanceof BeanFactory)
- x = (BeanFactory)o;
+ if (x == null)
+ x = properties.getIfType(REST_beanFactory,
BeanFactory.class).orElse(null);
if (x == null)
x = createBeanFactoryBuilder(resource, properties,
parent).build();
@@ -3694,14 +3693,9 @@ public class RestContext extends BeanContext {
* @return The bean factory builder for this REST resource.
* @throws Exception If bean factory could not be instantiated.
*/
- @SuppressWarnings("unchecked")
protected BeanFactoryBuilder createBeanFactoryBuilder(Object resource,
PropertyStore properties, RestContext parent) throws Exception {
- Class<? extends BeanFactory> c = null;
-
- Object o = properties.get(REST_beanFactory);
- if (o instanceof Class)
- c = (Class<? extends BeanFactory>)o;
+ Class<? extends BeanFactory> c =
properties.getIfClass(REST_beanFactory, BeanFactory.class).orElse(null);
BeanFactory root = parent == null ? null :
parent.rootBeanFactory;
@@ -3792,18 +3786,14 @@ public class RestContext extends BeanContext {
if (resource instanceof FileFinder)
x = (FileFinder)resource;
- Object o = properties.get(REST_fileFinder);
- if (o instanceof FileFinder)
- x = (FileFinder)o;
+ if (x == null)
+ x = properties.getIfType(REST_fileFinder,
FileFinder.class).orElse(null);
if (x == null)
x = beanFactory.getBean(FileFinder.class).orElse(null);
- if (x == null) {
- o = properties.get(REST_fileFinderDefault);
- if (o instanceof FileFinder)
- x = (FileFinder)o;
- }
+ if (x == null)
+ x = properties.getIfType(REST_fileFinderDefault,
FileFinder.class).orElse(null);
if (x == null)
x = createFileFinderBuilder(resource, properties,
beanFactory).build();
@@ -3836,23 +3826,12 @@ public class RestContext extends BeanContext {
* @return The file finder builder for this REST resource.
* @throws Exception If file finder builder could not be instantiated.
*/
- @SuppressWarnings("unchecked")
protected FileFinderBuilder createFileFinderBuilder(Object resource,
PropertyStore properties, BeanFactory beanFactory) throws Exception {
- Class<? extends FileFinder> c = null;
-
- Object o = properties.get(REST_fileFinder);
- if (o instanceof Class)
- c = (Class<? extends FileFinder>)o;
-
- if (c == null) {
- o = properties.get(REST_fileFinderDefault);
- if (o instanceof Class)
- c = (Class<? extends FileFinder>)o;
- }
+ Class<? extends FileFinder> c =
properties.getIfClass(REST_fileFinder, FileFinder.class).orElse(null);
if (c == null)
- c = BasicFileFinder.class;
+ c = properties.getIfClass(REST_fileFinderDefault,
FileFinder.class).orElse(null);
FileFinderBuilder x = FileFinder
.create()
@@ -3923,16 +3902,14 @@ public class RestContext extends BeanContext {
if (resource instanceof StaticFiles)
x = (StaticFiles)resource;
- Object o = properties.get(REST_staticFiles);
- if (o instanceof StaticFiles)
- x = (StaticFiles)o;
+ if (x == null)
+ x = properties.getIfType(REST_staticFiles,
StaticFiles.class).orElse(null);
if (x == null)
x = beanFactory.getBean(StaticFiles.class).orElse(null);
- o = properties.get(REST_staticFilesDefault);
- if (o instanceof StaticFiles)
- x = (StaticFiles)o;
+ if (x == null)
+ x = properties.getIfType(REST_staticFilesDefault,
StaticFiles.class).orElse(null);
if (x == null)
x = (StaticFiles)createStaticFilesBuilder(resource,
properties, beanFactory).build();
@@ -3968,17 +3945,10 @@ public class RestContext extends BeanContext {
@SuppressWarnings("unchecked")
protected StaticFilesBuilder createStaticFilesBuilder(Object resource,
PropertyStore properties, BeanFactory beanFactory) throws Exception {
- Class<? extends StaticFiles> c = null;
+ Class<? extends StaticFiles> c =
properties.getIfClass(REST_staticFiles, StaticFiles.class).orElse(null);
- Object o = properties.get(REST_staticFiles);
- if (o instanceof Class)
- c = (Class<? extends StaticFiles>)o;
-
- if (c == null) {
- o = properties.get(REST_staticFilesDefault);
- if (o instanceof Class)
- c = (Class<? extends StaticFiles>)o;
- }
+ if (c == null)
+ c = properties.getIfClass(REST_staticFilesDefault,
StaticFiles.class).orElse(null);
StaticFilesBuilder x = StaticFiles
.create()
@@ -4056,18 +4026,14 @@ public class RestContext extends BeanContext {
if (resource instanceof RestLogger)
x = (RestLogger)resource;
- Object o = properties.get(REST_callLogger);
- if (o instanceof RestLogger)
- x = (RestLogger)o;
+ if (x == null)
+ x = properties.getIfType(REST_callLogger,
RestLogger.class).orElse(null);
if (x == null)
x = beanFactory.getBean(RestLogger.class).orElse(null);
- if (x == null) {
- o = properties.get(REST_callLoggerDefault);
- if (o instanceof RestLogger)
- x = (RestLogger)o;
- }
+ if (x == null)
+ x = properties.getIfType(REST_callLoggerDefault,
RestLogger.class).orElse(null);
if (x == null)
x = createCallLoggerBuilder(resource, properties,
beanFactory, logger, thrownStore).build();
@@ -4106,23 +4072,12 @@ public class RestContext extends BeanContext {
* @return The call logger builder for this REST resource.
* @throws Exception If call logger builder could not be instantiated.
*/
- @SuppressWarnings("unchecked")
protected RestLoggerBuilder createCallLoggerBuilder(Object resource,
PropertyStore properties, BeanFactory beanFactory, Logger logger, ThrownStore
thrownStore) throws Exception {
- Class<? extends RestLogger> c = null;
-
- Object o = properties.get(REST_callLogger);
- if (o instanceof Class)
- c = (Class<? extends RestLogger>)o;
-
- if (c == null) {
- o = properties.get(REST_callLoggerDefault);
- if (o instanceof Class)
- c = (Class<? extends RestLogger>)o;
- }
+ Class<? extends RestLogger> c =
properties.getIfClass(REST_callLogger, RestLogger.class).orElse(null);
if (c == null)
- c = BasicRestLogger.class;
+ c = properties.getIfClass(REST_callLoggerDefault,
RestLogger.class).orElse(null);
RestLoggerBuilder x = RestLogger
.create()
@@ -4856,9 +4811,8 @@ public class RestContext extends BeanContext {
if (x == null)
x =
beanFactory.getBean(SwaggerProvider.class).orElse(null);
- Object o = properties.get(REST_swaggerProvider);
- if (o instanceof SwaggerProvider)
- x = (SwaggerProvider)o;
+ if (x == null)
+ x = properties.getIfType(REST_swaggerProvider,
SwaggerProvider.class).orElse(null);
if (x == null)
x = createSwaggerProviderBuilder(resource, properties,
beanFactory, fileFinder, messages, varResolver).build();
@@ -4894,13 +4848,9 @@ public class RestContext extends BeanContext {
* @return The REST API builder for this REST resource.
* @throws Exception If REST API builder could not be instantiated.
*/
- @SuppressWarnings("unchecked")
protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object
resource, PropertyStore properties, BeanFactory beanFactory, FileFinder
fileFinder, Messages messages, VarResolver varResolver) throws Exception {
- Class<? extends SwaggerProvider> c = null;
- Object o = properties.get(REST_swaggerProvider);
- if (o instanceof Class)
- c = (Class<? extends SwaggerProvider>)o;
+ Class<? extends SwaggerProvider> c =
properties.getIfClass(REST_swaggerProvider, SwaggerProvider.class).orElse(null);
SwaggerProviderBuilder x = SwaggerProvider
.create()
@@ -5305,9 +5255,8 @@ public class RestContext extends BeanContext {
if (resource instanceof DebugEnablement)
x = (DebugEnablement)resource;
- Object o = properties.get(REST_debugEnablement);
- if (o instanceof DebugEnablement)
- x = (DebugEnablement)o;
+ if (x == null)
+ x = properties.getIfType(REST_debugEnablement,
DebugEnablement.class).orElse(null);
if (x == null)
x =
beanFactory.getBean(DebugEnablement.class).orElse(null);
@@ -5340,17 +5289,9 @@ public class RestContext extends BeanContext {
* @return The debug enablement bean builder for this REST object.
* @throws Exception If bean builder could not be created.
*/
- @SuppressWarnings("unchecked")
protected DebugEnablementBuilder createDebugEnablementBuilder(Object
resource, PropertyStore properties, BeanFactory beanFactory) throws Exception {
- Class<? extends DebugEnablement> c = null;
-
- Object o = properties.get(REST_debugEnablement);
- if (o instanceof Class)
- c = (Class<? extends DebugEnablement>)o;
-
- if (c == null)
- c = BasicDebugEnablement.class;
+ Class<? extends DebugEnablement> c =
properties.getIfClass(REST_debugEnablement, DebugEnablement.class).orElse(null);
DebugEnablementBuilder x = DebugEnablement
.create()