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 93eb4b264 Test modernization, clean up utility classes.
93eb4b264 is described below
commit 93eb4b264c1b062b8ac03ff0df6a4e3e947686a0
Author: James Bognar <[email protected]>
AuthorDate: Mon Aug 25 15:43:50 2025 -0400
Test modernization, clean up utility classes.
---
.../apache/juneau/common/internal/StringUtils.java | 14 +-
.../juneau/common/internal/ThrowableLogger.java | 21 -
.../org/apache/juneau/common/internal/Utils.java | 1502 ++++++++++----------
.../main/java/org/apache/juneau/config/Entry.java | 2 +-
.../java/org/apache/juneau/AnnotationApplier.java | 2 +-
.../org/apache/juneau/BeanTraverseSession.java | 2 +-
.../java/org/apache/juneau/PropertyNamerDLC.java | 2 +-
.../java/org/apache/juneau/PropertyNamerDUCS.java | 2 +-
.../java/org/apache/juneau/PropertyNamerULC.java | 2 +-
.../src/main/java/org/apache/juneau/Version.java | 2 +-
.../org/apache/juneau/collections/JsonList.java | 2 +-
.../org/apache/juneau/collections/JsonMap.java | 4 +-
.../java/org/apache/juneau/cp/BasicFileFinder.java | 2 +-
.../main/java/org/apache/juneau/cp/BeanStore.java | 2 +-
.../java/org/apache/juneau/internal/DateUtils.java | 4 +-
.../java/org/apache/juneau/internal/FileUtils.java | 2 +-
.../org/apache/juneau/internal/VersionRange.java | 2 +-
.../juneau/swaps/XMLGregorianCalendarSwap.java | 2 +-
.../org/apache/juneau/utils/ReflectionMap.java | 2 +-
.../juneau/utils/StringExpressionMatcher.java | 2 +-
.../org/apache/juneau/rest/client/RestRequest.java | 30 +-
.../apache/juneau/rest/client/RestResponse.java | 2 +-
.../juneau/http/header/BasicBooleanHeader.java | 2 +-
.../apache/juneau/http/header/BasicDateHeader.java | 2 +-
.../apache/juneau/http/header/BasicUriHeader.java | 2 +-
.../org/apache/juneau/http/header/EntityTags.java | 2 +-
.../juneau/http/header/SerializedHeader.java | 2 +-
.../apache/juneau/http/part/BasicBooleanPart.java | 6 +-
.../apache/juneau/http/part/BasicCsvArrayPart.java | 4 +-
.../org/apache/juneau/http/part/BasicDatePart.java | 6 +-
.../apache/juneau/http/part/BasicIntegerPart.java | 6 +-
.../org/apache/juneau/http/part/BasicLongPart.java | 6 +-
.../apache/juneau/http/part/BasicStringPart.java | 4 +-
.../org/apache/juneau/http/part/BasicUriPart.java | 6 +-
.../apache/juneau/http/part/SerializedPart.java | 2 +-
.../org/apache/juneau/rest/guard/RoleMatcher.java | 2 +-
.../juneau/rest/httppart/RequestContent.java | 2 +-
.../juneau/rest/httppart/RequestFormParams.java | 2 +-
.../juneau/rest/httppart/RequestHeaders.java | 2 +-
.../juneau/rest/httppart/RequestPathParams.java | 2 +-
.../juneau/rest/httppart/RequestQueryParams.java | 2 +-
.../juneau/rest/logger/CallLoggingDetail.java | 2 +-
.../juneau/rest/matcher/ClientVersionMatcher.java | 2 +-
.../rest/processor/PlainTextPojoProcessor.java | 4 +-
.../rest/swagger/BasicSwaggerProviderSession.java | 6 +-
.../org/apache/juneau/rest/util/RestUtils.java | 2 +-
.../org/apache/juneau/rest/util/UrlPathMatch.java | 2 +-
.../test/java/org/apache/juneau/ComboInput.java | 2 +-
.../apache/juneau/utils/StringVarResolverTest.java | 2 +-
49 files changed, 824 insertions(+), 867 deletions(-)
diff --git
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/StringUtils.java
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/StringUtils.java
index e7c2ea458..044bc15a6 100644
---
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/StringUtils.java
+++
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/StringUtils.java
@@ -761,7 +761,7 @@ public final class StringUtils {
* @throws IllegalArgumentException Value was not a valid date.
*/
public static Date parseIsoDate(String date) throws
IllegalArgumentException {
- if (Utils.isEmpty3(date))
+ if (Utils.isEmpty(date))
return null;
return parseIsoCalendar(date).getTime(); // NOSONAR - NPE not
possible.
}
@@ -778,7 +778,7 @@ public final class StringUtils {
* @throws IllegalArgumentException Value was not a valid date.
*/
public static Calendar parseIsoCalendar(String date) throws
IllegalArgumentException {
- if (Utils.isEmpty3(date))
+ if (Utils.isEmpty(date))
return null;
date = date.trim().replace(' ', 'T'); // Convert to 'standard'
ISO8601
if (date.indexOf(',') != -1) // Trim milliseconds
@@ -1380,7 +1380,7 @@ public final class StringUtils {
*/
public static boolean isAbsoluteUri(String s) { // NOSONAR - False
positive.
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return false;
// Use a state machine for maximum performance.
@@ -1437,7 +1437,7 @@ public final class StringUtils {
*/
public static boolean isUri(String s) { // NOSONAR - False positive.
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return false;
// Use a state machine for maximum performance.
@@ -1647,7 +1647,7 @@ public final class StringUtils {
}
private static int multiplier(String s) {
- char c = Utils.isEmpty3(s) ? null : s.charAt(s.length()-1); //
NOSONAR - NPE not possible.
+ char c = Utils.isEmpty(s) ? null : s.charAt(s.length()-1); //
NOSONAR - NPE not possible.
if (c == 'G') return 1024*1024*1024;
if (c == 'M') return 1024*1024;
if (c == 'K') return 1024;
@@ -1687,7 +1687,7 @@ public final class StringUtils {
}
private static long multiplier2(String s) {
- char c = Utils.isEmpty3(s) ? null : s.charAt(s.length()-1); //
NOSONAR - NPE not possible.
+ char c = Utils.isEmpty(s) ? null : s.charAt(s.length()-1); //
NOSONAR - NPE not possible.
if (c == 'P') return 1024*1024*1024*1024*1024l;
if (c == 'T') return 1024*1024*1024*1024l;
if (c == 'G') return 1024*1024*1024l;
@@ -1913,7 +1913,7 @@ public final class StringUtils {
*/
public static long getDuration(String s) {
s = trim(s);
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return -1;
int i;
for (i = 0; i < s.length(); i++) {
diff --git
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/ThrowableLogger.java
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/ThrowableLogger.java
deleted file mode 100644
index 813f5f29d..000000000
---
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/ThrowableLogger.java
+++ /dev/null
@@ -1,21 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "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.common.internal;
-
-/**
- * Interface for an object that logs thrown exceptions.
- */
-public interface ThrowableLogger {
-
- void log(Throwable t);
-}
diff --git
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java
index f18b5ac2e..ad45b0728 100644
---
a/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java
+++
b/juneau-core/juneau-common/src/main/java/org/apache/juneau/common/internal/Utils.java
@@ -30,8 +30,14 @@ import java.util.stream.*;
public class Utils {
- /** Constructor */
- protected Utils() {}
+ private static final Map<Class<?>,Function<String,?>> ENV_FUNCTIONS =
new IdentityHashMap<>();
+
+ static {
+ ENV_FUNCTIONS.put(Boolean.class, Boolean::valueOf);
+ ENV_FUNCTIONS.put(Charset.class, Charset::forName);
+ }
+
+ private static final ConcurrentHashMap<String,String> PROPERTY_TO_ENV =
new ConcurrentHashMap<>();
/**
* Creates an array of objects.
@@ -54,14 +60,91 @@ public class Utils {
return (List<T>) l;
}
+ /**
+ * Shortcut for creating an unmodifiable list out of an array of values.
+ */
+ @SafeVarargs
+ public static <T> List<T> alist(T...values) { // NOSONAR
+ return Arrays.asList(values);
+ }
+
+ /**
+ * Converts the specified collection to an array.
+ *
+ * @param <E> The element type.
+ * @param value The collection to convert.
+ * @param componentType The component type of the array.
+ * @return A new array.
+ */
+ public static <E> E[] array(Collection<E> value, Class<E>
componentType) {
+ if (value == null)
+ return null;
+ E[] array = (E[])Array.newInstance(componentType, value.size());
+ return value.toArray(array);
+ }
+
+ /**
+ * Casts an object to a specific type if it's an instance of that type.
+ *
+ * @param <T> The type to cast to.
+ * @param c The type to cast to.
+ * @param o The object to cast to.
+ * @return The cast object, or <jk>null</jk> if the object wasn't the
specified type.
+ */
+ public static <T> T cast(Class<T> c, Object o) {
+ return o != null && c.isInstance(o) ? c.cast(o) : null;
+ }
+
+ /**
+ * If the specified object is an instance of the specified class, casts
it to that type.
+ *
+ * @param <T> The class to cast to.
+ * @param o The object to cast.
+ * @param c The class to cast to.
+ * @return The cast object, or <jk>null</jk> if the object wasn't an
instance of the specified class.
+ */
+ public static <T> T castOrNull(Object o, Class<T> c) {
+ if (c.isInstance(o))
+ return c.cast(o);
+ return null;
+ }
+
+ /**
+ * Compares two objects for equality.
+ *
+ * <p>
+ * Nulls are always considered less-than unless both are null.
+ *
+ * @param o1 Object 1.
+ * @param o2 Object 2.
+ * @return
+ * <c>-1</c>, <c>0</c>, or <c>1</c> if <c>o1</c> is less-than,
equal, or greater-than <c>o2</c>.
+ * <br><c>0</c> if objects are not of the same type or do not
implement the {@link Comparable} interface.
+ */
+ @SuppressWarnings({ "rawtypes", "unchecked" })
+ public static int compare(Object o1, Object o2) {
+ if (o1 == null) {
+ if (o2 == null)
+ return 0;
+ return -1;
+ } else if (o2 == null) {
+ return 1;
+ }
+
+ if (o1.getClass() == o2.getClass() && o1 instanceof Comparable)
+ return ((Comparable)o1).compareTo(o2);
+
+ return 0;
+ }
+
/**
* Null-safe {@link String#contains(CharSequence)} operation.
*/
- public static boolean contains(String s, String...values) {
+ public static boolean contains(String s, char...values) {
if (s == null || values == null || values.length == 0)
return false;
for (var v : values) {
- if (s.contains(v))
+ if (s.indexOf(v) >= 0)
return true;
}
return false;
@@ -70,16 +153,26 @@ public class Utils {
/**
* Null-safe {@link String#contains(CharSequence)} operation.
*/
- public static boolean contains(String s, char...values) {
+ public static boolean contains(String s, String...values) {
if (s == null || values == null || values.length == 0)
return false;
for (var v : values) {
- if (s.indexOf(v) >= 0)
+ if (s.contains(v))
return true;
}
return false;
}
+ /**
+ * Returns an empty {@link Optional}.
+ *
+ * @param <T> The component type.
+ * @return An empty {@link Optional}.
+ */
+ public static <T> Optional<T> empty() {
+ return Optional.empty();
+ }
+
/**
* Returns the specified string, or blank if that string is null.
*/
@@ -94,13 +187,14 @@ public class Utils {
* First looks in system properties. Then converts the name to
env-safe and looks in the system environment.
* Then returns the default if it can't be found.
*
- * @param <T> The type to convert the value to.
* @param name The property name.
- * @param def The default value if not found.
- * @return The default value.
+ * @return The value if found.
*/
- public static <T> T env(String name, T def) {
- return env(name).map(x -> toType(x, def)).orElse(def);
+ public static Optional<String> env(String name) {
+ var s = System.getProperty(name);
+ if (s == null)
+ s = System.getenv(envName(name));
+ return opt(s);
}
/**
@@ -110,14 +204,29 @@ public class Utils {
* First looks in system properties. Then converts the name to
env-safe and looks in the system environment.
* Then returns the default if it can't be found.
*
+ * @param <T> The type to convert the value to.
* @param name The property name.
- * @return The value if found.
+ * @param def The default value if not found.
+ * @return The default value.
*/
- public static Optional<String> env(String name) {
- var s = System.getProperty(name);
- if (s == null)
- s = System.getenv(envName(name));
- return opt(s);
+ public static <T> T env(String name, T def) {
+ return env(name).map(x -> toType(x, def)).orElse(def);
+ }
+
+ private static String envName(String name) {
+ return PROPERTY_TO_ENV.computeIfAbsent(name,
x->x.toUpperCase().replace(".", "_"));
+ }
+
+ /**
+ * Tests two strings for equality, but gracefully handles nulls.
+ *
+ * @param caseInsensitive Use case-insensitive matching.
+ * @param s1 String 1.
+ * @param s2 String 2.
+ * @return <jk>true</jk> if the strings are equal.
+ */
+ public static boolean eq(boolean caseInsensitive, String s1, String s2)
{
+ return caseInsensitive ? eqic(s1, s2) : eq(s1, s2);
}
/**
@@ -141,10 +250,6 @@ public class Utils {
return Objects.equals(o1, o2);
}
- private static boolean isArray(Object o) {
- return o != null && o.getClass().isArray();
- }
-
/**
* Tests two objects for equality, gracefully handling nulls.
*
@@ -171,6 +276,21 @@ public class Utils {
return test.test(o1, o2);
}
+ /**
+ * Tests two strings for case-insensitive equality, but gracefully
handles nulls.
+ *
+ * @param s1 String 1.
+ * @param s2 String 2.
+ * @return <jk>true</jk> if the strings are equal.
+ */
+ public static boolean eqic(String s1, String s2) {
+ if (s1 == null)
+ return s2 == null;
+ if (s2 == null)
+ return false;
+ return s1.equalsIgnoreCase(s2);
+ }
+
/**
* Same as MessageFormat.format().
*/
@@ -181,372 +301,125 @@ public class Utils {
}
/**
- * Shortcut for calling {@link Objects#hash(Object...)}.
+ * Returns the first non-null value in the specified array
+ *
+ * @param <T> The value types.
+ * @param t The values to check.
+ * @return The first non-null value, or <jk>null</jk> if the array is
null or empty or contains only <jk>null</jk> values.
*/
- public static final int hash(Object...values) {
- return Objects.hash(values);
+ @SafeVarargs
+ public static <T> T firstNonNull(T... t) {
+ if (t != null)
+ for (T tt : t)
+ if (tt != null)
+ return tt;
+ return null;
}
/**
- * Creates an {@link IllegalArgumentException}.
+ * Simplified formatted string supplier with message arguments.
*/
- public static IllegalArgumentException illegalArg(String msg,
Object...args) {
- return new IllegalArgumentException(args.length == 0 ? msg :
f(msg, args));
+ public static Supplier<String> fs(String pattern, Object...args) {
+ return ()->StringUtils.format(pattern, args);
}
/**
- * @return True if string is null or empty.
+ * Converts a string containing <js>"*"</js> meta characters with a
regular expression pattern.
+ *
+ * @param s The string to create a pattern from.
+ * @return A regular expression pattern.
*/
- public static boolean isEmpty(String o) {
- return o == null || o.isEmpty();
+ public static Pattern getMatchPattern3(String s) {
+ return getMatchPattern3(s, 0);
}
/**
- * @return True if string is not null or empty.
+ * Converts a string containing <js>"*"</js> meta characters with a
regular expression pattern.
+ *
+ * @param s The string to create a pattern from.
+ * @param flags Regular expression flags.
+ * @return A regular expression pattern.
*/
- public static boolean isNotEmpty(String o) {
- return ! isEmpty(o);
+ public static Pattern getMatchPattern3(String s, int flags) {
+ if (s == null)
+ return null;
+ var sb = new StringBuilder();
+ sb.append("\\Q");
+ for (var i = 0; i < s.length(); i++) {
+ var c = s.charAt(i);
+ if (c == '*')
+ sb.append("\\E").append(".*").append("\\Q");
+ else if (c == '?')
+ sb.append("\\E").append(".").append("\\Q");
+ else
+ sb.append(c);
+ }
+ sb.append("\\E");
+ return Pattern.compile(sb.toString(), flags);
}
/**
- * Shortcut for creating a modifiable list out of an array of values.
+ * Shortcut for calling {@link Objects#hash(Object...)}.
*/
- @SafeVarargs
- public static <T> List<T> list(T...values) { // NOSONAR
- return new ArrayList<>(Arrays.asList(values));
+ public static final int hash(Object...values) {
+ return Objects.hash(values);
}
/**
- * Shortcut for creating a modifiable set out of an array of values.
+ * Creates an {@link IllegalArgumentException}.
*/
- @SafeVarargs
- public static <K,V> LinkedHashMap<K,V> map(Object...values) { //
NOSONAR
- var m = new LinkedHashMap<K,V>();
- for (var i = 0; i < values.length; i+=2) {
- m.put((K)values[i], (V)values[i+1]);
- }
- return m;
+ public static IllegalArgumentException illegalArg(String msg,
Object...args) {
+ return new IllegalArgumentException(args.length == 0 ? msg :
f(msg, args));
}
- /** Not equals */
- public static <T> boolean ne(T s1, T s2) {
- return ! eq(s1, s2);
+ private static boolean isArray(Object o) {
+ return o != null && o.getClass().isArray();
}
/**
- * Null-safe {@link String#contains(CharSequence)} operation.
+ * Returns <jk>true</jk> if the specified object is empty.
+ *
+ * <p>
+ * Return <jk>true</jk> if the value is any of the following:
+ * <ul>
+ * <li><jk>null</jk>
+ * <li>An empty Collection
+ * <li>An empty Map
+ * <li>An empty array
+ * <li>An empty CharSequence
+ * <li>An empty String when serialized to a string using {@link
Object#toString()}.
+ * </ul>
+ *
+ * @param o The object to test.
+ * @return <jk>true</jk> if the specified object is empty.
*/
- public static boolean notContains(String s, char...values) {
- return ! contains(s, values);
- }
-
- /**
- * Returns the specified string, or null if that string is null or
empty.
- */
- public static String nullIfEmpty(String value) {
- return isEmpty(value) ? null : value;
- }
-
- /**
- * Returns an obfuscated version of the specified string.
- */
- public static String obfuscate(String s) {
- if (s == null || s.length() < 2)
- return "*";
- return s.substring(0, 1) + s.substring(1).replaceAll(".", "*");
// NOSONAR
- }
-
- /**
- * Shortcut for calling {@link Optional#ofNullable(Object)}.
- */
- public static final <T> Optional<T> opt(T t) {
- return Optional.ofNullable(t);
- }
-
- public static final <T> Optional<T> opte() {
- return Optional.empty();
- }
-
- /**
- * Prints all the specified lines to System.out.
- */
- public static final void printLines(String[] lines) {
- for (var i = 0; i < lines.length; i++)
- System.out.println(String.format("%4s:" + lines[i],
i+1)); // NOSONAR - NOT DEBUG
- }
-
- /**
- * Shortcut for {@link #readable(Object)}
- */
- public static String r(Object o) {
- if (o instanceof Optional<?> o2)
- return r(o2.orElse(null));
- if (o instanceof Collection<?> o2)
- return
o2.stream().map(Utils::r).collect(joining(",","[","]"));
- if (o instanceof Map<?,?> o2)
- return
o2.entrySet().stream().map(Utils::r).collect(joining(",","{","}"));
- if (o instanceof Map.Entry<?,?> o2)
- return r(o2.getKey()) + '=' + r(o2.getValue());
- if (o instanceof GregorianCalendar o2)
- return
o2.toZonedDateTime().format(DateTimeFormatter.ISO_INSTANT);
- if (o instanceof Date o2)
- return o2.toInstant().toString();
- if (o instanceof InputStream o2)
- return toHex(o2);
- if (o instanceof Reader o2)
- return safe(()->IOUtils.read(o2));
- if (o instanceof File o2)
- return safe(()->IOUtils.read(o2));
- if (o instanceof byte[] o2)
- return toHex(o2);
- if (o != null && o.getClass().isArray()) {
- var l = list();
- for (var i = 0; i < Array.getLength(o); i++) {
- l.add(Array.get(o, i));
- }
- return r(l);
- }
- return s(o);
- }
-
- /**
- * Creates a {@link RuntimeException}.
- */
- public static RuntimeException runtimeException(String msg,
Object...args) {
- return new RuntimeException(args.length == 0 ? msg : f(msg,
args));
- }
-
- /**
- * Shortcut for converting an object to a string.
- */
- public static String s(Object val) {
- return val == null ? null : val.toString();
- }
-
- /**
- * Used to wrap code that returns a value but throws an exception.
- * Useful in cases where you're trying to execute code in a fluent
method call
- * or are trying to eliminate untestable catch blocks in code.
- */
- public static <T> T safe(ThrowingSupplier<T> s) {
- try {
- return s.get();
- } catch (RuntimeException e) {
- throw e;
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
- * Shortcut for creating a modifiable set out of an array of values.
- */
- @SafeVarargs
- public static <T> LinkedHashSet<T> set(T...values) { // NOSONAR
- return new LinkedHashSet<>(Arrays.asList(values));
- }
-
- /**
- * Splits a comma-delimited list into a list of strings.
- */
- public static List<String> split(String s) {
- return s == null ? Collections.emptyList() : Utils.split2(s);
- }
-
- /**
- * Splits a comma-delimited list into an array of strings.
- */
- public static String[] splita(String s) {
- return s == null ? new String[0] : Utils.split3(s);
- }
-
- /**
- * Converts an array to a stream of objects.
- * @param array The array to convert.
- * @return A new stream.
- */
- public static Stream<Object> toStream(Object array) {
- if (array == null || ! array.getClass().isArray()) {
- throw illegalArg("Not an array: " + array);
- }
- var length = Array.getLength(array);
- return IntStream.range(0, length).mapToObj(i ->
Array.get(array, i));
- }
-
- /**
- * Traverses all elements in the specified object and executes a
consumer for it.
- *
- * @param <T> The element type.
- * @param o The object to traverse.
- * @param c The consumer of the objects.
- */
- public static <T> void traverse(Object o, Consumer<T> c) {
- if (o == null)
- return;
- if (o instanceof Iterable<?> o2)
- o2.forEach(x -> traverse(x, c));
- else if (o instanceof Stream<?> o2)
- o2.forEach(x -> traverse(x, c));
- else if (o.getClass().isArray())
- toStream(o).forEach(x -> traverse(x, c));
- else
- c.accept((T)o);
- }
-
- /**
- * Shortcut for creating an unmodifiable list out of an array of values.
- */
- @SafeVarargs
- public static <T> List<T> alist(T...values) { // NOSONAR
- return Arrays.asList(values);
- }
-
- private static final Map<Class<?>,Function<String,?>> ENV_FUNCTIONS =
new IdentityHashMap<>();
- static {
- ENV_FUNCTIONS.put(Boolean.class, Boolean::valueOf);
- ENV_FUNCTIONS.put(Charset.class, Charset::forName);
- }
-
- private static final ConcurrentHashMap<String,String> PROPERTY_TO_ENV =
new ConcurrentHashMap<>();
-
- private static String envName(String name) {
- return PROPERTY_TO_ENV.computeIfAbsent(name,
x->x.toUpperCase().replace(".", "_"));
- }
-
- @SuppressWarnings("rawtypes")
- private static <T> T toType(String s, T def) {
- if (s == null || def == null)
- return null;
- var c = (Class<T>)def.getClass();
- if (c == String.class)
- return (T)s;
- if (c.isEnum())
- return (T)Enum.valueOf((Class<? extends Enum>) c, s);
- var f = (Function<String,T>)ENV_FUNCTIONS.get(c);
- if (f == null)
- throw runtimeException("Invalid env type: {0}", c);
- return f.apply(s);
- }
-
- /**
- * Simplified formatted string supplier with message arguments.
- */
- public static Supplier<String> fs(String pattern, Object...args) {
- return ()->StringUtils.format(pattern, args);
- }
-
- /**
- * Returns an empty {@link Optional}.
- *
- * @param <T> The component type.
- * @return An empty {@link Optional}.
- */
- public static <T> Optional<T> empty() {
- return Optional.empty();
- }
-
- /**
- * Returns the first non-null value in the specified array
- *
- * @param <T> The value types.
- * @param t The values to check.
- * @return The first non-null value, or <jk>null</jk> if the array is
null or empty or contains only <jk>null</jk> values.
- */
- @SafeVarargs
- public static <T> T firstNonNull(T... t) {
- if (t != null)
- for (T tt : t)
- if (tt != null)
- return tt;
- return null;
- }
-
- /**
- * Casts an object to a specific type if it's an instance of that type.
- *
- * @param <T> The type to cast to.
- * @param c The type to cast to.
- * @param o The object to cast to.
- * @return The cast object, or <jk>null</jk> if the object wasn't the
specified type.
- */
- public static <T> T cast(Class<T> c, Object o) {
- return o != null && c.isInstance(o) ? c.cast(o) : null;
- }
-
- /**
- * Returns <jk>true</jk> if the specified object is empty.
- *
- * <p>
- * Return <jk>true</jk> if the value is any of the following:
- * <ul>
- * <li><jk>null</jk>
- * <li>An empty Collection
- * <li>An empty Map
- * <li>An empty array
- * <li>An empty CharSequence
- * <li>An empty String when serialized to a string using {@link
Object#toString()}.
- * </ul>
- *
- * @param o The object to test.
- * @return <jk>true</jk> if the specified object is empty.
- */
- @SuppressWarnings("rawtypes")
public static boolean isEmpty(Object o) {
if (o == null)
return true;
- if (o instanceof Collection)
- return ((Collection)o).isEmpty();
- if (o instanceof Map)
- return ((Map)o).isEmpty();
+ if (o instanceof Collection<?> o2)
+ return o2.isEmpty();
+ if (o instanceof Map<?,?> o2)
+ return o2.isEmpty();
if (o.getClass().isArray())
return (Array.getLength(o) == 0);
return o.toString().isEmpty();
}
/**
- * Returns <jk>true</jk> if the specified object is not <jk>null</jk>.
- *
- * @param <T> The value type.
- * @param value The value being checked.
- * @return <jk>true</jk> if the specified object is not <jk>null</jk>.
- */
- public static <T> boolean isNotNull(T value) {
- return value != null;
- }
-
- /**
- * If the specified object is an instance of the specified class, casts
it to that type.
- *
- * @param <T> The class to cast to.
- * @param o The object to cast.
- * @param c The class to cast to.
- * @return The cast object, or <jk>null</jk> if the object wasn't an
instance of the specified class.
- */
- public static <T> T castOrNull(Object o, Class<T> c) {
- if (c.isInstance(o))
- return c.cast(o);
- return null;
- }
-
- /**
- * Returns <jk>true</jk> if the specified boolean is not <jk>null</jk>
and is <jk>true</jk>.
- *
- * @param value The value being checked.
- * @return <jk>true</jk> if the specified boolean is not <jk>null</jk>
and is <jk>true</jk>.
+ * @return True if string is null or empty.
*/
- public static boolean isTrue(Boolean value) {
- return value != null && value;
+ public static boolean isEmpty(String o) {
+ return o == null || o.isEmpty();
}
/**
- * Returns <jk>true</jk> if the specified number is not <jk>null</jk>
and not <c>-1</c>.
+ * Returns <jk>true</jk> if specified string is <jk>null</jk> or empty
or consists of only blanks.
*
- * @param <T> The value types.
- * @param value The value being checked.
- * @return <jk>true</jk> if the specified number is not <jk>null</jk>
and not <c>-1</c>.
+ * @param s The string to check.
+ * @return <jk>true</jk> if specified string is <jk>null</jk> or
emptyor consists of only blanks.
*/
- public static <T extends Number> boolean isNotMinusOne(T value) {
- return value != null && value.intValue() != -1;
+ public static boolean isEmptyOrBlank(String s) {
+ return s == null || s.trim().isEmpty();
}
/**
@@ -568,65 +441,11 @@ public class Utils {
}
/**
- * Compares two objects for equality.
- *
- * <p>
- * Nulls are always considered less-than unless both are null.
- *
- * @param o1 Object 1.
- * @param o2 Object 2.
- * @return
- * <c>-1</c>, <c>0</c>, or <c>1</c> if <c>o1</c> is less-than,
equal, or greater-than <c>o2</c>.
- * <br><c>0</c> if objects are not of the same type or do not
implement the {@link Comparable} interface.
- */
- @SuppressWarnings({ "rawtypes", "unchecked" })
- public static int compare(Object o1, Object o2) {
- if (o1 == null) {
- if (o2 == null)
- return 0;
- return -1;
- } else if (o2 == null) {
- return 1;
- }
-
- if (o1.getClass() == o2.getClass() && o1 instanceof Comparable)
- return ((Comparable)o1).compareTo(o2);
-
- return 0;
- }
-
- /**
- * Tests two objects for inequality, gracefully handling nulls.
- *
- * @param <T> Object 1 type.
- * @param <U> Object 2 type.
- * @param o1 Object 1.
- * @param o2 Object 2.
- * @param test The test to use for equality.
- * @return <jk>false</jk> if both objects are equal based on the test.
+ * @return True if string is not null or empty.
*/
- public static <T,U> boolean ne(T o1, U o2, BiPredicate<T,U> test) {
- if (o1 == null)
- return o2 != null;
- if (o2 == null)
- return true;
- if (o1 == o2)
- return false;
- return ! test.test(o1, o2);
- }
-
- public static <K,V> Map<K,V> u(Map<? extends K, ? extends V> value) {
- return value == null ? null :
Collections.unmodifiableMap(value);
- }
-
- public static <T> List<T> u(List<? extends T> value) {
- return value == null ? null :
Collections.unmodifiableList(value);
- }
-
- public static <T> Set<T> u(Set<? extends T> value) {
- return value == null ? null :
Collections.unmodifiableSet(value);
+ public static boolean isNotEmpty(String o) {
+ return ! isEmpty(o);
}
-
/**
* Returns <jk>true</jk> if the specified collection is not
<jk>null</jk> and not empty.
*
@@ -651,110 +470,123 @@ public class Utils {
}
/**
- * Converts the specified collection to an array.
+ * Returns <jk>true</jk> if specified string is not <jk>null</jk> or
empty.
*
- * @param <E> The element type.
- * @param value The collection to convert.
- * @param componentType The component type of the array.
- * @return A new array.
+ * @param s The string to check.
+ * @return <jk>true</jk> if specified string is not <jk>null</jk> or
empty.
*/
- @SuppressWarnings("unchecked")
- public static <E> E[] array(Collection<E> value, Class<E>
componentType) {
- if (value == null)
- return null;
- E[] array = (E[])Array.newInstance(componentType, value.size());
- return value.toArray(array);
+ public static boolean isNotEmpty3(String s) {
+ return ! isEmpty(s);
}
/**
- * Convenience method for creating an unmodifiable list.
+ * Returns <jk>true</jk> if either of the specified strings are not
<jk>null</jk> or empty.
*
- * @param <E> The element type.
- * @param values The values to initialize the list with.
- * @return A new unmodifiable list, or <jk>null</jk> if the array was
<jk>null</jk>.
+ * @param s1 The string to check.
+ * @param s2 The string to check.
+ * @return <jk>true</jk> if either of the specified strings are not
<jk>null</jk> or empty.
*/
- @SafeVarargs
- public static <E> List<E> ulist2(E...values) {
- if (values == null)
- return null;
- return u(alist(values));
+ public static boolean isNotEmpty3(String s1, String s2) {
+ return isNotEmpty3(s1) || isNotEmpty3(s2);
}
/**
- * Convenience method for creating an unmodifiable {@link
LinkedHashSet}.
+ * Returns <jk>true</jk> if the specified number is not <jk>null</jk>
and not <c>-1</c>.
*
- * @param <E> The element type.
- * @param values The values to initialize the set with.
- * @return A new unmodifiable set.
+ * @param <T> The value types.
+ * @param value The value being checked.
+ * @return <jk>true</jk> if the specified number is not <jk>null</jk>
and not <c>-1</c>.
*/
- @SafeVarargs
- public static <E> Set<E> uset2(E...values) {
- return u(set(values));
+ public static <T extends Number> boolean isNotMinusOne(T value) {
+ return value != null && value.intValue() != -1;
+ }
+
+ /**
+ * Returns <jk>true</jk> if the specified object is not <jk>null</jk>.
+ *
+ * @param <T> The value type.
+ * @param value The value being checked.
+ * @return <jk>true</jk> if the specified object is not <jk>null</jk>.
+ */
+ public static <T> boolean isNotNull(T value) {
+ return value != null;
}
/**
- * Convenience method for creating an {@link ArrayList} of the
specified size.
+ * Returns <jk>true</jk> if the specified boolean is not <jk>null</jk>
and is <jk>true</jk>.
*
- * @param <E> The element type.
- * @param size The initial size of the list.
- * @return A new modifiable list.
+ * @param value The value being checked.
+ * @return <jk>true</jk> if the specified boolean is not <jk>null</jk>
and is <jk>true</jk>.
*/
- public static <E> ArrayList<E> listOfSize(int size) {
- return new ArrayList<>(size);
+ public static boolean isTrue(Boolean value) {
+ return value != null && value;
}
/**
- * Tests two strings for equality, but gracefully handles nulls.
+ * Join the specified tokens into a delimited string.
*
- * @param caseInsensitive Use case-insensitive matching.
- * @param s1 String 1.
- * @param s2 String 2.
- * @return <jk>true</jk> if the strings are equal.
+ * @param tokens The tokens to join.
+ * @param d The delimiter.
+ * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
*/
- public static boolean eq(boolean caseInsensitive, String s1, String s2)
{
- return caseInsensitive ? eqic(s1, s2) : eq(s1, s2);
+ public static String join(Collection<?> tokens, char d) {
+ if (tokens == null)
+ return null;
+ var sb = new StringBuilder();
+ for (var iter = tokens.iterator(); iter.hasNext();) {
+ sb.append(iter.next());
+ if (iter.hasNext())
+ sb.append(d);
+ }
+ return sb.toString();
}
/**
- * Tests two strings for case-insensitive equality, but gracefully
handles nulls.
+ * Join the specified tokens into a delimited string.
*
- * @param s1 String 1.
- * @param s2 String 2.
- * @return <jk>true</jk> if the strings are equal.
+ * @param tokens The tokens to join.
+ * @param d The delimiter.
+ * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
*/
- public static boolean eqic(String s1, String s2) {
- if (s1 == null)
- return s2 == null;
- if (s2 == null)
- return false;
- return s1.equalsIgnoreCase(s2);
+ public static String join(Collection<?> tokens, String d) {
+ if (tokens == null)
+ return null;
+ return join(tokens, d, new StringBuilder()).toString();
}
/**
- * Tests two strings for non-equality ignoring case, but gracefully
handles nulls.
+ * Joins the specified tokens into a delimited string and writes the
output to the specified string builder.
*
- * @param s1 String 1.
- * @param s2 String 2.
- * @return <jk>true</jk> if the strings are not equal ignoring case.
+ * @param tokens The tokens to join.
+ * @param d The delimiter.
+ * @param sb The string builder to append the response to.
+ * @return The same string builder passed in as <c>sb</c>.
*/
- public static boolean neic(String s1, String s2) {
- return ! eqic(s1, s2);
+ public static StringBuilder join(Collection<?> tokens, String d,
StringBuilder sb) {
+ if (tokens == null)
+ return sb;
+ for (var iter = tokens.iterator(); iter.hasNext();) {
+ sb.append(iter.next());
+ if (iter.hasNext())
+ sb.append(d);
+ }
+ return sb;
}
/**
* Join the specified tokens into a delimited string.
*
* @param tokens The tokens to join.
- * @param separator The delimiter.
+ * @param d The delimiter.
* @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
*/
- public static String join(Object[] tokens, String separator) {
+ public static String join(int[] tokens, char d) {
if (tokens == null)
return null;
var sb = new StringBuilder();
for (var i = 0; i < tokens.length; i++) {
if (i > 0)
- sb.append(separator);
+ sb.append(d);
sb.append(tokens[i]);
}
return sb.toString();
@@ -767,10 +599,16 @@ public class Utils {
* @param d The delimiter.
* @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
*/
- public static String join(Collection<?> tokens, String d) {
+ public static String join(List<?> tokens, char d) {
if (tokens == null)
return null;
- return join(tokens, d, new StringBuilder()).toString();
+ var sb = new StringBuilder();
+ for (int i = 0, j = tokens.size(); i < j; i++) {
+ if (i > 0)
+ sb.append(d);
+ sb.append(tokens.get(i));
+ }
+ return sb.toString();
}
/**
@@ -794,145 +632,277 @@ public class Utils {
* @param sb The string builder to append the response to.
* @return The same string builder passed in as <c>sb</c>.
*/
- public static StringBuilder join(Collection<?> tokens, String d,
StringBuilder sb) {
+ public static StringBuilder join(List<?> tokens, String d,
StringBuilder sb) {
if (tokens == null)
return sb;
- for (var iter = tokens.iterator(); iter.hasNext();) {
- sb.append(iter.next());
- if (iter.hasNext())
+ for (int i = 0, j = tokens.size(); i < j; i++) {
+ if (i > 0)
sb.append(d);
+ sb.append(tokens.get(i));
}
return sb;
}
/**
- * Joins the specified tokens into a delimited string and writes the
output to the specified string builder.
+ * Joins the specified tokens into a delimited string.
+ *
+ * @param tokens The tokens to join.
+ * @param d The delimiter.
+ * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
+ */
+ public static String join(Object[] tokens, char d) {
+ if (tokens == null)
+ return null;
+ if (tokens.length == 1)
+ return emptyIfNull(s(tokens[0]));
+ return join(tokens, d, new StringBuilder()).toString();
+ }
+
+ /**
+ * Join the specified tokens into a delimited string and writes the
output to the specified string builder.
*
* @param tokens The tokens to join.
* @param d The delimiter.
* @param sb The string builder to append the response to.
* @return The same string builder passed in as <c>sb</c>.
*/
- public static StringBuilder join(List<?> tokens, String d,
StringBuilder sb) {
+ public static StringBuilder join(Object[] tokens, char d, StringBuilder
sb) {
if (tokens == null)
return sb;
- for (int i = 0, j = tokens.size(); i < j; i++) {
+ for (var i = 0; i < tokens.length; i++) {
if (i > 0)
sb.append(d);
- sb.append(tokens.get(i));
+ sb.append(tokens[i]);
}
return sb;
}
/**
- * Joins the specified tokens into a delimited string.
- *
- * @param tokens The tokens to join.
- * @param d The delimiter.
- * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
+ * Join the specified tokens into a delimited string.
+ *
+ * @param tokens The tokens to join.
+ * @param separator The delimiter.
+ * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
+ */
+ public static String join(Object[] tokens, String separator) {
+ if (tokens == null)
+ return null;
+ var sb = new StringBuilder();
+ for (var i = 0; i < tokens.length; i++) {
+ if (i > 0)
+ sb.append(separator);
+ sb.append(tokens[i]);
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Joins tokens with newlines.
+ *
+ * @param tokens The tokens to concatenate.
+ * @return A string with the specified tokens contatenated with
newlines.
+ */
+ public static String joinnl(Object[] tokens) {
+ return join(tokens, '\n');
+ }
+
+ /**
+ * Shortcut for creating a modifiable list out of an array of values.
+ */
+ @SafeVarargs
+ public static <T> List<T> list(T...values) { // NOSONAR
+ return new ArrayList<>(Arrays.asList(values));
+ }
+
+ /**
+ * Convenience method for creating an {@link ArrayList} of the
specified size.
+ *
+ * @param <E> The element type.
+ * @param size The initial size of the list.
+ * @return A new modifiable list.
+ */
+ public static <E> ArrayList<E> listOfSize(int size) {
+ return new ArrayList<>(size);
+ }
+
+ /**
+ * Shortcut for creating a modifiable set out of an array of values.
+ */
+ @SafeVarargs
+ public static <K,V> LinkedHashMap<K,V> map(Object...values) { //
NOSONAR
+ var m = new LinkedHashMap<K,V>();
+ for (var i = 0; i < values.length; i+=2) {
+ m.put((K)values[i], (V)values[i+1]);
+ }
+ return m;
+ }
+
+ /** Not equals */
+ public static <T> boolean ne(T s1, T s2) {
+ return ! eq(s1, s2);
+ }
+
+ /**
+ * Tests two objects for inequality, gracefully handling nulls.
+ *
+ * @param <T> Object 1 type.
+ * @param <U> Object 2 type.
+ * @param o1 Object 1.
+ * @param o2 Object 2.
+ * @param test The test to use for equality.
+ * @return <jk>false</jk> if both objects are equal based on the test.
+ */
+ public static <T,U> boolean ne(T o1, U o2, BiPredicate<T,U> test) {
+ if (o1 == null)
+ return o2 != null;
+ if (o2 == null)
+ return true;
+ if (o1 == o2)
+ return false;
+ return ! test.test(o1, o2);
+ }
+
+ /**
+ * 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);
+ }
+
+ /**
+ * Null-safe {@link String#contains(CharSequence)} operation.
+ */
+ public static boolean notContains(String s, char...values) {
+ return ! contains(s, values);
+ }
+
+ /**
+ * Returns the specified string, or null if that string is null or
empty.
+ */
+ public static String nullIfEmpty(String value) {
+ return isEmpty(value) ? null : value;
+ }
+
+ /**
+ * Returns <jk>null</jk> if the specified string is <jk>null</jk> or
empty.
+ *
+ * @param s The string to check.
+ * @return <jk>null</jk> if the specified string is <jk>null</jk> or
empty, or the same string if not.
+ */
+ public static String nullIfEmpty3(String s) {
+ if (s == null || s.isEmpty())
+ return null;
+ return s;
+ }
+
+ /**
+ * Returns an obfuscated version of the specified string.
+ */
+ public static String obfuscate(String s) {
+ if (s == null || s.length() < 2)
+ return "*";
+ return s.substring(0, 1) + s.substring(1).replaceAll(".", "*");
// NOSONAR
+ }
+
+ /**
+ * Shortcut for calling {@link Optional#ofNullable(Object)}.
+ */
+ public static final <T> Optional<T> opt(T t) {
+ return Optional.ofNullable(t);
+ }
+
+ public static final <T> Optional<T> opte() {
+ return Optional.empty();
+ }
+
+ /**
+ * Prints all the specified lines to System.out.
*/
- public static String join(Object[] tokens, char d) {
- if (tokens == null)
- return null;
- if (tokens.length == 1)
- return emptyIfNull(s(tokens[0]));
- return join(tokens, d, new StringBuilder()).toString();
+ public static final void printLines(String[] lines) {
+ for (var i = 0; i < lines.length; i++)
+ System.out.println(String.format("%4s:" + lines[i],
i+1)); // NOSONAR - NOT DEBUG
}
/**
- * Join the specified tokens into a delimited string and writes the
output to the specified string builder.
- *
- * @param tokens The tokens to join.
- * @param d The delimiter.
- * @param sb The string builder to append the response to.
- * @return The same string builder passed in as <c>sb</c>.
+ * Shortcut for {@link #readable(Object)}
*/
- public static StringBuilder join(Object[] tokens, char d, StringBuilder
sb) {
- if (tokens == null)
- return sb;
- for (var i = 0; i < tokens.length; i++) {
- if (i > 0)
- sb.append(d);
- sb.append(tokens[i]);
+ public static String r(Object o) {
+ if (o instanceof Optional<?> o2)
+ return r(o2.orElse(null));
+ if (o instanceof Collection<?> o2)
+ return
o2.stream().map(Utils::r).collect(joining(",","[","]"));
+ if (o instanceof Map<?,?> o2)
+ return
o2.entrySet().stream().map(Utils::r).collect(joining(",","{","}"));
+ if (o instanceof Map.Entry<?,?> o2)
+ return r(o2.getKey()) + '=' + r(o2.getValue());
+ if (o instanceof GregorianCalendar o2)
+ return
o2.toZonedDateTime().format(DateTimeFormatter.ISO_INSTANT);
+ if (o instanceof Date o2)
+ return o2.toInstant().toString();
+ if (o instanceof InputStream o2)
+ return toHex(o2);
+ if (o instanceof Reader o2)
+ return safe(()->IOUtils.read(o2));
+ if (o instanceof File o2)
+ return safe(()->IOUtils.read(o2));
+ if (o instanceof byte[] o2)
+ return toHex(o2);
+ if (o != null && o.getClass().isArray()) {
+ var l = list();
+ for (var i = 0; i < Array.getLength(o); i++) {
+ l.add(Array.get(o, i));
+ }
+ return r(l);
}
- return sb;
+ return s(o);
}
/**
- * Join the specified tokens into a delimited string.
- *
- * @param tokens The tokens to join.
- * @param d The delimiter.
- * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
+ * Creates a {@link RuntimeException}.
*/
- public static String join(int[] tokens, char d) {
- if (tokens == null)
- return null;
- var sb = new StringBuilder();
- for (var i = 0; i < tokens.length; i++) {
- if (i > 0)
- sb.append(d);
- sb.append(tokens[i]);
- }
- return sb.toString();
+ public static RuntimeException runtimeException(String msg,
Object...args) {
+ return new RuntimeException(args.length == 0 ? msg : f(msg,
args));
}
/**
- * Join the specified tokens into a delimited string.
- *
- * @param tokens The tokens to join.
- * @param d The delimiter.
- * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
+ * Shortcut for converting an object to a string.
*/
- public static String join(Collection<?> tokens, char d) {
- if (tokens == null)
- return null;
- var sb = new StringBuilder();
- for (var iter = tokens.iterator(); iter.hasNext();) {
- sb.append(iter.next());
- if (iter.hasNext())
- sb.append(d);
- }
- return sb.toString();
+ public static String s(Object val) {
+ return val == null ? null : val.toString();
}
/**
- * Join the specified tokens into a delimited string.
- *
- * @param tokens The tokens to join.
- * @param d The delimiter.
- * @return The delimited string. If <c>tokens</c> is <jk>null</jk>,
returns <jk>null</jk>.
+ * Used to wrap code that returns a value but throws an exception.
+ * Useful in cases where you're trying to execute code in a fluent
method call
+ * or are trying to eliminate untestable catch blocks in code.
*/
- public static String join(List<?> tokens, char d) {
- if (tokens == null)
- return null;
- var sb = new StringBuilder();
- for (int i = 0, j = tokens.size(); i < j; i++) {
- if (i > 0)
- sb.append(d);
- sb.append(tokens.get(i));
+ public static <T> T safe(ThrowingSupplier<T> s) {
+ try {
+ return s.get();
+ } catch (RuntimeException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
- return sb.toString();
}
/**
- * Joins tokens with newlines.
- *
- * @param tokens The tokens to concatenate.
- * @return A string with the specified tokens contatenated with
newlines.
+ * Shortcut for creating a modifiable set out of an array of values.
*/
- public static String joinnl(Object[] tokens) {
- return join(tokens, '\n');
+ @SafeVarargs
+ public static <T> LinkedHashSet<T> set(T...values) { // NOSONAR
+ return new LinkedHashSet<>(Arrays.asList(values));
}
/**
- * Shortcut for calling <code>split(s, <js>','</js>)</code>
- *
- * @param s The string to split. Can be <jk>null</jk>.
- * @return The tokens, or <jk>null</jk> if the string was null.
+ * Splits a comma-delimited list into a list of strings.
*/
- public static String[] split3(String s) {
- return split3(s, ',');
+ public static List<String> split(String s) {
+ return s == null ? Collections.emptyList() : Utils.split2(s);
}
/**
@@ -945,16 +915,6 @@ public class Utils {
return split2(s, ',');
}
- /**
- * Same as {@link #split3(String)} but consumes the tokens instead of
creating an array.
- *
- * @param s The string to split.
- * @param consumer The consumer of the tokens.
- */
- public static void split3(String s, Consumer<String> consumer) {
- split3(s, ',', consumer);
- }
-
/**
* Splits a character-delimited string into a string array.
*
@@ -978,8 +938,62 @@ public class Utils {
* @param c The character to split on.
* @return The tokens, or <jk>null</jk> if the string was null.
*/
- public static String[] split3(String s, char c) {
- return split3(s, c, Integer.MAX_VALUE);
+ public static List<String> split2(String s, char c) {
+ return split2(s, c, Integer.MAX_VALUE);
+ }
+
+ /**
+ * Same as {@link #split3(String, char)} but limits the number of
tokens returned.
+ *
+ * @param s The string to split. Can be <jk>null</jk>.
+ * @param c The character to split on.
+ * @param limit The maximum number of tokens to return.
+ * @return The tokens, or <jk>null</jk> if the string was null.
+ */
+ public static List<String> split2(String s, char c, int limit) {
+
+ var escapeChars = StringUtils.getEscapeSet(c);
+
+ if (s == null)
+ return null; // NOSONAR - Intentional.
+ if (isEmpty(s))
+ return Collections.emptyList();
+ if (s.indexOf(c) == -1)
+ return Collections.singletonList(s);
+
+ var l = new LinkedList<String>();
+ var sArray = s.toCharArray();
+ var x1 = 0;
+ var escapeCount = 0;
+ limit--;
+ for (var i = 0; i < sArray.length && limit > 0; i++) {
+ if (sArray[i] == '\\')
+ escapeCount++;
+ else if (sArray[i]==c && escapeCount % 2 == 0) {
+ var s2 = new String(sArray, x1, i-x1);
+ var s3 = StringUtils.unEscapeChars(s2,
escapeChars);
+ l.add(s3.trim());
+ limit--;
+ x1 = i+1;
+ }
+ if (sArray[i] != '\\')
+ escapeCount = 0;
+ }
+ var s2 = new String(sArray, x1, sArray.length-x1);
+ var s3 = StringUtils.unEscapeChars(s2, escapeChars);
+ l.add(s3.trim());
+
+ return l;
+ }
+
+ /**
+ * Shortcut for calling <code>split(s, <js>','</js>)</code>
+ *
+ * @param s The string to split. Can be <jk>null</jk>.
+ * @return The tokens, or <jk>null</jk> if the string was null.
+ */
+ public static String[] split3(String s) {
+ return split3(s, ',');
}
/**
@@ -1005,8 +1019,8 @@ public class Utils {
* @param c The character to split on.
* @return The tokens, or <jk>null</jk> if the string was null.
*/
- public static List<String> split2(String s, char c) {
- return split2(s, c, Integer.MAX_VALUE);
+ public static String[] split3(String s, char c) {
+ return split3(s, c, Integer.MAX_VALUE);
}
/**
@@ -1018,17 +1032,17 @@ public class Utils {
*/
public static void split3(String s, char c, Consumer<String> consumer) {
var escapeChars = StringUtils.getEscapeSet(c);
-
- if (Utils.isEmpty3(s))
+
+ if (isEmpty(s))
return;
if (s.indexOf(c) == -1) {
consumer.accept(s);
return;
}
-
+
var x1 = 0;
var escapeCount = 0;
-
+
for (var i = 0; i < s.length(); i++) {
if (s.charAt(i) == '\\')
escapeCount++;
@@ -1060,47 +1074,13 @@ public class Utils {
}
/**
- * Same as {@link #split3(String, char)} but limits the number of
tokens returned.
+ * Same as {@link #split3(String)} but consumes the tokens instead of
creating an array.
*
- * @param s The string to split. Can be <jk>null</jk>.
- * @param c The character to split on.
- * @param limit The maximum number of tokens to return.
- * @return The tokens, or <jk>null</jk> if the string was null.
+ * @param s The string to split.
+ * @param consumer The consumer of the tokens.
*/
- public static List<String> split2(String s, char c, int limit) {
-
- var escapeChars = StringUtils.getEscapeSet(c);
-
- if (s == null)
- return null; // NOSONAR - Intentional.
- if (Utils.isEmpty3(s))
- return Collections.emptyList();
- if (s.indexOf(c) == -1)
- return Collections.singletonList(s);
-
- var l = new LinkedList<String>();
- var sArray = s.toCharArray();
- var x1 = 0;
- var escapeCount = 0;
- limit--;
- for (var i = 0; i < sArray.length && limit > 0; i++) {
- if (sArray[i] == '\\')
- escapeCount++;
- else if (sArray[i]==c && escapeCount % 2 == 0) {
- var s2 = new String(sArray, x1, i-x1);
- var s3 = StringUtils.unEscapeChars(s2,
escapeChars);
- l.add(s3.trim());
- limit--;
- x1 = i+1;
- }
- if (sArray[i] != '\\')
- escapeCount = 0;
- }
- var s2 = new String(sArray, x1, sArray.length-x1);
- var s3 = StringUtils.unEscapeChars(s2, escapeChars);
- l.add(s3.trim());
-
- return l;
+ public static void split3(String s, Consumer<String> consumer) {
+ split3(s, ',', consumer);
}
/**
@@ -1123,6 +1103,13 @@ public class Utils {
return l.toArray(new String[l.size()]);
}
+ /**
+ * Splits a comma-delimited list into an array of strings.
+ */
+ public static String[] splita(String s) {
+ return s == null ? new String[0] : Utils.split3(s);
+ }
+
/**
* Splits a list of key-value pairs into an ordered map.
*
@@ -1138,20 +1125,20 @@ public class Utils {
* @return The parsed map, or null if the string was null.
*/
public static Map<String,String> splitMap(String s, boolean trim) {
-
+
if (s == null)
return null; // NOSONAR - Intentional.
- if (Utils.isEmpty3(s))
+ if (isEmpty(s))
return Collections.emptyMap();
-
+
var m = new LinkedHashMap<String,String>();
-
+
final int
S1 = 1, // Found start of key, looking for equals.
S2 = 2; // Found equals, looking for delimiter (or
end).
-
+
var state = S1;
-
+
var sArray = s.toCharArray();
var x1 = 0;
var escapeCount = 0;
@@ -1194,31 +1181,47 @@ public class Utils {
if (c != '\\')
escapeCount = 0;
}
-
+
return m;
}
/**
- * Splits a space-delimited string with optionally quoted arguments.
- *
- * <p>
- * Examples:
- * <ul>
- * <li><js>"foo"</js> => <c>["foo"]</c>
- * <li><js>" foo "</js> => <c>["foo"]</c>
- * <li><js>"foo bar baz"</js> => <c>["foo","bar","baz"]</c>
- * <li><js>"foo 'bar baz'"</js> => <c>["foo","bar baz"]</c>
- * <li><js>"foo \"bar baz\""</js> => <c>["foo","bar baz"]</c>
- * <li><js>"foo 'bar\'baz'"</js> => <c>["foo","bar'baz"]</c>
- * </ul>
+ * Splits the method arguments in the signature of a method.
*
- * @param s The input string.
- * @return
- * The results, or <jk>null</jk> if the input was <jk>null</jk>.
- * <br>An empty string results in an empty array.
+ * @param s The arguments to split.
+ * @return The split arguments, or null if the input string is null.
*/
- public static String[] splitQuoted(String s) {
- return splitQuoted(s, false);
+ public static String[] splitMethodArgs(String s) {
+
+ if (s == null)
+ return null; // NOSONAR - Intentional.
+ if (isEmpty(s))
+ return new String[0];
+ if (s.indexOf(',') == -1)
+ return new String[]{s};
+
+ var l = new LinkedList<String>();
+ var sArray = s.toCharArray();
+ var x1 = 0;
+ var paramDepth = 0;
+
+ for (var i = 0; i < sArray.length; i++) {
+ var c = s.charAt(i);
+ if (c == '>')
+ paramDepth++;
+ else if (c == '<')
+ paramDepth--;
+ else if (c == ',' && paramDepth == 0) {
+ var s2 = new String(sArray, x1, i-x1);
+ l.add(s2.trim());
+ x1 = i+1;
+ }
+ }
+
+ var s2 = new String(sArray, x1, sArray.length-x1);
+ l.add(s2.trim());
+
+ return l.toArray(new String[l.size()]);
}
/**
@@ -1237,17 +1240,17 @@ public class Utils {
*/
public static List<String> splitNested(String s) {
var escapeChars = StringUtils.getEscapeSet(',');
-
+
if (s == null) return null; // NOSONAR - Intentional.
- if (Utils.isEmpty3(s)) return Collections.emptyList();
+ if (isEmpty(s)) return Collections.emptyList();
if (s.indexOf(',') == -1) return
Collections.singletonList(StringUtils.trim(s));
-
+
var l = new LinkedList<String>();
-
+
var x1 = 0;
var inEscape = false;
var depthCount = 0;
-
+
for (var i = 0; i < s.length(); i++) {
var c = s.charAt(i);
if (inEscape) {
@@ -1268,7 +1271,7 @@ public class Utils {
}
}
l.add(StringUtils.trim(StringUtils.unEscapeChars(s.substring(x1, s.length()),
escapeChars)));
-
+
return l;
}
@@ -1288,18 +1291,18 @@ public class Utils {
*/
public static List<String> splitNestedInner(String s) {
if (s == null) throw illegalArg("String was null.");
- if (Utils.isEmpty3(s)) throw illegalArg("String was empty.");
-
+ if (isEmpty(s)) throw illegalArg("String was empty.");
+
final int
S1 = 1, // Looking for '{'
S2 = 2; // Found '{', looking for '}'
-
+
var start = -1;
var end = -1;
var state = S1;
var depth = 0;
var inEscape = false;
-
+
for (var i = 0; i < s.length(); i++) {
var c = s.charAt(i);
if (inEscape) {
@@ -1326,12 +1329,35 @@ public class Utils {
}
}
}
-
+
if (start == -1) throw illegalArg("Start character '{' not
found in string.", s);
if (end == -1) throw illegalArg("End character '}' not found in
string.", s);
return splitNested(s.substring(start, end));
}
+ /**
+ * Splits a space-delimited string with optionally quoted arguments.
+ *
+ * <p>
+ * Examples:
+ * <ul>
+ * <li><js>"foo"</js> => <c>["foo"]</c>
+ * <li><js>" foo "</js> => <c>["foo"]</c>
+ * <li><js>"foo bar baz"</js> => <c>["foo","bar","baz"]</c>
+ * <li><js>"foo 'bar baz'"</js> => <c>["foo","bar baz"]</c>
+ * <li><js>"foo \"bar baz\""</js> => <c>["foo","bar baz"]</c>
+ * <li><js>"foo 'bar\'baz'"</js> => <c>["foo","bar'baz"]</c>
+ * </ul>
+ *
+ * @param s The input string.
+ * @return
+ * The results, or <jk>null</jk> if the input was <jk>null</jk>.
+ * <br>An empty string results in an empty array.
+ */
+ public static String[] splitQuoted(String s) {
+ return splitQuoted(s, false);
+ }
+
/**
* Same as {@link #splitQuoted(String)} but allows you to optionally
keep the quote characters.
*
@@ -1342,34 +1368,34 @@ public class Utils {
* <br>An empty string results in an empty array.
*/
public static String[] splitQuoted(String s, boolean keepQuotes) {
-
+
if (s == null)
return null; // NOSONAR - Intentional.
-
+
s = s.trim();
-
- if (Utils.isEmpty3(s))
+
+ if (isEmpty(s))
return new String[0];
-
+
if (! StringUtils.containsAny(s, ' ', '\t', '\'', '"'))
return new String[]{s};
-
+
final int
S1 = 1, // Looking for start of token.
S2 = 2, // Found ', looking for end '
S3 = 3, // Found ", looking for end "
S4 = 4; // Found non-whitespace, looking for end
whitespace.
-
+
var state = S1;
-
+
var isInEscape = false;
var needsUnescape = false;
var mark = 0;
-
+
var l = new ArrayList<String>();
for (var i = 0; i < s.length(); i++) {
var c = s.charAt(i);
-
+
if (state == S1) {
if (c == '\'') {
state = S2;
@@ -1412,139 +1438,91 @@ public class Utils {
}
/**
- * Splits the method arguments in the signature of a method.
- *
- * @param s The arguments to split.
- * @return The split arguments, or null if the input string is null.
+ * Converts an array to a stream of objects.
+ * @param array The array to convert.
+ * @return A new stream.
*/
- public static String[] splitMethodArgs(String s) {
-
- if (s == null)
- return null; // NOSONAR - Intentional.
- if (Utils.isEmpty3(s))
- return new String[0];
- if (s.indexOf(',') == -1)
- return new String[]{s};
-
- var l = new LinkedList<String>();
- var sArray = s.toCharArray();
- var x1 = 0;
- var paramDepth = 0;
-
- for (var i = 0; i < sArray.length; i++) {
- var c = s.charAt(i);
- if (c == '>')
- paramDepth++;
- else if (c == '<')
- paramDepth--;
- else if (c == ',' && paramDepth == 0) {
- var s2 = new String(sArray, x1, i-x1);
- l.add(s2.trim());
- x1 = i+1;
- }
+ public static Stream<Object> toStream(Object array) {
+ if (array == null || ! array.getClass().isArray()) {
+ throw illegalArg("Not an array: " + array);
}
-
- var s2 = new String(sArray, x1, sArray.length-x1);
- l.add(s2.trim());
-
- return l.toArray(new String[l.size()]);
+ var length = Array.getLength(array);
+ return IntStream.range(0, length).mapToObj(i ->
Array.get(array, i));
}
- /**
- * Returns <jk>true</jk> if specified string is <jk>null</jk> or empty.
- *
- * @param s The string to check.
- * @return <jk>true</jk> if specified string is <jk>null</jk> or empty.
- */
- public static boolean isEmpty3(String s) {
- return s == null || s.isEmpty();
+ @SuppressWarnings("rawtypes")
+ private static <T> T toType(String s, T def) {
+ if (s == null || def == null)
+ return null;
+ var c = (Class<T>)def.getClass();
+ if (c == String.class)
+ return (T)s;
+ if (c.isEnum())
+ return (T)Enum.valueOf((Class<? extends Enum>) c, s);
+ var f = (Function<String,T>)ENV_FUNCTIONS.get(c);
+ if (f == null)
+ throw runtimeException("Invalid env type: {0}", c);
+ return f.apply(s);
}
/**
- * Returns <jk>true</jk> if specified charsequence is <jk>null</jk> or
empty.
+ * Traverses all elements in the specified object and executes a
consumer for it.
*
- * @param s The string to check.
- * @return <jk>true</jk> if specified charsequence is <jk>null</jk> or
empty.
+ * @param <T> The element type.
+ * @param o The object to traverse.
+ * @param c The consumer of the objects.
*/
- public static boolean isEmpty3(CharSequence s) {
- return s == null || s.isEmpty();
+ public static <T> void traverse(Object o, Consumer<T> c) {
+ if (o == null)
+ return;
+ if (o instanceof Iterable<?> o2)
+ o2.forEach(x -> traverse(x, c));
+ else if (o instanceof Stream<?> o2)
+ o2.forEach(x -> traverse(x, c));
+ else if (o.getClass().isArray())
+ toStream(o).forEach(x -> traverse(x, c));
+ else
+ c.accept((T)o);
}
- /**
- * Returns <jk>true</jk> if specified string is <jk>null</jk> or empty
or consists of only blanks.
- *
- * @param s The string to check.
- * @return <jk>true</jk> if specified string is <jk>null</jk> or
emptyor consists of only blanks.
- */
- public static boolean isEmptyOrBlank3(String s) {
- return s == null || s.trim().isEmpty();
+ public static <T> List<T> u(List<? extends T> value) {
+ return value == null ? null :
Collections.unmodifiableList(value);
}
- /**
- * Returns <jk>true</jk> if specified string is not <jk>null</jk> or
empty.
- *
- * @param s The string to check.
- * @return <jk>true</jk> if specified string is not <jk>null</jk> or
empty.
- */
- public static boolean isNotEmpty3(String s) {
- return ! isEmpty3(s);
+ public static <K,V> Map<K,V> u(Map<? extends K, ? extends V> value) {
+ return value == null ? null :
Collections.unmodifiableMap(value);
}
- /**
- * Returns <jk>true</jk> if either of the specified strings are not
<jk>null</jk> or empty.
- *
- * @param s1 The string to check.
- * @param s2 The string to check.
- * @return <jk>true</jk> if either of the specified strings are not
<jk>null</jk> or empty.
- */
- public static boolean isNotEmpty3(String s1, String s2) {
- return isNotEmpty3(s1) || isNotEmpty3(s2);
+ public static <T> Set<T> u(Set<? extends T> value) {
+ return value == null ? null :
Collections.unmodifiableSet(value);
}
/**
- * Returns <jk>null</jk> if the specified string is <jk>null</jk> or
empty.
+ * Convenience method for creating an unmodifiable list.
*
- * @param s The string to check.
- * @return <jk>null</jk> if the specified string is <jk>null</jk> or
empty, or the same string if not.
+ * @param <E> The element type.
+ * @param values The values to initialize the list with.
+ * @return A new unmodifiable list, or <jk>null</jk> if the array was
<jk>null</jk>.
*/
- public static String nullIfEmpty3(String s) {
- if (s == null || s.isEmpty())
+ @SafeVarargs
+ public static <E> List<E> ulist2(E...values) {
+ if (values == null)
return null;
- return s;
+ return u(alist(values));
}
/**
- * Converts a string containing <js>"*"</js> meta characters with a
regular expression pattern.
+ * Convenience method for creating an unmodifiable {@link
LinkedHashSet}.
*
- * @param s The string to create a pattern from.
- * @return A regular expression pattern.
+ * @param <E> The element type.
+ * @param values The values to initialize the set with.
+ * @return A new unmodifiable set.
*/
- public static Pattern getMatchPattern3(String s) {
- return getMatchPattern3(s, 0);
+ @SafeVarargs
+ public static <E> Set<E> uset2(E...values) {
+ return u(set(values));
}
- /**
- * Converts a string containing <js>"*"</js> meta characters with a
regular expression pattern.
- *
- * @param s The string to create a pattern from.
- * @param flags Regular expression flags.
- * @return A regular expression pattern.
- */
- public static Pattern getMatchPattern3(String s, int flags) {
- if (s == null)
- return null;
- var sb = new StringBuilder();
- sb.append("\\Q");
- for (var i = 0; i < s.length(); i++) {
- var c = s.charAt(i);
- if (c == '*')
- sb.append("\\E").append(".*").append("\\Q");
- else if (c == '?')
- sb.append("\\E").append(".").append("\\Q");
- else
- sb.append(c);
- }
- sb.append("\\E");
- return Pattern.compile(sb.toString(), flags);
- }
+ /** Constructor */
+ protected Utils() {}
}
\ No newline at end of file
diff --git
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java
index 48f27c5e8..b48ccb290 100644
---
a/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java
+++
b/juneau-core/juneau-config/src/main/java/org/apache/juneau/config/Entry.java
@@ -560,7 +560,7 @@ public class Entry {
//-----------------------------------------------------------------------------------------------------------------
private boolean isEmpty() {
- return Utils.isEmpty3(value);
+ return Utils.isEmpty(value);
}
private boolean isNull() {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
index 6a0a8f3f8..648bf1f25 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
@@ -143,7 +143,7 @@ public abstract class AnnotationApplier<A extends
Annotation, B> {
*/
protected Optional<String> string(String in) {
in = vr.resolve(in);
- return Utils.opt(Utils.isEmpty3(in) ? null : in);
+ return Utils.opt(Utils.isEmpty(in) ? null : in);
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
index 9670e7699..d4d7371b3 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
@@ -344,7 +344,7 @@ public class BeanTraverseSession extends BeanSession {
String toString(boolean simple) {
StringBuilder sb = new
StringBuilder().append('[').append(depth).append(']').append(' ');
- sb.append(Utils.isEmpty3(name) ? "<noname>" :
name).append(':');
+ sb.append(Utils.isEmpty(name) ? "<noname>" :
name).append(':');
sb.append(aType.toString(simple));
if (aType !=
aType.getSerializedClassMeta(BeanTraverseSession.this))
sb.append('/').append(aType.getSerializedClassMeta(BeanTraverseSession.this).toString(simple));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
index eaca636b7..84d022477 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDLC.java
@@ -35,7 +35,7 @@ public final class PropertyNamerDLC implements PropertyNamer {
@Override /* PropertyNamer */
public String getPropertyName(String name) {
- if (Utils.isEmpty3(name))
+ if (Utils.isEmpty(name))
return name;
int numUCs = 0;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDUCS.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDUCS.java
index d86301496..6af7f3492 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDUCS.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerDUCS.java
@@ -35,7 +35,7 @@ public final class PropertyNamerDUCS implements PropertyNamer
{
@Override /* PropertyNamer */
public String getPropertyName(String name) {
- if (Utils.isEmpty3(name))
+ if (Utils.isEmpty(name))
return name;
int numUCs = 0;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerULC.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerULC.java
index a1b00f81b..90acae8b5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerULC.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/PropertyNamerULC.java
@@ -35,7 +35,7 @@ public final class PropertyNamerULC implements PropertyNamer {
@Override /* PropertyNamer */
public String getPropertyName(String name) {
- if (Utils.isEmpty3(name))
+ if (Utils.isEmpty(name))
return name;
int numUCs = 0;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Version.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Version.java
index 586f31937..c28ce4a3f 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Version.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/Version.java
@@ -66,7 +66,7 @@ public class Version implements Comparable<Version> {
* Any parts that are not numeric are interpreted as {@link
Integer#MAX_VALUE}
*/
public Version(String value) {
- if (Utils.isEmpty3(value))
+ if (Utils.isEmpty(value))
value = "0";
String[] sParts = Utils.split3(value, '.');
parts = new int[sParts.length];
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
index d01b7a5b7..898264735 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonList.java
@@ -125,7 +125,7 @@ public class JsonList extends LinkedList<Object> {
* @throws ParseException Malformed input encountered.
*/
public static JsonList ofJsonOrCdl(String s) throws ParseException {
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return null;
if (! StringUtils.isJsonArray(s, true))
return new JsonList((Object[])Utils.split3(s.trim(),
','));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
index da527e7b5..1ac982bbd 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/collections/JsonMap.java
@@ -326,7 +326,7 @@ public class JsonMap extends LinkedHashMap<String,Object> {
this(p == null ? BeanContext.DEFAULT_SESSION :
p.getBeanContext().getSession());
if (p == null)
p = JsonParser.DEFAULT;
- if (! Utils.isEmpty3(in))
+ if (! Utils.isEmpty(in))
p.parseIntoMap(in, this, bs().string(), bs().object());
}
@@ -1309,7 +1309,7 @@ public class JsonMap extends LinkedHashMap<String,Object>
{
if (val == null)
return false;
if (val instanceof CharSequence)
- return ! Utils.isEmpty3((CharSequence)val);
+ return ! Utils.isEmpty((CharSequence)val);
return false;
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
index 548d495f0..7b374cf0b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BasicFileFinder.java
@@ -238,7 +238,7 @@ public class BasicFileFinder implements FileFinder {
* @return <jk>true</jk> if the path is invalid.
*/
protected boolean isInvalidPath(String path) {
- return Utils.isEmpty3(path) || path.contains("..") ||
path.contains("%");
+ return Utils.isEmpty(path) || path.contains("..") ||
path.contains("%");
}
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
index 6e7d3e762..95b285311 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/cp/BeanStore.java
@@ -354,7 +354,7 @@ public class BeanStore {
BeanStoreEntry<T> e = createEntry(beanType, bean, name);
try (SimpleLock x = lock.write()) {
entries.addFirst(e);
- if (Utils.isEmpty3(name))
+ if (Utils.isEmpty(name))
unnamedEntries.put(beanType, e);
}
return this;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DateUtils.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DateUtils.java
index 7f6375d02..63410f5f6 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DateUtils.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/DateUtils.java
@@ -67,7 +67,7 @@ public final class DateUtils {
* @return The parsed value, or <jk>null</jk> if the string was
<jk>null</jk> or empty.
*/
public static Calendar parseISO8601Calendar(String s) {
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return null;
return DatatypeConverter.parseDateTime(toValidISO8601DT(s));
}
@@ -218,7 +218,7 @@ public final class DateUtils {
* @return The formatter.
*/
public static DateTimeFormatter getFormatter(String pattern) {
- if (Utils.isEmpty3(pattern))
+ if (Utils.isEmpty(pattern))
return DateTimeFormatter.ISO_INSTANT;
try {
FieldInfo fi =
ClassInfo.of(DateTimeFormatter.class).getPublicField(x -> x.isStatic() &&
x.hasName(pattern));
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileUtils.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileUtils.java
index 3919905bd..fd50f7d4d 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileUtils.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FileUtils.java
@@ -234,7 +234,7 @@ public class FileUtils {
* @return The file name.
*/
public static String getFileName(String path) {
- if (Utils.isEmpty3(path))
+ if (Utils.isEmpty(path))
return null;
path = trimTrailingSlashes(path);
int i = path.lastIndexOf('/');
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/VersionRange.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/VersionRange.java
index 5dbbff986..d5681710f 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/VersionRange.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/VersionRange.java
@@ -68,7 +68,7 @@ public class VersionRange {
* @return <jk>true</jk> if the specified version string matches this
version range.
*/
public boolean matches(String v) {
- if (Utils.isEmpty3(v))
+ if (Utils.isEmpty(v))
return (minVersion == null && maxVersion == null);
Version ver = new Version(v);
if ((minVersion != null && ! ver.isAtLeast(minVersion,
minExclusive)) || (maxVersion != null && ! ver.isAtMost(maxVersion,
maxExclusive)))
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/XMLGregorianCalendarSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/XMLGregorianCalendarSwap.java
index 1bdf9eae4..b3a7749ed 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/XMLGregorianCalendarSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swaps/XMLGregorianCalendarSwap.java
@@ -61,7 +61,7 @@ public class XMLGregorianCalendarSwap extends
StringSwap<XMLGregorianCalendar> {
*/
@Override /* ObjectSwap */
public XMLGregorianCalendar unswap(BeanSession session, String s,
ClassMeta<?> hint) throws Exception {
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return null;
return dtf.newXMLGregorianCalendar(s);
}
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 0ce533761..1a18e8aef 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
@@ -197,7 +197,7 @@ public class ReflectionMap<V> {
* @return This object.
*/
public Builder<V> append(String key, V value) {
- if (Utils.isEmpty3(key))
+ if (Utils.isEmpty(key))
throw new BasicRuntimeException("Invalid
reflection signature: [{0}]", key);
try {
splitNames(key, k -> {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringExpressionMatcher.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringExpressionMatcher.java
index 423db594c..2bdbb116b 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringExpressionMatcher.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringExpressionMatcher.java
@@ -94,7 +94,7 @@ public class StringExpressionMatcher {
}
private Exp parse(String expression) throws ParseException {
- if (Utils.isEmptyOrBlank3(expression))
+ if (Utils.isEmptyOrBlank(expression))
return new Never();
expression = expression.trim();
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index 45d8af0b4..9d1a8a85e 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -1490,10 +1490,10 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
//------------------------------------------------------------------------------------------------------------------
RestRequest headerArg(String name, Object value, HttpPartSchema schema,
HttpPartSerializer serializer, boolean skipIfEmpty) {
- boolean isMulti = Utils.isEmpty3(name) || "*".equals(name) ||
value instanceof HeaderList || isHeaderArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof HeaderList || isHeaderArray(value);
if (! isMulti) {
- if (! (skipIfEmpty && Utils.isEmpty3(Utils.s(value))))
+ if (! (skipIfEmpty && isEmpty(Utils.s(value))))
return header(createHeader(name, value,
serializer, schema, skipIfEmpty));
return this;
}
@@ -1518,7 +1518,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
if (skipIfEmpty)
- l.removeIf(x -> Utils.isEmpty3(x.getValue()));
+ l.removeIf(x -> isEmpty(x.getValue()));
headerData.append(l);
@@ -1526,10 +1526,10 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
RestRequest queryArg(String name, Object value, HttpPartSchema schema,
HttpPartSerializer serializer, boolean skipIfEmpty) {
- boolean isMulti = Utils.isEmpty3(name) || "*".equals(name) ||
value instanceof PartList || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof PartList || isNameValuePairArray(value);
if (! isMulti) {
- if (! (skipIfEmpty && Utils.isEmpty3(Utils.s(value))))
+ if (! (skipIfEmpty && isEmpty(Utils.s(value))))
return queryData(createPart(name, value, QUERY,
serializer, schema, skipIfEmpty));
return this;
}
@@ -1555,7 +1555,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
if (skipIfEmpty)
- l.removeIf(x -> Utils.isEmpty3(x.getValue()));
+ l.removeIf(x -> isEmpty(x.getValue()));
queryData.append(l);
@@ -1563,10 +1563,10 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
RestRequest formDataArg(String name, Object value, HttpPartSchema
schema, HttpPartSerializer serializer, boolean skipIfEmpty) {
- boolean isMulti = Utils.isEmpty3(name) || "*".equals(name) ||
value instanceof PartList || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof PartList || isNameValuePairArray(value);
if (! isMulti) {
- if (! (skipIfEmpty && Utils.isEmpty3(Utils.s(value))))
+ if (! (skipIfEmpty && isEmpty(Utils.s(value))))
return formData(createPart(name, value,
FORMDATA, serializer, schema, skipIfEmpty));
return this;
}
@@ -1592,7 +1592,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
if (skipIfEmpty)
- l.removeIf(x -> Utils.isEmpty3(x.getValue()));
+ l.removeIf(x -> isEmpty(x.getValue()));
formData.append(l);
@@ -1600,7 +1600,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
RestRequest pathArg(String name, Object value, HttpPartSchema schema,
HttpPartSerializer serializer) {
- boolean isMulti = Utils.isEmpty3(name) || "*".equals(name) ||
value instanceof PartList || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof PartList || isNameValuePairArray(value);
if (! isMulti)
return pathData(createPart(name, value, PATH,
serializer, schema, false));
@@ -2505,7 +2505,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
Header h = request.getFirstHeader("Content-Type");
if (h != null) {
String s = h.getValue();
- if (! Utils.isEmpty3(s))
+ if (! isEmpty(s))
return ContentType.of(s);
}
return def;
@@ -2527,7 +2527,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* @return A new header.
*/
protected Header createHeader(String name, Object value,
HttpPartSerializer serializer, HttpPartSchema schema, Boolean skipIfEmpty) {
- if (Utils.isEmpty3(name))
+ if (isEmpty(name))
return null;
if (skipIfEmpty == null)
skipIfEmpty = client.isSkipEmptyHeaderData();
@@ -2552,7 +2552,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* @return A new part.
*/
protected NameValuePair createPart(String name, Object value,
HttpPartType type, HttpPartSerializer serializer, HttpPartSchema schema,
Boolean skipIfEmpty) {
- if (Utils.isEmpty3(name))
+ if (isEmpty(name))
return null;
if (skipIfEmpty == null) {
if (type == QUERY)
@@ -2620,12 +2620,12 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
value =
((SerializedPart)x).copyWith(getPartSerializerSession(), null).getValue();
} else {
String v = x.getValue();
- value = (Utils.isEmpty3(v) && skipIfEmpty) ?
null : v;
+ value = (isEmpty(v) && skipIfEmpty) ? null : v;
}
}
boolean isValid() {
- if (Utils.isEmpty3(name) || value == null)
+ if (isEmpty(name) || value == null)
return false;
return true;
}
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 b034088a4..97ff2ff8a 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
@@ -197,7 +197,7 @@ public class RestResponse implements HttpResponse {
String s = null;
if (ct.isPresent())
s = getContentType().get().getParameter("charset");
- return Utils.isEmpty3(s) ? "utf-8" : s;
+ return Utils.isEmpty(s) ? "utf-8" : s;
}
/**
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicBooleanHeader.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicBooleanHeader.java
index 5f0fdf672..413649d0c 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicBooleanHeader.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicBooleanHeader.java
@@ -111,7 +111,7 @@ public class BasicBooleanHeader extends BasicHeader {
*/
public BasicBooleanHeader(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null :
Boolean.valueOf(value);
+ this.value = Utils.isEmpty(value) ? null :
Boolean.valueOf(value);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
index 84a905344..21ab725d9 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicDateHeader.java
@@ -110,7 +110,7 @@ public class BasicDateHeader extends BasicHeader {
*/
public BasicDateHeader(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null :
ZonedDateTime.from(RFC_1123_DATE_TIME.parse(value.toString())).truncatedTo(SECONDS);
+ this.value = Utils.isEmpty(value) ? null :
ZonedDateTime.from(RFC_1123_DATE_TIME.parse(value.toString())).truncatedTo(SECONDS);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
index 530710ee2..117eac1d6 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicUriHeader.java
@@ -107,7 +107,7 @@ public class BasicUriHeader extends BasicHeader {
*/
public BasicUriHeader(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null : URI.create(value);
+ this.value = Utils.isEmpty(value) ? null : URI.create(value);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
index 9fa0cabd4..76f533375 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
@@ -39,7 +39,7 @@ public class EntityTags {
* @return A parsed header value.
*/
public static EntityTags of(String value) {
- return Utils.isEmpty3(value) ? EMPTY : CACHE.get(value, ()->new
EntityTags(value));
+ return Utils.isEmpty(value) ? EMPTY : CACHE.get(value, ()->new
EntityTags(value));
}
/**
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
index 87ceb875b..a740e496d 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/SerializedHeader.java
@@ -288,7 +288,7 @@ public class SerializedHeader extends BasicHeader {
if ((def == null && ! schema.isRequired()) ||
(def == null && schema.isAllowEmptyValue()))
return null;
}
- if (Utils.isEmpty3(Utils.s(v)) && skipIfEmpty && def ==
null)
+ if (Utils.isEmpty(Utils.s(v)) && skipIfEmpty && def ==
null)
return null;
return serializer == null ? Utils.s(v) :
serializer.serialize(HttpPartType.HEADER, schema, v);
} catch (SchemaValidationException e) {
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicBooleanPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicBooleanPart.java
index d9e277754..2ee46aef9 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicBooleanPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicBooleanPart.java
@@ -40,7 +40,7 @@ public class BasicBooleanPart extends BasicPart {
* @return A new {@link BasicBooleanPart} object, or <jk>null</jk> if
the name or value is <jk>null</jk>.
*/
public static BasicBooleanPart of(String name, Boolean value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicBooleanPart(name, value);
}
@@ -56,7 +56,7 @@ public class BasicBooleanPart extends BasicPart {
* @return A new {@link BasicBooleanPart} object, or <jk>null</jk> if
the name or supplier is <jk>null</jk>.
*/
public static BasicBooleanPart of(String name, Supplier<Boolean> value)
{
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicBooleanPart(name, value);
}
@@ -104,7 +104,7 @@ public class BasicBooleanPart extends BasicPart {
*/
public BasicBooleanPart(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null :
Boolean.valueOf(value);
+ this.value = Utils.isEmpty(value) ? null :
Boolean.valueOf(value);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
index 953ac894a..f8c810976 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicCsvArrayPart.java
@@ -43,7 +43,7 @@ public class BasicCsvArrayPart extends BasicPart {
* @return A new {@link BasicCsvArrayPart} object, or <jk>null</jk> if
the name or value is <jk>null</jk>.
*/
public static BasicCsvArrayPart of(String name, String...value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicCsvArrayPart(name, value);
}
@@ -59,7 +59,7 @@ public class BasicCsvArrayPart extends BasicPart {
* @return A new {@link BasicCsvArrayPart} object, or <jk>null</jk> if
the name or supplier is <jk>null</jk>.
*/
public static BasicCsvArrayPart of(String name, Supplier<String[]>
value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicCsvArrayPart(name, value);
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicDatePart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicDatePart.java
index 6c48f3687..8acf0a6f7 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicDatePart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicDatePart.java
@@ -44,7 +44,7 @@ public class BasicDatePart extends BasicPart {
* @return A new {@link BasicDatePart} object, or <jk>null</jk> if the
name or value is <jk>null</jk>.
*/
public static BasicDatePart of(String name, ZonedDateTime value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicDatePart(name, value);
}
@@ -60,7 +60,7 @@ public class BasicDatePart extends BasicPart {
* @return A new {@link BasicDatePart} object, or <jk>null</jk> if the
name or supplier is <jk>null</jk>.
*/
public static BasicDatePart of(String name, Supplier<ZonedDateTime>
value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicDatePart(name, value);
}
@@ -108,7 +108,7 @@ public class BasicDatePart extends BasicPart {
*/
public BasicDatePart(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null :
ZonedDateTime.from(ISO_DATE_TIME.parse(value)).truncatedTo(SECONDS);
+ this.value = Utils.isEmpty(value) ? null :
ZonedDateTime.from(ISO_DATE_TIME.parse(value)).truncatedTo(SECONDS);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicIntegerPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicIntegerPart.java
index 35365d8c5..38d5ee8b3 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicIntegerPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicIntegerPart.java
@@ -40,7 +40,7 @@ public class BasicIntegerPart extends BasicPart {
* @return A new {@link BasicIntegerPart} object, or <jk>null</jk> if
the name or value is <jk>null</jk>.
*/
public static BasicIntegerPart of(String name, Integer value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicIntegerPart(name, value);
}
@@ -56,7 +56,7 @@ public class BasicIntegerPart extends BasicPart {
* @return A new {@link BasicIntegerPart} object, or <jk>null</jk> if
the name or supplier is <jk>null</jk>.
*/
public static BasicIntegerPart of(String name, Supplier<Integer> value)
{
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicIntegerPart(name, value);
}
@@ -104,7 +104,7 @@ public class BasicIntegerPart extends BasicPart {
*/
public BasicIntegerPart(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null :
Integer.valueOf(value);
+ this.value = Utils.isEmpty(value) ? null :
Integer.valueOf(value);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicLongPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicLongPart.java
index 8a15cfcb4..47b6672a1 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicLongPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicLongPart.java
@@ -40,7 +40,7 @@ public class BasicLongPart extends BasicPart {
* @return A new {@link BasicLongPart} object, or <jk>null</jk> if the
name or value is <jk>null</jk>.
*/
public static BasicLongPart of(String name, Long value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicLongPart(name, value);
}
@@ -56,7 +56,7 @@ public class BasicLongPart extends BasicPart {
* @return A new {@link BasicLongPart} object, or <jk>null</jk> if the
name or supplier is <jk>null</jk>.
*/
public static BasicLongPart of(String name, Supplier<Long> value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicLongPart(name, value);
}
@@ -105,7 +105,7 @@ public class BasicLongPart extends BasicPart {
*/
public BasicLongPart(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null : Long.valueOf(value);
+ this.value = Utils.isEmpty(value) ? null : Long.valueOf(value);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicStringPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicStringPart.java
index 4cc0dcbf9..eb57fe0dc 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicStringPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicStringPart.java
@@ -40,7 +40,7 @@ public class BasicStringPart extends BasicPart {
* @return A new {@link BasicStringPart} object, or <jk>null</jk> if
the name or value is <jk>null</jk>.
*/
public static BasicStringPart of(String name, String value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicStringPart(name, value);
}
@@ -56,7 +56,7 @@ public class BasicStringPart extends BasicPart {
* @return A new {@link BasicStringPart} object, or <jk>null</jk> if
the name or supplier is <jk>null</jk>.
*/
public static BasicStringPart of(String name, Supplier<String> value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicStringPart(name, value);
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicUriPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicUriPart.java
index 28588ccf9..c95d33e8e 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicUriPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicUriPart.java
@@ -40,7 +40,7 @@ public class BasicUriPart extends BasicPart {
* @return A new {@link BasicUriPart} object, or <jk>null</jk> if the
name or value is <jk>null</jk>.
*/
public static BasicUriPart of(String name, URI value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicUriPart(name, value);
}
@@ -56,7 +56,7 @@ public class BasicUriPart extends BasicPart {
* @return A new {@link BasicUriPart} object, or <jk>null</jk> if the
name or supplier is <jk>null</jk>.
*/
public static BasicUriPart of(String name, Supplier<URI> value) {
- if (Utils.isEmpty3(name) || value == null)
+ if (Utils.isEmpty(name) || value == null)
return null;
return new BasicUriPart(name, value);
}
@@ -104,7 +104,7 @@ public class BasicUriPart extends BasicPart {
*/
public BasicUriPart(String name, String value) {
super(name, value);
- this.value = Utils.isEmpty3(value) ? null : URI.create(value);
+ this.value = Utils.isEmpty(value) ? null : URI.create(value);
this.supplier = null;
}
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/SerializedPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/SerializedPart.java
index 0d628a4b6..a79da9a5e 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/SerializedPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/SerializedPart.java
@@ -219,7 +219,7 @@ public class SerializedPart extends BasicPart {
if ((def == null && ! schema.isRequired()) ||
(def == null && schema.isAllowEmptyValue()))
return null;
}
- if (Utils.isEmpty3(Utils.s(v)) && skipIfEmpty && def ==
null)
+ if (Utils.isEmpty(Utils.s(v)) && skipIfEmpty && def ==
null)
return null;
return serializer == null ? Utils.s(v) :
serializer.serialize(type, schema, v);
} catch (SchemaValidationException e) {
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RoleMatcher.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RoleMatcher.java
index cc0a5572c..cebf29866 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RoleMatcher.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RoleMatcher.java
@@ -95,7 +95,7 @@ public class RoleMatcher {
}
private Exp parse(String expression) throws ParseException {
- if (Utils.isEmptyOrBlank3(expression))
+ if (Utils.isEmptyOrBlank(expression))
return new Never();
expression = expression.trim();
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
index c067b106a..09f5723af 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestContent.java
@@ -532,7 +532,7 @@ public class RequestContent {
MediaType mt = getMediaType();
- if ((Utils.isEmpty3(Utils.s(mt)) ||
mt.toString().startsWith("text/plain")) && cm.hasStringMutater())
+ if ((Utils.isEmpty(Utils.s(mt)) ||
mt.toString().startsWith("text/plain")) && cm.hasStringMutater())
return cm.getStringMutater().mutate(asString());
Optional<ContentType> ct = req.getHeader(ContentType.class);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
index 91eece624..e930e46c2 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestFormParams.java
@@ -231,7 +231,7 @@ public class RequestFormParams extends
ArrayList<RequestFormParam> {
for (NameValuePair p : pairs) {
String name = p.getName();
Stream<RequestFormParam> l = stream(name);
- boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty3(x.getValue()));
+ boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty(x.getValue()));
if (hasAllBlanks) {
removeAll(getAll(name));
add(new RequestFormParam(req, name,
vs.resolve(p.getValue())));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHeaders.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHeaders.java
index 5863b5abe..dcf6aeb8a 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHeaders.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestHeaders.java
@@ -208,7 +208,7 @@ public class RequestHeaders extends
ArrayList<RequestHeader> {
for (Header p : pairs) {
String name = p.getName();
Stream<RequestHeader> l = stream(name);
- boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty3(x.getValue()));
+ boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty(x.getValue()));
if (hasAllBlanks) {
removeAll(getAll(name));
add(new RequestHeader(req, name,
vs.resolve(p.getValue())));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestPathParams.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestPathParams.java
index 8b2acafdd..587b2971b 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestPathParams.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestPathParams.java
@@ -204,7 +204,7 @@ public class RequestPathParams extends
ArrayList<RequestPathParam> {
for (NameValuePair p : pairs) {
String name = p.getName();
Stream<RequestPathParam> l = stream(name);
- boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty3(x.getValue()));
+ boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty(x.getValue()));
if (hasAllBlanks) {
removeAll(getAll(name));
add(new RequestPathParam(req, name,
vs.resolve(p.getValue())));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestQueryParams.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestQueryParams.java
index e5e920893..cb471eeb6 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestQueryParams.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/httppart/RequestQueryParams.java
@@ -223,7 +223,7 @@ public class RequestQueryParams extends
ArrayList<RequestQueryParam> {
for (NameValuePair p : pairs) {
String name = p.getName();
Stream<RequestQueryParam> l = stream(name);
- boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty3(x.getValue()));
+ boolean hasAllBlanks = l.allMatch(x ->
Utils.isEmpty(x.getValue()));
if (hasAllBlanks) {
removeAll(getAll(name));
add(new RequestQueryParam(req, name,
vs.resolve(p.getValue())));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggingDetail.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggingDetail.java
index 084d32f5b..95c4c63d5 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggingDetail.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logger/CallLoggingDetail.java
@@ -52,7 +52,7 @@ public enum CallLoggingDetail {
* @return The resolved value.
*/
public static CallLoggingDetail fromString(String s) {
- if (! Utils.isEmpty3(s)) {
+ if (! Utils.isEmpty(s)) {
try {
return valueOf(s.toUpperCase());
} catch (IllegalArgumentException e) {}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
index bc666a1c3..79a1f5690 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/ClientVersionMatcher.java
@@ -43,7 +43,7 @@ public class ClientVersionMatcher extends RestMatcher {
* @param mi The version string that the client version must match.
*/
public ClientVersionMatcher(String clientVersionHeader, MethodInfo mi) {
- this.clientVersionHeader = Utils.isEmpty3(clientVersionHeader)
? "Client-Version" : clientVersionHeader;
+ this.clientVersionHeader = Utils.isEmpty(clientVersionHeader) ?
"Client-Version" : clientVersionHeader;
Value<String> clientVersion = Value.empty();
mi.getAnnotationList(REST_OP_GROUP).forEachValue(String.class,
"clientVersion", NOT_EMPTY, x -> clientVersion.set(x));
range = new VersionRange(clientVersion.orElse(null));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/PlainTextPojoProcessor.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/PlainTextPojoProcessor.java
index d3b4e9522..77264dde6 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/PlainTextPojoProcessor.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/PlainTextPojoProcessor.java
@@ -35,12 +35,12 @@ public final class PlainTextPojoProcessor implements
ResponseProcessor {
RestResponse res = opSession.getResponse();
String accept = req.getHeaderParam("Accept").orElse("*/*");
- if (res.getSerializerMatch().isPresent() || !
(Utils.isEmpty3(accept) || accept.startsWith("text/plain") ||
accept.contains("*/*")))
+ if (res.getSerializerMatch().isPresent() || !
(Utils.isEmpty(accept) || accept.startsWith("text/plain") ||
accept.contains("*/*")))
return NEXT;
Object o = res.getContent(Object.class);
- if (Utils.isEmpty3(res.getContentType()))
+ if (Utils.isEmpty(res.getContentType()))
res.setHeader(ContentType.TEXT_PLAIN);
FinishablePrintWriter w = res.getNegotiatedWriter();
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
index e1a32a0a3..ca8c71de0 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/swagger/BasicSwaggerProviderSession.java
@@ -823,7 +823,7 @@ public class BasicSwaggerProviderSession {
sex = schema.getString("example",
schema.getString("example"));
}
- if (Utils.isEmpty3(sex))
+ if (Utils.isEmpty(sex))
return;
Object example = null;
@@ -872,7 +872,7 @@ public class BasicSwaggerProviderSession {
String s = piri.getString("example");
- if (Utils.isEmpty3(s))
+ if (Utils.isEmpty(s))
return;
JsonMap examples = piri.getMap("examples");
@@ -1067,7 +1067,7 @@ public class BasicSwaggerProviderSession {
om = newMap(om);
for (Header aa : a) {
String name = StringUtils.firstNonEmpty(aa.name(),
aa.value());
- if (Utils.isEmpty3(name))
+ if (Utils.isEmpty(name))
throw new IllegalArgumentException("@Header
used without name or value.");
merge(om.getMap(name, true), aa.schema());
}
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 8703ee2aa..f66953f3a 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
@@ -293,7 +293,7 @@ public final class RestUtils {
if (m == null)
m = map();
- if (qs == null || ((qs instanceof CharSequence) &&
Utils.isEmpty3(Utils.s(qs))))
+ if (qs == null || ((qs instanceof CharSequence) &&
Utils.isEmpty(Utils.s(qs))))
return m;
try (ParserPipe p = new ParserPipe(qs)) {
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatch.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatch.java
index 2fc7a8a26..206262bd2 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatch.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatch.java
@@ -74,7 +74,7 @@ public class UrlPathMatch {
*/
public boolean hasEmptyVars() {
for (String v : vars.values())
- if (Utils.isEmpty3(v))
+ if (Utils.isEmpty(v))
return true;
return false;
}
diff --git a/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
b/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
index 1ed9f4de2..c73b6333f 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/ComboInput.java
@@ -249,7 +249,7 @@ public class ComboInput<T> {
public void verify(T o, String testName) {
for (Function<T,String> f : verify) {
String s = f.apply(o);
- if (! Utils.isEmpty3(s)) {
+ if (! Utils.isEmpty(s)) {
throw new BasicAssertionError("Verification
failed on test {0}/{1}: {2}", label, testName, s);
}
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
b/juneau-utest/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
index b1ad820a9..df68af5c1 100755
---
a/juneau-utest/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/utils/StringVarResolverTest.java
@@ -169,7 +169,7 @@ class StringVarResolverTest extends SimpleTestBase {
String t;
t = "$E{PATH}";
- assertFalse(Utils.isEmpty3(VarResolver.DEFAULT.resolve(t)));
+ assertFalse(Utils.isEmpty(VarResolver.DEFAULT.resolve(t)));
}
//====================================================================================================