docs: added JavaDoc
This commit is contained in:
@@ -23,15 +23,14 @@ import java.util.Base64;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* The {@link Base64Util} class provides static methods to encode and decode
|
||||
* strings with Base64 encoding. It utilizes the {@link Base64} class from the
|
||||
* Java standard library for performing the encoding and decoding operations.
|
||||
* This utility class offers convenient methods to encode and decode strings
|
||||
* with different character sets.
|
||||
* The {@link Base64Util} class provides static methods to encode and decode strings with Base64
|
||||
* encoding. It utilizes the {@link Base64} class from the Java standard library for performing the
|
||||
* encoding and decoding operations. This utility class offers convenient methods to encode and
|
||||
* decode strings with different character sets.
|
||||
* <p>
|
||||
* This class is designed as a final class with a private constructor to
|
||||
* prevent instantiation. All methods in this class are static, allowing easy
|
||||
* access to the Base64 encoding and decoding functionality.
|
||||
* This class is designed as a final class with a private constructor to prevent instantiation.
|
||||
* All methods in this class are static, allowing easy access to the Base64 encoding and
|
||||
* decoding functionality.
|
||||
* <p>
|
||||
* Example usage:
|
||||
* <pre>
|
||||
@@ -46,9 +45,9 @@ import java.util.Objects;
|
||||
* System.out.println("Decoded string: " + decoded);
|
||||
* </pre>
|
||||
* <p>
|
||||
* <b>Note:</b> This utility class uses the default charset (UTF-8) if no
|
||||
* specific charset is provided. It is recommended to specify the charset
|
||||
* explicitly to ensure consistent encoding and decoding.
|
||||
* <b>Note:</b> This utility class uses the default charset (UTF-8) if no specific charset is
|
||||
* provided. It is recommended to specify the charset explicitly to ensure consistent
|
||||
* encoding and decoding.
|
||||
*
|
||||
* @author Zihlu Wang
|
||||
* @version 1.1.0
|
||||
|
||||
@@ -23,14 +23,13 @@ import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* The {@link BranchUtil} class provides static methods to simplify conditional
|
||||
* logic in Java development by leveraging lambda expressions. It offers
|
||||
* convenient methods to replace verbose {@code if...else} statements with more
|
||||
* concise and expressive functional constructs.
|
||||
* The {@link BranchUtil} class provides static methods to simplify conditional logic in Java
|
||||
* development by leveraging lambda expressions. It offers convenient methods to replace verbose
|
||||
* {@code if...else} statements with more concise and expressive functional constructs.
|
||||
* <p>
|
||||
* Developers can use methods in this utility class to streamline their code,
|
||||
* enhance readability, and promote a more functional style of programming when
|
||||
* dealing with branching logic and conditional statements.
|
||||
* Developers can use methods in this utility class to streamline their code, enhance readability,
|
||||
* and promote a more functional style of programming when dealing with branching logic and
|
||||
* conditional statements.
|
||||
* <p>
|
||||
* <b>Example:</b>
|
||||
* <pre>
|
||||
@@ -64,11 +63,11 @@ import java.util.function.Supplier;
|
||||
* </pre>
|
||||
* <p>
|
||||
* <b>Note:</b>
|
||||
* The {@link #and(Boolean...)} and {@link #or(Boolean...)} methods accept any
|
||||
* number of boolean expressions.
|
||||
* The {@link #and(Boolean...)} and {@link #or(Boolean...)} methods accept any number of boolean
|
||||
* expressions.
|
||||
*
|
||||
* @param <T> the type of the result to be handled by the methods
|
||||
* @author Zihlu Wang
|
||||
* @author zihluwang
|
||||
* @version 1.1.0
|
||||
* @see java.util.function.Supplier
|
||||
* @see java.util.function.BooleanSupplier
|
||||
@@ -87,13 +86,12 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical OR operation
|
||||
* on the provided boolean expressions.
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical OR operation on the provided
|
||||
* boolean expressions.
|
||||
*
|
||||
* @param booleans the boolean expressions to be evaluated
|
||||
* @param <T> the type of the result to be handled by the methods
|
||||
* @return a {@code BranchUtil} instance representing the result of the
|
||||
* logical OR operation
|
||||
* @return a {@code BranchUtil} instance representing the result of the logical OR operation
|
||||
*/
|
||||
public static <T> BranchUtil<T> or(Boolean... booleans) {
|
||||
var result = Arrays.stream(booleans)
|
||||
@@ -103,13 +101,12 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical AND
|
||||
* operation on the provided boolean expressions.
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical AND operation on the provided
|
||||
* boolean expressions.
|
||||
*
|
||||
* @param booleans the boolean expressions to be evaluated
|
||||
* @param <T> the type of the result to be handled by the methods
|
||||
* @return a {@code BranchUtil} instance representing the result of the
|
||||
* logical AND operation
|
||||
* @return a {@code BranchUtil} instance representing the result of the logical AND operation
|
||||
*/
|
||||
public static <T> BranchUtil<T> and(Boolean... booleans) {
|
||||
var result = Arrays.stream(booleans)
|
||||
@@ -119,12 +116,11 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical OR operation
|
||||
* on the provided boolean suppliers.
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical OR operation on the provided
|
||||
* boolean suppliers.
|
||||
*
|
||||
* @param booleanSuppliers the boolean suppliers to be evaluated
|
||||
* @param <T> the type of the result to be handled by the
|
||||
* methods
|
||||
* @param <T> the type of the result to be handled by the methods
|
||||
* @return a {@code BranchUtil} instance representing the result of the
|
||||
* logical OR operation
|
||||
*/
|
||||
@@ -136,12 +132,11 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical AND
|
||||
* operation on the provided boolean suppliers.
|
||||
* Creates a {@code BranchUtil} instance to evaluate a logical AND operation on the provided
|
||||
* boolean suppliers.
|
||||
*
|
||||
* @param booleanSuppliers the boolean suppliers to be evaluated
|
||||
* @param <T> the type of the result to be handled by the
|
||||
* methods
|
||||
* @param <T> the type of the result to be handled by the methods
|
||||
* @return a {@code BranchUtil} instance representing the result of the
|
||||
* logical AND operation
|
||||
*/
|
||||
@@ -153,22 +148,18 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the result of the boolean expressions by executing the
|
||||
* appropriate handler based on the result.
|
||||
* Handles the result of the boolean expressions by executing the appropriate handler based
|
||||
* on the result.
|
||||
* <p>
|
||||
* If the result is {@code true}, the {@code ifHandler} is executed. If the
|
||||
* result is {@code false} and an {@code elseHandler} is provided, it is
|
||||
* executed.
|
||||
* If the result is {@code true}, the {@code ifHandler} is executed. If the result is
|
||||
* {@code false} and an {@code elseHandler} is provided, it is executed.
|
||||
* <p>
|
||||
* Returns the result of the executed handler.
|
||||
*
|
||||
* @param ifHandler the handler to be executed if the result is
|
||||
* {@code true}
|
||||
* @param elseHandler the handler to be executed if the result is
|
||||
* {@code false} (optional)
|
||||
* @return the result of the executed handler, or {@code null} if no
|
||||
* {@code elseHandler} is provided and the result of the evaluation is
|
||||
* {@code false}
|
||||
* @param ifHandler the handler to be executed if the result is {@code true}
|
||||
* @param elseHandler the handler to be executed if the result is {@code false} (optional)
|
||||
* @return the result of the executed handler, or {@code null} if no {@code elseHandler} is
|
||||
* provided and the result of the evaluation is {@code false}
|
||||
*/
|
||||
public T handle(Supplier<T> ifHandler, Supplier<T> elseHandler) {
|
||||
if (this.result && Objects.nonNull(ifHandler)) {
|
||||
@@ -183,32 +174,28 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the result of the boolean expressions by executing the provided
|
||||
* handler if the result is {@code true}.
|
||||
* Handles the result of the boolean expressions by executing the provided handler if the
|
||||
* result is {@code true}.
|
||||
* <p>
|
||||
* Returns the result of the executed handler.
|
||||
*
|
||||
* @param ifHandler the handler to be executed if the result is
|
||||
* {@code true}
|
||||
* @return the result of the executed handler, or {@code null} if result of
|
||||
* evaluation is {@code false}
|
||||
* @param ifHandler the handler to be executed if the result is {@code true}
|
||||
* @return the result of the executed handler, or {@code null} if result of evaluation is
|
||||
* {@code false}
|
||||
*/
|
||||
public T handle(Supplier<T> ifHandler) {
|
||||
return handle(ifHandler, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the result of the boolean expressions by executing the
|
||||
* appropriate handler based on the result.
|
||||
* Handles the result of the boolean expressions by executing the appropriate handler based
|
||||
* on the result.
|
||||
* <p>
|
||||
* If the result is {@code true}, the {@code ifHandler} is executed. If the
|
||||
* result is {@code false} and an {@code elseHandler} is provided, it is
|
||||
* executed.
|
||||
* If the result is {@code true}, the {@code ifHandler} is executed. If the result is
|
||||
* {@code false} and an {@code elseHandler} is provided, it is executed.
|
||||
*
|
||||
* @param ifHandler the handler to be executed if the result is
|
||||
* {@code true}
|
||||
* @param elseHandler the handler to be executed if the result is
|
||||
* {@code false} (optional)
|
||||
* @param ifHandler the handler to be executed if the result is {@code true}
|
||||
* @param elseHandler the handler to be executed if the result is {@code false} (optional)
|
||||
*/
|
||||
public void handle(Runnable ifHandler, Runnable elseHandler) {
|
||||
if (this.result && Objects.nonNull(ifHandler)) {
|
||||
@@ -224,11 +211,10 @@ public final class BranchUtil<T> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the result of the boolean expressions by executing the provided
|
||||
* handler if the result is {@code true}.
|
||||
* Handles the result of the boolean expressions by executing the provided handler if the
|
||||
* result is {@code true}.
|
||||
*
|
||||
* @param ifHandler the handler to be executed if the result is
|
||||
* {@code true}
|
||||
* @param ifHandler the handler to be executed if the result is {@code true}
|
||||
*/
|
||||
public void handle(Runnable ifHandler) {
|
||||
handle(ifHandler, null);
|
||||
|
||||
@@ -26,12 +26,11 @@ import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* The {@code ChainedCalcUtil} class provides a convenient way to perform
|
||||
* chained high-precision calculations using {@link BigDecimal}. It allows
|
||||
* users to perform mathematical operations such as addition, subtraction,
|
||||
* multiplication, and division with customisable precision and scale. By using
|
||||
* this utility class, developers can achieve accurate results and avoid
|
||||
* precision loss in their calculations.
|
||||
* The {@code ChainedCalcUtil} class provides a convenient way to perform chained high-precision
|
||||
* calculations using {@link BigDecimal}. It allows users to perform mathematical operations such
|
||||
* as addition, subtraction, multiplication, and division with customisable precision and scale.
|
||||
* By using this utility class, developers can achieve accurate results and avoid precision loss
|
||||
* in their calculations.
|
||||
* <p>
|
||||
* <b>Usage:</b>
|
||||
* <pre>
|
||||
@@ -82,10 +81,9 @@ import java.util.function.Function;
|
||||
* {@code ChainedCalcUtil} class.
|
||||
* <p>
|
||||
* <b>Note:</b>
|
||||
* The {@code ChainedCalcUtil} class internally uses {@link BigDecimal} to
|
||||
* handle high-precision calculations. It is important to note that {@link
|
||||
* BigDecimal} operations can be memory-intensive and may have performance
|
||||
* implications for extremely large numbers or complex calculations.
|
||||
* The {@code ChainedCalcUtil} class internally uses {@link BigDecimal} to handle high-precision
|
||||
* calculations. It is important to note that {@link BigDecimal} operations can be memory-intensive
|
||||
* and may have performance implications for extremely large numbers or complex calculations.
|
||||
*
|
||||
* @author sunzsh
|
||||
* @version 1.1.0
|
||||
@@ -96,8 +94,7 @@ import java.util.function.Function;
|
||||
public final class ChainedCalcUtil {
|
||||
|
||||
/**
|
||||
* Creates a {@code ChainedCalcUtil} instance with the specified initial
|
||||
* value.
|
||||
* Creates a {@code ChainedCalcUtil} instance with the specified initial value.
|
||||
*
|
||||
* @param value the initial value for the calculation
|
||||
*/
|
||||
@@ -126,8 +123,7 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the specified value to the current value with a specified scale
|
||||
* before the operation.
|
||||
* Adds the specified value to the current value with a specified scale before the operation.
|
||||
*
|
||||
* @param other the value to be added
|
||||
* @param beforeOperateScale the scale to be applied before the operation
|
||||
@@ -148,8 +144,8 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtracts the specified value from the current value with a specified
|
||||
* scale before the operation.
|
||||
* Subtracts the specified value from the current value with a specified scale before
|
||||
* the operation.
|
||||
*
|
||||
* @param other the value to be subtracted
|
||||
* @param beforeOperateScale the scale to be applied before the operation
|
||||
@@ -170,8 +166,8 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Multiplies the current value by the specified value with a specified
|
||||
* scale before the operation.
|
||||
* Multiplies the current value by the specified value with a specified scale before
|
||||
* the operation.
|
||||
*
|
||||
* @param other the value to be multiplied by
|
||||
* @param beforeOperateScale the scale to be applied before the operation
|
||||
@@ -192,8 +188,7 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Divides the current value by the specified value with a specified scale
|
||||
* before the operation.
|
||||
* Divides the current value by the specified value with a specified scale before the operation.
|
||||
*
|
||||
* @param other the value to divide by
|
||||
* @param beforeOperateScale the scale to be applied before the operation
|
||||
@@ -216,8 +211,8 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Divides the current value by the specified value with a specified scale
|
||||
* and a scale applied before the operation.
|
||||
* Divides the current value by the specified value with a specified scale and a scale applied
|
||||
* before the operation.
|
||||
*
|
||||
* @param other the value to divide by
|
||||
* @param scale the scale for the result
|
||||
@@ -225,7 +220,9 @@ public final class ChainedCalcUtil {
|
||||
* @return a {@code ChainedCalcUtil} instance with the updated value
|
||||
*/
|
||||
public ChainedCalcUtil divideWithScale(Number other, Integer scale, Integer beforeOperateScale) {
|
||||
return baseOperator(otherValue -> this.value.divide(otherValue, scale, RoundingMode.HALF_UP), other, beforeOperateScale);
|
||||
return baseOperator((otherValue) ->
|
||||
this.value.divide(otherValue, scale, RoundingMode.HALF_UP),
|
||||
other, beforeOperateScale);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -276,8 +273,7 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the specified operator function to the current value and another
|
||||
* value.
|
||||
* Applies the specified operator function to the current value and another value.
|
||||
*
|
||||
* @param operator the operator function to apply
|
||||
* @param otherValue the value to apply the operator with
|
||||
@@ -288,8 +284,8 @@ public final class ChainedCalcUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies the specified operator function to the current value and another
|
||||
* value with a specified scale before the operation.
|
||||
* Applies the specified operator function to the current value and another value with a
|
||||
* specified scale before the operation.
|
||||
*
|
||||
* @param operator the operator function to apply
|
||||
* @param other the value to apply the operator with
|
||||
@@ -298,7 +294,10 @@ public final class ChainedCalcUtil {
|
||||
* @return a ChainedCalcUtil instance with the updated value
|
||||
*/
|
||||
private ChainedCalcUtil operator(BiFunction<BigDecimal, BigDecimal, BigDecimal> operator, Object other, Integer beforeOperateScale) {
|
||||
return baseOperator((otherValue) -> operator.apply(this.value, otherValue), other, beforeOperateScale);
|
||||
return baseOperator((otherValue) ->
|
||||
operator.apply(this.value, otherValue),
|
||||
other,
|
||||
beforeOperateScale);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -328,8 +327,7 @@ public final class ChainedCalcUtil {
|
||||
* Converts the specified value to a {@link BigDecimal}.
|
||||
*
|
||||
* @param value the value to convert
|
||||
* @param scale the scale to apply to the resulting BigDecimal, or null if
|
||||
* not applicable
|
||||
* @param scale the scale to apply to the resulting BigDecimal, or null if not applicable
|
||||
* @return the converted BigDecimal value
|
||||
*/
|
||||
private BigDecimal convertBigDecimal(Object value, Integer scale) {
|
||||
|
||||
@@ -25,10 +25,9 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* The {@code HashUtil} class provides convenient methods for calculating
|
||||
* various hash functions on strings, including MD2, MD5, SHA-1, SHA-224,
|
||||
* SHA-256, SHA-384, and SHA-512. It allows developers to easily obtain the
|
||||
* hash value of a given string using different algorithms.
|
||||
* The {@code HashUtil} class provides convenient methods for calculating various hash functions on
|
||||
* strings, including MD2, MD5, SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512. It allows developers
|
||||
* to easily obtain the hash value of a given string using different algorithms.
|
||||
* <p>
|
||||
* Example usage:
|
||||
* <pre>
|
||||
@@ -53,14 +52,14 @@ import java.util.Optional;
|
||||
* // Perform SHA-512 hash operation
|
||||
* String sha512Hash = HashUtil.sha512("someString");
|
||||
* </pre>
|
||||
* The above examples demonstrate how to use the {@code HashUtil} class to
|
||||
* calculate hash values for a given string using different algorithms.
|
||||
* The above examples demonstrate how to use the {@code HashUtil} class to calculate hash values
|
||||
* for a given string using different algorithms.
|
||||
* <p>
|
||||
* <b>Note:</b>
|
||||
* The hash functions provided by the HashUtil class are one-way hash
|
||||
* functions, meaning the original data cannot be retrieved from the hash
|
||||
* value. These hash functions are commonly used for data integrity checks and
|
||||
* password storage, but they should not be used for encryption purposes.
|
||||
* The hash functions provided by the HashUtil class are one-way hash functions, meaning the
|
||||
* original data cannot be retrieved from the hash value. These hash functions are commonly used
|
||||
* for data integrity checks and password storage, but they should not be used for
|
||||
* encryption purposes.
|
||||
*
|
||||
* @author Zihlu Wang
|
||||
* @version 1.1.0
|
||||
@@ -70,12 +69,10 @@ import java.util.Optional;
|
||||
public final class HashUtil {
|
||||
|
||||
/**
|
||||
* Calculates the MD2 hash value of the specified string using the given
|
||||
* charset.
|
||||
* Calculates the MD2 hash value of the specified string using the given charset.
|
||||
*
|
||||
* @param value the string to calculate with the MD2 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the MD2 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String md2(String value, Charset charset) {
|
||||
@@ -84,8 +81,7 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the MD2 hash value of the specified string using the UTF-8
|
||||
* charset.
|
||||
* Calculates the MD2 hash value of the specified string using the UTF-8 charset.
|
||||
*
|
||||
* @param value the string to calculate with the MD2 algorithm
|
||||
* @return the MD2 hash value as a hexadecimal string
|
||||
@@ -95,12 +91,10 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the MD5 hash value of the specified string using the given
|
||||
* charset.
|
||||
* Calculates the MD5 hash value of the specified string using the given charset.
|
||||
*
|
||||
* @param value the string to calculate with the MD5 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the MD5 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String md5(String value, Charset charset) {
|
||||
@@ -109,8 +103,7 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the MD5 hash value of the specified string using the UTF-8
|
||||
* charset.
|
||||
* Calculates the MD5 hash value of the specified string using the UTF-8 charset.
|
||||
*
|
||||
* @param value the string to calculate with the MD5 algorithm
|
||||
* @return the MD5 hash value as a hexadecimal string
|
||||
@@ -120,12 +113,10 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-1 hash value of the specified string using the given
|
||||
* charset.
|
||||
* Calculates the SHA-1 hash value of the specified string using the given charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-1 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the SHA-1 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String sha1(String value, Charset charset) {
|
||||
@@ -134,8 +125,7 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-1 hash value of the specified string using the UTF-8
|
||||
* charset.
|
||||
* Calculates the SHA-1 hash value of the specified string using the UTF-8 charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-1 algorithm
|
||||
* @return the SHA-1 hash value as a hexadecimal string
|
||||
@@ -145,12 +135,10 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-224 hash value of the specified string using the
|
||||
* given charset.
|
||||
* Calculates the SHA-224 hash value of the specified string using the given charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-225 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the SHA-224 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String sha224(String value, Charset charset) {
|
||||
@@ -174,8 +162,7 @@ public final class HashUtil {
|
||||
* given charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-256 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the SHA-256 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String sha256(String value, Charset charset) {
|
||||
@@ -184,8 +171,7 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-256 hash value of the specified string using the
|
||||
* UTF-8 charset.
|
||||
* Calculates the SHA-256 hash value of the specified string using the UTF-8 charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-256 algorithm
|
||||
* @return the SHA-256 hash value as a hexadecimal string
|
||||
@@ -195,12 +181,10 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-384 hash value of the specified string using the
|
||||
* given charset.
|
||||
* Calculates the SHA-384 hash value of the specified string using the given charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-384 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the SHA-384 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String sha384(String value, Charset charset) {
|
||||
@@ -209,8 +193,7 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-384 hash value of the specified string using the
|
||||
* UTF-8 charset.
|
||||
* Calculates the SHA-384 hash value of the specified string using the UTF-8 charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-384 algorithm
|
||||
* @return the SHA-384 hash value as a hexadecimal string
|
||||
@@ -220,12 +203,10 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-512 hash value of the specified string using the
|
||||
* given charset.
|
||||
* Calculates the SHA-512 hash value of the specified string using the given charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-512 algorithm
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the SHA-512 hash value as a hexadecimal string
|
||||
*/
|
||||
public static String sha512(String value, Charset charset) {
|
||||
@@ -234,8 +215,7 @@ public final class HashUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the SHA-512 hash value of the specified string using the
|
||||
* UTF-8 charset.
|
||||
* Calculates the SHA-512 hash value of the specified string using the UTF-8 charset.
|
||||
*
|
||||
* @param value the string to calculate with the SHA-512 algorithm
|
||||
* @return the SHA-512 hash value as a hexadecimal string
|
||||
@@ -256,12 +236,11 @@ public final class HashUtil {
|
||||
*
|
||||
* @param method the hash algorithm to use
|
||||
* @param value the string to calculate the hash value for
|
||||
* @param charset the charset to use for encoding the string (default is
|
||||
* UTF-8 if null)
|
||||
* @return the hash value as a hexadecimal string, or an empty string if
|
||||
* the algorithm is not available
|
||||
* @throws RuntimeException if an unknown algorithm name is provided
|
||||
* (should not occur under controlled usage)
|
||||
* @param charset the charset to use for encoding the string (default is UTF-8 if null)
|
||||
* @return the hash value as a hexadecimal string, or an empty string if the algorithm is
|
||||
* not available
|
||||
* @throws RuntimeException if an unknown algorithm name is provided (should not occur under
|
||||
* controlled usage)
|
||||
*/
|
||||
private static String hash(String method, String value, Charset charset) {
|
||||
try {
|
||||
|
||||
@@ -28,7 +28,7 @@ import java.util.Optional;
|
||||
* to objects.
|
||||
* <p>
|
||||
* Note: Since version 1.4.2, this util class removed reflection API and transferred to a safer API.
|
||||
* Please see <a href="">documentation</a> for more information.
|
||||
* Please see documentation for more information.
|
||||
*
|
||||
* @author Zihlu Wang
|
||||
* @version 1.4.2
|
||||
@@ -41,7 +41,9 @@ public final class MapUtil {
|
||||
/**
|
||||
* Converts an object to a map by mapping the field names to their corresponding values.
|
||||
*
|
||||
* @param entity the object to be converted to a map
|
||||
* @param <T> the type of the object
|
||||
* @param entity the object to be converted to a map
|
||||
* @param adapters adapts the entity for mapping to a map
|
||||
* @return a map representing the fields and their values of the object
|
||||
*/
|
||||
public static <T> Map<String, Object> objectToMap(T entity,
|
||||
@@ -73,6 +75,7 @@ public final class MapUtil {
|
||||
/**
|
||||
* Retrieves the value of a field from an object using reflection.
|
||||
*
|
||||
* @param <E> the type of the entity
|
||||
* @param <T> the type of the field value
|
||||
* @param entity the object from which to retrieve the field value
|
||||
* @param adapter the adapter to execute the getter
|
||||
@@ -86,6 +89,8 @@ public final class MapUtil {
|
||||
/**
|
||||
* Sets the value of a field in an object using reflection.
|
||||
*
|
||||
* @param <E> the type of the entity
|
||||
* @param <T> the type of the field value
|
||||
* @param entity the object in which to set the field value
|
||||
* @param adapter the adapter to execute the setter
|
||||
* @param fieldValue the value to be set
|
||||
|
||||
@@ -24,11 +24,10 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* {@code MapUtil} is a utility class that provides methods for converting
|
||||
* objects to maps and maps to objects.
|
||||
* {@code MapUtil} is a utility class that provides methods for converting objects to maps and
|
||||
* maps to objects.
|
||||
* <p>
|
||||
* It also provides methods for getting and setting field values using
|
||||
* reflection.
|
||||
* It also provides methods for getting and setting field values using reflection.
|
||||
*
|
||||
* @author zihluwang
|
||||
* @version 1.4.2
|
||||
@@ -38,13 +37,11 @@ import java.util.Map;
|
||||
public final class ReflectMapUtil {
|
||||
|
||||
/**
|
||||
* Converts an object to a map by mapping the field names to their
|
||||
* corresponding values.
|
||||
* Converts an object to a map by mapping the field names to their corresponding values.
|
||||
*
|
||||
* @param obj the object to be converted to a map
|
||||
* @return a map representing the fields and their values of the object
|
||||
* @throws IllegalAccessException if an error occurs while accessing the
|
||||
* fields of the object
|
||||
* @throws IllegalAccessException if an error occurs while accessing the fields of the object
|
||||
*/
|
||||
public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
|
||||
if (obj == null) {
|
||||
@@ -66,24 +63,21 @@ public final class ReflectMapUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a map to an object of the specified type by setting the field
|
||||
* values using the map entries.
|
||||
* Converts a map to an object of the specified type by setting the field values using the
|
||||
* map entries.
|
||||
*
|
||||
* @param map the map representing the fields and their values
|
||||
* @param requiredType the class of the object to be created
|
||||
* @param <T> the type of the object to be created
|
||||
* @return an object of the specified type with the field values set from
|
||||
* the map
|
||||
* @throws NoSuchMethodException if the constructor of the required
|
||||
* type is not found
|
||||
* @throws InvocationTargetException if an error occurs while invoking the
|
||||
* constructor
|
||||
* @throws InstantiationException if the required type is abstract or an
|
||||
* interface
|
||||
* @throws IllegalAccessException if an error occurs while accessing the
|
||||
* fields of the object
|
||||
* @return an object of the specified type with the field values set from the map
|
||||
* @throws NoSuchMethodException if the constructor of the required type is not found
|
||||
* @throws InvocationTargetException if an error occurs while invoking the constructor
|
||||
* @throws InstantiationException if the required type is abstract or an interface
|
||||
* @throws IllegalAccessException if an error occurs while accessing the fields of the object
|
||||
*/
|
||||
public static <T> T mapToObject(Map<String, Object> map, Class<T> requiredType) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
|
||||
public static <T> T mapToObject(Map<String, Object> map, Class<T> requiredType)
|
||||
throws NoSuchMethodException, InvocationTargetException, InstantiationException,
|
||||
IllegalAccessException {
|
||||
var bean = requiredType.getConstructor().newInstance();
|
||||
if (map != null) {
|
||||
for (var entry : map.entrySet()) {
|
||||
@@ -143,7 +137,8 @@ public final class ReflectMapUtil {
|
||||
* field getter method
|
||||
* @throws NoSuchMethodException if the specified getter is not present
|
||||
*/
|
||||
public static <T> T getFieldValue(Object obj, String fieldName, Class<T> fieldType) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
|
||||
public static <T> T getFieldValue(Object obj, String fieldName, Class<T> fieldType)
|
||||
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
|
||||
var methodName = getMethodName("get", fieldName);
|
||||
var objectClass = obj.getClass();
|
||||
var method = objectClass.getDeclaredMethod(methodName);
|
||||
@@ -158,10 +153,8 @@ public final class ReflectMapUtil {
|
||||
* @param obj the object in which to set the field value
|
||||
* @param fieldName the name of the field
|
||||
* @param fieldValue the value to be set
|
||||
* @throws InvocationTargetException if an error occurs while invoking the
|
||||
* field setter method
|
||||
* @throws IllegalAccessException if an error occurs while accessing the
|
||||
* field
|
||||
* @throws InvocationTargetException if an error occurs while invoking the field setter method
|
||||
* @throws IllegalAccessException if an error occurs while accessing the field
|
||||
* @throws NoSuchMethodException if the specific setter is not present
|
||||
*/
|
||||
public static void setFieldValue(Object obj, String fieldName, Object fieldValue) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
|
||||
@@ -178,8 +171,7 @@ public final class ReflectMapUtil {
|
||||
* @param value the value to be cast
|
||||
* @param requiredType the type to which the value should be cast
|
||||
* @param <T> the type to which the value should be cast
|
||||
* @return the cast value, or null if the value cannot be cast to the
|
||||
* required type
|
||||
* @return the cast value, or null if the value cannot be cast to the required type
|
||||
*/
|
||||
public static <T> T cast(Object value, Class<T> requiredType) {
|
||||
if (requiredType.isInstance(value)) {
|
||||
@@ -202,8 +194,7 @@ public final class ReflectMapUtil {
|
||||
/**
|
||||
* Returns the default string representation of the specified object.
|
||||
*
|
||||
* @param obj the object for which to return the default string
|
||||
* representation
|
||||
* @param obj the object for which to return the default string representation
|
||||
* @return the default string representation of the object
|
||||
*/
|
||||
private static String defaultObject(Object obj) {
|
||||
|
||||
+6
@@ -70,6 +70,12 @@ import java.util.Optional;
|
||||
*/
|
||||
public class PropertyGuard implements EnvironmentPostProcessor {
|
||||
|
||||
/**
|
||||
* Create a {@link PropertyGuard} instance.
|
||||
*/
|
||||
public PropertyGuard() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the encryption environment variables.
|
||||
*
|
||||
|
||||
@@ -25,8 +25,8 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* This annotation marks the enum field declared in payload class will be
|
||||
* handled as basic data types in {@link TokenDataType}.
|
||||
* This annotation marks the enum field declared in payload class will be handled as basic data
|
||||
* types in {@link TokenDataType}.
|
||||
*
|
||||
* @author Zihlu Wang
|
||||
*/
|
||||
@@ -35,14 +35,16 @@ import java.lang.annotation.Target;
|
||||
public @interface TokenEnum {
|
||||
|
||||
/**
|
||||
* The name of the field of the base data corresponding to the
|
||||
* enumeration data.
|
||||
* The name of the field of the base data corresponding to the enumeration data.
|
||||
*
|
||||
* @return the name of the property
|
||||
*/
|
||||
String propertyName();
|
||||
|
||||
/**
|
||||
* The attribute {@code dataType} specifies what base data type to treat
|
||||
* this enum as.
|
||||
* The attribute {@code dataType} specifies what base data type to treat this enum as.
|
||||
*
|
||||
* @return the data type of the token
|
||||
*/
|
||||
TokenDataType dataType();
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ public class JjwtTokenResolver implements TokenResolver<Jws<Claims>> {
|
||||
* token
|
||||
* @return the generated token as a {@code String} or {@code null} if
|
||||
* creation fails
|
||||
* @see MapUtil#objectToMap(Object)
|
||||
* @see MapUtil#objectToMap(Object, Map)
|
||||
*/
|
||||
@Override
|
||||
public <T extends TokenPayload> String createToken(Duration expireAfter, String audience, String subject, T payload) {
|
||||
@@ -291,7 +291,7 @@ public class JjwtTokenResolver implements TokenResolver<Jws<Claims>> {
|
||||
* @param targetType the target class representing the payload data type
|
||||
* @return an instance of the specified target type with the extracted
|
||||
* payload data, or {@code null} if extraction fails.
|
||||
* @see MapUtil#mapToObject(Map, Class)
|
||||
* @see MapUtil#mapToObject(Map, Object, Map)
|
||||
*/
|
||||
@Override
|
||||
public <T extends TokenPayload> T extract(String token, Class<T> targetType) {
|
||||
|
||||
+4
@@ -61,6 +61,10 @@ import java.util.Map;
|
||||
*/
|
||||
public final class JjwtTokenResolverConfig implements TokenResolverConfig<SecureDigestAlgorithm<SecretKey, SecretKey>> {
|
||||
|
||||
/**
|
||||
* Get the instance for io.jsonwebtoken:jjwt config.
|
||||
* @return the instance for io.jsonwebtoken:jjwt config
|
||||
*/
|
||||
public static JjwtTokenResolverConfig getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new JjwtTokenResolverConfig();
|
||||
|
||||
+7
-14
@@ -69,8 +69,9 @@ public class AuthzeroTokenResolverAutoConfiguration {
|
||||
* Constructs a new {@code SimpleJwtAutoConfiguration} instance with the
|
||||
* provided SimpleJwtProperties.
|
||||
*
|
||||
* @param simpleJwtProperties the SimpleJwtProperties instance
|
||||
* @param objectMapper Jackson JSON Handler
|
||||
* @param simpleJwtProperties a {@link SimpleJwtProperties} instance
|
||||
* @param jtiCreator a creator to create ids for JSON Web Token
|
||||
* @param objectMapper jackson JSON Handler
|
||||
*/
|
||||
@Autowired
|
||||
public AuthzeroTokenResolverAutoConfiguration(SimpleJwtProperties simpleJwtProperties, @Qualifier("jtiCreator") GuidCreator<?> jtiCreator, ObjectMapper objectMapper) {
|
||||
@@ -80,11 +81,10 @@ public class AuthzeroTokenResolverAutoConfiguration {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link TokenResolver} bean using {@link
|
||||
* AuthzeroTokenResolver} if no existing {@link TokenResolver} bean is
|
||||
* found. The {@link AuthzeroTokenResolver} is configured with the
|
||||
* provided {@link GuidCreator}, {@code algorithm}, {@code issuer}, and
|
||||
* {@code secret} properties from {@link SimpleJwtProperties}.
|
||||
* Creates a new {@link TokenResolver} bean using {@link AuthzeroTokenResolver} if no existing
|
||||
* {@link TokenResolver} bean is found. The {@link AuthzeroTokenResolver} is configured with the
|
||||
* provided {@link GuidCreator}, {@code algorithm}, {@code issuer}, and {@code secret}
|
||||
* properties from {@link SimpleJwtProperties}.
|
||||
*
|
||||
* @return the {@link TokenResolver} instance
|
||||
*/
|
||||
@@ -99,15 +99,8 @@ public class AuthzeroTokenResolverAutoConfiguration {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* The GuidCreator instance to be used for generating JWT IDs (JTI).
|
||||
*/
|
||||
private final GuidCreator<?> jtiCreator;
|
||||
|
||||
/**
|
||||
* The {@code SimpleJwtProperties} instance containing the configuration
|
||||
* properties for Simple JWT.
|
||||
*/
|
||||
private final SimpleJwtProperties simpleJwtProperties;
|
||||
|
||||
private final ObjectMapper objectMapper;
|
||||
|
||||
+6
@@ -37,6 +37,12 @@ import java.util.UUID;
|
||||
@AutoConfiguration
|
||||
public class GuidAutoConfiguration {
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public GuidAutoConfiguration() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a default {@code jtiCreator} with UUID.
|
||||
*
|
||||
|
||||
+9
-9
@@ -66,9 +66,10 @@ import org.springframework.context.annotation.Bean;
|
||||
public class JjwtTokenResolverAutoConfiguration {
|
||||
|
||||
/**
|
||||
* Constructs a new {@code SimpleJwtAutoConfiguration} instance with the
|
||||
* provided SimpleJwtProperties.
|
||||
* Constructs a new {@code SimpleJwtAutoConfiguration} instance with the provided
|
||||
* {@link SimpleJwtProperties}.
|
||||
*
|
||||
* @param jtiCreator a creator to create JSON Web Token ids
|
||||
* @param simpleJwtProperties the SimpleJwtProperties instance
|
||||
*/
|
||||
@Autowired
|
||||
@@ -78,11 +79,10 @@ public class JjwtTokenResolverAutoConfiguration {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new {@link TokenResolver} bean using {@link
|
||||
* JjwtTokenResolver} if no existing {@link TokenResolver} bean is
|
||||
* found. The {@link JjwtTokenResolver} is configured with the
|
||||
* provided {@link GuidCreator}, {@code algorithm}, {@code issuer}, and
|
||||
* {@code secret} properties from {@link SimpleJwtProperties}.
|
||||
* Creates a new {@link TokenResolver} bean using {@link JjwtTokenResolver} if no existing
|
||||
* {@link TokenResolver} bean is found. The {@link JjwtTokenResolver} is configured with the
|
||||
* provided {@link GuidCreator}, {@code algorithm}, {@code issuer}, and {@code secret}
|
||||
* properties from {@link SimpleJwtProperties}.
|
||||
*
|
||||
* @return the {@link TokenResolver} instance
|
||||
*/
|
||||
@@ -102,8 +102,8 @@ public class JjwtTokenResolverAutoConfiguration {
|
||||
private final GuidCreator<?> jtiCreator;
|
||||
|
||||
/**
|
||||
* The {@code SimpleJwtProperties} instance containing the configuration
|
||||
* properties for Simple JWT.
|
||||
* The {@code SimpleJwtProperties} instance containing the configuration properties
|
||||
* for Simple JWT.
|
||||
*/
|
||||
private final SimpleJwtProperties simpleJwtProperties;
|
||||
|
||||
|
||||
+11
-5
@@ -35,16 +35,22 @@ import java.util.Objects;
|
||||
@Slf4j
|
||||
public class GuidCreatorCondition implements Condition {
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public GuidCreatorCondition() {
|
||||
}
|
||||
|
||||
/**
|
||||
* The condition to create bean {@code jtiCreator}.
|
||||
* <p>
|
||||
* If Spring does not have a bean of type
|
||||
* {@link GuidCreator} named {@code jtiCreator}
|
||||
* in the application context, then create {@code jtiCreator}.
|
||||
* If Spring does not have a bean of type {@link GuidCreator} named {@code jtiCreator} in the
|
||||
* application context, then create {@code jtiCreator}.
|
||||
*
|
||||
* @param context the spring application context
|
||||
* @param metadata the metadata of the {@link org.springframework.core.type.AnnotationMetadata class}
|
||||
* or {@link org.springframework.core.type.MethodMetadata method} being checked
|
||||
* @param metadata the metadata of the {@link org.springframework.core.type.AnnotationMetadata
|
||||
* class} or {@link org.springframework.core.type.MethodMetadata method}
|
||||
* being checked
|
||||
*/
|
||||
@Override
|
||||
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
|
||||
|
||||
+21
-18
@@ -25,21 +25,20 @@ import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* {@code SimpleJwtProperties} is a configuration properties class used to
|
||||
* store the properties related to Simple JWT library configurations. These
|
||||
* properties can be configured in the application's properties file (e.g.,
|
||||
* application.properties) with the prefix "code-crafters.simple-jwt".
|
||||
* {@code SimpleJwtProperties} is a configuration properties class used to store the properties
|
||||
* related to Simple JWT library configurations. These properties can be configured in the
|
||||
* application's properties file (e.g., application.properties) with the prefix
|
||||
* "onixbyte.simple-jwt".
|
||||
* <p>
|
||||
* {@code SimpleJwtProperties} provides configuration options for the JWT
|
||||
* algorithm, issuer, and secret. The properties are used by the {@link
|
||||
* AuthzeroTokenResolverAutoConfiguration} and {@link
|
||||
* JjwtTokenResolver} to set up the
|
||||
* necessary configurations for JWT generation and validation.
|
||||
* {@code SimpleJwtProperties} provides configuration options for the JWT algorithm, issuer,
|
||||
* and secret. The properties are used by the {@link AuthzeroTokenResolverAutoConfiguration} and
|
||||
* {@link JjwtTokenResolver} to set up the necessary configurations for JWT generation
|
||||
* and validation.
|
||||
* <p>
|
||||
* Developers can customise the JWT algorithm, issuer, and secret by setting
|
||||
* the corresponding properties in the application's properties file. The
|
||||
* {@code SimpleJwtAutoConfiguration} class reads these properties and uses
|
||||
* them to create the TokenResolver bean with the desired configuration.
|
||||
* Developers can customise the JWT algorithm, issuer, and secret by setting the corresponding
|
||||
* properties in the application's properties file. The {@code SimpleJwtAutoConfiguration} class
|
||||
* reads these properties and uses them to create the TokenResolver bean with the
|
||||
* desired configuration.
|
||||
*
|
||||
* @author Zihlu Wang
|
||||
* @version 1.1.0
|
||||
@@ -49,6 +48,12 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
@ConfigurationProperties(prefix = "onixbyte.simple-jwt")
|
||||
public class SimpleJwtProperties {
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public SimpleJwtProperties() {
|
||||
}
|
||||
|
||||
/**
|
||||
* The algorithm used for JWT generation and validation. Default value is
|
||||
* {@link TokenAlgorithm#HS256}
|
||||
@@ -56,15 +61,13 @@ public class SimpleJwtProperties {
|
||||
private TokenAlgorithm algorithm = TokenAlgorithm.HS256;
|
||||
|
||||
/**
|
||||
* The issuer value to be included in the generated JWT. Default value is
|
||||
* an empty String.
|
||||
* The issuer value to be included in the generated JWT. Default value is an empty String.
|
||||
*/
|
||||
private String issuer = "";
|
||||
|
||||
/**
|
||||
* The secret key used for JWT generation and validation. Default value is
|
||||
* the result of call to {@link
|
||||
* SecretCreator#createSecret(int, boolean, boolean, boolean)}.
|
||||
* The secret key used for JWT generation and validation. Default value is the result of call to
|
||||
* {@link SecretCreator#createSecret(int, boolean, boolean, boolean)}.
|
||||
*/
|
||||
private String secret = SecretCreator.createSecret(32, true, true, true);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user