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 <[email protected]>
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>, 
()-&gt;<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);

Reply via email to