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 16:06:44 UTC

[juneau] branch master updated: Simplify BasicStatusLine

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 198786856 Simplify BasicStatusLine
198786856 is described below

commit 198786856f5210726f7ca047801ae15aacb9eb3a
Author: JamesBognar <ja...@salesforce.com>
AuthorDate: Sat Sep 3 12:06:22 2022 -0400

    Simplify BasicStatusLine
---
 .../org/apache/juneau/http/BasicStatusLine.java    | 259 +++++++++------------
 .../org/apache/juneau/http/response/Accepted.java  |   4 +-
 .../juneau/http/response/AlreadyReported.java      |   4 +-
 .../apache/juneau/http/response/BadRequest.java    |   4 +-
 .../juneau/http/response/BasicHttpException.java   |  41 +---
 .../juneau/http/response/BasicHttpResponse.java    |  41 +---
 .../org/apache/juneau/http/response/Conflict.java  |   4 +-
 .../org/apache/juneau/http/response/Continue.java  |   4 +-
 .../org/apache/juneau/http/response/Created.java   |   4 +-
 .../apache/juneau/http/response/EarlyHints.java    |   4 +-
 .../juneau/http/response/ExpectationFailed.java    |   4 +-
 .../juneau/http/response/FailedDependency.java     |   4 +-
 .../org/apache/juneau/http/response/Forbidden.java |   4 +-
 .../org/apache/juneau/http/response/Found.java     |   4 +-
 .../java/org/apache/juneau/http/response/Gone.java |   4 +-
 .../juneau/http/response/HttpExceptionBuilder.java |  29 +--
 .../juneau/http/response/HttpResponseBuilder.java  |  31 +--
 .../http/response/HttpVersionNotSupported.java     |   4 +-
 .../org/apache/juneau/http/response/IMUsed.java    |   4 +-
 .../juneau/http/response/InsufficientStorage.java  |   4 +-
 .../juneau/http/response/InternalServerError.java  |   4 +-
 .../juneau/http/response/LengthRequired.java       |   4 +-
 .../org/apache/juneau/http/response/Locked.java    |   4 +-
 .../apache/juneau/http/response/LoopDetected.java  |   4 +-
 .../juneau/http/response/MethodNotAllowed.java     |   4 +-
 .../juneau/http/response/MisdirectedRequest.java   |   4 +-
 .../juneau/http/response/MovedPermanently.java     |   4 +-
 .../apache/juneau/http/response/MultiStatus.java   |   4 +-
 .../juneau/http/response/MultipleChoices.java      |   4 +-
 .../response/NetworkAuthenticationRequired.java    |   4 +-
 .../org/apache/juneau/http/response/NoContent.java |   4 +-
 .../http/response/NonAuthoritiveInformation.java   |   4 +-
 .../apache/juneau/http/response/NotAcceptable.java |   4 +-
 .../apache/juneau/http/response/NotExtended.java   |   4 +-
 .../org/apache/juneau/http/response/NotFound.java  |   4 +-
 .../juneau/http/response/NotImplemented.java       |   4 +-
 .../apache/juneau/http/response/NotModified.java   |   4 +-
 .../java/org/apache/juneau/http/response/Ok.java   |   4 +-
 .../juneau/http/response/PartialContent.java       |   4 +-
 .../juneau/http/response/PayloadTooLarge.java      |   4 +-
 .../juneau/http/response/PermanentRedirect.java    |   4 +-
 .../juneau/http/response/PreconditionFailed.java   |   4 +-
 .../juneau/http/response/PreconditionRequired.java |   4 +-
 .../apache/juneau/http/response/Processing.java    |   4 +-
 .../juneau/http/response/RangeNotSatisfiable.java  |   4 +-
 .../http/response/RequestHeaderFieldsTooLarge.java |   4 +-
 .../apache/juneau/http/response/ResetContent.java  |   4 +-
 .../org/apache/juneau/http/response/SeeOther.java  |   4 +-
 .../juneau/http/response/ServiceUnavailable.java   |   4 +-
 .../juneau/http/response/SwitchingProtocols.java   |   4 +-
 .../juneau/http/response/TemporaryRedirect.java    |   4 +-
 .../juneau/http/response/TooManyRequests.java      |   4 +-
 .../apache/juneau/http/response/Unauthorized.java  |   4 +-
 .../http/response/UnavailableForLegalReasons.java  |   4 +-
 .../juneau/http/response/UnprocessableEntity.java  |   4 +-
 .../juneau/http/response/UnsupportedMediaType.java |   4 +-
 .../juneau/http/response/UpgradeRequired.java      |   4 +-
 .../apache/juneau/http/response/UriTooLong.java    |   4 +-
 .../org/apache/juneau/http/response/UseProxy.java  |   4 +-
 .../http/response/VariantAlsoNegotiates.java       |   4 +-
 60 files changed, 265 insertions(+), 356 deletions(-)

diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
index ed9291338..bde6cc589 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
@@ -37,135 +37,23 @@ public class BasicStatusLine implements StatusLine {
 	//-----------------------------------------------------------------------------------------------------------------
 
 	/**
-	 * Instantiates a new builder for this bean.
+	 * Instantiates a new instance of this bean.
 	 *
-	 * @return A new builder.
+	 * @return A new bean.
 	 */
-	public static Builder create() {
-		return new Builder();
+	public static BasicStatusLine create() {
+		return new BasicStatusLine();
 	}
 
-	//-----------------------------------------------------------------------------------------------------------------
-	// Builder
-	//-----------------------------------------------------------------------------------------------------------------
-
 	/**
-	 * Builder class.
+	 * Instantiates a new instance of this bean.
+	 *
+	 * @param statusCode The initial status code.
+	 * @param reasonPhrase The initial reason phrase.
+	 * @return A new bean.
 	 */
-	@FluentSetters
-	public static class Builder {
-
-		ProtocolVersion protocolVersion;
-		Integer statusCode;
-		String reasonPhrase;
-		Locale locale;
-		ReasonPhraseCatalog reasonPhraseCatalog;
-
-		/**
-		 * Constructor.
-		 */
-		protected Builder() {}
-
-		/**
-		 * Copy constructor.
-		 *
-		 * @param copyFrom The bean to copy.
-		 */
-		protected Builder(BasicStatusLine copyFrom) {
-			protocolVersion = copyFrom.protocolVersion;
-			statusCode = copyFrom.statusCode;
-			reasonPhrase = copyFrom.reasonPhrase;
-			locale = copyFrom.locale;
-		}
-
-		/**
-		 * Creates a new {@link BasicStatusLine} bean based on the contents of this builder.
-		 *
-		 * @return A new {@link BasicStatusLine} bean.
-		 */
-		public BasicStatusLine build() {
-			return new BasicStatusLine(this);
-		}
-
-		/**
-		 * Sets the protocol version on the status line.
-		 *
-		 * <p>
-		 * If not specified, <js>"HTTP/1.1"</js> will be used.
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		@FluentSetter
-		public Builder protocolVersion(ProtocolVersion value) {
-			this.protocolVersion = value;
-			return this;
-		}
-
-		/**
-		 * Sets the status code on the status line.
-		 *
-		 * <p>
-		 * If not specified, <c>0</c> will be used.
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		@FluentSetter
-		public Builder statusCode(int value) {
-			this.statusCode = value;
-			return this;
-		}
-
-		/**
-		 * Sets the reason phrase on the status line.
-		 *
-		 * <p>
-		 * If not specified, the reason phrase will be retrieved from the reason phrase catalog
-		 * using the locale on this builder.
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		@FluentSetter
-		public Builder reasonPhrase(String value) {
-			this.reasonPhrase = value;
-			return this;
-		}
-
-		/**
-		 * Sets the reason phrase catalog used to retrieve reason phrases.
-		 *
-		 * <p>
-		 * If not specified, uses {@link EnglishReasonPhraseCatalog}.
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		@FluentSetter
-		public Builder reasonPhraseCatalog(ReasonPhraseCatalog value) {
-			this.reasonPhraseCatalog = value;
-			return this;
-		}
-
-		/**
-		 * Sets the locale used to retrieve reason phrases.
-		 *
-		 * <p>
-		 * If not specified, uses {@link Locale#getDefault()}.
-		 *
-		 * @param value The new value.
-		 * @return This object.
-		 */
-		@FluentSetter
-		public Builder locale(Locale value) {
-			this.locale = value;
-			return this;
-		}
-
-		// <FluentSetters>
-
-		// </FluentSetters>
+	public static BasicStatusLine create(int statusCode, String reasonPhrase) {
+		return new BasicStatusLine().setStatusCode(statusCode).setReasonPhrase(reasonPhrase);
 	}
 
 	//-----------------------------------------------------------------------------------------------------------------
@@ -174,53 +62,123 @@ public class BasicStatusLine implements StatusLine {
 
 	private ProtocolVersion DEFAULT_PROTOCOL_VERSION = new ProtocolVersion("HTTP", 1, 1);
 
-	final ProtocolVersion protocolVersion;
-	final int statusCode;
-	final String reasonPhrase;
-	final Locale locale;
+	private ProtocolVersion protocolVersion = DEFAULT_PROTOCOL_VERSION;
+	private int statusCode = 0;
+	private String reasonPhrase;
+	private ReasonPhraseCatalog reasonPhraseCatalog;
+	private Locale locale = Locale.getDefault();
 
 	/**
 	 * Constructor.
-	 *
-	 * @param builder The builder containing the settings for this bean.
 	 */
-	public BasicStatusLine(Builder builder) {
-		this.protocolVersion = firstNonNull(builder.protocolVersion, DEFAULT_PROTOCOL_VERSION);
-		this.statusCode = firstNonNull(builder.statusCode, 0);
-		this.locale = firstNonNull(builder.locale, Locale.getDefault());
+	public BasicStatusLine() {
+	}
 
-		String reasonPhrase = builder.reasonPhrase;
-		if (reasonPhrase == null) {
-			ReasonPhraseCatalog rfc = firstNonNull(builder.reasonPhraseCatalog, EnglishReasonPhraseCatalog.INSTANCE);
-			reasonPhrase = rfc.getReason(statusCode, locale);
-		}
-		this.reasonPhrase = reasonPhrase;
+	/**
+	 * Copy constructor.
+	 *
+	 * @param copyFrom The status line being copied.
+	 */
+	protected BasicStatusLine(BasicStatusLine copyFrom) {
+		this.protocolVersion = copyFrom.protocolVersion;
+		this.statusCode = copyFrom.statusCode;
+		this.reasonPhrase = copyFrom.reasonPhrase;
+		this.locale = copyFrom.locale;
 	}
 
 	/**
-	 * Returns a builder initialized with the contents of this bean.
+	 * Returns a copy of this bean.
 	 *
-	 * @return A new builder object.
+	 * @return A copy of this bean.
 	 */
-	public Builder copy() {
-		return new Builder(this);
+	public BasicStatusLine copy() {
+		return new BasicStatusLine(this);
 	}
 
+	//-----------------------------------------------------------------------------------------------------------------
+	// Properties
+	//-----------------------------------------------------------------------------------------------------------------
+
 	@Override /* StatusLine */
 	public ProtocolVersion getProtocolVersion() {
 		return protocolVersion;
 	}
 
+	/**
+	 * Sets the protocol version on the status line.
+	 *
+	 * <p>
+	 * If not specified, <js>"HTTP/1.1"</js> will be used.
+	 *
+	 * @param value The new value.
+	 * @return This object.
+	 */
+	@FluentSetter
+	public BasicStatusLine setProtocolVersion(ProtocolVersion value) {
+		this.protocolVersion = value;
+		return this;
+	}
+
 	@Override /* StatusLine */
 	public int getStatusCode() {
 		return statusCode;
 	}
 
+	/**
+	 * Sets the status code on the status line.
+	 *
+	 * <p>
+	 * If not specified, <c>0</c> will be used.
+	 *
+	 * @param value The new value.
+	 * @return This object.
+	 */
+	@FluentSetter
+	public BasicStatusLine setStatusCode(int value) {
+		this.statusCode = value;
+		return this;
+	}
+
 	@Override /* StatusLine */
 	public String getReasonPhrase() {
+		if (reasonPhrase == null) {
+			ReasonPhraseCatalog rfc = firstNonNull(reasonPhraseCatalog, EnglishReasonPhraseCatalog.INSTANCE);
+			return rfc.getReason(statusCode, locale);
+		}
 		return reasonPhrase;
 	}
 
+	/**
+	 * Sets the reason phrase on the status line.
+	 *
+	 * <p>
+	 * If not specified, the reason phrase will be retrieved from the reason phrase catalog
+	 * using the locale on this bean.
+	 *
+	 * @param value The new value.
+	 * @return This object.
+	 */
+	@FluentSetter
+	public BasicStatusLine setReasonPhrase(String value) {
+		this.reasonPhrase = value;
+		return this;
+	}
+
+	/**
+	 * Sets the reason phrase catalog used to retrieve reason phrases.
+	 *
+	 * <p>
+	 * If not specified, uses {@link EnglishReasonPhraseCatalog}.
+	 *
+	 * @param value The new value.
+	 * @return This object.
+	 */
+	@FluentSetter
+	public BasicStatusLine setReasonPhraseCatalog(ReasonPhraseCatalog value) {
+		this.reasonPhraseCatalog = value;
+		return this;
+	}
+
 	/**
 	 * Returns the locale of this status line.
 	 *
@@ -230,6 +188,21 @@ public class BasicStatusLine implements StatusLine {
 		return locale;
 	}
 
+	/**
+	 * Sets the locale used to retrieve reason phrases.
+	 *
+	 * <p>
+	 * If not specified, uses {@link Locale#getDefault()}.
+	 *
+	 * @param value The new value.
+	 * @return This object.
+	 */
+	@FluentSetter
+	public BasicStatusLine setLocale(Locale value) {
+		this.locale = value;
+		return this;
+	}
+
 	@Override /* Object */
 	public String toString() {
 		return BasicLineFormatter.INSTANCE.formatStatusLine(null, this).toString();
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Accepted.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Accepted.java
index 1efaf623a..82b7dd429 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Accepted.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Accepted.java
@@ -43,7 +43,7 @@ public class Accepted extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Accepted";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Default unmodifiable instance */
 	public static final Accepted INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class Accepted extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<Accepted> create() {
-		return new HttpResponseBuilder<>(Accepted.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(Accepted.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/AlreadyReported.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/AlreadyReported.java
index 6a106e153..7adbf7b26 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/AlreadyReported.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/AlreadyReported.java
@@ -42,7 +42,7 @@ public class AlreadyReported extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Already Reported";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final AlreadyReported INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class AlreadyReported extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<AlreadyReported> create() {
-		return new HttpResponseBuilder<>(AlreadyReported.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(AlreadyReported.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BadRequest.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BadRequest.java
index 560ffa36b..e73294336 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BadRequest.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BadRequest.java
@@ -47,7 +47,7 @@ public class BadRequest extends BasicHttpException {
 	public static final String REASON_PHRASE = "Bad Request";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final BadRequest INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class BadRequest extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<BadRequest> create() {
-		return new HttpExceptionBuilder<>(BadRequest.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(BadRequest.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpException.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
index 26a0639d9..0e254f289 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
@@ -56,9 +56,7 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 	private static final long serialVersionUID = 1L;
 
 	HeaderList headers;
-	BasicStatusLine statusLine;
-	BasicStatusLine.Builder statusLineBuilder;
-	private int TODO;
+	BasicStatusLine statusLine = new BasicStatusLine();
 	HttpEntity content;
 
 	/**
@@ -80,7 +78,7 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 	public BasicHttpException(HttpExceptionBuilder<?> builder) {
 		super(builder);
 		headers = builder.headers;
-		statusLine = builder.buildStatusLine();
+		statusLine = builder.statusLine.copy();
 		content = builder.content;
 	}
 
@@ -222,7 +220,7 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 		if (m == null && getCause() != null)
 			m = getCause().getMessage();
 		if (m == null)
-			m = statusLine().getReasonPhrase();
+			m = statusLine.getReasonPhrase();
 		return m;
 	}
 
@@ -245,7 +243,7 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 
 	@Override /* HttpMessage */
 	public ProtocolVersion getProtocolVersion() {
-		return statusLine().getProtocolVersion();
+		return statusLine.getProtocolVersion();
 	}
 
 	@Override /* HttpMessage */
@@ -331,7 +329,7 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 
 	@Override /* HttpMessage */
 	public StatusLine getStatusLine() {
-		return statusLine();
+		return statusLine;
 	}
 
 	@Override /* HttpMessage */
@@ -341,22 +339,22 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 
 	@Override /* HttpMessage */
 	public void setStatusLine(ProtocolVersion ver, int code) {
-		statusLineBuilder().protocolVersion(ver).statusCode(code).build();
+		statusLine.setProtocolVersion(ver).setStatusCode(code);
 	}
 
 	@Override /* HttpMessage */
 	public void setStatusLine(ProtocolVersion ver, int code, String reason) {
-		statusLineBuilder().protocolVersion(ver).reasonPhrase(reason).statusCode(code).build();
+		statusLine.setProtocolVersion(ver).setReasonPhrase(reason).setStatusCode(code);
 	}
 
 	@Override /* HttpMessage */
 	public void setStatusCode(int code) throws IllegalStateException {
-		statusLineBuilder().statusCode(code).build();
+		statusLine.setStatusCode(code);
 	}
 
 	@Override /* HttpMessage */
 	public void setReasonPhrase(String reason) throws IllegalStateException {
-		statusLineBuilder().reasonPhrase(reason).build();
+		statusLine.setReasonPhrase(reason);
 	}
 
 	@Override /* HttpMessage */
@@ -375,28 +373,11 @@ public class BasicHttpException extends BasicRuntimeException implements HttpRes
 
 	@Override /* HttpMessage */
 	public Locale getLocale() {
-		return statusLine().getLocale();
+		return statusLine.getLocale();
 	}
 
 	@Override /* HttpMessage */
 	public void setLocale(Locale loc) {
-		statusLineBuilder().locale(loc).build();
-	}
-
-	private BasicStatusLine statusLine() {
-		if (statusLine == null) {
-			statusLine = statusLineBuilder.build();
-			statusLineBuilder = null;
-		}
-		return statusLine;
-	}
-
-	private BasicStatusLine.Builder statusLineBuilder() {
-		assertModifiable();
-		if (statusLineBuilder == null) {
-			statusLineBuilder = statusLine.copy();
-			statusLine = null;
-		}
-		return statusLineBuilder;
+		statusLine.setLocale(loc);
 	}
 }
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
index f398ec003..866031c9a 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
@@ -47,9 +47,7 @@ import org.apache.juneau.http.header.*;
 public class BasicHttpResponse implements HttpResponse {
 
 	HeaderList headers;
-	BasicStatusLine statusLine;
-	BasicStatusLine.Builder statusLineBuilder;
-	private int TODO;
+	BasicStatusLine statusLine = new BasicStatusLine();
 	HttpEntity content;
 	final boolean unmodifiable;
 
@@ -71,7 +69,7 @@ public class BasicHttpResponse implements HttpResponse {
 	 */
 	public BasicHttpResponse(HttpResponseBuilder<?> builder) {
 		headers = builder.headers;
-		statusLine = builder.buildStatusLine();
+		statusLine = builder.statusLine.copy();
 		content = builder.content;
 		unmodifiable = builder.unmodifiable;
 	}
@@ -112,7 +110,7 @@ public class BasicHttpResponse implements HttpResponse {
 
 	@Override /* Object */
 	public String toString() {
-		StringBuilder sb = new StringBuilder().append(statusLine()).append(' ').append(headers);
+		StringBuilder sb = new StringBuilder().append(statusLine).append(' ').append(headers);
 		if (content != null)
 			sb.append(' ').append(content);
 		return sb.toString();
@@ -120,7 +118,7 @@ public class BasicHttpResponse implements HttpResponse {
 
 	@Override /* HttpMessage */
 	public ProtocolVersion getProtocolVersion() {
-		return statusLine().getProtocolVersion();
+		return statusLine.getProtocolVersion();
 	}
 
 	@Override /* HttpMessage */
@@ -206,7 +204,7 @@ public class BasicHttpResponse implements HttpResponse {
 
 	@Override /* HttpMessage */
 	public StatusLine getStatusLine() {
-		return statusLine();
+		return statusLine;
 	}
 
 	@Override /* HttpMessage */
@@ -216,22 +214,22 @@ public class BasicHttpResponse implements HttpResponse {
 
 	@Override /* HttpMessage */
 	public void setStatusLine(ProtocolVersion ver, int code) {
-		statusLineBuilder().protocolVersion(ver).statusCode(code).build();
+		statusLine.setProtocolVersion(ver).setStatusCode(code);
 	}
 
 	@Override /* HttpMessage */
 	public void setStatusLine(ProtocolVersion ver, int code, String reason) {
-		statusLineBuilder().protocolVersion(ver).reasonPhrase(reason).statusCode(code).build();
+		statusLine.setProtocolVersion(ver).setReasonPhrase(reason).setStatusCode(code);
 	}
 
 	@Override /* HttpMessage */
 	public void setStatusCode(int code) throws IllegalStateException {
-		statusLineBuilder().statusCode(code).build();
+		statusLine.setStatusCode(code);
 	}
 
 	@Override /* HttpMessage */
 	public void setReasonPhrase(String reason) throws IllegalStateException {
-		statusLineBuilder().reasonPhrase(reason).build();
+		statusLine.setReasonPhrase(reason);
 	}
 
 	@Override /* HttpMessage */
@@ -250,29 +248,12 @@ public class BasicHttpResponse implements HttpResponse {
 
 	@Override /* HttpMessage */
 	public Locale getLocale() {
-		return statusLine().getLocale();
+		return statusLine.getLocale();
 	}
 
 	@Override /* HttpMessage */
 	public void setLocale(Locale loc) {
-		statusLineBuilder().locale(loc).build();
-	}
-
-	private BasicStatusLine statusLine() {
-		if (statusLine == null) {
-			statusLine = statusLineBuilder.build();
-			statusLineBuilder = null;
-		}
-		return statusLine;
-	}
-
-	private BasicStatusLine.Builder statusLineBuilder() {
-		assertModifiable();
-		if (statusLineBuilder == null) {
-			statusLineBuilder = statusLine.copy();
-			statusLine = null;
-		}
-		return statusLineBuilder;
+		statusLine.setLocale(loc);
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Conflict.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Conflict.java
index c4320b98f..eee0f5f05 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Conflict.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Conflict.java
@@ -47,7 +47,7 @@ public class Conflict extends BasicHttpException {
 	public static final String REASON_PHRASE = "Conflict";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Conflict INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class Conflict extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<Conflict> create() {
-		return new HttpExceptionBuilder<>(Conflict.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(Conflict.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Continue.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Continue.java
index 11bc2eb57..578a14eff 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Continue.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Continue.java
@@ -46,7 +46,7 @@ public class Continue extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Continue";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Continue INSTANCE = create().unmodifiable().build();
@@ -57,7 +57,7 @@ public class Continue extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<Continue> create() {
-		return new HttpResponseBuilder<>(Continue.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(Continue.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Created.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Created.java
index 8e63f2a5b..dcefeda5b 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Created.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Created.java
@@ -42,7 +42,7 @@ public class Created extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Created";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Created INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class Created extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<Created> create() {
-		return new HttpResponseBuilder<>(Created.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(Created.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/EarlyHints.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/EarlyHints.java
index 693b731c1..7587328dd 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/EarlyHints.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/EarlyHints.java
@@ -41,7 +41,7 @@ public class EarlyHints extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Early Hints";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final EarlyHints INSTANCE = create().unmodifiable().build();
@@ -52,7 +52,7 @@ public class EarlyHints extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<EarlyHints> create() {
-		return new HttpResponseBuilder<>(EarlyHints.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(EarlyHints.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java
index 8620193b3..6cfac258a 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ExpectationFailed.java
@@ -47,7 +47,7 @@ public class ExpectationFailed extends BasicHttpException {
 	public static final String REASON_PHRASE = "Expectation Failed";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final ExpectationFailed INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class ExpectationFailed extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<ExpectationFailed> create() {
-		return new HttpExceptionBuilder<>(ExpectationFailed.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(ExpectationFailed.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/FailedDependency.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/FailedDependency.java
index ec2d91978..bda4199f1 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/FailedDependency.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/FailedDependency.java
@@ -47,7 +47,7 @@ public class FailedDependency extends BasicHttpException {
 	public static final String REASON_PHRASE = "Failed Dependency";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final FailedDependency INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class FailedDependency extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<FailedDependency> create() {
-		return new HttpExceptionBuilder<>(FailedDependency.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(FailedDependency.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Forbidden.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Forbidden.java
index 3501a9187..fabd04cc2 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Forbidden.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Forbidden.java
@@ -48,7 +48,7 @@ public class Forbidden extends BasicHttpException {
 	public static final String REASON_PHRASE = "Forbidden";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Forbidden INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class Forbidden extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<Forbidden> create() {
-		return new HttpExceptionBuilder<>(Forbidden.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(Forbidden.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Found.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Found.java
index a8c539755..f97cd3a1c 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Found.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Found.java
@@ -46,7 +46,7 @@ public class Found extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Found";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Found INSTANCE = create().unmodifiable().build();
@@ -57,7 +57,7 @@ public class Found extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<Found> create() {
-		return new HttpResponseBuilder<>(Found.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(Found.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Gone.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Gone.java
index 6a478995a..b555764fd 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Gone.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Gone.java
@@ -51,7 +51,7 @@ public class Gone extends BasicHttpException {
 	public static final String REASON_PHRASE = "Gone";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Gone INSTANCE = create().unmodifiable().build();
@@ -62,7 +62,7 @@ public class Gone extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<Gone> create() {
-		return new HttpExceptionBuilder<>(Gone.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(Gone.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
index 3546abc08..aadc104bd 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
@@ -38,10 +38,8 @@ import org.apache.juneau.internal.*;
 @FluentSetters(returns="HttpExceptionBuilder<T>")
 public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRuntimeException.Builder {
 
-	BasicStatusLine statusLine;
+	BasicStatusLine statusLine = new BasicStatusLine();
 	HeaderList headers = HeaderList.create();
-	BasicStatusLine.Builder statusLineBuilder;
-	private int TODO;
 	HttpEntity content;
 
 	private final Class<? extends BasicHttpException> implClass;
@@ -100,12 +98,6 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 		return this;
 	}
 
-	BasicStatusLine buildStatusLine() {
-		if (statusLineBuilder != null)
-			return statusLineBuilder.build();
-		return statusLine;
-	}
-
 	//-----------------------------------------------------------------------------------------------------------------
 	// BasicStatusLine setters.
 	//-----------------------------------------------------------------------------------------------------------------
@@ -115,12 +107,8 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	 *
 	 * @return The underlying builder for the status line.
 	 */
-	public BasicStatusLine.Builder getStatusLine() {
-		if (statusLineBuilder == null) {
-			statusLineBuilder = statusLine == null ? BasicStatusLine.create() : statusLine.copy();
-			statusLine = null;
-		}
-		return statusLineBuilder;
+	public BasicStatusLine getStatusLine() {
+		return statusLine;
 	}
 
 	/**
@@ -135,7 +123,6 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	@FluentSetter
 	public HttpExceptionBuilder<T> statusLine(BasicStatusLine value) {
 		statusLine = value;
-		statusLineBuilder = null;
 		return this;
 	}
 
@@ -150,7 +137,7 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	 */
 	@FluentSetter
 	public HttpExceptionBuilder<T> protocolVersion(ProtocolVersion value) {
-		getStatusLine().protocolVersion(value);
+		statusLine.setProtocolVersion(value);
 		return this;
 	}
 
@@ -165,7 +152,7 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	 */
 	@FluentSetter
 	public HttpExceptionBuilder<T> statusCode(int value) {
-		getStatusLine().statusCode(value);
+		statusLine.setStatusCode(value);
 		return this;
 	}
 
@@ -181,7 +168,7 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	 */
 	@FluentSetter
 	public HttpExceptionBuilder<T> reasonPhrase(String value) {
-		getStatusLine().reasonPhrase(value);
+		statusLine.setReasonPhrase(value);
 		return this;
 	}
 
@@ -196,7 +183,7 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	 */
 	@FluentSetter
 	public HttpExceptionBuilder<T> reasonPhraseCatalog(ReasonPhraseCatalog value) {
-		getStatusLine().reasonPhraseCatalog(value);
+		statusLine.setReasonPhraseCatalog(value);
 		return this;
 	}
 
@@ -211,7 +198,7 @@ public class HttpExceptionBuilder<T extends BasicHttpException> extends BasicRun
 	 */
 	@FluentSetter
 	public HttpExceptionBuilder<T> locale(Locale value) {
-		getStatusLine().locale(value);
+		statusLine.setLocale(value);
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
index 9be5f34ba..8917d2f5f 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
@@ -37,10 +37,8 @@ import org.apache.juneau.internal.*;
 @FluentSetters(returns="HttpResponseBuilder<T>")
 public class HttpResponseBuilder<T extends BasicHttpResponse> {
 
-	BasicStatusLine statusLine;
+	BasicStatusLine statusLine = new BasicStatusLine();
 	HeaderList headers = HeaderList.create();
-	BasicStatusLine.Builder statusLineBuilder;
-	private int TODO;
 	HttpEntity content;
 	boolean unmodifiable;
 
@@ -64,7 +62,7 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 */
 	public HttpResponseBuilder(T copyFrom) {
 		implClass = copyFrom.getClass();
-		statusLine = copyFrom.statusLine;
+		statusLine = copyFrom.statusLine.copy();
 		headers = copyFrom.headers;
 		content = copyFrom.content;
 	}
@@ -95,12 +93,6 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 		return this;
 	}
 
-	BasicStatusLine buildStatusLine() {
-		if (statusLineBuilder != null)
-			return statusLineBuilder.build();
-		return statusLine;
-	}
-
 	/**
 	 * Specifies whether this exception should be unmodifiable after creation.
 	 *
@@ -121,12 +113,8 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 *
 	 * @return The underlying builder for the status line.
 	 */
-	public BasicStatusLine.Builder getStatusLine() {
-		if (statusLineBuilder == null) {
-			statusLineBuilder = statusLine == null ? BasicStatusLine.create() : statusLine.copy();
-			statusLine = null;
-		}
-		return statusLineBuilder;
+	public BasicStatusLine getStatusLine() {
+		return statusLine;
 	}
 
 	/**
@@ -141,7 +129,6 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	@FluentSetter
 	public HttpResponseBuilder<T> statusLine(BasicStatusLine value) {
 		statusLine = value;
-		statusLineBuilder = null;
 		return this;
 	}
 
@@ -156,7 +143,7 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 */
 	@FluentSetter
 	public HttpResponseBuilder<T> protocolVersion(ProtocolVersion value) {
-		getStatusLine().protocolVersion(value);
+		statusLine.setProtocolVersion(value);
 		return this;
 	}
 
@@ -171,7 +158,7 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 */
 	@FluentSetter
 	public HttpResponseBuilder<T> statusCode(int value) {
-		getStatusLine().statusCode(value);
+		statusLine.setStatusCode(value);
 		return this;
 	}
 
@@ -187,7 +174,7 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 */
 	@FluentSetter
 	public HttpResponseBuilder<T> reasonPhrase(String value) {
-		getStatusLine().reasonPhrase(value);
+		statusLine.setReasonPhrase(value);
 		return this;
 	}
 
@@ -202,7 +189,7 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 */
 	@FluentSetter
 	public HttpResponseBuilder<T> reasonPhraseCatalog(ReasonPhraseCatalog value) {
-		getStatusLine().reasonPhraseCatalog(value);
+		statusLine.setReasonPhraseCatalog(value);
 		return this;
 	}
 
@@ -217,7 +204,7 @@ public class HttpResponseBuilder<T extends BasicHttpResponse> {
 	 */
 	@FluentSetter
 	public HttpResponseBuilder<T> locale(Locale value) {
-		getStatusLine().locale(value);
+		statusLine.setLocale(value);
 		return this;
 	}
 
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java
index 5959efd52..6ff407dcc 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/HttpVersionNotSupported.java
@@ -47,7 +47,7 @@ public class HttpVersionNotSupported extends BasicHttpException {
 	public static final String REASON_PHRASE = "HTTP Version Not Supported";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final HttpVersionNotSupported INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class HttpVersionNotSupported extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<HttpVersionNotSupported> create() {
-		return new HttpExceptionBuilder<>(HttpVersionNotSupported.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(HttpVersionNotSupported.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/IMUsed.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/IMUsed.java
index 3902b6d9c..263f307f2 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/IMUsed.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/IMUsed.java
@@ -42,7 +42,7 @@ public class IMUsed extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "IM Used";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final IMUsed INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class IMUsed extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<IMUsed> create() {
-		return new HttpResponseBuilder<>(IMUsed.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(IMUsed.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java
index ce723e52a..1271720ad 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InsufficientStorage.java
@@ -47,7 +47,7 @@ public class InsufficientStorage extends BasicHttpException {
 	public static final String REASON_PHRASE = "Insufficient Storage";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final InsufficientStorage INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class InsufficientStorage extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<InsufficientStorage> create() {
-		return new HttpExceptionBuilder<>(InsufficientStorage.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(InsufficientStorage.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InternalServerError.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InternalServerError.java
index 4618950c5..5b5b3a16a 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InternalServerError.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/InternalServerError.java
@@ -47,7 +47,7 @@ public class InternalServerError extends BasicHttpException {
 	public static final String REASON_PHRASE = "Internal Server Error";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final InternalServerError INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class InternalServerError extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<InternalServerError> create() {
-		return new HttpExceptionBuilder<>(InternalServerError.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(InternalServerError.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LengthRequired.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LengthRequired.java
index 0fc67a219..d62372721 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LengthRequired.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LengthRequired.java
@@ -47,7 +47,7 @@ public class LengthRequired extends BasicHttpException {
 	public static final String REASON_PHRASE = "Length Required";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final LengthRequired INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class LengthRequired extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<LengthRequired> create() {
-		return new HttpExceptionBuilder<>(LengthRequired.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(LengthRequired.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Locked.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Locked.java
index 272914f2f..8516c9bfa 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Locked.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Locked.java
@@ -47,7 +47,7 @@ public class Locked extends BasicHttpException {
 	public static final String REASON_PHRASE = "Locked";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Locked INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class Locked extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<Locked> create() {
-		return new HttpExceptionBuilder<>(Locked.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(Locked.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LoopDetected.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LoopDetected.java
index 4d3e33748..6709dd840 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LoopDetected.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/LoopDetected.java
@@ -47,7 +47,7 @@ public class LoopDetected extends BasicHttpException {
 	public static final String REASON_PHRASE = "Loop Detected";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final LoopDetected INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class LoopDetected extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<LoopDetected> create() {
-		return new HttpExceptionBuilder<>(LoopDetected.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(LoopDetected.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java
index 1e07a1e95..963c7a96c 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MethodNotAllowed.java
@@ -47,7 +47,7 @@ public class MethodNotAllowed extends BasicHttpException {
 	public static final String REASON_PHRASE = "Method Not Allowed";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final MethodNotAllowed INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class MethodNotAllowed extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<MethodNotAllowed> create() {
-		return new HttpExceptionBuilder<>(MethodNotAllowed.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(MethodNotAllowed.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java
index 93d0250ef..7223415cd 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MisdirectedRequest.java
@@ -47,7 +47,7 @@ public class MisdirectedRequest extends BasicHttpException {
 	public static final String REASON_PHRASE = "Misdirected Request";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final MisdirectedRequest INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class MisdirectedRequest extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<MisdirectedRequest> create() {
-		return new HttpExceptionBuilder<>(MisdirectedRequest.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(MisdirectedRequest.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MovedPermanently.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MovedPermanently.java
index 07f8c1c0c..9353bd536 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MovedPermanently.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MovedPermanently.java
@@ -42,7 +42,7 @@ public class MovedPermanently extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Moved Permanently";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final MovedPermanently INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class MovedPermanently extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<MovedPermanently> create() {
-		return new HttpResponseBuilder<>(MovedPermanently.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(MovedPermanently.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultiStatus.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultiStatus.java
index 0b7b4b645..a6e7b97af 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultiStatus.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultiStatus.java
@@ -42,7 +42,7 @@ public class MultiStatus extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Multi-Status";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final MultiStatus INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class MultiStatus extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<MultiStatus> create() {
-		return new HttpResponseBuilder<>(MultiStatus.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(MultiStatus.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultipleChoices.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultipleChoices.java
index 2bfd46c90..7179be58a 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultipleChoices.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/MultipleChoices.java
@@ -43,7 +43,7 @@ public class MultipleChoices extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Multiple Choices";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final MultipleChoices INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class MultipleChoices extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<MultipleChoices> create() {
-		return new HttpResponseBuilder<>(MultipleChoices.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(MultipleChoices.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java
index e3d05dd0d..5d778df08 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NetworkAuthenticationRequired.java
@@ -48,7 +48,7 @@ public class NetworkAuthenticationRequired extends BasicHttpException {
 	public static final String REASON_PHRASE = "Network Authentication Required";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NetworkAuthenticationRequired INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class NetworkAuthenticationRequired extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<NetworkAuthenticationRequired> create() {
-		return new HttpExceptionBuilder<>(NetworkAuthenticationRequired.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(NetworkAuthenticationRequired.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NoContent.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NoContent.java
index 60f3bc3a3..414daf497 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NoContent.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NoContent.java
@@ -42,7 +42,7 @@ public class NoContent extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "No Content";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NoContent INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class NoContent extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<NoContent> create() {
-		return new HttpResponseBuilder<>(NoContent.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(NoContent.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java
index b1f982ac7..c1c7ffe93 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NonAuthoritiveInformation.java
@@ -42,7 +42,7 @@ public class NonAuthoritiveInformation extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Non-Authoritative Information";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NonAuthoritiveInformation INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class NonAuthoritiveInformation extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<NonAuthoritiveInformation> create() {
-		return new HttpResponseBuilder<>(NonAuthoritiveInformation.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(NonAuthoritiveInformation.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotAcceptable.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotAcceptable.java
index 9dc25be6f..2c4613df8 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotAcceptable.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotAcceptable.java
@@ -47,7 +47,7 @@ public class NotAcceptable extends BasicHttpException {
 	public static final String REASON_PHRASE = "Not Acceptable";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NotAcceptable INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class NotAcceptable extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<NotAcceptable> create() {
-		return new HttpExceptionBuilder<>(NotAcceptable.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(NotAcceptable.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotExtended.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotExtended.java
index 5dd3d7e0a..55b764a74 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotExtended.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotExtended.java
@@ -47,7 +47,7 @@ public class NotExtended extends BasicHttpException {
 	public static final String REASON_PHRASE = "Not Extended";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NotExtended INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class NotExtended extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<NotExtended> create() {
-		return new HttpExceptionBuilder<>(NotExtended.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(NotExtended.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotFound.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotFound.java
index 7cb2c3c10..40af199f1 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotFound.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotFound.java
@@ -48,7 +48,7 @@ public class NotFound extends BasicHttpException {
 	public static final String REASON_PHRASE = "Not Found";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NotFound INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class NotFound extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<NotFound> create() {
-		return new HttpExceptionBuilder<>(NotFound.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(NotFound.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotImplemented.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotImplemented.java
index d8a97bf51..8913eed21 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotImplemented.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotImplemented.java
@@ -48,7 +48,7 @@ public class NotImplemented extends BasicHttpException {
 	public static final String REASON_PHRASE = "Not Implemented";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NotImplemented INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class NotImplemented extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<NotImplemented> create() {
-		return new HttpExceptionBuilder<>(NotImplemented.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(NotImplemented.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotModified.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotModified.java
index b267a9078..03748af81 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotModified.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/NotModified.java
@@ -43,7 +43,7 @@ public class NotModified extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Not Modified";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final NotModified INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class NotModified extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<NotModified> create() {
-		return new HttpResponseBuilder<>(NotModified.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(NotModified.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Ok.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Ok.java
index f451f52e3..6010d89d9 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Ok.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Ok.java
@@ -44,7 +44,7 @@ public class Ok extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "OK";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Ok INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class Ok extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<Ok> create() {
-		return new HttpResponseBuilder<>(Ok.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(Ok.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PartialContent.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PartialContent.java
index d774de54e..55193412f 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PartialContent.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PartialContent.java
@@ -43,7 +43,7 @@ public class PartialContent extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Partial Content";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final PartialContent INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class PartialContent extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<PartialContent> create() {
-		return new HttpResponseBuilder<>(PartialContent.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(PartialContent.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java
index 7f3a86d12..deee3cf77 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PayloadTooLarge.java
@@ -47,7 +47,7 @@ public class PayloadTooLarge extends BasicHttpException {
 	public static final String REASON_PHRASE = "Payload Too Large";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final PayloadTooLarge INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class PayloadTooLarge extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<PayloadTooLarge> create() {
-		return new HttpExceptionBuilder<>(PayloadTooLarge.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(PayloadTooLarge.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java
index 65f802ee4..2b6424c65 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PermanentRedirect.java
@@ -43,7 +43,7 @@ public class PermanentRedirect extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Permanent Redirect";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final PermanentRedirect INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class PermanentRedirect extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<PermanentRedirect> create() {
-		return new HttpResponseBuilder<>(PermanentRedirect.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(PermanentRedirect.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java
index 29d197ae2..4c7794f3b 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionFailed.java
@@ -47,7 +47,7 @@ public class PreconditionFailed extends BasicHttpException {
 	public static final String REASON_PHRASE = "Precondition Failed";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final PreconditionFailed INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class PreconditionFailed extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<PreconditionFailed> create() {
-		return new HttpExceptionBuilder<>(PreconditionFailed.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(PreconditionFailed.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java
index 5e28bc9bb..e924ca482 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/PreconditionRequired.java
@@ -48,7 +48,7 @@ public class PreconditionRequired extends BasicHttpException {
 	public static final String REASON_PHRASE = "Precondition Required";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final PreconditionRequired INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class PreconditionRequired extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<PreconditionRequired> create() {
-		return new HttpExceptionBuilder<>(PreconditionRequired.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(PreconditionRequired.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Processing.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Processing.java
index 891511a67..a39cfaf1b 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Processing.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Processing.java
@@ -44,7 +44,7 @@ public class Processing extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Processing";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Processing INSTANCE = create().unmodifiable().build();
@@ -55,7 +55,7 @@ public class Processing extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<Processing> create() {
-		return new HttpResponseBuilder<>(Processing.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(Processing.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java
index cf04506f4..d55e968da 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RangeNotSatisfiable.java
@@ -48,7 +48,7 @@ public class RangeNotSatisfiable extends BasicHttpException {
 	public static final String REASON_PHRASE = "Range Not Satisfiable";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final RangeNotSatisfiable INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class RangeNotSatisfiable extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<RangeNotSatisfiable> create() {
-		return new HttpExceptionBuilder<>(RangeNotSatisfiable.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(RangeNotSatisfiable.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java
index ae95cadae..12b6a6d73 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/RequestHeaderFieldsTooLarge.java
@@ -47,7 +47,7 @@ public class RequestHeaderFieldsTooLarge extends BasicHttpException {
 	public static final String REASON_PHRASE = "Request Header Fields Too Large";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final RequestHeaderFieldsTooLarge INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class RequestHeaderFieldsTooLarge extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<RequestHeaderFieldsTooLarge> create() {
-		return new HttpExceptionBuilder<>(RequestHeaderFieldsTooLarge.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(RequestHeaderFieldsTooLarge.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ResetContent.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ResetContent.java
index e1a0a9fb9..21fbe2a11 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ResetContent.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ResetContent.java
@@ -43,7 +43,7 @@ public class ResetContent extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Reset Content";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final ResetContent INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class ResetContent extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<ResetContent> create() {
-		return new HttpResponseBuilder<>(ResetContent.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(ResetContent.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SeeOther.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SeeOther.java
index bdbe5eb0f..157bdd231 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SeeOther.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SeeOther.java
@@ -43,7 +43,7 @@ public class SeeOther extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "See Other";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final SeeOther INSTANCE = create().unmodifiable().build();
@@ -54,7 +54,7 @@ public class SeeOther extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<SeeOther> create() {
-		return new HttpResponseBuilder<>(SeeOther.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(SeeOther.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java
index 459d4875f..2bb261290 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/ServiceUnavailable.java
@@ -48,7 +48,7 @@ public class ServiceUnavailable extends BasicHttpException {
 	public static final String REASON_PHRASE = "Service Unavailable";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final ServiceUnavailable INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class ServiceUnavailable extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<ServiceUnavailable> create() {
-		return new HttpExceptionBuilder<>(ServiceUnavailable.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(ServiceUnavailable.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java
index 24fc21e8b..1df4ee46e 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/SwitchingProtocols.java
@@ -42,7 +42,7 @@ public class SwitchingProtocols extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Switching Protocols";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final SwitchingProtocols INSTANCE = create().unmodifiable().build();
@@ -53,7 +53,7 @@ public class SwitchingProtocols extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<SwitchingProtocols> create() {
-		return new HttpResponseBuilder<>(SwitchingProtocols.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(SwitchingProtocols.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java
index e6d8dc6cf..9c214695b 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TemporaryRedirect.java
@@ -44,7 +44,7 @@ public class TemporaryRedirect extends BasicHttpResponse {
 	public static final String REASON_PHRASE = "Temporary Redirect";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final TemporaryRedirect INSTANCE = create().unmodifiable().build();
@@ -55,7 +55,7 @@ public class TemporaryRedirect extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<TemporaryRedirect> create() {
-		return new HttpResponseBuilder<>(TemporaryRedirect.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(TemporaryRedirect.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TooManyRequests.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TooManyRequests.java
index d1bc99632..6ca803015 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TooManyRequests.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/TooManyRequests.java
@@ -48,7 +48,7 @@ public class TooManyRequests extends BasicHttpException {
 	public static final String REASON_PHRASE = "Too Many Requests";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final TooManyRequests INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class TooManyRequests extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<TooManyRequests> create() {
-		return new HttpExceptionBuilder<>(TooManyRequests.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(TooManyRequests.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Unauthorized.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Unauthorized.java
index afdfc0f0e..aa3dfef06 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Unauthorized.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/Unauthorized.java
@@ -50,7 +50,7 @@ public class Unauthorized extends BasicHttpException {
 	public static final String REASON_PHRASE = "Unauthorized";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final Unauthorized INSTANCE = create().unmodifiable().build();
@@ -61,7 +61,7 @@ public class Unauthorized extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<Unauthorized> create() {
-		return new HttpExceptionBuilder<>(Unauthorized.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(Unauthorized.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java
index a840432b0..c104ae3ba 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnavailableForLegalReasons.java
@@ -47,7 +47,7 @@ public class UnavailableForLegalReasons extends BasicHttpException {
 	public static final String REASON_PHRASE = "Unavailable For Legal Reasons";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final UnavailableForLegalReasons INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class UnavailableForLegalReasons extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<UnavailableForLegalReasons> create() {
-		return new HttpExceptionBuilder<>(UnavailableForLegalReasons.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(UnavailableForLegalReasons.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java
index 6a9aa1e6b..2527731ad 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnprocessableEntity.java
@@ -47,7 +47,7 @@ public class UnprocessableEntity extends BasicHttpException {
 	public static final String REASON_PHRASE = "Unprocessable Entity";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final UnprocessableEntity INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class UnprocessableEntity extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<UnprocessableEntity> create() {
-		return new HttpExceptionBuilder<>(UnprocessableEntity.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(UnprocessableEntity.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java
index c6c5b7209..fbdaa4d93 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UnsupportedMediaType.java
@@ -48,7 +48,7 @@ public class UnsupportedMediaType extends BasicHttpException {
 	public static final String REASON_PHRASE = "Unsupported Media Type";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final UnsupportedMediaType INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class UnsupportedMediaType extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<UnsupportedMediaType> create() {
-		return new HttpExceptionBuilder<>(UnsupportedMediaType.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(UnsupportedMediaType.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java
index 0b0c7d2e4..d75d36f67 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UpgradeRequired.java
@@ -47,7 +47,7 @@ public class UpgradeRequired extends BasicHttpException {
 	public static final String REASON_PHRASE = "Upgrade Required";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final UpgradeRequired INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class UpgradeRequired extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<UpgradeRequired> create() {
-		return new HttpExceptionBuilder<>(UpgradeRequired.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(UpgradeRequired.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UriTooLong.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UriTooLong.java
index dbe54e60c..c91f4c899 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UriTooLong.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UriTooLong.java
@@ -48,7 +48,7 @@ public class UriTooLong extends BasicHttpException {
 	public static final String REASON_PHRASE = "URI Too Long";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final UriTooLong INSTANCE = create().unmodifiable().build();
@@ -59,7 +59,7 @@ public class UriTooLong extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<UriTooLong> create() {
-		return new HttpExceptionBuilder<>(UriTooLong.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(UriTooLong.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UseProxy.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UseProxy.java
index a131c5c3d..f65402060 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UseProxy.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/UseProxy.java
@@ -42,7 +42,7 @@ public class UseProxy extends BasicHttpResponse {
 	/** Reason phrase */
 	public static final String REASON_PHRASE = "Use Proxy";
 
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/**
 	 * Default unmodifiable instance.
@@ -57,7 +57,7 @@ public class UseProxy extends BasicHttpResponse {
 	 * @return A new builder bean.
 	 */
 	public static HttpResponseBuilder<UseProxy> create() {
-		return new HttpResponseBuilder<>(UseProxy.class).statusLine(STATUS_LINE);
+		return new HttpResponseBuilder<>(UseProxy.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**
diff --git a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java
index b917db4c7..aa448975a 100644
--- a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java
+++ b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/response/VariantAlsoNegotiates.java
@@ -47,7 +47,7 @@ public class VariantAlsoNegotiates extends BasicHttpException {
 	public static final String REASON_PHRASE = "Variant Also Negotiates";
 
 	/** Default status line */
-	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create().statusCode(STATUS_CODE).reasonPhrase(REASON_PHRASE).build();
+	private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE);
 
 	/** Reusable unmodifiable instance */
 	public static final VariantAlsoNegotiates INSTANCE = create().unmodifiable().build();
@@ -58,7 +58,7 @@ public class VariantAlsoNegotiates extends BasicHttpException {
 	 * @return A new builder bean.
 	 */
 	public static HttpExceptionBuilder<VariantAlsoNegotiates> create() {
-		return new HttpExceptionBuilder<>(VariantAlsoNegotiates.class).statusLine(STATUS_LINE);
+		return new HttpExceptionBuilder<>(VariantAlsoNegotiates.class).statusLine(STATUS_LINE.copy());
 	}
 
 	/**