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 0f1b357 REST refactoring.
0f1b357 is described below
commit 0f1b35716961989733cf6da09a008d5f0d053e17
Author: JamesBognar <[email protected]>
AuthorDate: Fri Mar 12 14:49:38 2021 -0500
REST refactoring.
---
.../apache/juneau/config/event/ConfigEvents.java | 4 +-
.../apache/juneau/config/internal/ConfigMap.java | 4 +-
.../juneau/config/store/ConfigClasspathStore.java | 4 +-
.../juneau/config/store/ConfigFileStore.java | 6 +-
.../juneau/config/store/ConfigMemoryStore.java | 4 +-
.../java/org/apache/juneau/dto/html5/Select.java | 5 +-
.../org/apache/juneau/dto/swagger/Operation.java | 4 +-
.../apache/juneau/annotation/NotThreadSafe.java} | 43 +---
.../org/apache/juneau/annotation/ThreadSafe.java} | 43 +---
.../juneau/assertions/FluentBaseAssertion.java | 4 +-
.../juneau/assertions/FluentStringAssertion.java | 12 +-
.../juneau/http/header/BasicCsvArrayHeader.java | 4 +-
.../org/apache/juneau/http/header/BasicHeader.java | 2 +-
.../org/apache/juneau/http/header/HeaderList.java | 68 +++++--
.../juneau/http/header/HeaderListBuilder.java | 223 ++++++++++++---------
.../juneau/http/header/SerializedHeader.java | 21 ++
.../apache/juneau/http/part/BasicCsvArrayPart.java | 4 +-
.../juneau/http/resource/HttpResourceBuilder.java | 18 +-
.../juneau/http/response/BasicHttpException.java | 10 +-
.../juneau/http/response/BasicHttpResponse.java | 10 +-
.../juneau/http/response/HttpExceptionBuilder.java | 18 +-
.../juneau/http/response/HttpResponseBuilder.java | 18 +-
.../org/apache/juneau/internal/ArrayUtils.java | 2 +-
.../org/apache/juneau/internal/StringUtils.java | 21 +-
.../org/apache/juneau/utils/ReflectionMap.java | 12 +-
.../apache/juneau/xml/XmlSerializerSession.java | 4 +-
.../org/apache/juneau/rest/client/RestClient.java | 4 +-
.../apache/juneau/rest/client/RestResponse.java | 8 +-
.../juneau/rest/client/remote/RemoteMeta.java | 6 +-
.../java/org/apache/juneau/rest/RestContext.java | 4 +-
.../apache/juneau/rest/RestOperationContext.java | 10 +-
.../apache/juneau/config/ConfigImportsTest.java | 4 +-
.../org/apache/juneau/http/HeaderList_Test.java | 37 ++--
.../org/apache/juneau/http/remote/Remote_Test.java | 4 +-
.../juneau/transforms/OneWayStringSwapTest.java | 2 +-
.../juneau/transforms/RoundTripStringSwapTest.java | 4 +-
36 files changed, 350 insertions(+), 301 deletions(-)
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
index 2aea3d6..f671885 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
@@ -30,7 +30,7 @@ public class ConfigEvents extends ArrayList<ConfigEvent> {
*/
public boolean isSectionModified(String name) {
for (ConfigEvent ce : this)
- if (isEquals(name, ce.getSection()))
+ if (eq(name, ce.getSection()))
return true;
return false;
}
@@ -44,7 +44,7 @@ public class ConfigEvents extends ArrayList<ConfigEvent> {
*/
public boolean isKeyModified(String section, String key) {
for (ConfigEvent ce : this)
- if (isEquals(section, ce.getSection()) && isEquals(key,
ce.getKey()))
+ if (eq(section, ce.getSection()) && eq(key,
ce.getKey()))
return true;
return false;
}
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
index 105fe3f..318e3bc 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/internal/ConfigMap.java
@@ -613,7 +613,7 @@ public class ConfigMap implements ConfigStoreListener {
ConfigEvents changes = null;
writeLock();
try {
- if (! StringUtils.isEquals(contents, newContents)) {
+ if (ne(contents, newContents)) {
changes = findDiffs(newContents);
load(newContents);
@@ -831,7 +831,7 @@ public class ConfigMap implements ConfigStoreListener {
} else {
for (ConfigEntry ne : ns.oentries.values()) {
ConfigEntry e = s.oentries.get(ne.key);
- if (e == null || ! isEquals(e.value,
ne.value)) {
+ if (e == null || ne(e.value, ne.value))
{
changes.add(ConfigEvent.setEntry(name, s.name, ne.key, ne.value, ne.modifiers,
ne.comment, ne.preLines));
}
}
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
index 73eceb9..e7a7af9 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigClasspathStore.java
@@ -95,12 +95,12 @@ public class ConfigClasspathStore extends ConfigStore {
public synchronized String write(String name, String expectedContents,
String newContents) throws IOException {
// This is a no-op.
- if (isEquals(expectedContents, newContents))
+ if (eq(expectedContents, newContents))
return null;
String currentContents = read(name);
- if (expectedContents != null && ! isEquals(currentContents,
expectedContents))
+ if (expectedContents != null && ! eq(currentContents,
expectedContents))
return currentContents;
update(name, newContents);
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
index bad1445..1cc1148 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigFileStore.java
@@ -294,7 +294,7 @@ public class ConfigFileStore extends ConfigStore {
name = resolveName(name);
// This is a no-op.
- if (isEquals(expectedContents, newContents))
+ if (eq(expectedContents, newContents))
return null;
dir.mkdirs();
@@ -324,7 +324,7 @@ public class ConfigFileStore extends ConfigStore {
}
currentContents =
sb.toString();
}
- if (expectedContents != null &&
! isEquals(currentContents, expectedContents)) {
+ if (expectedContents != null &&
! eq(currentContents, expectedContents)) {
if (currentContents ==
null)
cache.remove(name);
else
@@ -493,7 +493,7 @@ public class ConfigFileStore extends ConfigStore {
String oldContents = cache.get(fn);
cache.remove(fn);
String newContents = read(fn);
- if (! isEquals(oldContents, newContents)) {
+ if (! eq(oldContents, newContents)) {
update(fn, newContents);
}
}
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
index 7dcf7c0..0984cdd 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/store/ConfigMemoryStore.java
@@ -82,12 +82,12 @@ public class ConfigMemoryStore extends ConfigStore {
public synchronized String write(String name, String expectedContents,
String newContents) {
// This is a no-op.
- if (isEquals(expectedContents, newContents))
+ if (eq(expectedContents, newContents))
return null;
String currentContents = read(name);
- if (expectedContents != null && ! isEquals(currentContents,
expectedContents))
+ if (expectedContents != null && ! eq(currentContents,
expectedContents))
return currentContents;
update(name, newContents);
diff --git
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
index 975d1fe..8750801 100644
---
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
+++
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/html5/Select.java
@@ -12,8 +12,9 @@
//
***************************************************************************************************************************
package org.apache.juneau.dto.html5;
+import static org.apache.juneau.internal.StringUtils.*;
+
import org.apache.juneau.annotation.*;
-import org.apache.juneau.internal.*;
/**
* DTO for an HTML {@doc ExtHTML5.forms#the-select-element <select>}
@@ -160,7 +161,7 @@ public class Select extends HtmlElementContainer {
for (Object o : getChildren()) {
if (o instanceof Option) {
Option o2 = (Option)o;
- if
(StringUtils.isEquals(optionValue.toString(), o2.getAttr(String.class,
"value")))
+ if (eq(optionValue.toString(),
o2.getAttr(String.class, "value")))
o2.selected(true);
}
}
diff --git
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
index 89abfcc..817af3d 100644
---
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
+++
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/swagger/Operation.java
@@ -640,8 +640,8 @@ public class Operation extends SwaggerElement {
public ParameterInfo getParameter(String in, String name) {
if (parameters != null)
for (ParameterInfo pi : parameters)
- if (StringUtils.isEquals(pi.getIn(), in))
- if (StringUtils.isEquals(pi.getName(),
name) || "body".equals(pi.getIn()))
+ if (eq(pi.getIn(), in))
+ if (eq(pi.getName(), name) ||
"body".equals(pi.getIn()))
return pi;
return null;
}
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NotThreadSafe.java
similarity index 58%
copy from
juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NotThreadSafe.java
index 2aea3d6..fb941ca 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/NotThreadSafe.java
@@ -10,42 +10,17 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.config.event;
+package org.apache.juneau.annotation;
-import static org.apache.juneau.internal.StringUtils.*;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
-import java.util.*;
+import java.lang.annotation.*;
/**
- * Represents a list of {@link ConfigEvent} objects.
+ * Identifies a class as not thread safe.
*/
-public class ConfigEvents extends ArrayList<ConfigEvent> {
- private static final long serialVersionUID = 1L;
-
- /**
- * Returns <jk>true</jk> if the specified section was modified in this
list of events.
- *
- * @param name The section name.
- * @return <jk>true</jk> if the specified section was modified in this
list of events.
- */
- public boolean isSectionModified(String name) {
- for (ConfigEvent ce : this)
- if (isEquals(name, ce.getSection()))
- return true;
- return false;
- }
-
- /**
- * Returns <jk>true</jk> if the specified key was modified in this list
of events.
- *
- * @param section The section name.
- * @param key The key name.
- * @return <jk>true</jk> if the specified key was modified in this list
of events.
- */
- public boolean isKeyModified(String section, String key) {
- for (ConfigEvent ce : this)
- if (isEquals(section, ce.getSection()) && isEquals(key,
ce.getKey()))
- return true;
- return false;
- }
-}
+@Documented
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface NotThreadSafe {}
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ThreadSafe.java
similarity index 58%
copy from
juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ThreadSafe.java
index 2aea3d6..823e88f 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/event/ConfigEvents.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/ThreadSafe.java
@@ -10,42 +10,17 @@
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
// * specific language governing permissions and limitations under the
License. *
//
***************************************************************************************************************************
-package org.apache.juneau.config.event;
+package org.apache.juneau.annotation;
-import static org.apache.juneau.internal.StringUtils.*;
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.*;
-import java.util.*;
+import java.lang.annotation.*;
/**
- * Represents a list of {@link ConfigEvent} objects.
+ * Identifies a class as thread safe.
*/
-public class ConfigEvents extends ArrayList<ConfigEvent> {
- private static final long serialVersionUID = 1L;
-
- /**
- * Returns <jk>true</jk> if the specified section was modified in this
list of events.
- *
- * @param name The section name.
- * @return <jk>true</jk> if the specified section was modified in this
list of events.
- */
- public boolean isSectionModified(String name) {
- for (ConfigEvent ce : this)
- if (isEquals(name, ce.getSection()))
- return true;
- return false;
- }
-
- /**
- * Returns <jk>true</jk> if the specified key was modified in this list
of events.
- *
- * @param section The section name.
- * @param key The key name.
- * @return <jk>true</jk> if the specified key was modified in this list
of events.
- */
- public boolean isKeyModified(String section, String key) {
- for (ConfigEvent ce : this)
- if (isEquals(section, ce.getSection()) && isEquals(key,
ce.getKey()))
- return true;
- return false;
- }
-}
+@Documented
+@Retention(RUNTIME)
+@Target(TYPE)
+public @interface ThreadSafe {}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
index 163c36d..7e56364 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentBaseAssertion.java
@@ -12,6 +12,8 @@
//
***************************************************************************************************************************
package org.apache.juneau.assertions;
+import static org.apache.juneau.internal.StringUtils.*;
+
import java.io.*;
import java.util.function.*;
@@ -224,7 +226,7 @@ public class FluentBaseAssertion<V,R> extends
FluentAssertion<R> {
try {
String s1 = serializer.serialize(this.value);
String s2 = serializer.serialize(o);
- if (! StringUtils.isEquals(s1, s2))
+ if (ne(s1, s2))
throw error("Unexpected
comparison.\n\tExpect=[{0}]\n\tActual=[{1}]", s2, s1);
} catch (SerializeException e) {
throw new RuntimeException(e);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
index a27b7e9..f9e0ed1 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/assertions/FluentStringAssertion.java
@@ -173,7 +173,7 @@ public class FluentStringAssertion<R> extends
FluentBaseAssertion<String,R> {
* @throws AssertionError If assertion failed.
*/
public R isEqualTo(String value) throws AssertionError {
- if (! StringUtils.isEquals(value, text))
+ if (ne(value, text))
throw error("Text differed at position
{0}.\n\tExpect=[{1}]\n\tActual=[{2}]", diffPosition(value, text), fix(value),
fix(text));
return returns();
}
@@ -203,7 +203,7 @@ public class FluentStringAssertion<R> extends
FluentBaseAssertion<String,R> {
public R isEqualLinesTo(String...lines) throws AssertionError {
assertNotNull("lines", lines);
String v = join(lines, '\n');
- if (! StringUtils.isEquals(v, text))
+ if (ne(v, text))
throw error("Text differed at position
{0}.\n\tExpect=[{1}]\n\tActual=[{2}]", diffPosition(v, text), fix(v),
fix(text));
return returns();
}
@@ -272,7 +272,7 @@ public class FluentStringAssertion<R> extends
FluentBaseAssertion<String,R> {
* @throws AssertionError If assertion failed.
*/
public R is(String value) throws AssertionError {
- if (! StringUtils.isEquals(value, text))
+ if (ne(value, text))
throw error("Unexpected
value.\n\tExpect=[{0}]\n\tActual=[{1}]", fix(value), fix(text));
return isEqualTo(value);
}
@@ -285,7 +285,7 @@ public class FluentStringAssertion<R> extends
FluentBaseAssertion<String,R> {
* @throws AssertionError If assertion failed.
*/
public R isEqualIgnoreCaseTo(String value) throws AssertionError {
- if (! StringUtils.isEqualsIc(value, text))
+ if (neic(value, text))
throw error("Text differed at position
{0}.\n\tExpect=[{1}]\n\tActual=[{2}]", diffPositionIc(value, text), fix(value),
fix(text));
return returns();
}
@@ -298,7 +298,7 @@ public class FluentStringAssertion<R> extends
FluentBaseAssertion<String,R> {
* @throws AssertionError If assertion failed.
*/
public R doesNotEqual(String value) throws AssertionError {
- if (StringUtils.isEquals(value, text))
+ if (eq(value, text))
throw error("Text equaled unexpected.\n\tText=[{0}]",
fix(text));
return returns();
}
@@ -325,7 +325,7 @@ public class FluentStringAssertion<R> extends
FluentBaseAssertion<String,R> {
* @throws AssertionError If assertion failed.
*/
public R doesNotEqualIc(String value) throws AssertionError {
- if (StringUtils.isEqualsIc(value, text))
+ if (eqic(value, text))
throw error("Text equaled unexpected.\n\tText=[{0}]",
fix(text));
return returns();
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
index b16ac24..72b8d20 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicCsvArrayHeader.java
@@ -128,7 +128,7 @@ public class BasicCsvArrayHeader extends BasicHeader {
List<String> vv = getParsedValue();
if (val != null && vv != null)
for (String v : vv)
- if (isEquals(v, val))
+ if (eq(v, val))
return true;
return false;
}
@@ -143,7 +143,7 @@ public class BasicCsvArrayHeader extends BasicHeader {
List<String> vv = getParsedValue();
if (val != null && vv != null)
for (String v : vv)
- if (isEqualsIc(v, val))
+ if (eqic(v, val))
return true;
return false;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
index 912fb94..8f2bd40 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicHeader.java
@@ -211,7 +211,7 @@ public class BasicHeader implements Header, Cloneable,
Serializable {
* @return <jk>true</jk> if the specified value is the same.
*/
public boolean equalsIgnoreCase(String compare) {
- return isEqualsIc(getValue(), compare);
+ return eqic(getValue(), compare);
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
index a2f8a5a..41ff85f 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderList.java
@@ -14,7 +14,6 @@ package org.apache.juneau.http.header;
import static java.util.Collections.*;
import static org.apache.juneau.internal.StringUtils.*;
-import static java.util.Arrays.*;
import java.util.*;
@@ -23,7 +22,9 @@ import org.apache.http.message.*;
import org.apache.http.message.BasicHeader;
import org.apache.http.util.*;
import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
import org.apache.juneau.http.HttpHeaders;
+import org.apache.juneau.internal.*;
/**
* An unmodifiable list of HTTP headers.
@@ -31,6 +32,7 @@ import org.apache.juneau.http.HttpHeaders;
* <p>
* Similar to {@link HeaderGroup} but uses a builder-based approach for
building header lists.
*/
+@ThreadSafe
public class HeaderList implements Iterable<Header> {
/** Represents no header supplier in annotations. */
@@ -40,6 +42,7 @@ public class HeaderList implements Iterable<Header> {
public static final HeaderList EMPTY = new HeaderList();
final List<Header> headers;
+ final boolean caseSensitive;
/**
* Instantiates a new builder for this bean.
@@ -67,7 +70,7 @@ public class HeaderList implements Iterable<Header> {
* @return A new unmodifiable instance, never <jk>null</jk>.
*/
public static HeaderList of(Header...headers) {
- return headers == null || headers.length == 0 ? EMPTY : new
HeaderList(asList(headers));
+ return headers == null || headers.length == 0 ? EMPTY : new
HeaderList(headers);
}
/**
@@ -86,7 +89,7 @@ public class HeaderList implements Iterable<Header> {
throw new BasicRuntimeException("Odd number of
parameters passed into HeaderList.ofPairs()");
HeaderListBuilder b = create();
for (int i = 0; i < pairs.length; i+=2)
- b.add(stringify(pairs[i]), pairs[i+1]);
+ b.append(stringify(pairs[i]), pairs[i+1]);
return new HeaderList(b);
}
@@ -97,6 +100,7 @@ public class HeaderList implements Iterable<Header> {
*/
public HeaderList(HeaderListBuilder builder) {
this.headers = unmodifiableList(new
ArrayList<>(builder.headers));
+ this.caseSensitive = builder.caseSensitive;
}
/**
@@ -108,14 +112,35 @@ public class HeaderList implements Iterable<Header> {
if (headers == null || headers.isEmpty())
this.headers = emptyList();
else {
- List<Header> l = new ArrayList<>();
- for (int i = 0; i < headers.size(); i++) {
+ List<Header> l = new ArrayList<>(headers.size());
+ for (int i = 0, j = headers.size(); i < j; i++) {
Header x = headers.get(i);
if (x != null)
l.add(x);
}
this.headers = unmodifiableList(l);
}
+ caseSensitive = false;
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param headers The initial list of headers. <jk>null</jk> entries
are ignored.
+ */
+ protected HeaderList(Header...headers) {
+ if (headers.length == 0)
+ this.headers = emptyList();
+ else {
+ List<Header> l = new ArrayList<>(headers.length);
+ for (int i = 0; i < headers.length; i++) {
+ Header x = headers[i];
+ if (x != null)
+ l.add(x);
+ }
+ this.headers = unmodifiableList(l);
+ }
+ caseSensitive = false;
}
/**
@@ -123,6 +148,7 @@ public class HeaderList implements Iterable<Header> {
*/
protected HeaderList() {
this.headers = emptyList();
+ caseSensitive = false;
}
/**
@@ -189,24 +215,24 @@ public class HeaderList implements Iterable<Header> {
*/
@SuppressWarnings("unchecked")
public <T extends Header> T getCondensed(Class<T> type, String name) {
- List<Header> hdrs = get(name);
+ List<Header> l = get(name);
- if (hdrs.isEmpty())
+ if (l.isEmpty())
return null;
String value = null;
- if (hdrs.size() == 1) {
- Header h = hdrs.get(0);
+ if (l.size() == 1) {
+ Header h = l.get(0);
if (type.isInstance(h))
return (T)h;
value = h.getValue();
} else {
- CharArrayBuffer sb = new CharArrayBuffer(128);
- sb.append(hdrs.get(0).getValue());
- for (int i = 1; i < hdrs.size(); i++) {
- sb.append(", ");
- sb.append(hdrs.get(i).getValue());
+ StringBuilder sb = new StringBuilder(128);
+ for (int i = 0; i < l.size(); i++) {
+ if (i > 0)
+ sb.append(", ");
+ sb.append(l.get(i).getValue());
}
value = sb.toString();
}
@@ -229,9 +255,9 @@ public class HeaderList implements Iterable<Header> {
*/
public List<Header> get(String name) {
List<Header> l = null;
- for (int i = 0; i < headers.size(); i++) { // See HTTPCORE-361
+ for (int i = 0, j = headers.size(); i < j; i++) { // See
HTTPCORE-361
Header x = headers.get(i);
- if (isEqualsIc(x.getName(), name)) {
+ if (eq(x.getName(), name)) {
if (l == null)
l = new ArrayList<>();
l.add(x);
@@ -252,7 +278,7 @@ public class HeaderList implements Iterable<Header> {
public Header getFirst(String name) {
for (int i = 0; i < headers.size(); i++) { // See HTTPCORE-361
Header x = headers.get(i);
- if (isEqualsIc(x.getName(), name))
+ if (eq(x.getName(), name))
return x;
}
return null;
@@ -270,7 +296,7 @@ public class HeaderList implements Iterable<Header> {
public Header getLast(String name) {
for (int i = headers.size() - 1; i >= 0; i--) {
Header x = headers.get(i);
- if (isEqualsIc(x.getName(), name))
+ if (eq(x.getName(), name))
return x;
}
return null;
@@ -297,7 +323,7 @@ public class HeaderList implements Iterable<Header> {
public boolean contains(String name) {
for (int i = 0; i < headers.size(); i++) { // See HTTPCORE-361
Header x = headers.get(i);
- if (isEqualsIc(x.getName(), name))
+ if (eq(x.getName(), name))
return true;
}
return false;
@@ -323,6 +349,10 @@ public class HeaderList implements Iterable<Header> {
return new BasicListHeaderIterator(headers, name);
}
+ private boolean eq(String s1, String s2) {
+ return caseSensitive ? StringUtils.eq(s1, s2) :
StringUtils.eqic(s1, s2);
+ }
+
@Override /* Iterable */
public Iterator<Header> iterator() {
return getAll().iterator();
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
index e1736b8..cf70da3 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/HeaderListBuilder.java
@@ -18,19 +18,20 @@ import java.util.*;
import java.util.function.*;
import org.apache.http.*;
-import org.apache.juneau.httppart.*;
+import org.apache.juneau.annotation.*;
import org.apache.juneau.internal.*;
-import org.apache.juneau.oapi.*;
import org.apache.juneau.svl.*;
/**
* Builder for {@link HeaderList} objects.
*/
@FluentSetters
+@NotThreadSafe
public class HeaderListBuilder {
final List<Header> headers;
- private volatile VarResolver varResolver;
+ private VarResolver varResolver;
+ boolean caseSensitive = false;
/** Predefined instance. */
private static final HeaderList EMPTY = new HeaderList();
@@ -66,9 +67,12 @@ public class HeaderListBuilder {
* <p>
* Resolves variables in header values when using the following methods:
* <ul>
- * <li class='jm'>{@link #add(String, Object) add(String,Object)}
- * <li class='jm'>{@link #add(String, Supplier)
add(String,Supplier<?>)}
- * <li class='jm'>{@link #add(String, Object,
HttpPartSerializerSession, HttpPartSchema, boolean)
add(String,Object,HttpPartSerializerSession,HttpPartSchema,boolean)}
+ * <li class='jm'>{@link #append(String, Object)
append(String,Object)}
+ * <li class='jm'>{@link #append(String, Supplier)
append(String,Supplier<?>)}
+ * <li class='jm'>{@link #prepend(String, Object)
prepend(String,Object)}
+ * <li class='jm'>{@link #prepend(String, Supplier)
prepend(String,Supplier<?>)}
+ * <li class='jm'>{@link #set(String, Object) set(String,Object)}
+ * <li class='jm'>{@link #set(String, Supplier)
set(String,Supplier<?>)}
* </ul>
*
* <p>
@@ -86,9 +90,12 @@ public class HeaderListBuilder {
* <p>
* Resolves variables in header values when using the following methods:
* <ul>
- * <li class='jm'>{@link #add(String, Object) add(String,Object)}
- * <li class='jm'>{@link #add(String, Supplier)
add(String,Supplier<?>)}
- * <li class='jm'>{@link #add(String, Object,
HttpPartSerializerSession, HttpPartSchema, boolean)
add(String,Object,HttpPartSerializerSession,HttpPartSchema,boolean)}
+ * <li class='jm'>{@link #append(String, Object)
append(String,Object)}
+ * <li class='jm'>{@link #append(String, Supplier)
append(String,Supplier<?>)}
+ * <li class='jm'>{@link #prepend(String, Object)
prepend(String,Object)}
+ * <li class='jm'>{@link #prepend(String, Supplier)
prepend(String,Supplier<?>)}
+ * <li class='jm'>{@link #set(String, Object) set(String,Object)}
+ * <li class='jm'>{@link #set(String, Supplier)
set(String,Supplier<?>)}
* </ul>
*
* @param varResolver The variable resolver to use for resolving
variables.
@@ -100,44 +107,44 @@ public class HeaderListBuilder {
}
/**
- * Removes any headers already in this builder.
+ * Specifies that the headers in this builder should be treated as
case-sensitive.
+ *
+ * <p>
+ * The default behavior is case-insensitive.
*
* @return This object (for method chaining).
*/
- @FluentSetter
- public HeaderListBuilder clear() {
- headers.clear();
+ public HeaderListBuilder caseSensitive() {
+ this.caseSensitive = true;
return this;
}
/**
- * Adds the specified header to the end of the headers in this builder.
+ * Removes any headers already in this builder.
*
- * @param value The header to add. <jk>null</jk> values are ignored.
* @return This object (for method chaining).
*/
@FluentSetter
- public HeaderListBuilder add(Header value) {
- if (value != null)
- headers.add(value);
+ public HeaderListBuilder clear() {
+ headers.clear();
return this;
}
/**
* Adds the specified header to the end of the headers in this builder.
*
- * @param name The header name.
- * @param value The header value.
+ * @param value The header to add. <jk>null</jk> values are ignored.
* @return This object (for method chaining).
*/
@FluentSetter
- public HeaderListBuilder add(String name, String value) {
- Header x = isResolving() ? new BasicHeader(name,
resolver(value)) : new BasicHeader(name, value);
- return add(x);
+ public HeaderListBuilder append(Header value) {
+ if (value != null)
+ headers.add(value);
+ return this;
}
/**
- * Appends the specified header to the end of this list.
+ * Appends the specified header to the end of this builder.
*
* <p>
* The header is added as a {@link BasicHeader}.
@@ -146,13 +153,12 @@ public class HeaderListBuilder {
* @param value The header value.
* @return This object (for method chaining).
*/
- public HeaderListBuilder add(String name, Object value) {
- Header x = isResolving() ? new BasicHeader(name,
resolver(value)) : new BasicHeader(name, value);
- return add(x);
+ public HeaderListBuilder append(String name, Object value) {
+ return append(header(name, value));
}
/**
- * Appends the specified header to the end of this list using a value
supplier.
+ * Appends the specified header to the end of this builder using a
value supplier.
*
* <p>
* The header is added as a {@link BasicHeader}.
@@ -164,29 +170,21 @@ public class HeaderListBuilder {
* @param value The header value supplier.
* @return This object (for method chaining).
*/
- public HeaderListBuilder add(String name, Supplier<?> value) {
- Header x = isResolving() ? new BasicHeader(name,
resolver(value)) : new BasicHeader(name, value);
- return add(x);
+ public HeaderListBuilder append(String name, Supplier<?> value) {
+ return append(header(name, value));
}
/**
- * Appends the specified header to the end of this list.
+ * Adds the specified headers to the end of the headers in this builder.
*
- * @param name The header name.
- * @param value The header value.
- * @param serializer
- * The serializer to use for serializing the value to a string
value.
- * @param schema
- * The schema object that defines the format of the output.
- * <br>If <jk>null</jk>, defaults to the schema defined on the
parser.
- * <br>If that's also <jk>null</jk>, defaults to {@link
HttpPartSchema#DEFAULT}.
- * <br>Only used if serializer is schema-aware (e.g. {@link
OpenApiSerializer}).
- * @param skipIfEmpty If value is a blank string, the value should
return as <jk>null</jk>.
+ * @param values The headers to add. <jk>null</jk> values are ignored.
* @return This object (for method chaining).
*/
- public HeaderListBuilder add(String name, Object value,
HttpPartSerializerSession serializer, HttpPartSchema schema, boolean
skipIfEmpty) {
- Header x = isResolving() ? new SerializedHeader(name,
resolver(value), serializer, schema, skipIfEmpty) : new SerializedHeader(name,
value, serializer, schema, skipIfEmpty);
- return add(x);
+ @FluentSetter
+ public HeaderListBuilder append(Header...values) {
+ for (int i = 0; i < values.length; i++) /* See HTTPCORE-361 */
+ append(values[i]);
+ return this;
}
/**
@@ -196,34 +194,79 @@ public class HeaderListBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public HeaderListBuilder add(Header...values) {
- for (int i = 0; i < values.length; i++) /* See HTTPCORE-361 */
- add(values[i]);
+ public HeaderListBuilder append(List<Header> values) {
+ if (values != null)
+ for (int i = 0, j = values.size(); i < j; i++) /* See
HTTPCORE-361 */
+ append(values.get(i));
return this;
}
/**
- * Adds the specified headers to the end of the headers in this builder.
+ * Adds the specified header to the beginning of the headers in this
builder.
+ *
+ * @param value The header to add. <jk>null</jk> values are ignored.
+ * @return This object (for method chaining).
+ */
+ @FluentSetter
+ public HeaderListBuilder prepend(Header value) {
+ if (value != null)
+ headers.add(0, value);
+ return this;
+ }
+
+ /**
+ * Appends the specified header to the beginning of this builder.
+ *
+ * <p>
+ * The header is added as a {@link BasicHeader}.
+ *
+ * @param name The header name.
+ * @param value The header value.
+ * @return This object (for method chaining).
+ */
+ public HeaderListBuilder prepend(String name, Object value) {
+ return prepend(header(name, value));
+ }
+
+ /**
+ * Appends the specified header to the beginning of this builder using
a value supplier.
+ *
+ * <p>
+ * The header is added as a {@link BasicHeader}.
+ *
+ * <p>
+ * Value is re-evaluated on each call to {@link BasicHeader#getValue()}.
+ *
+ * @param name The header name.
+ * @param value The header value supplier.
+ * @return This object (for method chaining).
+ */
+ public HeaderListBuilder prepend(String name, Supplier<?> value) {
+ return prepend(header(name, value));
+ }
+
+ /**
+ * Adds the specified headers to the beginning of the headers in this
builder.
*
* @param values The headers to add. <jk>null</jk> values are ignored.
* @return This object (for method chaining).
*/
@FluentSetter
- public HeaderListBuilder add(List<Header> values) {
- for (int i = 0; i < values.size(); i++) /* See HTTPCORE-361 */
- add(values.get(i));
+ public HeaderListBuilder prepend(Header...values) {
+ headers.addAll(0, Arrays.asList(values));
return this;
}
/**
- * Adds the specified headers to the end of the headers in this builder.
+ * Adds the specified headers to the beginning of the headers in this
builder.
*
* @param values The headers to add. <jk>null</jk> values are ignored.
* @return This object (for method chaining).
*/
- public HeaderListBuilder add(HeaderList values) {
+ @FluentSetter
+ public HeaderListBuilder prepend(List<Header> values) {
if (values != null)
- add(values.getAll());
+ headers.addAll(0, values);
return this;
}
@@ -261,7 +304,7 @@ public class HeaderListBuilder {
*/
@FluentSetter
public HeaderListBuilder remove(List<Header> values) {
- for (int i = 0; i < values.size(); i++) /* See HTTPCORE-361 */
+ for (int i = 0, j = values.size(); i < j; i++) /* See
HTTPCORE-361 */
remove(values.get(i));
return this;
}
@@ -275,7 +318,7 @@ public class HeaderListBuilder {
@FluentSetter
public HeaderListBuilder remove(String name) {
for (int i = 0; i < headers.size(); i++) /* See HTTPCORE-361 */
- if (headers.get(i).getName().equalsIgnoreCase(name))
+ if (eq(headers.get(i).getName(), name))
headers.remove(i--);
return null;
}
@@ -290,13 +333,13 @@ public class HeaderListBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public HeaderListBuilder update(Header value) {
+ public HeaderListBuilder set(Header value) {
if (value == null)
return this;
- for (int i = 0; i < headers.size(); i++) {
+ for (int i = 0, j = headers.size(); i < j; i++) {
Header x = headers.get(i);
- if (x.getName().equalsIgnoreCase(value.getName())) {
+ if (eq(x.getName(), value.getName())) {
headers.set(i, value);
return this;
}
@@ -316,9 +359,9 @@ public class HeaderListBuilder {
* @return This object (for method chaining).
*/
@FluentSetter
- public HeaderListBuilder update(Header...values) {
+ public HeaderListBuilder set(Header...values) {
for (int i = 0; i < values.length; i++) /* See HTTPCORE-361 */
- update(values[i]);
+ set(values[i]);
return this;
}
@@ -329,56 +372,34 @@ public class HeaderListBuilder {
* @param value The header value.
* @return This object (for method chaining).
*/
- public HeaderListBuilder update(String name, String value) {
- Header x = isResolving() ? new BasicHeader(name,
resolver(value)) : new BasicHeader(name, value);
- return update(x);
+ public HeaderListBuilder set(String name, Object value) {
+ return set(header(name, value));
}
/**
* Replaces the first occurrence of the headers with the same name.
*
- * <p>
- * If no header with the same name is found the given header is added
to the end of the list.
- *
- * @param values The headers to replace. <jk>null</jk> values are
ignored.
- * @return This object (for method chaining).
- */
- @FluentSetter
- public HeaderListBuilder update(List<Header> values) {
- for (int i = 0; i < values.size(); i++) /* See HTTPCORE-361 */
- update(values.get(i));
- return this;
- }
-
- /**
- * Sets all of the headers contained within this list overriding any
existing headers.
- *
- * <p>
- * The headers are added in the order in which they appear in the array.
- *
- * @param values The headers to set
+ * @param name The header name.
+ * @param value The header value.
* @return This object (for method chaining).
*/
- @FluentSetter
- public HeaderListBuilder set(Header...values) {
- clear();
- Collections.addAll(headers, values);
- return this;
+ public HeaderListBuilder set(String name, Supplier<?> value) {
+ return set(header(name, value));
}
/**
- * Sets all of the headers contained within this list overriding any
existing headers.
+ * Replaces the first occurrence of the headers with the same name.
*
* <p>
- * The headers are added in the order in which they appear in the list.
+ * If no header with the same name is found the given header is added
to the end of the list.
*
- * @param values The headers to set
+ * @param values The headers to replace. <jk>null</jk> values are
ignored.
* @return This object (for method chaining).
*/
@FluentSetter
public HeaderListBuilder set(List<Header> values) {
- clear();
- headers.addAll(values);
+ for (int i = 0, j = values.size(); i < j; i++) /* See
HTTPCORE-361 */
+ set(values.get(i));
return this;
}
@@ -396,6 +417,18 @@ public class HeaderListBuilder {
return o;
}
+ private Header header(String name, Object value) {
+ return isResolving() ? new BasicHeader(name, resolver(value)) :
new BasicHeader(name, value);
+ }
+
+ private Header header(String name, Supplier<?> value) {
+ return isResolving() ? new BasicHeader(name, resolver(value)) :
new BasicHeader(name, value);
+ }
+
+ private boolean eq(String s1, String s2) {
+ return caseSensitive ? StringUtils.eq(s1, s2) :
StringUtils.eqic(s1, s2);
+ }
+
// <FluentSetters>
// </FluentSetters>
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
index d95c651..5d416bf 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
@@ -64,6 +64,27 @@ public class SerializedHeader extends BasicHeader {
}
/**
+ * Instantiates a new instance of this object.
+ *
+ * @param name The HTTP header name name.
+ * @param value The POJO to serialize to the parameter value.
+ * @param serializer
+ * The serializer to use for serializing the value to a string
value.
+ * @param schema
+ * The schema object that defines the format of the output.
+ * <br>If <jk>null</jk>, defaults to the schema defined on the
serializer.
+ * <br>If that's also <jk>null</jk>, defaults to {@link
HttpPartSchema#DEFAULT}.
+ * <br>Only used if serializer is schema-aware (e.g. {@link
OpenApiSerializer}).
+ * <br>Can also be a {@link Supplier}.
+ * @param skipIfEmpty If value is a blank string, the value should
return as <jk>null</jk>.
+ *
+ * @return A new instance of this object.
+ */
+ public static SerializedHeader of(String name, Object value,
HttpPartSerializerSession serializer, HttpPartSchema schema, boolean
skipIfEmpty) {
+ return new SerializedHeader(name, value, serializer, schema,
skipIfEmpty);
+ }
+
+ /**
* Constructor.
*
* @param name The HTTP header name name.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
index c594eb0..5beada5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
@@ -117,7 +117,7 @@ public class BasicCsvArrayPart extends BasicPart {
List<String> vv = getParsedValue();
if (val != null && vv != null)
for (String v : vv)
- if (isEquals(v, val))
+ if (eq(v, val))
return true;
return false;
}
@@ -132,7 +132,7 @@ public class BasicCsvArrayPart extends BasicPart {
List<String> vv = getParsedValue();
if (val != null && vv != null)
for (String v : vv)
- if (isEqualsIc(v, val))
+ if (eqic(v, val))
return true;
return false;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
index 04582c6..e532755 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/resource/HttpResourceBuilder.java
@@ -291,7 +291,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
*/
public HttpResourceBuilder<T> header(Header value) {
if (value != null)
- headersBuilder().add(value);
+ headersBuilder().append(value);
return this;
}
@@ -307,7 +307,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
*/
public HttpResourceBuilder<T> header(String name, String value) {
if (name != null && value != null)
- headersBuilder().add(name, value);
+ headersBuilder().append(name, value);
return this;
}
@@ -330,7 +330,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
else if
(n.equalsIgnoreCase("content-length"))
contentLength(Long.parseLong(v));
else
- headersBuilder().add(h);
+ headersBuilder().append(h);
}
}
}
@@ -344,7 +344,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
* @return This object (for method chaining).
*/
public HttpResourceBuilder<T> headers(List<Header> values) {
- headersBuilder().add(values);
+ headersBuilder().append(values);
return this;
}
@@ -391,7 +391,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
* @return This object (for method chaining).
*/
public HttpResourceBuilder<T> updateHeader(Header value) {
- headersBuilder().update(value);
+ headersBuilder().set(value);
return this;
}
@@ -405,7 +405,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
* @return This object (for method chaining).
*/
public HttpResourceBuilder<T> updateHeaders(Header...values) {
- headersBuilder().update(values);
+ headersBuilder().set(values);
return this;
}
@@ -419,7 +419,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
* @return This object (for method chaining).
*/
public HttpResourceBuilder<T> updateHeaders(List<Header> values) {
- headersBuilder().update(values);
+ headersBuilder().set(values);
return this;
}
@@ -433,7 +433,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
* @return This object (for method chaining).
*/
public HttpResourceBuilder<T> setHeaders(Header...values) {
- headersBuilder().set(values);
+ headersBuilder().clear().append(values);
return this;
}
@@ -447,7 +447,7 @@ public class HttpResourceBuilder<T extends BasicResource> {
* @return This object (for method chaining).
*/
public HttpResourceBuilder<T> setHeaders(List<Header> values) {
- headersBuilder().set(values);
+ headersBuilder().clear().append(values);
return this;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
index 9db0503..6d969d8 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpException.java
@@ -268,27 +268,27 @@ public class BasicHttpException extends
BasicRuntimeException implements HttpRes
@Override /* HttpMessage */
public void addHeader(Header value) {
- headersBuilder().add(value).build();
+ headersBuilder().append(value).build();
}
@Override /* HttpMessage */
public void addHeader(String name, String value) {
- headersBuilder().add(new BasicHeader(name, value)).build();
+ headersBuilder().append(name, value).build();
}
@Override /* HttpMessage */
public void setHeader(Header value) {
- headersBuilder().update(value).build();
+ headersBuilder().set(value).build();
}
@Override /* HttpMessage */
public void setHeader(String name, String value) {
- headersBuilder().update(new BasicHeader(name, value)).build();
+ headersBuilder().set(name, value).build();
}
@Override /* HttpMessage */
public void setHeaders(Header[] values) {
- headersBuilder().set(values).build();
+ headersBuilder().clear().append(values).build();
}
@Override /* HttpMessage */
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
index 71d427f..cb97c95 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/BasicHttpResponse.java
@@ -147,27 +147,27 @@ public class BasicHttpResponse implements HttpResponse {
@Override /* HttpMessage */
public void addHeader(Header value) {
- headersBuilder().add(value).build();
+ headersBuilder().append(value).build();
}
@Override /* HttpMessage */
public void addHeader(String name, String value) {
- headersBuilder().add(new BasicHeader(name, value)).build();
+ headersBuilder().append(name, value).build();
}
@Override /* HttpMessage */
public void setHeader(Header value) {
- headersBuilder().update(value).build();
+ headersBuilder().set(value).build();
}
@Override /* HttpMessage */
public void setHeader(String name, String value) {
- headersBuilder().update(new BasicHeader(name, value)).build();
+ headersBuilder().set(name, value).build();
}
@Override /* HttpMessage */
public void setHeaders(Header[] values) {
- headersBuilder().set(values).build();
+ headersBuilder().clear().append(values).build();
}
@Override /* HttpMessage */
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
index 8dfead4..6f3d35b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
@@ -240,7 +240,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> header(Header value) {
- headersBuilder().add(value);
+ headersBuilder().append(value);
return this;
}
@@ -252,7 +252,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> header(String name, String value) {
- headersBuilder().add(name, value);
+ headersBuilder().append(name, value);
return this;
}
@@ -263,7 +263,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> headers(Header...values) {
- headersBuilder().add(values);
+ headersBuilder().append(values);
return this;
}
@@ -274,7 +274,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> headers(List<Header> values) {
- headersBuilder().add(values);
+ headersBuilder().append(values);
return this;
}
@@ -321,7 +321,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> updateHeader(Header value) {
- headersBuilder().update(value);
+ headersBuilder().set(value);
return this;
}
@@ -335,7 +335,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> updateHeaders(Header...values) {
- headersBuilder().update(values);
+ headersBuilder().set(values);
return this;
}
@@ -349,7 +349,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> updateHeaders(List<Header> values) {
- headersBuilder().update(values);
+ headersBuilder().set(values);
return this;
}
@@ -363,7 +363,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> setHeaders(Header...values) {
- headersBuilder().set(values);
+ headersBuilder().clear().append(values);
return this;
}
@@ -377,7 +377,7 @@ public class HttpExceptionBuilder<T extends
BasicHttpException> extends BasicRun
* @return This object (for method chaining).
*/
public HttpExceptionBuilder<T> setHeaders(List<Header> values) {
- headersBuilder().set(values);
+ headersBuilder().clear().append(values);
return this;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
index 021359b..52d1b4d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpResponseBuilder.java
@@ -247,7 +247,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> header(Header value) {
- headersBuilder().add(value);
+ headersBuilder().append(value);
return this;
}
@@ -259,7 +259,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> header(String name, String value) {
- headersBuilder().add(name, value);
+ headersBuilder().append(name, value);
return this;
}
@@ -270,7 +270,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> headers(Header...values) {
- headersBuilder().add(values);
+ headersBuilder().append(values);
return this;
}
@@ -281,7 +281,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> headers(List<Header> values) {
- headersBuilder().add(values);
+ headersBuilder().append(values);
return this;
}
@@ -328,7 +328,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> updateHeader(Header value) {
- headersBuilder().update(value);
+ headersBuilder().set(value);
return this;
}
@@ -342,7 +342,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> updateHeaders(Header...values) {
- headersBuilder().update(values);
+ headersBuilder().set(values);
return this;
}
@@ -356,7 +356,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> updateHeaders(List<Header> values) {
- headersBuilder().update(values);
+ headersBuilder().set(values);
return this;
}
@@ -370,7 +370,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> setHeaders(Header...values) {
- headersBuilder().set(values);
+ headersBuilder().clear().append(values);
return this;
}
@@ -384,7 +384,7 @@ public class HttpResponseBuilder<T extends
BasicHttpResponse> {
* @return This object (for method chaining).
*/
public HttpResponseBuilder<T> setHeaders(List<Header> values) {
- headersBuilder().set(values);
+ headersBuilder().clear().append(values);
return this;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
index b540959..bab7105 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/ArrayUtils.java
@@ -466,7 +466,7 @@ public final class ArrayUtils {
if (a1.length != a2.length)
return false;
for (int i = 0; i < a1.length; i++)
- if (! StringUtils.isEquals(a1[i], a2[i]))
+ if (! StringUtils.eq(a1[i], a2[i]))
return false;
return true;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
index 3bbeaa2..13feabd 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/StringUtils.java
@@ -1199,7 +1199,7 @@ public final class StringUtils {
* @param s2 String 2.
* @return <jk>true</jk> if the strings are equal.
*/
- public static boolean isEquals(String s1, String s2) {
+ public static boolean eq(String s1, String s2) {
if (s1 == null)
return s2 == null;
if (s2 == null)
@@ -1260,7 +1260,7 @@ public final class StringUtils {
* @param s2 String 2.
* @return <jk>true</jk> if the strings are equal.
*/
- public static boolean isEqualsIc(String s1, String s2) {
+ public static boolean eqic(String s1, String s2) {
if (s1 == null)
return s2 == null;
if (s2 == null)
@@ -1275,8 +1275,19 @@ public final class StringUtils {
* @param s2 String 2.
* @return <jk>true</jk> if the strings are not equal.
*/
- public static boolean isNotEquals(String s1, String s2) {
- return ! isEquals(s1, s2);
+ public static boolean ne(String s1, String s2) {
+ return ! eq(s1, s2);
+ }
+
+ /**
+ * Tests two strings for non-equality ignoring case, but gracefully
handles nulls.
+ *
+ * @param s1 String 1.
+ * @param s2 String 2.
+ * @return <jk>true</jk> if the strings are not equal ignoring case.
+ */
+ public static boolean neic(String s1, String s2) {
+ return ! eqic(s1, s2);
}
/**
@@ -1903,7 +1914,7 @@ public final class StringUtils {
*/
public static boolean isOneOf(String s, String...values) {
for (int i = 0; i < values.length; i++)
- if (StringUtils.isEquals(s, values[i]))
+ if (StringUtils.eq(s, values[i]))
return true;
return false;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java
index 33a3d63..4a37ef1 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/ReflectionMap.java
@@ -516,7 +516,7 @@ public class ReflectionMap<V> {
Class<?> c = m.getDeclaringClass();
return
classMatches(simpleClassName, fullClassName, c)
- && (isEquals(m.getName(), methodName))
+ && (eq(m.getName(), methodName))
&& (argsMatch(args, m.getParameterTypes()));
}
@@ -594,7 +594,7 @@ public class ReflectionMap<V> {
Class<?> c = f.getDeclaringClass();
return
classMatches(simpleClassName, fullClassName, c)
- && (isEquals(f.getName(), fieldName));
+ && (eq(f.getName(), fieldName));
}
public OMap toMap() {
@@ -621,7 +621,7 @@ public class ReflectionMap<V> {
for (int i = 0; i < args.length; i++) {
String n = names[i];
Class<?> a = args[i];
- if (! (isEquals(n, a.getSimpleName()) || isEquals(n,
a.getName())))
+ if (! (eq(n, a.getSimpleName()) || eq(n, a.getName())))
return false;
}
return true;
@@ -640,7 +640,7 @@ public class ReflectionMap<V> {
// c.getFullName() ==
"org.apache.juneau.a.rttests.RountTripBeansWithBuilders$Ac$Builder"
// c.getPackage() == "org.apache.juneau.a.rttests"
String cSimple = c.getSimpleName(), cFull = c.getName();
- if (isEquals(simpleName, cSimple) || isEquals(fullName, cFull))
+ if (eq(simpleName, cSimple) || eq(fullName, cFull))
return true;
if ("*".equals(simpleName))
return true;
@@ -648,12 +648,12 @@ public class ReflectionMap<V> {
Package p = c.getPackage();
if (p != null)
cFull = cFull.substring(p.getName().length() +
1);
- if (isEquals(simpleName, cFull))
+ if (eq(simpleName, cFull))
return true;
int i = cFull.indexOf('$');
while (i != -1) {
cFull = cFull.substring(i+1);
- if (isEquals(simpleName, cFull))
+ if (eq(simpleName, cFull))
return true;
i = cFull.indexOf('$');
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
index 6a7b74b..ebc5ff9 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializerSession.java
@@ -13,6 +13,7 @@
package org.apache.juneau.xml;
import static org.apache.juneau.internal.ArrayUtils.*;
+import static org.apache.juneau.internal.StringUtils.*;
import static org.apache.juneau.xml.XmlSerializer.*;
import static org.apache.juneau.xml.XmlSerializerSession.ContentResult.*;
import static org.apache.juneau.xml.XmlSerializerSession.JsonType.*;
@@ -25,7 +26,6 @@ import java.util.*;
import org.apache.juneau.*;
import org.apache.juneau.collections.*;
-import org.apache.juneau.internal.*;
import org.apache.juneau.serializer.*;
import org.apache.juneau.transform.*;
import org.apache.juneau.xml.annotation.*;
@@ -370,7 +370,7 @@ public class XmlSerializerSession extends
WriterSerializerSession {
name = null;
}
- if (StringUtils.isEquals(name, elementName))
+ if (eq(name, elementName))
name = null;
if (isEnableNamespaces()) {
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 0c9a1df..9c92624 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -2090,9 +2090,9 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
for (Object o : cp.getList(RESTCLIENT_headers,
Object.class).orElse(emptyList())) {
o = buildBuilders(o, partSerializerSession);
if (o instanceof HeaderList)
- headers.add((HeaderList)o);
+ headers.append(((HeaderList)o).getAll());
else
- headers.add(BasicHeader.cast(o));
+ headers.append(BasicHeader.cast(o));
}
this.headers = headers.build();
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
index 94f0d4c..41ff5d6 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
@@ -719,7 +719,7 @@ public class RestResponse implements HttpResponse {
*/
@Override /* HttpMessage */
public void addHeader(Header header) {
- headers = headers.copy().add(header).build();
+ headers = headers.copy().append(header).build();
}
/**
@@ -732,7 +732,7 @@ public class RestResponse implements HttpResponse {
*/
@Override /* HttpMessage */
public void addHeader(String name, String value) {
- headers = headers.copy().add(name, value).build();
+ headers = headers.copy().append(name, value).build();
}
/**
@@ -744,7 +744,7 @@ public class RestResponse implements HttpResponse {
*/
@Override /* HttpMessage */
public void setHeader(Header header) {
- headers = headers.copy().update(header).build();
+ headers = headers.copy().set(header).build();
}
/**
@@ -757,7 +757,7 @@ public class RestResponse implements HttpResponse {
*/
@Override /* HttpMessage */
public void setHeader(String name, String value) {
- headers = headers.copy().update(name, value).build();
+ headers = headers.copy().set(name, value).build();
}
/**
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
index f833575..83a0dfa 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/remote/RemoteMeta.java
@@ -59,14 +59,14 @@ public class RemoteMeta {
if (! r.path().isEmpty())
path = trimSlashes(resolve(r.path()));
for (String h : r.headers())
- headersBuilder.add(basicHeader(resolve(h)));
+ headersBuilder.append(basicHeader(resolve(h)));
if (! r.version().isEmpty())
clientVersion = resolve(r.version());
if (! r.versionHeader().isEmpty())
versionHeader = resolve(r.versionHeader());
if (r.headerList() != HeaderList.Null.class) {
try {
-
headersBuilder.add(r.headerList().newInstance().getAll());
+
headersBuilder.append(r.headerList().newInstance().getAll());
} catch (Exception e) {
throw new RuntimeException("Could not
instantiate HeaderSupplier class.", e);
}
@@ -74,7 +74,7 @@ public class RemoteMeta {
}
if (clientVersion != null)
- headersBuilder.add(stringHeader(versionHeader,
clientVersion));
+ headersBuilder.append(stringHeader(versionHeader,
clientVersion));
AMap<Method,RemoteOperationMeta> operations = AMap.create();
for (MethodInfo m : ci.getPublicMethods())
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 8c57a94..b05ef00 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -5168,7 +5168,7 @@ public class RestContext extends BeanContext {
HeaderListBuilder x = HeaderList.create();
-
x.update(properties.getInstanceArray(REST_defaultRequestHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
+ x.set(properties.getInstanceArray(REST_defaultRequestHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
x = BeanStore
.of(beanStore, resource)
@@ -5199,7 +5199,7 @@ public class RestContext extends BeanContext {
HeaderListBuilder x = HeaderList.create();
-
x.update(properties.getInstanceArray(REST_defaultResponseHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
+ x.set(properties.getInstanceArray(REST_defaultResponseHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
x = BeanStore
.of(beanStore, resource)
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
index 1eb6137..31fab03 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOperationContext.java
@@ -1353,9 +1353,9 @@ public class RestOperationContext extends BeanContext
implements Comparable<Rest
HeaderListBuilder x = HeaderList.create();
- x.update(context.getDefaultRequestHeaders().getAll());
+ x.set(context.getDefaultRequestHeaders().getAll());
-
x.update(properties.getInstanceArray(RESTOP_defaultRequestHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
+ x.set(properties.getInstanceArray(RESTOP_defaultRequestHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
for (Annotation[] aa : method.getParameterAnnotations()) {
for (Annotation a : aa) {
@@ -1364,7 +1364,7 @@ public class RestOperationContext extends BeanContext
implements Comparable<Rest
String def =
joinnlFirstNonEmptyArray(h._default(), h.df());
if (def != null) {
try {
-
x.update(basicHeader(firstNonEmpty(h.name(), h.n(), h.value()),
parseAnything(def)));
+
x.set(basicHeader(firstNonEmpty(h.name(), h.n(), h.value()),
parseAnything(def)));
} catch (ParseException e) {
throw new
ConfigException(e, "Malformed @Header annotation");
}
@@ -1399,9 +1399,9 @@ public class RestOperationContext extends BeanContext
implements Comparable<Rest
HeaderListBuilder x = HeaderList.create();
- x.update(context.getDefaultResponseHeaders().getAll());
+ x.set(context.getDefaultResponseHeaders().getAll());
-
x.update(properties.getInstanceArray(RESTOP_defaultResponseHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
+
x.set(properties.getInstanceArray(RESTOP_defaultResponseHeaders,
org.apache.http.Header.class, beanStore).orElse(new org.apache.http.Header[0]));
x = BeanStore
.of(beanStore, resource)
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/config/ConfigImportsTest.java
b/juneau-utest/src/test/java/org/apache/juneau/config/ConfigImportsTest.java
index dbf5f89..5f13c20 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/config/ConfigImportsTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/config/ConfigImportsTest.java
@@ -13,12 +13,12 @@
package org.apache.juneau.config;
import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.internal.StringUtils.*;
import static org.junit.Assert.*;
import static org.junit.runners.MethodSorters.*;
import org.apache.juneau.config.event.*;
import org.apache.juneau.config.store.*;
-import org.apache.juneau.internal.*;
import org.junit.*;
/**
@@ -176,7 +176,7 @@ public class ConfigImportsTest {
if (events.size() == 0)
return null;
for (ConfigEvent ce : events)
- if (StringUtils.isEquals(section,
ce.getSection()) && StringUtils.isEquals(key, ce.getKey()))
+ if (eq(section, ce.getSection()) && eq(key,
ce.getKey()))
return ce.getValue();
return null;
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/http/HeaderList_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/http/HeaderList_Test.java
index c652589..d604194 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/HeaderList_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/HeaderList_Test.java
@@ -16,6 +16,8 @@ import static org.apache.juneau.assertions.Assertions.*;
import static org.apache.juneau.http.HttpHeaders.*;
import static org.junit.runners.MethodSorters.*;
+import java.util.*;
+
import org.apache.http.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.http.header.*;
@@ -31,21 +33,21 @@ public class HeaderList_Test {
HeaderListBuilder x = HeaderList.create();
assertObject(x.build().iterator()).asJson().is("[]");
- x.add(header("Foo","bar"));
+ x.append(header("Foo","bar"));
assertObject(x.build().iterator()).asJson().is("['Foo: bar']");
- x.add(header("Foo","baz"));
+ x.append(header("Foo","baz"));
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz']");
- x.add(HeaderList.of());
+ x.append(HeaderList.of().getAll());
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz']");
- x.add(HeaderList.of(header("Foo","qux")));
+ x.append(HeaderList.of(header("Foo","qux")).getAll());
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz','Foo: qux']");
- x.add(HeaderList.of(header("Foo","q2x"), header("Foo","q3x")));
+ x.append(HeaderList.of(header("Foo","q2x"),
header("Foo","q3x")).getAll());
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz','Foo: qux','Foo: q2x','Foo: q3x']");
- x.add(HeaderList.of(header("Foo","q4x"), header("Foo","q5x")));
+ x.append(HeaderList.of(header("Foo","q4x"),
header("Foo","q5x")).getAll());
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
- x.add((Header)null);
+ x.append((Header)null);
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
- x.add((HeaderList)null);
+ x.append((List<Header>)null);
assertObject(x.build().iterator()).asJson().is("['Foo:
bar','Foo: baz','Foo: qux','Foo: q2x','Foo: q3x','Foo: q4x','Foo: q5x']");
assertObject(new
HeaderList.Null().iterator()).asJson().is("[]");
@@ -74,18 +76,17 @@ public class HeaderList_Test {
HeaderListBuilder x = HeaderList.create().resolving();
System.setProperty(pname, "y");
- x.add("X1","bar");
- x.add("X2","$S{"+pname+"}");
- x.add("X3","bar");
- x.add("X4",()->"$S{"+pname+"}");
- x.add("X5","bar",openApiSession(),null,false);
- x.add("X6","$S{"+pname+"}",openApiSession(),null,false);
+ x.append("X1","bar");
+ x.append("X2","$S{"+pname+"}");
+ x.append("X3","bar");
+ x.append("X4",()->"$S{"+pname+"}");
+
x.append(SerializedHeader.of("X5","bar",openApiSession(),null,false));
- assertString(x.build().toString()).is("[X1: bar, X2: y, X3:
bar, X4: y, X5: bar, X6: y]");
+ assertString(x.build().toString()).is("[X1: bar, X2: y, X3:
bar, X4: y, X5: bar]");
System.setProperty(pname, "z");
- assertString(x.build().toString()).is("[X1: bar, X2: z, X3:
bar, X4: z, X5: bar, X6: z]");
+ assertString(x.build().toString()).is("[X1: bar, X2: z, X3:
bar, X4: z, X5: bar]");
System.clearProperty(pname);
}
@@ -94,8 +95,8 @@ public class HeaderList_Test {
public void a04_toArrayMethods() {
HeaderListBuilder x = HeaderList
.create()
- .add("X1","1")
- .add(headerList("X2","2"));
+ .append("X1","1")
+ .append(headerList("X2","2").getAll());
assertObject(x.build().getAll()).asJson().is("['X1: 1','X2:
2']");
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
index a438c80..3941269 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_Test.java
@@ -583,8 +583,8 @@ public class Remote_Test {
public F1b() {
super(
create()
- .add(basicHeader("Foo","baz"))
-
.add(HeaderList.create().add(basicHeader("Foo",()->"qux")).build())
+ .append(basicHeader("Foo","baz"))
+
.append(HeaderList.create().append(basicHeader("Foo",()->"qux")).build().getAll())
);
}
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
b/juneau-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
index 9fd4071..6fa8aed 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/transforms/OneWayStringSwapTest.java
@@ -43,7 +43,7 @@ public abstract class OneWayStringSwapTest<T> {
@Test
public void testSwap() throws Exception {
String s = (String)ss.swap(bs, o);
- if (! isEquals(expected, s)) {
+ if (ne(expected, s)) {
if (expected.isEmpty()) {
if (! label.startsWith("[]"))
System.err.println(label.substring(0,
label.indexOf(']')+1) + " "+s); // NOT DEBUG
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
b/juneau-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
index a0eb84c..150c892 100755
---
a/juneau-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/transforms/RoundTripStringSwapTest.java
@@ -43,7 +43,7 @@ public abstract class RoundTripStringSwapTest<T> {
@Test
public void testSwap() throws Exception {
String s = (String)ss.swap(bs, o);
- if (! isEquals(expected, s)) {
+ if (ne(expected, s)) {
if (expected.isEmpty()) {
if (! label.startsWith("[]"))
System.err.println(label.substring(0,
label.indexOf(']')+1) + " "+s); // NOT DEBUG
@@ -59,7 +59,7 @@ public abstract class RoundTripStringSwapTest<T> {
String s = (String)ss.swap(bs, o);
T o2 = ss.unswap(bs, s, bs.getClassMetaForObject(o));
String s2 = (String)ss.swap(bs, o2);
- if (! isEquals(s, s2)) {
+ if (ne(s, s2)) {
if (expected.isEmpty())
Assert.fail();
System.err.println("s=["+s+"], o=["+o+"],
o.type=["+o.getClass().getName()+"], o2=["+o2+"],
o2.type=["+o2.getClass().getName()+"]"); // NOT DEBUG