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>, ()-&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);