diff --git a/README.md b/README.md index ec8e96f..04eaf97 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ JDevKit is a Java Development Kit that offers a set of convenient tools for writing code efficiently. ## Modules +### `devkit-core` +The core module for `JDevKit`, by now, this module contains the commonly used classes of the whole `dev-kit`. + ### `guid` A module for generating globally unique IDs. It includes a facade interface and an implementation of GUID generation using the Snowflake algorithm. More globally unique ID generation modes will be added in the future. @@ -52,7 +55,7 @@ implementation 'cn.org.codecrafters:$artifactId:$version' If you want to check the available versions, please check out at our [official site](). ## Contribution -Contributions are welcome! If you encounter any issues or want to contribute to the project, please feel free to **[raise an issue]()** or **[submit a pull request]()**. +Contributions are welcome! If you encounter any issues or want to contribute to the project, please feel free to **[raise an issue](https://github.com/CodeCraftersCN/jdevkit/issues/new)** or **[submit a pull request]()**. ## License This project is licensed under the [Apache License 2.0](LICENSE). diff --git a/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java b/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java index 473fc35..e1e9ccc 100644 --- a/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java +++ b/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/Base64Util.java @@ -24,15 +24,18 @@ import java.util.Base64; /** * Utility class for Base64 encoding and decoding of strings. *
- * The {@code Base64Util} class provides static methods to encode and decode strings using 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 {@code Base64Util} class provides static methods to encode and decode + * strings using 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. *
- * 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. *
* Example usage: - *
{@code
+ *
* String original = "Hello, World!";
*
* // Encode the string using UTF-8 charset
@@ -42,17 +45,15 @@ import java.util.Base64;
* // Decode the encoded string using UTF-8 charset
* String decoded = Base64Util.decode(encoded);
* System.out.println("Decoded string: " + decoded);
- * }
+ *
* - * Note: 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. - *
- * Thread Safety: The methods in this class are thread-safe. - * Multiple threads can safely use the methods for encoding and decoding strings simultaneously. + * Note: 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. * - * @since 10 Jul 2023 * @author Zihlu Wang * @version 1.0.0 + * @since 1.0.0 */ public final class Base64Util { diff --git a/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/BranchUtil.java b/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/BranchUtil.java index 29ddf3f..839acb1 100644 --- a/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/BranchUtil.java +++ b/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/BranchUtil.java @@ -25,15 +25,14 @@ import java.util.function.Supplier; /** * Utility class to simplify if...else logic using lambda expressions. *
- * The BranchUtil class provides static methods to simplify conditional - * logic in Java development by leveraging lambda expressions. It offers - * convenient methods to replace verbose if...else statements with more - * concise and expressive functional constructs. + * The BranchUtil class provides static methods to simplify conditional logic + * in Java development by leveraging lambda expressions. It offers convenient + * methods to replace verbose if...else statements with more concise and + * expressive functional constructs. *
- * Developers can use the 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 the 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. *
* Example: *
@@ -54,7 +53,8 @@ import java.util.function.Supplier;
* }, () -> {
* // do something
* });
- * // If you only need an if branch, you can remove the second Supplier instance.
+ * // If you only need an if branch, you can remove the second Supplier
+ * // instance.
*
* // To check if all boolean expressions are true, use the 'and' method:
* BranchUtil.and(1 == 1, 2 == 1)
@@ -66,17 +66,17 @@ import java.util.function.Supplier;
*
*
* Note:
- * 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.
*
- * Created on 9 Jul 2023.
*
* @param
+ * 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.
+ *
+ * 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 elseHandler is provided
+ * @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
*/
public T handle(Supplier
* Returns the result of the executed handler.
*
- * @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}
* @return the result of the executed handler
*/
public T handle(Supplier
+ * 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)) {
@@ -204,9 +230,11 @@ public final class BranchUtil
* Note:
- * The ChainedCalcUtil class internally uses BigDecimal to handle high-precision calculations. It is important to note
- * that BigDecimal operations can be memory-intensive and may have performance implications for extremely large numbers
- * or complex calculations.
+ * The ChainedCalcUtil class internally uses BigDecimal to handle
+ * high-precision calculations. It is important to note that BigDecimal
+ * operations can be memory-intensive and may have performance implications
+ * for extremely large numbers or complex calculations.
*
* @author sunzsh
* @version 1.0.0
@@ -124,7 +126,8 @@ 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
@@ -145,7 +148,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
@@ -166,7 +170,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
@@ -187,7 +192,8 @@ 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
@@ -210,7 +216,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
@@ -278,7 +285,8 @@ 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
@@ -289,11 +297,13 @@ 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
- * @param beforeOperateScale the scale to be applied before the operation, or null if not applicable
+ * @param beforeOperateScale the scale to be applied before the operation,
+ * or null if not applicable
* @return a ChainedCalcUtil instance with the updated value
*/
private ChainedCalcUtil operator(BiFunction
- * The 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
+ * The 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.
*
* Example usage:
@@ -54,18 +55,19 @@ import java.util.Optional;
* // Perform SHA-512 hash operation
* String sha512Hash = HashUtil.sha512("someString");
*
- * The above examples demonstrate how to use the HashUtil class to calculate hash values for a given string using different
- * algorithms.
+ * The above examples demonstrate how to use the HashUtil class to calculate
+ * hash values for a given string using different algorithms.
*
* Note:
- * 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.
*
- * @see java.security.MessageDigest
- * @since 9 Jul 2023
- * @version 1.0.0
* @author Zihlu Wang
+ * @version 1.0.0
+ * @see java.security.MessageDigest
+ * @since 1.0.0
*/
public final class HashUtil {
@@ -76,13 +78,17 @@ public final class HashUtil {
}
/**
- * Calculates the hash value of the specified string using the specified algorithm and charset.
+ * Calculates the hash value of the specified string using the specified
+ * algorithm and charset.
*
* @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 {
@@ -108,10 +114,12 @@ 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 the MD2 hash value for
- * @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) {
@@ -120,7 +128,8 @@ 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 the MD2 hash value for
* @return the MD2 hash value as a hexadecimal string
@@ -130,10 +139,12 @@ 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 the MD5 hash value for
- * @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) {
@@ -142,7 +153,8 @@ 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 the MD5 hash value for
* @return the MD5 hash value as a hexadecimal string
@@ -152,10 +164,12 @@ 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 the SHA-1 hash value for
- * @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) {
@@ -164,7 +178,8 @@ 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 the SHA-1 hash value for
* @return the SHA-1 hash value as a hexadecimal string
@@ -174,10 +189,12 @@ 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 the SHA-224 hash value for
- * @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) {
@@ -186,7 +203,8 @@ public final class HashUtil {
}
/**
- * Calculates the SHA-224 hash value of the specified string using the UTF-8 charset.
+ * Calculates the SHA-224 hash value of the specified string using the
+ * UTF-8 charset.
*
* @param value the string to calculate the SHA-224 hash value for
* @return the SHA-224 hash value as a hexadecimal string
@@ -196,10 +214,12 @@ public final class HashUtil {
}
/**
- * Calculates the SHA-256 hash value of the specified string using the given charset.
+ * Calculates the SHA-256 hash value of the specified string using the
+ * given charset.
*
* @param value the string to calculate the SHA-256 hash value for
- * @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) {
@@ -208,7 +228,8 @@ 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 the SHA-256 hash value for
* @return the SHA-256 hash value as a hexadecimal string
@@ -218,10 +239,12 @@ 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 the SHA-384 hash value for
- * @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) {
@@ -230,7 +253,8 @@ 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 the SHA-384 hash value for
* @return the SHA-384 hash value as a hexadecimal string
@@ -240,10 +264,12 @@ 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 the SHA-384 hash value for
- * @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) {
@@ -252,7 +278,8 @@ 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 the SHA-384 hash value for
* @return the SHA-512 hash value as a hexadecimal string
diff --git a/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/MapUtil.java b/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/MapUtil.java
index 544bc5f..af5bcb0 100644
--- a/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/MapUtil.java
+++ b/dev-utils/src/main/java/cn/org/codecrafters/devkit/utils/MapUtil.java
@@ -24,8 +24,11 @@ import java.util.HashMap;
import java.util.Map;
/**
- * MapUtil is a utility class that provides methods for converting objects to maps and maps to objects.
- * It also provides methods for getting and setting field values using reflection.
+ * MapUtil is a utility class that provides methods for converting objects to
+ * maps and maps to objects.
+ *
+ * It also provides methods for getting and setting field values using
+ * reflection.
*
* @author Zihlu Wang
* @version 1.0.0
@@ -41,11 +44,13 @@ public final class MapUtil {
}
/**
- * 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
+ * This package is part of JDevKit, an open-source Java Development Kit that
+ * provides a set of convenient tools to streamline code development and
+ * enhance productivity. This package serves as the root package for the module
+ * dev-utils, which contains a collection of common utility classes commonly
+ * used in all Java Application development.
*
* @author Zihlu Wang
* @since 1.0.0
diff --git a/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/exceptions/NotImplementedException.java b/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/exceptions/NotImplementedException.java
index 69c2d4a..78bd7f7 100644
--- a/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/exceptions/NotImplementedException.java
+++ b/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/exceptions/NotImplementedException.java
@@ -18,28 +18,96 @@
package cn.org.codecrafters.devkit.core.exceptions;
/**
- * NotImplementedException
+ * NotImplementedException - Custom Runtime Exception
+ *
+ * The {@code NotImplementedException} class is a custom runtime exception
+ * that represents a situation where a particular method or functionality is
+ * not implemented or is currently unavailable in the codebase. It extends the
+ * standard {@code RuntimeException} class, making it an unchecked exception.
+ *
+ * This exception is typically thrown when developers need to indicate that a
+ * specific part of the code is incomplete or requires further implementation.
+ * It serves as a placeholder to highlight unfinished sections of the
+ * application during development and testing phases.
+ *
+ * Usage Example:
+ *
+ * For more information and the latest version of JDevKit, please visit our
+ * website codecrafters.org.cn.
+ *
+ *
+ * JDevKit is designed to be modular, and other specific feature modules within
+ * the library may rely on these exceptions from the core package.
+ *
+ * For more information and the latest version of JDevKit, please visit our
+ * website codecrafters.org.cn.
+ *
+ *
- * You may check the details of JDevKit at codecrafters.org.cn
- *
- * @author Zihlu Wang
- * @since 1.0.0
+ * This package is the main part of JDevKit, an open-source Java class library
+ * that provides a set of convenient tools to streamline code development and
+ * enhance productivity. This package serves as the root package for several
+ * modules, containing devkit-core, guid and dev-utils module.
+ *
+ * For more information and the latest version of JDevKit, please visit our
+ * website codecrafters.org.cn.
+ *
+ *
* The type of ID is determined by the class implementing this interface.
@@ -32,6 +32,7 @@ public interface GuidCreator
* The exact implementation of how the globally unique ID is generated and
* returned will depend on the class implementing this method.
*
diff --git a/guid/src/main/java/cn/org/codecrafters/devkit/guid/SnowflakeGuidCreator.java b/guid/src/main/java/cn/org/codecrafters/devkit/guid/SnowflakeGuidCreator.java
index bcc5557..bed4080 100644
--- a/guid/src/main/java/cn/org/codecrafters/devkit/guid/SnowflakeGuidCreator.java
+++ b/guid/src/main/java/cn/org/codecrafters/devkit/guid/SnowflakeGuidCreator.java
@@ -23,23 +23,28 @@ import java.time.LocalDateTime;
import java.time.ZoneOffset;
/**
- * SnowflakeGuidCreator is a GUID generator based on the Snowflake algorithm.
- * It generates unique identifiers using a combination of timestamp, worker ID,
- * and data center ID.
+ * SnowflakeGuidCreator - GUID generator based on the Snowflake algorithm.
*
- * The Snowflake algorithm allows for the generation of 64-bit long integers,
- * with the following bit distribution:
- * - 1 bit for sign
- * - 41 bits for timestamp (in milliseconds)
- * - 5 bits for data center ID
- * - 5 bits for worker ID
- * - 12 bits for sequence number (per millisecond)
+ *
+ * The SnowflakeGuidCreator generates unique identifiers using the Snowflake
+ * algorithm, which combines a timestamp, worker ID, and data center ID to
+ * create 64-bit long integers. The bit distribution for the generated IDs is
+ * as follows:
+ * The worker ID and data center ID must be specified during initialization,
- * and they must be within the valid range defined by the bit size.
- * The generator maintains an internal sequence number that increments for IDs
- * generated within the same millisecond. If the system clock moves backwards,
- * an exception is thrown to avoid generating IDs with repeated timestamps.
+ *
+ * When initializing the SnowflakeGuidCreator, you must provide the worker ID
+ * and data center ID, ensuring they are within the valid range defined by the
+ * bit size. The generator maintains an internal sequence number that
+ * increments for IDs generated within the same millisecond. If the system
+ * clock moves backward, an exception is thrown to prevent generating IDs with
+ * repeated timestamps.
*
* @author Zihlu Wang
* @version 1.0.0
@@ -48,7 +53,9 @@ import java.time.ZoneOffset;
public final class SnowflakeGuidCreator implements GuidCreator
- * This class extends the RuntimeException class, which means that instances of TimingException
- * do not need to be declared in a method or constructor's throws clause.
+ * This class extends the RuntimeException class, which means that instances of
+ * TimingException do not need to be declared in a method or constructor's
+ * throws clause.
*
- * Instances of TimingException can be created with or without a message and a cause. The message
- * provides a description of the exception, while the cause represents the underlying cause of the
- * exception and provides additional information about the error.
- *
- * TimingException is typically used to handle exceptions related to timing, such as timeouts or
- * synchronization issues. It is a subclass of RuntimeException, which means it is an unchecked
- * exception and does not need to be caught or declared.
+ * Instances of TimingException can be created with or without a message and a
+ * cause. The message provides a description of the exception, while the cause
+ * represents the underlying cause of the exception and provides additional
+ * information about the error.
*
+ * TimingException is typically used to handle exceptions related to timing,
+ * such as timeouts or synchronization issues. It is a subclass of
+ * RuntimeException, which means it is an unchecked exception and does not need
+ * to be caught or declared.
*
* @author Zihlu Wang
* @since 1.0.0
@@ -39,14 +41,15 @@ package cn.org.codecrafters.devkit.guid.exceptions;
public class TimingException extends RuntimeException {
/**
- * A custom exception that is thrown when there is an issue with timing or scheduling.
+ * A custom exception that is thrown when there is an issue with timing or
+ * scheduling.
*/
public TimingException() {
}
/**
- * A custom exception that is thrown when there is an issue with timing or scheduling with
- * customized error message.
+ * A custom exception that is thrown when there is an issue with timing or
+ * scheduling with customized error message.
*
* @param message customized message
*/
@@ -55,8 +58,8 @@ public class TimingException extends RuntimeException {
}
/**
- * A custom exception that is thrown when there is an issue with timing or scheduling with
- * customized error message.
+ * A custom exception that is thrown when there is an issue with timing or
+ * scheduling with customized error message.
*
* @param message customized message
* @param cause the cause of this exception
@@ -66,8 +69,8 @@ public class TimingException extends RuntimeException {
}
/**
- * A custom exception that is thrown when there is an issue with timing or scheduling with
- * customized error message.
+ * A custom exception that is thrown when there is an issue with timing or
+ * scheduling with customized error message.
*
* @param cause the cause of this exception
*/
diff --git a/guid/src/main/java/cn/org/codecrafters/devkit/guid/exceptions/package-info.java b/guid/src/main/java/cn/org/codecrafters/devkit/guid/exceptions/package-info.java
new file mode 100644
index 0000000..4b438bc
--- /dev/null
+++ b/guid/src/main/java/cn/org/codecrafters/devkit/guid/exceptions/package-info.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2023 CodeCraftersCN.
+ *
+ * Licensed 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.
+ */
+
+/**
+ * The package provides all exceptions be used by module guid.
+ *
+ * @since 1.0.0
+ */
+package cn.org.codecrafters.devkit.guid.exceptions;
\ No newline at end of file
diff --git a/guid/src/main/java/cn/org/codecrafters/devkit/guid/package-info.java b/guid/src/main/java/cn/org/codecrafters/devkit/guid/package-info.java
index 887a674..7b0e0a5 100644
--- a/guid/src/main/java/cn/org/codecrafters/devkit/guid/package-info.java
+++ b/guid/src/main/java/cn/org/codecrafters/devkit/guid/package-info.java
@@ -25,9 +25,9 @@
*
* Key features include:
*
+ * This class represents a generic record that holds a resolved token of type {@code T}. It is used as a simple
+ * container to store the resolved token value for further processing.
+ *
+ * Usage:
+ * To create a new instance of {@code ResolvedToken}, use the static factory method {@code init}.
*
+ * @param
+ * The {@code TokenPayload} interface is used to mark a data class as suitable
+ * for being used as the payload in a JSON Web Token (JWT). Any class
+ * implementing this interface can be used to represent the payload data that
+ * will be included in a JWT.
+ *
+ * Implementing this interface indicates that the data class contains
+ * information that needs to be securely transmitted and verified as part of a
+ * JWT. The payload typically contains claims or attributes that provide
+ * additional information about the JWT subject or context.
+ *
+ * Usage:
+ * To use a class as a JWT payload, simply implement the {@code TokenPayload}
+ * interface in the data class:
+ *
+ * The {@code TokenResolver} interface defines methods for creating,
+ * extracting, and renewing tokens, particularly JSON Web Tokens (JWTs). It
+ * provides a set of methods to generate tokens with various payload
+ * configurations, extract payloads from tokens, and renew expired tokens.
+ *
+ * Token Creation:
+ * The interface provides overloaded methods for creating tokens with different
+ * payload configurations, including expiration time, audience, subject, and
+ * custom payload data. Clients can choose the appropriate method based on
+ * their specific token requirements.
+ *
+ * Token Extraction:
+ * The interface includes methods to extract payload information from a given
+ * token. Clients can use these methods to obtain the payload data encoded in
+ * the token.
+ *
+ * Token Renewal:
+ * The interface also offers methods for token renewal. Clients can renew an
+ * expired token by providing a new expiration time, audience, subject, and
+ * optional custom payload data.
*
- * @author Zihlu Wang
- * @since 29 Jul 2023
+ * @version 1.0.0
+ * @since 1.0.0
*/
public interface TokenResolver {
+ /**
+ * Creates a new token with the specified expiration time and audience.
+ *
+ * @param expireAfter the duration after which the token will expire
+ * @param audience the audience for which the token is intended
+ * @return the generated token as a {@code String}
+ */
String createToken(Duration expireAfter, String audience);
+ /**
+ * Creates a new token with the specified expiration time, audience, and
+ * custom payload data.
+ *
+ * @param expireAfter the duration after which the token will expire
+ * @param audience the audience for which the token is intended
+ * @param payloads the custom payload data to be included in the token
+ * @return the generated token as a {@code String}
+ */
String createToken(Duration expireAfter, String audience, MapJDevKit Dev-Utils - Common Utility Classes
+ *
+ * public void someMethod() {
+ * // Some code...
+ * throw new NotImplementedException("""
+ * This feature will be implemented in a future release.
+ * """);
+ * }
+ *
+ * Contact
+ *
+ *
*
* @author Zihlu Wang
- * @since 29 Jul 2023
+ * @version 1.0.0
+ * @see RuntimeException
+ * @since 1.0.0
*/
public class NotImplementedException extends RuntimeException {
+ /**
+ * Creates a new {@code NotImplementedException} with no specific error
+ * message.
+ */
public NotImplementedException() {
}
+ /**
+ * Creates a new {@code NotImplementedException} with the provided error
+ * message.
+ *
+ * @param message the error message associated with this exception
+ */
public NotImplementedException(String message) {
super(message);
}
+ /**
+ * Creates a new {@code NotImplementedException} with the specified error
+ * message and a cause for this exception.
+ *
+ * @param message the error message associated with this exception
+ * @param cause the cause of this exception
+ */
public NotImplementedException(String message, Throwable cause) {
super(message, cause);
}
+ /**
+ * Creates a new {@code NotImplementedException} with the specified cause.
+ *
+ * @param cause the cause of this exception
+ */
public NotImplementedException(Throwable cause) {
super(cause);
}
+ /**
+ * Creates a new {@code NotImplementedException} with the specified error
+ * message, cause, suppression flag, and stack trace writable flag.
+ *
+ * @param message the error message associated with this
+ * exception
+ * @param cause the cause of this exception
+ * @param enableSuppression whether suppression is enabled or disabled
+ * @param writableStackTrace whether the stack trace should be writable
+ */
public NotImplementedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
diff --git a/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/package-info.java b/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/package-info.java
index 539ec58..873da84 100644
--- a/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/package-info.java
+++ b/devkit-core/src/main/java/cn/org/codecrafters/devkit/core/package-info.java
@@ -16,9 +16,28 @@
*/
/**
- * The core package for JDevKit, containing the core classes of JDevKit.
+ * This package is a part of JDevKit, an open-source Java Development Kit that
+ * provides a set of convenient tools to streamline code development and
+ * enhance productivity. This package serves as the core package containing
+ * common exceptions that are used throughout the entireJDevKit project.
+ * Contact
+ *
+ *
*
- * @author Zihlu Wang
- * @since 29 Jul 2023
+ * @since 1.0.0
*/
package cn.org.codecrafters.devkit.core;
\ No newline at end of file
diff --git a/devkit-core/src/main/java/cn/org/codecrafters/devkit/package-info.java b/devkit-core/src/main/java/cn/org/codecrafters/devkit/package-info.java
index 2d64897..5914285 100644
--- a/devkit-core/src/main/java/cn/org/codecrafters/devkit/package-info.java
+++ b/devkit-core/src/main/java/cn/org/codecrafters/devkit/package-info.java
@@ -16,12 +16,25 @@
*/
/**
- * JDevKit package, please see documents for more details.
+ * JDevKit - Java Development Kit
* Contact
+ *
+ *
*/
package cn.org.codecrafters.devkit;
\ No newline at end of file
diff --git a/guid/src/main/java/cn/org/codecrafters/devkit/guid/GuidCreator.java b/guid/src/main/java/cn/org/codecrafters/devkit/guid/GuidCreator.java
index 0c9ee33..fd9031d 100644
--- a/guid/src/main/java/cn/org/codecrafters/devkit/guid/GuidCreator.java
+++ b/guid/src/main/java/cn/org/codecrafters/devkit/guid/GuidCreator.java
@@ -18,7 +18,7 @@
package cn.org.codecrafters.devkit.guid;
/**
- * The `GuidCreator` is a generic interface for generating globally unique
+ * The {@code GuidCreator} is a generic interface for generating globally unique
* identifiers (GUIDs) of a specific type.
*
+ *
*
- *
- *
*
* @since 1.0.0
diff --git a/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/ResolvedToken.java b/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/ResolvedToken.java
index 8918a6e..adfd19f 100644
--- a/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/ResolvedToken.java
+++ b/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/ResolvedToken.java
@@ -18,16 +18,36 @@
package cn.org.codecrafters.simplejwt;
/**
- * ResolvedToken
+ * ResolvedToken - Generic Record for Holding Resolved Tokens.
+ *
+ * public class UserData implements TokenPayload {
+ * // Class implementation with payload data...
+ * }
+ *
*
- * @author Zihlu Wang
- * @since 29 Jul 2023
+ * @since 1.0.0
+ * @version 1.0.0
*/
public interface TokenPayload {
+
+ // Marker interface for JWT payload data classes
+
}
diff --git a/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/TokenResolver.java b/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/TokenResolver.java
index e1fce6a..b5d8f31 100644
--- a/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/TokenResolver.java
+++ b/simple-jwt-facade/src/main/java/cn/org/codecrafters/simplejwt/TokenResolver.java
@@ -21,35 +21,164 @@ import java.time.Duration;
import java.util.Map;
/**
- * TokenResolver
+ * TokenResolver - Interface for Creating, Extracting, and Renewing Tokens.
+ *