Merge pull request #116 from Unicon/remove-lang
removed commons-lang dependency
This commit is contained in:
commit
c8e50905bb
|
|
@ -28,12 +28,6 @@
|
|||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.4</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>xml-security</groupId>
|
||||
<artifactId>xmlsec</artifactId>
|
||||
|
|
|
|||
|
|
@ -18,8 +18,6 @@
|
|||
*/
|
||||
package org.jasig.cas.client.configuration;
|
||||
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.jasig.cas.client.util.CommonUtils;
|
||||
import org.jasig.cas.client.util.ReflectUtils;
|
||||
import org.slf4j.Logger;
|
||||
|
|
@ -38,7 +36,7 @@ public abstract class BaseConfigurationStrategy implements ConfigurationStrategy
|
|||
public final boolean getBoolean(final ConfigurationKey<Boolean> configurationKey) {
|
||||
return getValue(configurationKey, new Parser<Boolean>() {
|
||||
public Boolean parse(final String value) {
|
||||
return BooleanUtils.toBoolean(value);
|
||||
return CommonUtils.toBoolean(value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -46,7 +44,7 @@ public abstract class BaseConfigurationStrategy implements ConfigurationStrategy
|
|||
public final long getLong(final ConfigurationKey<Long> configurationKey) {
|
||||
return getValue(configurationKey, new Parser<Long>() {
|
||||
public Long parse(final String value) {
|
||||
return NumberUtils.toLong(value, configurationKey.getDefaultValue());
|
||||
return CommonUtils.toLong(value, configurationKey.getDefaultValue());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -54,7 +52,7 @@ public abstract class BaseConfigurationStrategy implements ConfigurationStrategy
|
|||
public final int getInt(final ConfigurationKey<Integer> configurationKey) {
|
||||
return getValue(configurationKey, new Parser<Integer>() {
|
||||
public Integer parse(final String value) {
|
||||
return NumberUtils.toInt(value, configurationKey.getDefaultValue());
|
||||
return CommonUtils.toInt(value, configurationKey.getDefaultValue());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import javax.servlet.http.HttpServletResponse;
|
|||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jasig.cas.client.Protocol;
|
||||
import org.jasig.cas.client.configuration.ConfigurationKeys;
|
||||
import org.jasig.cas.client.util.CommonUtils;
|
||||
|
|
@ -301,8 +300,7 @@ public final class SingleSignOutHandler {
|
|||
final HttpSession session = this.sessionMappingStorage.removeSessionByMappingId(token);
|
||||
|
||||
if (session != null) {
|
||||
String sessionID = session.getId();
|
||||
|
||||
final String sessionID = session.getId();
|
||||
logger.debug("Invalidating session [{}] for token [{}]", sessionID, token);
|
||||
|
||||
try {
|
||||
|
|
@ -325,7 +323,7 @@ public final class SingleSignOutHandler {
|
|||
private String computeRedirectionToServer(final HttpServletRequest request) {
|
||||
final String relayStateValue = CommonUtils.safeGetParameter(request, this.relayStateParameterName);
|
||||
// if we have a state value -> redirect to the CAS server to continue the logout process
|
||||
if (StringUtils.isNotBlank(relayStateValue)) {
|
||||
if (CommonUtils.isNotBlank(relayStateValue)) {
|
||||
final StringBuilder buffer = new StringBuilder();
|
||||
buffer.append(casServerUrlPrefix);
|
||||
if (!this.casServerUrlPrefix.endsWith("/")) {
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ public final class CommonUtils {
|
|||
/**
|
||||
* Unconditionally close a {@link Closeable}. Equivalent to {@link java.io.Closeable#close()}close(), except any exceptions
|
||||
* will be ignored. This is typically used in finally blocks.
|
||||
* @param resource
|
||||
* @param resource the resource to close
|
||||
*/
|
||||
public static void closeQuietly(final Closeable resource) {
|
||||
try {
|
||||
|
|
@ -448,4 +448,215 @@ public final class CommonUtils {
|
|||
//ignore
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Converts a String to a boolean (optimised for performance).</p>
|
||||
*
|
||||
* <p>{@code 'true'}, {@code 'on'}, {@code 'y'}, {@code 't'} or {@code 'yes'}
|
||||
* (case insensitive) will return {@code true}. Otherwise,
|
||||
* {@code false} is returned.</p>
|
||||
*
|
||||
* <p>This method performs 4 times faster (JDK1.4) than
|
||||
* {@code Boolean.valueOf(String)}. However, this method accepts
|
||||
* 'on' and 'yes', 't', 'y' as true values.
|
||||
*
|
||||
* <pre>
|
||||
* BooleanUtils.toBoolean(null) = false
|
||||
* BooleanUtils.toBoolean("true") = true
|
||||
* BooleanUtils.toBoolean("TRUE") = true
|
||||
* BooleanUtils.toBoolean("tRUe") = true
|
||||
* BooleanUtils.toBoolean("on") = true
|
||||
* BooleanUtils.toBoolean("yes") = true
|
||||
* BooleanUtils.toBoolean("false") = false
|
||||
* BooleanUtils.toBoolean("x gti") = false
|
||||
* BooleanUtils.toBooleanObject("y") = true
|
||||
* BooleanUtils.toBooleanObject("n") = false
|
||||
* BooleanUtils.toBooleanObject("t") = true
|
||||
* BooleanUtils.toBooleanObject("f") = false
|
||||
* </pre>
|
||||
*
|
||||
* @param str the String to check
|
||||
* @return the boolean value of the string, {@code false} if no match or the String is null
|
||||
*/
|
||||
public static boolean toBoolean(final String str) {
|
||||
return toBooleanObject(str) == Boolean.TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Converts a String to a Boolean.</p>
|
||||
*
|
||||
* <p>{@code 'true'}, {@code 'on'}, {@code 'y'}, {@code 't'} or {@code 'yes'}
|
||||
* (case insensitive) will return {@code true}.
|
||||
* {@code 'false'}, {@code 'off'}, {@code 'n'}, {@code 'f'} or {@code 'no'}
|
||||
* (case insensitive) will return {@code false}.
|
||||
* Otherwise, {@code null} is returned.</p>
|
||||
*
|
||||
* <p>NOTE: This returns null and will throw a NullPointerException if autoboxed to a boolean. </p>
|
||||
*
|
||||
* <pre>
|
||||
* // N.B. case is not significant
|
||||
* BooleanUtils.toBooleanObject(null) = null
|
||||
* BooleanUtils.toBooleanObject("true") = Boolean.TRUE
|
||||
* BooleanUtils.toBooleanObject("T") = Boolean.TRUE // i.e. T[RUE]
|
||||
* BooleanUtils.toBooleanObject("false") = Boolean.FALSE
|
||||
* BooleanUtils.toBooleanObject("f") = Boolean.FALSE // i.e. f[alse]
|
||||
* BooleanUtils.toBooleanObject("No") = Boolean.FALSE
|
||||
* BooleanUtils.toBooleanObject("n") = Boolean.FALSE // i.e. n[o]
|
||||
* BooleanUtils.toBooleanObject("on") = Boolean.TRUE
|
||||
* BooleanUtils.toBooleanObject("ON") = Boolean.TRUE
|
||||
* BooleanUtils.toBooleanObject("off") = Boolean.FALSE
|
||||
* BooleanUtils.toBooleanObject("oFf") = Boolean.FALSE
|
||||
* BooleanUtils.toBooleanObject("yes") = Boolean.TRUE
|
||||
* BooleanUtils.toBooleanObject("Y") = Boolean.TRUE // i.e. Y[ES]
|
||||
* BooleanUtils.toBooleanObject("blue") = null
|
||||
* BooleanUtils.toBooleanObject("true ") = null // trailing space (too long)
|
||||
* BooleanUtils.toBooleanObject("ono") = null // does not match on or no
|
||||
* </pre>
|
||||
*
|
||||
* @param str the String to check; upper and lower case are treated as the same
|
||||
* @return the Boolean value of the string, {@code null} if no match or {@code null} input
|
||||
*/
|
||||
public static Boolean toBooleanObject(final String str) {
|
||||
// Previously used equalsIgnoreCase, which was fast for interned 'true'.
|
||||
// Non interned 'true' matched 15 times slower.
|
||||
//
|
||||
// Optimisation provides same performance as before for interned 'true'.
|
||||
// Similar performance for null, 'false', and other strings not length 2/3/4.
|
||||
// 'true'/'TRUE' match 4 times slower, 'tRUE'/'True' 7 times slower.
|
||||
if (str == "true") {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if (str == null) {
|
||||
return null;
|
||||
}
|
||||
switch (str.length()) {
|
||||
case 1: {
|
||||
final char ch0 = str.charAt(0);
|
||||
if (ch0 == 'y' || ch0 == 'Y' ||
|
||||
ch0 == 't' || ch0 == 'T') {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if (ch0 == 'n' || ch0 == 'N' ||
|
||||
ch0 == 'f' || ch0 == 'F') {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
final char ch0 = str.charAt(0);
|
||||
final char ch1 = str.charAt(1);
|
||||
if ((ch0 == 'o' || ch0 == 'O') &&
|
||||
(ch1 == 'n' || ch1 == 'N') ) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if ((ch0 == 'n' || ch0 == 'N') &&
|
||||
(ch1 == 'o' || ch1 == 'O') ) {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
final char ch0 = str.charAt(0);
|
||||
final char ch1 = str.charAt(1);
|
||||
final char ch2 = str.charAt(2);
|
||||
if ((ch0 == 'y' || ch0 == 'Y') &&
|
||||
(ch1 == 'e' || ch1 == 'E') &&
|
||||
(ch2 == 's' || ch2 == 'S') ) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if ((ch0 == 'o' || ch0 == 'O') &&
|
||||
(ch1 == 'f' || ch1 == 'F') &&
|
||||
(ch2 == 'f' || ch2 == 'F') ) {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
final char ch0 = str.charAt(0);
|
||||
final char ch1 = str.charAt(1);
|
||||
final char ch2 = str.charAt(2);
|
||||
final char ch3 = str.charAt(3);
|
||||
if ((ch0 == 't' || ch0 == 'T') &&
|
||||
(ch1 == 'r' || ch1 == 'R') &&
|
||||
(ch2 == 'u' || ch2 == 'U') &&
|
||||
(ch3 == 'e' || ch3 == 'E') ) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5: {
|
||||
final char ch0 = str.charAt(0);
|
||||
final char ch1 = str.charAt(1);
|
||||
final char ch2 = str.charAt(2);
|
||||
final char ch3 = str.charAt(3);
|
||||
final char ch4 = str.charAt(4);
|
||||
if ((ch0 == 'f' || ch0 == 'F') &&
|
||||
(ch1 == 'a' || ch1 == 'A') &&
|
||||
(ch2 == 'l' || ch2 == 'L') &&
|
||||
(ch3 == 's' || ch3 == 'S') &&
|
||||
(ch4 == 'e' || ch4 == 'E') ) {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Convert a <code>String</code> to a <code>long</code>, returning a
|
||||
* default value if the conversion fails.</p>
|
||||
*
|
||||
* <p>If the string is <code>null</code>, the default value is returned.</p>
|
||||
*
|
||||
* <pre>
|
||||
* NumberUtils.toLong(null, 1L) = 1L
|
||||
* NumberUtils.toLong("", 1L) = 1L
|
||||
* NumberUtils.toLong("1", 0L) = 1L
|
||||
* </pre>
|
||||
*
|
||||
* @param str the string to convert, may be null
|
||||
* @param defaultValue the default value
|
||||
* @return the long represented by the string, or the default if conversion fails
|
||||
*/
|
||||
public static long toLong(final String str, final long defaultValue) {
|
||||
if (str == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
try {
|
||||
return Long.parseLong(str);
|
||||
} catch (final NumberFormatException nfe) {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>Convert a <code>String</code> to an <code>int</code>, returning a
|
||||
* default value if the conversion fails.</p>
|
||||
*
|
||||
* <p>If the string is <code>null</code>, the default value is returned.</p>
|
||||
*
|
||||
* <pre>
|
||||
* NumberUtils.toInt(null, 1) = 1
|
||||
* NumberUtils.toInt("", 1) = 1
|
||||
* NumberUtils.toInt("1", 0) = 1
|
||||
* </pre>
|
||||
*
|
||||
* @param str the string to convert, may be null
|
||||
* @param defaultValue the default value
|
||||
* @return the int represented by the string, or the default if conversion fails
|
||||
*/
|
||||
public static int toInt(final String str, final int defaultValue) {
|
||||
if(str == null) {
|
||||
return defaultValue;
|
||||
}
|
||||
try {
|
||||
return Integer.parseInt(str);
|
||||
} catch (final NumberFormatException nfe) {
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue