You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2022/09/03 15:30:55 UTC
[juneau] branch master updated: Simplify NamedAttributeList.
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 2040ae973 Simplify NamedAttributeList.
2040ae973 is described below
commit 2040ae97357a99306a6c5e80775359fdbfe66b96
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Sat Sep 3 11:30:35 2022 -0400
Simplify NamedAttributeList.
---
.../java/org/apache/juneau/rest/RestContext.java | 31 +++--
.../java/org/apache/juneau/rest/RestOpContext.java | 23 ++--
.../apache/juneau/rest/annotation/RestInject.java | 2 +-
...edAttributeList.java => NamedAttributeMap.java} | 128 ++++++---------------
.../juneau/rest/httppart/RequestAttributes.java | 6 +-
5 files changed, 64 insertions(+), 126 deletions(-)
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 8e92629a7..61ad5b44b 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
@@ -254,8 +254,7 @@ public class RestContext extends Context {
private JsonSchemaGenerator.Builder jsonSchemaGenerator;
private BeanCreator<StaticFiles> staticFiles;
private HeaderList defaultRequestHeaders, defaultResponseHeaders;
- private NamedAttributeList.Builder defaultRequestAttributes;
- private int TODO;
+ private NamedAttributeMap defaultRequestAttributes;
private RestOpArgList.Builder restOpArgs;
private BeanCreator<DebugEnablement> debugEnablement;
private MethodList startCallMethods, endCallMethods, postInitMethods, postInitChildFirstMethods, destroyMethods, preCallMethods, postCallMethods;
@@ -3034,7 +3033,7 @@ public class RestContext extends Context {
*
* @return The default request attributes sub-builder.
*/
- public NamedAttributeList.Builder defaultRequestAttributes() {
+ public NamedAttributeMap defaultRequestAttributes() {
if (defaultRequestAttributes == null)
defaultRequestAttributes = createDefaultRequestAttributes(beanStore(), resource());
return defaultRequestAttributes;
@@ -3103,23 +3102,23 @@ public class RestContext extends Context {
* The REST servlet/bean instance that this context is defined against.
* @return A new default request attributes sub-builder.
*/
- protected NamedAttributeList.Builder createDefaultRequestAttributes(BeanStore beanStore, Supplier<?> resource) {
+ protected NamedAttributeMap createDefaultRequestAttributes(BeanStore beanStore, Supplier<?> resource) {
// Default value.
- Value<NamedAttributeList.Builder> v = Value.of(
- NamedAttributeList.create()
+ Value<NamedAttributeMap> v = Value.of(
+ NamedAttributeMap.create()
);
beanStore
- .getBean(NamedAttributeList.class, "defaultRequestAttributes")
- .ifPresent(x -> v.get().impl(x));
+ .getBean(NamedAttributeMap.class, "defaultRequestAttributes")
+ .ifPresent(x -> v.set(x));
- // Replace with bean from: @RestInject(name="defaultRequestAttributes") public [static] NamedAttributeList xxx(<args>)
+ // Replace with bean from: @RestInject(name="defaultRequestAttributes") public [static] NamedAttributeMap xxx(<args>)
beanStore
- .createMethodFinder(NamedAttributeList.class)
- .addBean(NamedAttributeList.Builder.class, v.get())
+ .createMethodFinder(NamedAttributeMap.class)
+ .addBean(NamedAttributeMap.class, v.get())
.find(x -> isRestBeanMethod(x, "defaultRequestAttributes"))
- .run(x -> v.get().impl(x));
+ .run(x -> v.set(x));
return v.get();
}
@@ -5023,7 +5022,7 @@ public class RestContext extends Context {
*
* <jc>// Override the method used to create default request attributes.</jc>
* <ja>@Override</ja>
- * <jk>protected</jk> NamedAttributeList createDefaultRequestAttributes(Object <jv>resource</jv>, BeanStore <jv>beanStore</jv>, Method <jv>method</jv>, RestContext <jv>context</jv>) <jk>throws</jk> Exception {
+ * <jk>protected</jk> NamedAttributeMap createDefaultRequestAttributes(Object <jv>resource</jv>, BeanStore <jv>beanStore</jv>, Method <jv>method</jv>, RestContext <jv>context</jv>) <jk>throws</jk> Exception {
* <jk>return super</jk>
* .createDefaultRequestAttributes(<jv>resource</jv>, <jv>beanStore</jv>, <jv>method</jv>, <jv>context</jv>)
* .append(NamedAttribute.<jsm>of</jsm>(<js>"foo"</js>, ()-><jf>fooSupplier</jf>.get());
@@ -5397,7 +5396,7 @@ public class RestContext extends Context {
private final JsonSchemaGenerator jsonSchemaGenerator;
private final List<MediaType> consumes, produces;
private final HeaderList defaultRequestHeaders, defaultResponseHeaders;
- private final NamedAttributeList defaultRequestAttributes;
+ private final NamedAttributeMap defaultRequestAttributes;
private final ResponseProcessor[] responseProcessors;
private final Messages messages;
private final Config config;
@@ -5516,7 +5515,7 @@ public class RestContext extends Context {
bs.add(FileFinder.class, staticFiles);
defaultRequestHeaders = bs.add(HeaderList.class, builder.defaultRequestHeaders(), "defaultRequestHeaders");
defaultResponseHeaders = bs.add(HeaderList.class, builder.defaultResponseHeaders(), "defaultResponseHeaders");
- defaultRequestAttributes = bs.add(NamedAttributeList.class, builder.defaultRequestAttributes().build(), "defaultRequestAttributes");
+ defaultRequestAttributes = bs.add(NamedAttributeMap.class, builder.defaultRequestAttributes(), "defaultRequestAttributes");
restOpArgs = builder.restOpArgs().build().asArray();
debugEnablement = bs.add(DebugEnablement.class, builder.debugEnablement().orElse(null));
startCallMethods = builder.startCallMethods().stream().map(this::toMethodInvoker).toArray(MethodInvoker[]::new);
@@ -6035,7 +6034,7 @@ public class RestContext extends Context {
* The default request headers for this resource in an unmodifiable list.
* <br>Never <jk>null</jk>.
*/
- public NamedAttributeList getDefaultRequestAttributes() {
+ public NamedAttributeMap getDefaultRequestAttributes() {
return defaultRequestAttributes;
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index ee99b730d..3b4b9a8c6 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -123,8 +123,7 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
private JsonSchemaGenerator.Builder jsonSchemaGenerator;
PartList defaultRequestFormData, defaultRequestQueryData;
- NamedAttributeList.Builder defaultRequestAttributes;
- private int TODO;
+ NamedAttributeMap defaultRequestAttributes;
HeaderList defaultRequestHeaders, defaultResponseHeaders;
RestMatcherList.Builder restMatchers;
List<MediaType> produces, consumes;
@@ -1455,7 +1454,7 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
*
* @return The default request attributes sub-builder.
*/
- public NamedAttributeList.Builder defaultRequestAttributes() {
+ public NamedAttributeMap defaultRequestAttributes() {
if (defaultRequestAttributes == null)
defaultRequestAttributes = createDefaultRequestAttributes(beanStore(), parent, resource());
return defaultRequestAttributes;
@@ -1489,19 +1488,19 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
* The REST servlet/bean instance that this context is defined against.
* @return A new default request attributes sub-builder.
*/
- protected NamedAttributeList.Builder createDefaultRequestAttributes(BeanStore beanStore, RestContext.Builder parent, Supplier<?> resource) {
+ protected NamedAttributeMap createDefaultRequestAttributes(BeanStore beanStore, RestContext.Builder parent, Supplier<?> resource) {
- Value<NamedAttributeList.Builder> v = Value.of(
+ Value<NamedAttributeMap> v = Value.of(
parent.defaultRequestAttributes().copy()
);
- // Replace with bean from: @RestInject(name="defaultRequestAttributes",methodScope="foo") public [static] NamedAttributeList xxx(<args>)
+ // Replace with bean from: @RestInject(name="defaultRequestAttributes",methodScope="foo") public [static] NamedAttributeMap xxx(<args>)
BeanStore
.of(beanStore, resource)
- .addBean(NamedAttributeList.Builder.class, v.get())
- .createMethodFinder(NamedAttributeList.class, resource)
+ .addBean(NamedAttributeMap.class, v.get())
+ .createMethodFinder(NamedAttributeMap.class, resource)
.find(x -> matches(x, "defaultRequestAttributes"))
- .run(x -> v.get().impl(x));
+ .run(x -> v.set(x));
return v.get();
}
@@ -2241,7 +2240,7 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
private final JsonSchemaGenerator jsonSchemaGenerator;
private final HeaderList defaultRequestHeaders, defaultResponseHeaders;
private final PartList defaultRequestQueryData, defaultRequestFormData;
- private final NamedAttributeList defaultRequestAttributes;
+ private final NamedAttributeMap defaultRequestAttributes;
private final Charset defaultCharset;
private final long maxInput;
private final List<MediaType>
@@ -2306,7 +2305,7 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
defaultResponseHeaders = builder.defaultResponseHeaders();
defaultRequestQueryData = builder.defaultRequestQueryData();
defaultRequestFormData = builder.defaultRequestFormData();
- defaultRequestAttributes = builder.defaultRequestAttributes().build();
+ defaultRequestAttributes = builder.defaultRequestAttributes();
int _hierarchyDepth = 0;
Class<?> sc = method.getDeclaringClass().getSuperclass();
@@ -2553,7 +2552,7 @@ public class RestOpContext extends Context implements Comparable<RestOpContext>
*
* @return The default request attributes. Never <jk>null</jk>.
*/
- public NamedAttributeList getDefaultRequestAttributes() {
+ public NamedAttributeMap getDefaultRequestAttributes() {
return defaultRequestAttributes;
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
index ec60d38d0..4206d274a 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
@@ -152,7 +152,7 @@ import org.apache.juneau.svl.*;
* <tr><td>{@link Messages}<br>{@link org.apache.juneau.cp.Messages.Builder}</td><td></td><td>class</td></tr>
* <tr><td>{@link MethodExecStore}<br>{@link org.apache.juneau.rest.stats.MethodExecStore.Builder}</td><td></td><td>class</td></tr>
* <tr><td>{@link MethodList}</td><td><js>"destroyMethods"</js><br><js>"endCallMethods"</js><br><js>"postCallMethods"</js><br><js>"postInitChildFirstMethods"</js><br><js>"postInitMethods"</js><br><js>"preCallMethods"</js><br><js>"startCallMethods"</js></td><td>class</td></tr>
- * <tr><td>{@link NamedAttributeList}<br>{@link org.apache.juneau.rest.httppart.NamedAttributeList.Builder}</td><td><js>"defaultRequestAttributes"</js></td><td>class<br>method</td></tr>
+ * <tr><td>{@link NamedAttributeMap}<br>{@link org.apache.juneau.rest.httppart.NamedAttributeMap}</td><td><js>"defaultRequestAttributes"</js></td><td>class<br>method</td></tr>
* <tr><td>{@link ParserSet}<br>{@link org.apache.juneau.parser.ParserSet.Builder}</td><td></td><td>class<br>method</td></tr>
* <tr><td>{@link PartList}<br>{@link org.apache.juneau.http.part.PartList}</td><td><js>"defaultRequestQueryData"</js><br><js>"defaultRequestFormData"</js></td><td>method</td></tr>
* <tr><td>{@link ResponseProcessorList}<br>{@link org.apache.juneau.rest.processor.ResponseProcessorList.Builder}</td><td></td><td>class</td></tr>
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/NamedAttributeList.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/NamedAttributeMap.java
similarity index 53%
rename from juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/NamedAttributeList.java
rename to juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/NamedAttributeMap.java
index fff0c4090..9124965e3 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/NamedAttributeList.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/NamedAttributeMap.java
@@ -12,14 +12,8 @@
// ***************************************************************************************************************************
package org.apache.juneau.rest.httppart;
-import static org.apache.juneau.internal.CollectionUtils.*;
-
import java.util.*;
-import org.apache.juneau.*;
-import org.apache.juneau.cp.*;
-import org.apache.juneau.internal.*;
-
/**
* A list of {@link NamedAttribute} objects.
*
@@ -28,19 +22,21 @@ import org.apache.juneau.internal.*;
* <li class='extlink'>{@source}
* </ul>
*/
-public class NamedAttributeList {
+public class NamedAttributeMap extends LinkedHashMap<String,NamedAttribute> {
//-----------------------------------------------------------------------------------------------------------------
// Static
//-----------------------------------------------------------------------------------------------------------------
+ private static final long serialVersionUID = 1L;
+
/**
* Static creator.
*
* @return An empty list.
*/
- public static Builder create() {
- return new Builder();
+ public static NamedAttributeMap create() {
+ return new NamedAttributeMap();
}
/**
@@ -49,108 +45,52 @@ public class NamedAttributeList {
* @param values The initial contents of this list.
* @return An empty list.
*/
- public static NamedAttributeList of(NamedAttribute...values) {
- return create().add(values).build();
+ public static NamedAttributeMap of(NamedAttribute...values) {
+ return create().add(values);
}
//-----------------------------------------------------------------------------------------------------------------
- // Builder
+ // Instance
//-----------------------------------------------------------------------------------------------------------------
/**
- * Builder class.
+ * Constructor.
*/
- @FluentSetters
- public static class Builder extends BeanBuilder<NamedAttributeList> {
-
- Map<String,NamedAttribute> entries;
-
- /**
- * Constructor.
- */
- protected Builder() {
- super(NamedAttributeList.class, BeanStore.INSTANCE);
- entries = map();
- }
-
- /**
- * Copy constructor.
- *
- * @param copyFrom The builder being copied.
- */
- protected Builder(Builder copyFrom) {
- super(copyFrom);
- entries = copyOf(copyFrom.entries);
- }
-
- @Override /* BeanBuilder */
- protected NamedAttributeList buildDefault() {
- return new NamedAttributeList(this);
- }
-
- /**
- * Creates a copy of this builder.
- *
- * @return A new copy of this builder.
- */
- public Builder copy() {
- return new Builder(this);
- }
-
- //-------------------------------------------------------------------------------------------------------------
- // Properties
- //-------------------------------------------------------------------------------------------------------------
-
- /**
- * Appends the specified rest matcher classes to the list.
- *
- * @param values The values to add.
- * @return This object.
- */
- public Builder add(NamedAttribute...values) {
- for (NamedAttribute v : values)
- entries.put(v.getName(), v);
- return this;
- }
-
- // <FluentSetters>
-
- @Override /* GENERATED - org.apache.juneau.BeanBuilder */
- public Builder impl(Object value) {
- super.impl(value);
- return this;
- }
-
- @Override /* GENERATED - org.apache.juneau.BeanBuilder */
- public Builder type(Class<?> value) {
- super.type(value);
- return this;
- }
-
- // </FluentSetters>
+ public NamedAttributeMap() {
}
- //-----------------------------------------------------------------------------------------------------------------
- // Instance
- //-----------------------------------------------------------------------------------------------------------------
-
- final NamedAttribute[] entries;
-
/**
- * Constructor.
+ * Copy constructor.
*
- * @param b The builder of this object.
+ * @param copyFrom The list to copy from.
*/
- public NamedAttributeList(Builder b) {
- entries = b.entries.values().toArray(new NamedAttribute[b.entries.size()]);
+ public NamedAttributeMap(NamedAttributeMap copyFrom) {
+ super();
+ putAll(copyFrom);
}
/**
- * Returns a copy of this list.
+ * Creates a copy of this list.
*
* @return A new copy of this list.
*/
- public Builder copy() {
- return copy().add(entries);
+ public NamedAttributeMap copy() {
+ return new NamedAttributeMap(this);
+ }
+
+ //-------------------------------------------------------------------------------------------------------------
+ // Properties
+ //-------------------------------------------------------------------------------------------------------------
+
+ /**
+ * Appends the specified rest matcher classes to the list.
+ *
+ * @param values The values to add.
+ * @return This object.
+ */
+ public NamedAttributeMap add(NamedAttribute...values) {
+ for (NamedAttribute v : values)
+ put(v.getName(), v);
+ return this;
}
}
diff --git a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
index 3f193e067..6b2e7d88b 100644
--- a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
+++ b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestAttributes.java
@@ -66,7 +66,7 @@ import org.apache.juneau.svl.*;
* <ul class='javatreec'>
* <li class='jm'>{@link RequestAttributes#addDefault(List) addDefault(List)}
* <li class='jm'>{@link RequestAttributes#addDefault(NamedAttribute...) addDefault(NamedAttribute...)}
- * <li class='jm'>{@link RequestAttributes#addDefault(NamedAttributeList) addDefault(NamedAttributeList)}
+ * <li class='jm'>{@link RequestAttributes#addDefault(NamedAttributeMap) addDefault(NamedAttributeMap)}
* <li class='jm'>{@link RequestAttributes#addDefault(String,Object) addDefault(String,Object)}
* <li class='jm'>{@link RequestAttributes#remove(NamedAttribute...) remove(NamedAttribute...)}
* <li class='jm'>{@link RequestAttributes#remove(String...) remove(String...)}
@@ -133,8 +133,8 @@ public class RequestAttributes {
* <br>Can be <jk>null</jk>.
* @return This object.
*/
- public RequestAttributes addDefault(NamedAttributeList pairs) {
- for (NamedAttribute p : pairs.entries)
+ public RequestAttributes addDefault(NamedAttributeMap pairs) {
+ for (NamedAttribute p : pairs.values())
if (sreq.getAttribute(p.getName()) == null) {
Object o = p.getValue();
sreq.setAttribute(p.getName(), o instanceof String ? vs.resolve(o) : o);