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 7412139ef4 TODO-999: utility migration, FQCN cleanup, f()/fs()
placeholder fix
7412139ef4 is described below
commit 7412139ef455bd2b7d3bbe245df7aa765048aa0b
Author: James Bognar <[email protected]>
AuthorDate: Wed Jun 3 13:54:12 2026 -0400
TODO-999: utility migration, FQCN cleanup, f()/fs() placeholder fix
- Task 1: migrate null-or-isBlank/isEmpty -> StringUtils.isBlank/isEmpty
(29 files),
Objects.equals -> Utils.eq (2 files), ArrayList(Arrays.asList) ->
CollectionUtils.list
(3 files), String.format -> StringUtils.f (1 file), hint-comment fix (1
file)
- Task 2: replace inline FQCNs with imports in MarkdownParserSession,
RequestHttpPart,
RestClient (19 substitutions; 1 FQCN retained due to name collision)
- Task 7: fix f()/fs() calls using MessageFormat {N} placeholders -> %s/%d
(8 files)
Co-authored-by: Cursor <[email protected]>
---
.../java/org/apache/juneau/junit/bct/BctUtils.java | 2 +-
.../junit/bct/PropertyNotFoundException.java | 4 +--
.../apache/juneau/commons/bean/BeanMapEntry.java | 4 ++-
.../juneau/commons/reflect/ExecutableInfo.java | 6 ++--
.../org/apache/juneau/commons/runtime/Args.java | 3 +-
.../org/apache/juneau/commons/svl/VarResolver.java | 2 +-
.../main/java/org/apache/juneau/UriResolver.java | 2 +-
.../org/apache/juneau/jsonschema/TypeCategory.java | 4 +--
.../juneau/markdown/MarkdownParserSession.java | 6 ++--
.../org/apache/juneau/parser/ParserListener.java | 4 +--
.../juneau/serializer/SerializerListener.java | 2 +-
.../main/java/org/apache/juneau/sse/SseEvent.java | 10 ++++---
.../juneau/rest/client/classic/RestClient.java | 32 +++++++++++-----------
.../org/apache/juneau/rest/client/RestClient.java | 5 ++--
.../http/classic/response/BasicHttpException.java | 4 +--
.../juneau/http/response/BasicHttpException.java | 4 +--
.../juneau/rest/auth/jwt/JwtTokenValidator.java | 5 ++--
.../java/org/apache/juneau/rest/mcp/McpCursor.java | 4 ++-
.../org/apache/juneau/rest/mcp/McpDispatcher.java | 4 ++-
.../micrometer/MicrometerMetricsRecorder.java | 3 +-
.../juneau/rest/auth/oidc/rp/OidcRelyingParty.java | 3 +-
.../rest/auth/oidc/rp/OidcSessionAuthFilter.java | 3 +-
.../juneau/rest/tracing/otel/OtelTracerHook.java | 3 +-
.../tracing/otel/RestRequestTextMapGetter.java | 4 ++-
.../juneau/rest/auth/saml/SamlAuthFilter.java | 3 +-
.../rest/view/freemarker/FreemarkerDispatcher.java | 9 +++---
.../rest/view/freemarker/FreemarkerView.java | 9 +++---
.../apache/juneau/rest/view/jsp/JspDispatcher.java | 3 +-
.../org/apache/juneau/rest/view/jsp/JspView.java | 9 +++---
.../juneau/rest/view/jsp/JspViewRenderer.java | 4 ++-
.../rest/view/mustache/MustacheDispatcher.java | 9 +++---
.../juneau/rest/view/mustache/MustacheView.java | 9 +++---
.../rest/view/thymeleaf/ThymeleafDispatcher.java | 5 ++--
.../juneau/rest/view/thymeleaf/ThymeleafView.java | 9 +++---
.../java/org/apache/juneau/rest/RestContext.java | 16 +++++------
.../apache/juneau/rest/auth/AuthFilterChain.java | 3 +-
.../juneau/rest/convention/FaviconProvider.java | 6 ++--
.../juneau/rest/httppart/RequestHttpPart.java | 2 +-
.../org/apache/juneau/rest/ops/AdminProvider.java | 4 ++-
.../java/org/apache/juneau/rest/ops/EchoMixin.java | 4 ++-
.../rest/processor/ProblemDetailsProcessor.java | 4 ++-
.../org/apache/juneau/rest/sse/SseBroadcaster.java | 3 +-
.../apache/juneau/rest/sse/SseSubscription.java | 3 +-
.../tracing/TraceContextResponseProcessor.java | 4 ++-
.../org/apache/juneau/rest/util/RestUtils.java | 2 +-
45 files changed, 142 insertions(+), 101 deletions(-)
diff --git
a/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/BctUtils.java
b/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/BctUtils.java
index c83ed6137d..10b3b0666e 100644
---
a/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/BctUtils.java
+++
b/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/BctUtils.java
@@ -60,7 +60,7 @@ public class BctUtils {
* @return A new {@link AssertionFailedError} with formatted message
and values.
*/
public static AssertionFailedError assertEqualsFailed(Object expected,
Object actual, Supplier<String> messageSupplier) {
- return new AssertionFailedError(opt(messageSupplier).map(x ->
x.get()).orElse("Equals assertion failed.") + f(" ==> expected: <{0}> but was:
<{1}>", expected, actual), expected, actual);
+ return new AssertionFailedError(opt(messageSupplier).map(x ->
x.get()).orElse("Equals assertion failed.") + f(" ==> expected: <%s> but was:
<%s>", expected, actual), expected, actual);
}
/**
diff --git
a/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/PropertyNotFoundException.java
b/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/PropertyNotFoundException.java
index 2e80f945dd..d742c3c5fa 100644
---
a/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/PropertyNotFoundException.java
+++
b/juneau-core/juneau-bct/src/main/java/org/apache/juneau/junit/bct/PropertyNotFoundException.java
@@ -62,7 +62,7 @@ public class PropertyNotFoundException extends
RuntimeException {
* @param objectType The type of object on which the property was sought
*/
public PropertyNotFoundException(String propertyName, Class<?>
objectType) {
- super(f("Property ''{0}'' not found on object of type {1}",
propertyName, cns(objectType)));
+ super(f("Property '%s' not found on object of type %s",
propertyName, cns(objectType)));
}
/**
@@ -73,7 +73,7 @@ public class PropertyNotFoundException extends
RuntimeException {
* @param cause The underlying cause of the exception
*/
public PropertyNotFoundException(String propertyName, Class<?>
objectType, Throwable cause) {
- super(f("Property ''{0}'' not found on object of type {1}",
propertyName, cns(objectType)), cause);
+ super(f("Property '%s' not found on object of type %s",
propertyName, cns(objectType)), cause);
}
/**
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanMapEntry.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanMapEntry.java
index 4afe2c67d6..6a9831ed55 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanMapEntry.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/bean/BeanMapEntry.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.commons.bean;
+import static org.apache.juneau.commons.utils.Utils.*;
+
import java.util.*;
/**
@@ -141,7 +143,7 @@ public class BeanMapEntry implements
Map.Entry<String,Object> {
return true;
if (!(obj instanceof Map.Entry<?,?> other))
return false;
- return Objects.equals(getKey(), other.getKey()) &&
Objects.equals(getValue(), other.getValue());
+ return eq(getKey(), other.getKey()) && eq(getValue(),
other.getValue());
}
/**
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
index 2cf0d1f1fe..4b9111863f 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
@@ -122,7 +122,7 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
this.parameterTypes = memoize(() ->
getParameters().stream().map(ParameterInfo::getParameterType).toList());
this.exceptions = memoize(() ->
stream(inner.getExceptionTypes()).map(ClassInfo::of).map(ClassInfo.class::cast).toList());
this.declaredAnnotations = memoize(() ->
stream(inner.getDeclaredAnnotations()).flatMap(AnnotationUtils::streamRepeated).map(a
-> ai((Annotatable)this, a)).toList());
- this.nameShort = memoize(() -> f("{0}({1})", getNameSimple(),
getParameters().stream().map(p ->
p.getParameterType().getNameSimple()).collect(joining(","))));
+ this.nameShort = memoize(() -> f("%s(%s)", getNameSimple(),
getParameters().stream().map(p ->
p.getParameterType().getNameSimple()).collect(joining(","))));
this.nameFull = memoize(this::findNameFull);
this.toString = memoize(this::findToString);
}
@@ -966,9 +966,9 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
private void checkIndex(int index) {
int pc = getParameterCount();
if (pc == 0)
- throw new IndexOutOfBoundsException(f("Invalid index
''{0}''. No parameters.", index));
+ throw new IndexOutOfBoundsException(f("Invalid index
'%d'. No parameters.", index));
if (index < 0 || index >= pc)
- throw new IndexOutOfBoundsException(f("Invalid index
''{0}''. Parameter count: {1}", index, pc));
+ throw new IndexOutOfBoundsException(f("Invalid index
'%d'. Parameter count: %d", index, pc));
}
private String findNameFull() {
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/runtime/Args.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/runtime/Args.java
index 661d38d42d..50dd78c799 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/runtime/Args.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/runtime/Args.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.commons.runtime;
+import static org.apache.juneau.commons.utils.CollectionUtils.*;
import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.Utils.*;
@@ -366,7 +367,7 @@ public class Args {
private List<String> resolvePrefixes() {
List<String> p;
if (customPrefix != null) {
- p = new
ArrayList<>(Arrays.asList(customPrefix));
+ p = list(customPrefix);
} else {
p = new ArrayList<>();
if (allowLongFlags)
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/svl/VarResolver.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/svl/VarResolver.java
index 5dcf65c14c..d21b445ffd 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/svl/VarResolver.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/svl/VarResolver.java
@@ -101,7 +101,7 @@ public class VarResolver {
this.beanStore = copyFrom.beanStore;
vars = VarList.of(copyFrom.vars);
userBeans = new LinkedHashMap<>();
- functions = new
ArrayList<>(Arrays.asList(copyFrom.functions));
+ functions = list(copyFrom.functions);
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
index 65431cfb2f..3b24b5a043 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/UriResolver.java
@@ -84,7 +84,7 @@ public class UriResolver {
}
private static boolean isSpecialUri(String s) {
- if (s == null || s.isEmpty())
+ if (isEmpty(s))
return false;
var c = s.charAt(0);
if (c != 's' && c != 'c' && c != 'r')
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
index a64b541355..5ace7b0b28 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/TypeCategory.java
@@ -74,7 +74,7 @@ public enum TypeCategory {
* @return A comma-delimited list of values into a set of {@link
TypeCategory} values.
*/
public static Set<TypeCategory> parse(String s) {
- if (s == null || s.isEmpty())
+ if (isEmpty(s))
return Collections.emptySet();
Set<TypeCategory> set = CollectionUtils.set();
split(s, x -> set.add(valueOf(x.toUpperCase())));
@@ -88,7 +88,7 @@ public enum TypeCategory {
* @return A comma-delimited list of values into an array of {@link
TypeCategory} values.
*/
public static TypeCategory[] parseArray(String s) {
- if (s == null || s.isEmpty())
+ if (isEmpty(s))
return new TypeCategory[0];
List<TypeCategory> list = list();
split(s, x -> list.add(valueOf(x.toUpperCase())));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/markdown/MarkdownParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/markdown/MarkdownParserSession.java
index 5143c71920..6751a34b1b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/markdown/MarkdownParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/markdown/MarkdownParserSession.java
@@ -28,6 +28,8 @@ import org.apache.juneau.commons.function.Memoizer;
import org.apache.juneau.json.*;
import org.apache.juneau.json5.*;
import org.apache.juneau.parser.*;
+import org.apache.juneau.swap.BuilderSwap;
+import org.apache.juneau.swap.ObjectSwap;
/**
* Session object for {@link MarkdownParser}.
@@ -141,8 +143,8 @@ public class MarkdownParserSession extends
ReaderParserSession {
if (eType == null)
eType = (ClassMeta<T>) object();
- var swap = (org.apache.juneau.swap.ObjectSwap<T,Object>)
eType.getSwap(this);
- var builder = (org.apache.juneau.swap.BuilderSwap<T,Object>)
eType.getBuilderSwap(this);
+ var swap = (ObjectSwap<T,Object>) eType.getSwap(this);
+ var builder = (BuilderSwap<T,Object>)
eType.getBuilderSwap(this);
ClassMeta<?> sType;
if (builder != null)
sType = builder.getBuilderClassMeta(this);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
index 39e8abdb79..e967619a45 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserListener.java
@@ -44,7 +44,7 @@ public class ParserListener {
* @param p The bean property we had an issue on.
*/
public void onBeanSetterException(ParserSession session, Throwable t,
BeanPropertyMeta p) {
- onError(session, t, f("Could not call setValue() on property
''{0}'' of class ''{1}'', exception = {2}", p.getName(),
p.getBeanMeta().getBeanInfo(), lm(t)));
+ onError(session, t, f("Could not call setValue() on property
'%s' of class '%s', exception = %s", p.getName(),
p.getBeanMeta().getBeanInfo(), lm(t)));
}
/**
@@ -72,6 +72,6 @@ public class ParserListener {
* @param bean The bean.
*/
public <T> void onUnknownBeanProperty(ParserSession session, String
propertyName, Class<T> beanClass, T bean) {
- onError(session, null, f("Unknown property ''{0}'' encountered
while trying to parse into class ''{1}'' at location {2}", propertyName,
beanClass, session.getPosition()));
+ onError(session, null, f("Unknown property '%s' encountered
while trying to parse into class '%s' at location %s", propertyName, beanClass,
session.getPosition()));
}
}
\ No newline at end of file
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerListener.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerListener.java
index 82d9e60f0d..a3aa4a0d73 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerListener.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerListener.java
@@ -44,7 +44,7 @@ public class SerializerListener {
* @param p The bean property we had an issue on.
*/
public void onBeanGetterException(SerializerSession session, Throwable
t, BeanPropertyMeta p) {
- onError(session, t, f("Could not call getValue() on property
''{0}'' of class ''{1}'', exception = {2}", p.getName(),
p.getBeanMeta().getBeanInfo(), lm(t)));
+ onError(session, t, f("Could not call getValue() on property
'%s' of class '%s', exception = %s", p.getName(),
p.getBeanMeta().getBeanInfo(), lm(t)));
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/sse/SseEvent.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/sse/SseEvent.java
index 2cb01c705a..103be3490a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/sse/SseEvent.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/sse/SseEvent.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.sse;
+import static org.apache.juneau.commons.utils.Utils.*;
+
import java.util.*;
import org.apache.juneau.commons.bean.*;
@@ -175,10 +177,10 @@ public class SseEvent {
return true;
if (!(o instanceof SseEvent o2))
return false;
- return Objects.equals(event, o2.event)
- && Objects.equals(data, o2.data)
- && Objects.equals(id, o2.id)
- && Objects.equals(retry, o2.retry);
+ return eq(event, o2.event)
+ && eq(data, o2.data)
+ && eq(id, o2.id)
+ && eq(retry, o2.retry);
}
@Override /* Overridden from Object */
diff --git
a/juneau-rest/juneau-rest-client-classic/src/main/java/org/apache/juneau/rest/client/classic/RestClient.java
b/juneau-rest/juneau-rest-client-classic/src/main/java/org/apache/juneau/rest/client/classic/RestClient.java
index 1dc1a495b8..ff4ae7c9a2 100644
---
a/juneau-rest/juneau-rest-client-classic/src/main/java/org/apache/juneau/rest/client/classic/RestClient.java
+++
b/juneau-rest/juneau-rest-client-classic/src/main/java/org/apache/juneau/rest/client/classic/RestClient.java
@@ -1216,7 +1216,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF addBeanTypes() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::addBeanTypes);
+ serializers().forEach(Serializer.Builder::addBeanTypes);
return self();
}
@@ -1337,7 +1337,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF addRootType() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::addRootType);
+ serializers().forEach(Serializer.Builder::addRootType);
return self();
}
@@ -1608,7 +1608,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
@Override
public SELF debug() {
super.debug();
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::debug);
+ serializers().forEach(Serializer.Builder::debug);
return headers(Debug.TRUE);
}
@@ -1834,7 +1834,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF detectRecursions() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::detectRecursions);
+
serializers().forEach(Serializer.Builder::detectRecursions);
return self();
}
@@ -2692,7 +2692,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF ignoreRecursions() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::ignoreRecursions);
+
serializers().forEach(Serializer.Builder::ignoreRecursions);
return self();
}
@@ -3067,7 +3067,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF keepNullProperties() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::keepNullProperties);
+
serializers().forEach(Serializer.Builder::keepNullProperties);
return self();
}
@@ -3716,7 +3716,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF paramFormatPlain() {
- serializers().forEach(UonSerializer.Builder.class,
org.apache.juneau.uon.UonSerializer.Builder::paramFormatPlain);
+ serializers().forEach(UonSerializer.Builder.class,
UonSerializer.Builder::paramFormatPlain);
return self();
}
@@ -5005,7 +5005,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF sortCollections() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::sortCollections);
+
serializers().forEach(Serializer.Builder::sortCollections);
return self();
}
@@ -5043,7 +5043,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF sortMaps() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::sortMaps);
+ serializers().forEach(Serializer.Builder::sortMaps);
return self();
}
@@ -5084,7 +5084,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF sq() {
-
serializers().forEachWS(org.apache.juneau.serializer.WriterSerializer.Builder::sq);
+ serializers().forEachWS(WriterSerializer.Builder::sq);
return self();
}
@@ -5195,7 +5195,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF trimEmptyCollections() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::trimEmptyCollections);
+
serializers().forEach(Serializer.Builder::trimEmptyCollections);
return self();
}
@@ -5239,7 +5239,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF trimEmptyMaps() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::trimEmptyMaps);
+
serializers().forEach(Serializer.Builder::trimEmptyMaps);
return self();
}
@@ -5276,7 +5276,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF trimStringsOnRead() {
-
parsers().forEach(org.apache.juneau.parser.Parser.Builder::trimStrings);
+ parsers().forEach(Parser.Builder::trimStrings);
return self();
}
@@ -5311,7 +5311,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF trimStringsOnWrite() {
-
serializers().forEach(org.apache.juneau.serializer.Serializer.Builder::trimStrings);
+ serializers().forEach(Serializer.Builder::trimStrings);
return self();
}
@@ -5686,7 +5686,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF useWhitespace() {
-
serializers().forEachWS(org.apache.juneau.serializer.WriterSerializer.Builder::useWhitespace);
+
serializers().forEachWS(WriterSerializer.Builder::useWhitespace);
return self();
}
@@ -5723,7 +5723,7 @@ public class RestClient extends MarshallingContextable
implements HttpClient, Cl
* @return This object.
*/
public SELF ws() {
-
serializers().forEachWS(org.apache.juneau.serializer.WriterSerializer.Builder::ws);
+ serializers().forEachWS(WriterSerializer.Builder::ws);
return self();
}
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 fbc0a0aa2c..b4713b8c47 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
@@ -16,7 +16,8 @@
*/
package org.apache.juneau.rest.client;
-import static org.apache.juneau.commons.utils.AssertionUtils.assertArgNotNull;
+import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.CollectionUtils.*;
import java.io.*;
import java.util.*;
@@ -385,7 +386,7 @@ public final class RestClient implements Closeable {
* @return This object.
*/
public Builder bodyConverters(BodyConverter<?>... value) {
- bodyConverters = new ArrayList<>(Arrays.asList(value));
+ bodyConverters = list(value);
return this;
}
diff --git
a/juneau-rest/juneau-rest-common-classic/src/main/java/org/apache/juneau/http/classic/response/BasicHttpException.java
b/juneau-rest/juneau-rest-common-classic/src/main/java/org/apache/juneau/http/classic/response/BasicHttpException.java
index 68591c3f31..1611d10cec 100644
---
a/juneau-rest/juneau-rest-common-classic/src/main/java/org/apache/juneau/http/classic/response/BasicHttpException.java
+++
b/juneau-rest/juneau-rest-common-classic/src/main/java/org/apache/juneau/http/classic/response/BasicHttpException.java
@@ -222,9 +222,9 @@ public class BasicHttpException extends
BasicRuntimeException implements HttpRes
msg = msg.replace('<', ' ').replace('>', '
').replace('&', ' ');
var cls = cns(e);
if (msg == null)
- sb.append(f("\nCaused by ({0})", cls));
+ sb.append(f("\nCaused by (%s)", cls));
else
- sb.append(f("\nCaused by ({0}): {1}", cls,
msg));
+ sb.append(f("\nCaused by (%s): %s", cls, msg));
e = e.getCause();
}
return sb.toString();
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 87d9273f22..96a03fca74 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
@@ -432,9 +432,9 @@ public class BasicHttpException extends RuntimeException
implements HttpResponse
msg = msg.replace('<', ' ').replace('>', '
').replace('&', ' ');
var cls = cns(e);
if (msg == null)
- sb.append(f("\nCaused by ({0})", cls));
+ sb.append(f("\nCaused by (%s)", cls));
else
- sb.append(f("\nCaused by ({0}): {1}", cls,
msg));
+ sb.append(f("\nCaused by (%s): %s", cls, msg));
e = e.getCause();
}
return sb.toString();
diff --git
a/juneau-rest/juneau-rest-server-jwt/src/main/java/org/apache/juneau/rest/auth/jwt/JwtTokenValidator.java
b/juneau-rest/juneau-rest-server-jwt/src/main/java/org/apache/juneau/rest/auth/jwt/JwtTokenValidator.java
index 53c66f5ae3..883e7fb1ce 100644
---
a/juneau-rest/juneau-rest-server-jwt/src/main/java/org/apache/juneau/rest/auth/jwt/JwtTokenValidator.java
+++
b/juneau-rest/juneau-rest-server-jwt/src/main/java/org/apache/juneau/rest/auth/jwt/JwtTokenValidator.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.auth.jwt;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import java.net.*;
import java.security.*;
@@ -462,7 +463,7 @@ public class JwtTokenValidator implements TokenValidator {
verifyClaims(claims);
var subject = claims.getSubject();
- if (subject == null || subject.isBlank())
+ if (isBlank(subject))
subject = "<no-sub>";
return new ClaimsPrincipal(subject, claims.toJSONObject());
}
@@ -470,7 +471,7 @@ public class JwtTokenValidator implements TokenValidator {
private void verifyClaims(JWTClaimsSet claims) throws
AuthenticationException {
// Required claims: iss, aud, exp, nbf are non-negotiable
defaults.
var iss = claims.getIssuer();
- if (iss == null || iss.isBlank())
+ if (isBlank(iss))
throw reject("\"iss\" claim is required");
if (! issuer.equals(iss))
throw reject("\"iss\" claim does not match expected
issuer");
diff --git
a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpCursor.java
b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpCursor.java
index c078e3b4df..70e9b87c87 100644
---
a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpCursor.java
+++
b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpCursor.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.mcp;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.util.*;
import org.apache.juneau.commons.inject.BeanStore;
@@ -89,7 +91,7 @@ public interface McpCursor {
* @return Parsed offset.
*/
static int parseOffset(String cursor) {
- if (cursor == null || cursor.isEmpty())
+ if (isEmpty(cursor))
return 0;
try {
var v = Integer.parseInt(cursor);
diff --git
a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpDispatcher.java
b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpDispatcher.java
index ac2d411e8d..7fd0d00681 100644
---
a/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpDispatcher.java
+++
b/juneau-rest/juneau-rest-server-mcp/src/main/java/org/apache/juneau/rest/mcp/McpDispatcher.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.mcp;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.util.*;
import java.util.stream.*;
@@ -74,7 +76,7 @@ public class McpDispatcher {
var id = req.getId();
var method = req.getMethod();
- if (method == null || method.isEmpty())
+ if (isEmpty(method))
return notification(id) ? null : errorResponse(id,
CODE_INVALID_REQUEST, "Missing method", null);
try {
diff --git
a/juneau-rest/juneau-rest-server-micrometer/src/main/java/org/apache/juneau/rest/metrics/micrometer/MicrometerMetricsRecorder.java
b/juneau-rest/juneau-rest-server-micrometer/src/main/java/org/apache/juneau/rest/metrics/micrometer/MicrometerMetricsRecorder.java
index f05e88e7da..71a73ba404 100644
---
a/juneau-rest/juneau-rest-server-micrometer/src/main/java/org/apache/juneau/rest/metrics/micrometer/MicrometerMetricsRecorder.java
+++
b/juneau-rest/juneau-rest-server-micrometer/src/main/java/org/apache/juneau/rest/metrics/micrometer/MicrometerMetricsRecorder.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.metrics.micrometer;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import java.time.*;
@@ -171,6 +172,6 @@ public class MicrometerMetricsRecorder implements
MetricsRecorder {
}
private static String defaultIfBlank(String value, String fallback) {
- return (value == null || value.isEmpty()) ? fallback : value;
+ return isEmpty(value) ? fallback : value;
}
}
diff --git
a/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcRelyingParty.java
b/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcRelyingParty.java
index 8bf1c962f0..7d6f51e4df 100644
---
a/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcRelyingParty.java
+++
b/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcRelyingParty.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.auth.oidc.rp;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import java.io.*;
import java.net.*;
@@ -1010,7 +1011,7 @@ public class OidcRelyingParty {
* {@code redirect} parameter).
*/
private static String safeRelativePath(String value) {
- if (value == null || value.isBlank())
+ if (isBlank(value))
return null;
if (! value.startsWith("/"))
return null;
diff --git
a/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcSessionAuthFilter.java
b/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcSessionAuthFilter.java
index 38c8e7e1fd..1ac18b4b4b 100644
---
a/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcSessionAuthFilter.java
+++
b/juneau-rest/juneau-rest-server-oidc-rp/src/main/java/org/apache/juneau/rest/auth/oidc/rp/OidcSessionAuthFilter.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.auth.oidc.rp;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import java.util.*;
@@ -76,7 +77,7 @@ public class OidcSessionAuthFilter extends AuthFilter {
break;
}
}
- if (value == null || value.isBlank())
+ if (isBlank(value))
return Optional.empty();
var session = sessionStore.lookup(value);
if (session.isEmpty())
diff --git
a/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/OtelTracerHook.java
b/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/OtelTracerHook.java
index 2b78db1fcb..0435eeb2a4 100644
---
a/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/OtelTracerHook.java
+++
b/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/OtelTracerHook.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.tracing.otel;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.Utils.*;
import java.util.*;
@@ -231,7 +232,7 @@ public class OtelTracerHook implements TracerHook {
}
private static String defaultIfBlank(String value, String fallback) {
- return (value == null || value.isEmpty()) ? fallback : value;
+ return isEmpty(value) ? fallback : value;
}
private static final class OtelScope implements Scope {
diff --git
a/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/RestRequestTextMapGetter.java
b/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/RestRequestTextMapGetter.java
index 65cd276a3c..5527fdd022 100644
---
a/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/RestRequestTextMapGetter.java
+++
b/juneau-rest/juneau-rest-server-otel/src/main/java/org/apache/juneau/rest/tracing/otel/RestRequestTextMapGetter.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.tracing.otel;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.util.*;
import org.apache.juneau.rest.*;
@@ -58,6 +60,6 @@ public final class RestRequestTextMapGetter implements
TextMapGetter<RestRequest
if (! header.isPresent())
return null;
var value = header.orElse(null);
- return (value == null || value.isEmpty()) ? null : value;
+ return isEmpty(value) ? null : value;
}
}
diff --git
a/juneau-rest/juneau-rest-server-saml/src/main/java/org/apache/juneau/rest/auth/saml/SamlAuthFilter.java
b/juneau-rest/juneau-rest-server-saml/src/main/java/org/apache/juneau/rest/auth/saml/SamlAuthFilter.java
index e95cc3a897..498e9f60fc 100644
---
a/juneau-rest/juneau-rest-server-saml/src/main/java/org/apache/juneau/rest/auth/saml/SamlAuthFilter.java
+++
b/juneau-rest/juneau-rest-server-saml/src/main/java/org/apache/juneau/rest/auth/saml/SamlAuthFilter.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.auth.saml;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import java.io.*;
import java.nio.charset.StandardCharsets;
@@ -198,7 +199,7 @@ public class SamlAuthFilter extends AuthFilter {
if (!matchesPath(req))
return Optional.empty();
var raw = req.getParameter(SAML_RESPONSE_PARAM);
- if (raw == null || raw.isEmpty())
+ if (isEmpty(raw))
return Optional.empty();
var xml = decodeSamlResponse(raw);
var principal = runValidator(xml);
diff --git
a/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
b/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
index adce7de8d7..0958fc33bc 100644
---
a/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerDispatcher.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.freemarker;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.io.*;
@@ -125,7 +126,7 @@ public class FreemarkerDispatcher implements
RawTemplateDispatcher {
* @return The template name with the configured suffix appended (if
applicable).
*/
public String applyTemplateSuffix(String name) {
- if (templateSuffix == null || templateSuffix.isEmpty())
+ if (isEmpty(templateSuffix))
return name;
if (name.endsWith(templateSuffix))
return name;
@@ -212,7 +213,7 @@ public class FreemarkerDispatcher implements
RawTemplateDispatcher {
* {@code "/"}).
*/
static String toResourceRoot(String base) {
- if (base == null || base.isBlank())
+ if (isBlank(base))
return "/";
var s = base;
while (s.endsWith("/") && s.length() > 1)
@@ -293,7 +294,7 @@ public class FreemarkerDispatcher implements
RawTemplateDispatcher {
* {@code "/templates/"} and resolved {@code
"/templates/hello.ftlh"}).
*/
static String stripBasePath(String base, String resolved) {
- var bp = (base == null || base.isEmpty()) ? "/" : base;
+ var bp = isEmpty(base) ? "/" : base;
if (! bp.endsWith("/"))
bp = bp + "/";
if (! bp.startsWith("/"))
@@ -323,7 +324,7 @@ public class FreemarkerDispatcher implements
RawTemplateDispatcher {
* @return This object.
*/
public Builder basePath(String value) {
- basePath = (value == null || value.isBlank()) ?
DEFAULT_BASE_PATH : value;
+ basePath = isBlank(value) ? DEFAULT_BASE_PATH : value;
return this;
}
diff --git
a/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerView.java
b/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerView.java
index 5b5dae0961..8f23603a1c 100644
---
a/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerView.java
+++
b/juneau-rest/juneau-rest-server-view-freemarker/src/main/java/org/apache/juneau/rest/view/freemarker/FreemarkerView.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.freemarker;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.util.*;
@@ -106,7 +107,7 @@ public final class FreemarkerView implements View {
* @throws IllegalArgumentException If {@code templateName} is {@code
null} or blank.
*/
public static FreemarkerView of(String templateName) {
- if (templateName == null || templateName.isBlank())
+ if (isBlank(templateName))
throw illegalArg("templateName must not be null or
blank");
return new FreemarkerView(templateName, Map.of(), Map.of());
}
@@ -137,7 +138,7 @@ public final class FreemarkerView implements View {
* is {@code null}.
*/
public FreemarkerView attr(String key, Object value) {
- if (key == null || key.isBlank())
+ if (isBlank(key))
throw illegalArg("attribute key must not be null or
blank");
if (value == null)
throw illegalArg("attribute value must not be null
(attribute ''{0}'')", key);
@@ -161,7 +162,7 @@ public final class FreemarkerView implements View {
return this;
var copy = new LinkedHashMap<>(attributes);
values.forEach((k, v) -> {
- if (k == null || k.isBlank())
+ if (isBlank(k))
throw illegalArg("attribute key must not be
null or blank");
if (v == null)
throw illegalArg("attribute value must not be
null (attribute ''{0}'')", k);
@@ -186,7 +187,7 @@ public final class FreemarkerView implements View {
* is {@code null}.
*/
public FreemarkerView header(String name, String value) {
- if (name == null || name.isBlank())
+ if (isBlank(name))
throw illegalArg("header name must not be null or
blank");
if (value == null)
throw illegalArg("header value must not be null (header
''{0}'')", name);
diff --git
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
index 8d76011827..648021035b 100644
---
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspDispatcher.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.jsp;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.io.*;
@@ -134,7 +135,7 @@ public class JspDispatcher implements RawTemplateDispatcher
{
* @return This object.
*/
public Builder basePath(String value) {
- basePath = (value == null || value.isBlank()) ?
DEFAULT_BASE_PATH : value;
+ basePath = isBlank(value) ? DEFAULT_BASE_PATH : value;
return this;
}
diff --git
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspView.java
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspView.java
index a5118a77a7..6196b21f19 100644
---
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspView.java
+++
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspView.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.jsp;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.util.*;
@@ -75,7 +76,7 @@ public final class JspView implements View {
* @throws IllegalArgumentException If {@code templateName} is {@code
null} or blank.
*/
public static JspView of(String templateName) {
- if (templateName == null || templateName.isBlank())
+ if (isBlank(templateName))
throw illegalArg("templateName must not be null or
blank");
return new JspView(templateName, Map.of(), Map.of());
}
@@ -104,7 +105,7 @@ public final class JspView implements View {
* is {@code null}.
*/
public JspView attr(String key, Object value) {
- if (key == null || key.isBlank())
+ if (isBlank(key))
throw illegalArg("attribute key must not be null or
blank");
if (value == null)
throw illegalArg("attribute value must not be null
(attribute ''{0}'')", key);
@@ -126,7 +127,7 @@ public final class JspView implements View {
return this;
var copy = new LinkedHashMap<>(attributes);
values.forEach((k, v) -> {
- if (k == null || k.isBlank())
+ if (isBlank(k))
throw illegalArg("attribute key must not be
null or blank");
if (v == null)
throw illegalArg("attribute value must not be
null (attribute ''{0}'')", k);
@@ -151,7 +152,7 @@ public final class JspView implements View {
* is {@code null}.
*/
public JspView header(String name, String value) {
- if (name == null || name.isBlank())
+ if (isBlank(name))
throw illegalArg("header name must not be null or
blank");
if (value == null)
throw illegalArg("header value must not be null (header
''{0}'')", name);
diff --git
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspViewRenderer.java
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspViewRenderer.java
index ef0104f76c..255827b7da 100644
---
a/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspViewRenderer.java
+++
b/juneau-rest/juneau-rest-server-view-jsp/src/main/java/org/apache/juneau/rest/view/jsp/JspViewRenderer.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.view.jsp;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.io.*;
import org.apache.juneau.commons.utils.*;
@@ -173,7 +175,7 @@ public class JspViewRenderer implements ViewRenderer {
* {@code ..} segments.
*/
static String joinPath(String basePath, String template) {
- var bp = (basePath == null || basePath.isEmpty()) ? "/" :
basePath;
+ var bp = isEmpty(basePath) ? "/" : basePath;
return FileUtils.resolveVirtualPathSafely(bp, template);
}
}
diff --git
a/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
b/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
index a4f680e3f4..781e6b67b1 100644
---
a/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheDispatcher.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.mustache;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.io.*;
@@ -110,7 +111,7 @@ public class MustacheDispatcher implements
RawTemplateDispatcher {
* @return The template name with the configured suffix appended (if
applicable).
*/
public String applyTemplateSuffix(String name) {
- if (templateSuffix == null || templateSuffix.isEmpty())
+ if (isEmpty(templateSuffix))
return name;
if (name.endsWith(templateSuffix))
return name;
@@ -181,7 +182,7 @@ public class MustacheDispatcher implements
RawTemplateDispatcher {
* @return The mustache.java resource root (never {@code null}).
*/
static String toResourceRoot(String base) {
- if (base == null || base.isBlank())
+ if (isBlank(base))
return "";
var s = base;
while (s.startsWith("/"))
@@ -259,7 +260,7 @@ public class MustacheDispatcher implements
RawTemplateDispatcher {
* {@code "/templates/"} and resolved {@code
"/templates/hello.mustache"}).
*/
static String stripBasePath(String base, String resolved) {
- var bp = (base == null || base.isEmpty()) ? "/" : base;
+ var bp = isEmpty(base) ? "/" : base;
if (! bp.endsWith("/"))
bp = bp + "/";
if (! bp.startsWith("/"))
@@ -288,7 +289,7 @@ public class MustacheDispatcher implements
RawTemplateDispatcher {
* @return This object.
*/
public Builder basePath(String value) {
- basePath = (value == null || value.isBlank()) ?
DEFAULT_BASE_PATH : value;
+ basePath = isBlank(value) ? DEFAULT_BASE_PATH : value;
return this;
}
diff --git
a/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheView.java
b/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheView.java
index 350d007310..c7d568b2e6 100644
---
a/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheView.java
+++
b/juneau-rest/juneau-rest-server-view-mustache/src/main/java/org/apache/juneau/rest/view/mustache/MustacheView.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.mustache;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.util.*;
@@ -101,7 +102,7 @@ public final class MustacheView implements View {
* @throws IllegalArgumentException If {@code templateName} is {@code
null} or blank.
*/
public static MustacheView of(String templateName) {
- if (templateName == null || templateName.isBlank())
+ if (isBlank(templateName))
throw illegalArg("templateName must not be null or
blank");
return new MustacheView(templateName, Map.of(), Map.of());
}
@@ -131,7 +132,7 @@ public final class MustacheView implements View {
* is {@code null}.
*/
public MustacheView attr(String key, Object value) {
- if (key == null || key.isBlank())
+ if (isBlank(key))
throw illegalArg("attribute key must not be null or
blank");
if (value == null)
throw illegalArg("attribute value must not be null
(attribute ''{0}'')", key);
@@ -155,7 +156,7 @@ public final class MustacheView implements View {
return this;
var copy = new LinkedHashMap<>(attributes);
values.forEach((k, v) -> {
- if (k == null || k.isBlank())
+ if (isBlank(k))
throw illegalArg("attribute key must not be
null or blank");
if (v == null)
throw illegalArg("attribute value must not be
null (attribute ''{0}'')", k);
@@ -180,7 +181,7 @@ public final class MustacheView implements View {
* is {@code null}.
*/
public MustacheView header(String name, String value) {
- if (name == null || name.isBlank())
+ if (isBlank(name))
throw illegalArg("header name must not be null or
blank");
if (value == null)
throw illegalArg("header value must not be null (header
''{0}'')", name);
diff --git
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
index f050dda129..90ec1fef4a 100644
---
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
+++
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafDispatcher.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.thymeleaf;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.io.*;
@@ -243,7 +244,7 @@ public class ThymeleafDispatcher implements
RawTemplateDispatcher {
* {@code "/templates/"} and resolved {@code "/templates/hello"}).
*/
static String stripBasePath(String base, String resolved) {
- var bp = (base == null || base.isEmpty()) ? "/" : base;
+ var bp = isEmpty(base) ? "/" : base;
if (! bp.endsWith("/"))
bp = bp + "/";
if (! bp.startsWith("/"))
@@ -273,7 +274,7 @@ public class ThymeleafDispatcher implements
RawTemplateDispatcher {
* @return This object.
*/
public Builder basePath(String value) {
- basePath = (value == null || value.isBlank()) ?
DEFAULT_BASE_PATH : value;
+ basePath = isBlank(value) ? DEFAULT_BASE_PATH : value;
return this;
}
diff --git
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafView.java
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafView.java
index 62855ddac2..fb0460cd35 100644
---
a/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafView.java
+++
b/juneau-rest/juneau-rest-server-view-thymeleaf/src/main/java/org/apache/juneau/rest/view/thymeleaf/ThymeleafView.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.view.thymeleaf;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.util.*;
@@ -87,7 +88,7 @@ public final class ThymeleafView implements View {
* @throws IllegalArgumentException If {@code templateName} is {@code
null} or blank.
*/
public static ThymeleafView of(String templateName) {
- if (templateName == null || templateName.isBlank())
+ if (isBlank(templateName))
throw illegalArg("templateName must not be null or
blank");
return new ThymeleafView(templateName, Map.of(), Map.of());
}
@@ -117,7 +118,7 @@ public final class ThymeleafView implements View {
* is {@code null}.
*/
public ThymeleafView attr(String key, Object value) {
- if (key == null || key.isBlank())
+ if (isBlank(key))
throw illegalArg("attribute key must not be null or
blank");
if (value == null)
throw illegalArg("attribute value must not be null
(attribute ''{0}'')", key);
@@ -141,7 +142,7 @@ public final class ThymeleafView implements View {
return this;
var copy = new LinkedHashMap<>(attributes);
values.forEach((k, v) -> {
- if (k == null || k.isBlank())
+ if (isBlank(k))
throw illegalArg("attribute key must not be
null or blank");
if (v == null)
throw illegalArg("attribute value must not be
null (attribute ''{0}'')", k);
@@ -166,7 +167,7 @@ public final class ThymeleafView implements View {
* is {@code null}.
*/
public ThymeleafView header(String name, String value) {
- if (name == null || name.isBlank())
+ if (isBlank(name))
throw illegalArg("header name must not be null or
blank");
if (value == null)
throw illegalArg("header value must not be null (header
''{0}'')", name);
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 b2f50fc8b6..c98b1592a8 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
@@ -944,10 +944,10 @@ public class RestContext extends Context {
var anns = AnnotationProvider.INSTANCE.find(Rest.class,
info(resourceClass));
for (var i = 0; i < anns.size(); i++) {
var raw = anns.get(i).inner().config();
- if (raw == null || raw.isEmpty())
+ if (isEmpty(raw))
continue;
var resolvedName = vr.resolve(raw);
- if (resolvedName == null || resolvedName.isEmpty())
+ if (isEmpty(resolvedName))
continue;
if (! seen.add(resolvedName))
continue;
@@ -2697,7 +2697,7 @@ public class RestContext extends Context {
*/
private final Memoizer<Long> asyncTimeoutMillis = memoizer(() -> {
var s =
mergeReplacedStringAttribute(PROPERTY_asyncTimeoutMillis, null);
- if (s == null || s.isEmpty())
+ if (isEmpty(s))
return -1L;
try {
return Long.parseLong(s.trim());
@@ -2718,7 +2718,7 @@ public class RestContext extends Context {
private final Memoizer<Executor> asyncCompletionExecutor = memoizer(()
-> {
// Programmatic override takes priority over the annotation
chain.
var name = resolveAsyncCompletionExecutorName();
- if (name == null || name.isBlank())
+ if (isBlank(name))
return null;
var resolved = beanStore().getBean(Executor.class, name);
// Try ExecutorService as well (a common supertype users supply
that is-a Executor).
@@ -3099,7 +3099,7 @@ public class RestContext extends Context {
try {
x.invoke(beanStore, getResource());
} catch (Exception e) {
- getLogger().log(Level.WARNING, unwrap(e), () ->
f("Error occurred invoking servlet-destroy method ''{0}''.", x.getFullName()));
+ getLogger().log(Level.WARNING, unwrap(e), () ->
f("Error occurred invoking servlet-destroy method '%s'.", x.getFullName()));
}
}
if (!isMixinContext) {
@@ -3107,7 +3107,7 @@ public class RestContext extends Context {
try {
mctx.destroy();
} catch (Exception e) {
- getLogger().log(Level.WARNING,
unwrap(e), () -> f("Error occurred destroying mixin sub-context ''{0}''.",
mctx.getResourceClass().getName()));
+ getLogger().log(Level.WARNING,
unwrap(e), () -> f("Error occurred destroying mixin sub-context '%s'.",
mctx.getResourceClass().getName()));
}
}
}
@@ -4325,7 +4325,7 @@ public class RestContext extends Context {
try {
x.invoke(session.getBeanStore(), getResource());
} catch (Exception e) {
- getLogger().log(Level.WARNING, unwrap(e), () ->
f("Error occurred invoking finish-call method ''{0}''.", x.getFullName()));
+ getLogger().log(Level.WARNING, unwrap(e), () ->
f("Error occurred invoking finish-call method '%s'.", x.getFullName()));
}
}
}
@@ -4605,7 +4605,7 @@ public class RestContext extends Context {
var pathInfo = session.getPathInfo();
var methodUC = session.getMethod();
var rc = session.getStatus();
- var onPath = pathInfo == null ? " on no pathInfo" :
String.format(" on path '%s'", pathInfo);
+ var onPath = pathInfo == null ? " on no pathInfo" : f(" on path
'%s'", pathInfo);
if (rc == SC_NOT_FOUND)
throw new NotFound("Method ''{0}'' not found on
resource with matching pattern{1}.", methodUC, onPath);
else if (rc == SC_PRECONDITION_FAILED)
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/auth/AuthFilterChain.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/auth/AuthFilterChain.java
index 4055df218b..482c0de846 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/auth/AuthFilterChain.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/auth/AuthFilterChain.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.auth;
import static org.apache.juneau.commons.utils.CollectionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import java.io.*;
import java.security.*;
@@ -203,7 +204,7 @@ public class AuthFilterChain implements Filter {
var path = (contextPath != null && !contextPath.isEmpty() &&
uri.startsWith(contextPath))
? uri.substring(contextPath.length())
: uri;
- if (path == null || path.isEmpty())
+ if (isEmpty(path))
path = "/";
var urlPath = UrlPath.of(path);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/convention/FaviconProvider.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/convention/FaviconProvider.java
index 73abf00fe3..69a03b5f91 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/convention/FaviconProvider.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/convention/FaviconProvider.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.convention;
+import static org.apache.juneau.commons.utils.CollectionUtils.*;
+
import java.io.*;
import java.util.*;
@@ -90,9 +92,7 @@ public class FaviconProvider {
* configured {@code Cache-Control} header.
*/
public HttpResource serve() {
- var hdrs = new ArrayList<HttpHeader>(); // TODO - Use
Utils.list()
- hdrs.add(ContentType.of("image/x-icon"));
- hdrs.add(CacheControl.of(cacheControl));
+ List<HttpHeader> hdrs = list(ContentType.of("image/x-icon"),
CacheControl.of(cacheControl));
return HttpResourceBean.of(ByteArrayBody.of(bytes,
"image/x-icon"), hdrs);
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHttpPart.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHttpPart.java
index 32a4e53a6c..ddd6490d14 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHttpPart.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHttpPart.java
@@ -522,7 +522,7 @@ public class RequestHttpPart {
public boolean equals(Object o) {
if (o instanceof org.apache.juneau.http.HttpPart hp)
return eq(getName(), hp.getName()) && eq(getValue(),
hp.getValue());
- if (o instanceof org.apache.juneau.http.HttpHeader hh)
+ if (o instanceof HttpHeader hh)
return eq(getName(), hh.getName()) && eq(getValue(),
hh.getValue());
return false;
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/AdminProvider.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/AdminProvider.java
index 0ae83ff520..30325ee022 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/AdminProvider.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/AdminProvider.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.ops;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.io.*;
import java.lang.management.*;
import java.util.*;
@@ -286,7 +288,7 @@ public class AdminProvider {
* @return This object.
*/
public Builder cacheFlush(String name, Runnable hook) {
- if (name == null || name.isBlank())
+ if (isBlank(name))
throw new IllegalArgumentException("Argument
'name' must not be null or blank");
if (hook == null)
throw new IllegalArgumentException("Argument
'hook' must not be null");
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/EchoMixin.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/EchoMixin.java
index 5a2fe6e628..e0f407271a 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/EchoMixin.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/ops/EchoMixin.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.ops;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.io.*;
import java.nio.charset.*;
import java.util.*;
@@ -371,7 +373,7 @@ public class EchoMixin {
* @return This object.
*/
public Builder redactHeader(String value) {
- if (value == null || value.isBlank())
+ if (isBlank(value))
throw new IllegalArgumentException("Argument
'value' must not be null or blank");
redactedHeaders.add(value);
return this;
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ProblemDetailsProcessor.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ProblemDetailsProcessor.java
index cb33b311f1..e1d4e5d21b 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ProblemDetailsProcessor.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ProblemDetailsProcessor.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.processor;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -250,7 +252,7 @@ public class ProblemDetailsProcessor implements
ResponseProcessor {
}
private static boolean acceptsProblemJson(String accept) {
- if (accept == null || accept.isEmpty())
+ if (isEmpty(accept))
return true;
return accept.contains(PROBLEM_JSON) || accept.contains("*/*");
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseBroadcaster.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseBroadcaster.java
index e4a6b50fc7..2c54c763dc 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseBroadcaster.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseBroadcaster.java
@@ -16,6 +16,7 @@
*/
package org.apache.juneau.rest.sse;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.util.concurrent.*;
@@ -65,7 +66,7 @@ public class SseBroadcaster {
"resource" // Returned subscription is caller-owned and closed
by the caller/framework.
})
public SseSubscription subscribe(String id) {
- if (id == null || id.isEmpty())
+ if (isEmpty(id))
throw illegalArg("id cannot be null or empty.");
var subscription = new SseSubscription(id, queueSize,
this::removeSubscriber);
var previous = subscriptions.put(id, subscription);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseSubscription.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseSubscription.java
index 5e6c28c65c..3155979386 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseSubscription.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/sse/SseSubscription.java
@@ -17,6 +17,7 @@
package org.apache.juneau.rest.sse;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.StringUtils.*;
import static org.apache.juneau.commons.utils.ThrowableUtils.*;
import java.util.*;
@@ -37,7 +38,7 @@ public class SseSubscription implements AutoCloseable,
Iterable<SseEvent> {
private final Consumer<String> closeCallback;
SseSubscription(String id, int queueSize, Consumer<String>
closeCallback) {
- if (id == null || id.isEmpty())
+ if (isEmpty(id))
throw illegalArg("id cannot be null or empty.");
this.id = id;
this.queue = new LinkedBlockingDeque<>(queueSize);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/tracing/TraceContextResponseProcessor.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/tracing/TraceContextResponseProcessor.java
index 0945bd85c8..70b58e3f31 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/tracing/TraceContextResponseProcessor.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/tracing/TraceContextResponseProcessor.java
@@ -16,6 +16,8 @@
*/
package org.apache.juneau.rest.tracing;
+import static org.apache.juneau.commons.utils.StringUtils.*;
+
import java.io.*;
import java.util.logging.*;
@@ -99,7 +101,7 @@ public class TraceContextResponseProcessor implements
ResponseProcessor {
// NoOp short-circuit: no active tracer stashed a trace context
for this request.
var traceparent =
req.getAttribute(ATTR_TRACEPARENT).as(String.class).orElse(null);
- if (traceparent == null || traceparent.isEmpty())
+ if (isEmpty(traceparent))
return NEXT;
var res = opSession.getResponse();
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
index 8c25f1f1a1..cba6e2ddef 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
@@ -299,7 +299,7 @@ public class RestUtils {
* @return The converted path.
*/
public static String toValidContextPath(String s) {
- if (s == null || s.isEmpty())
+ if (isEmpty(s))
return "";
s = trimTrailingSlashes(s);
if (s.isEmpty())