chore: removed lombok and upgraded copyright

This commit is contained in:
zihluwang
2025-01-25 19:53:04 +08:00
parent f771b1af19
commit 971037f160
48 changed files with 220 additions and 507 deletions
-4
View File
@@ -43,16 +43,12 @@ subprojects {
dependencies {
compileOnly("org.slf4j:slf4j-api:$slf4jVersion")
compileOnly("org.projectlombok:lombok:$lombokVersion")
implementation("ch.qos.logback:logback-classic:$logbackVersion")
annotationProcessor("org.slf4j:slf4j-api:$slf4jVersion")
annotationProcessor("org.projectlombok:lombok:$lombokVersion")
testCompileOnly("org.slf4j:slf4j-api:$slf4jVersion")
testCompileOnly("org.projectlombok:lombok:$lombokVersion")
testImplementation("org.junit.jupiter:junit-jupiter:$junitVersion")
testAnnotationProcessor("org.slf4j:slf4j-api:$slf4jVersion")
testAnnotationProcessor("org.projectlombok:lombok:$lombokVersion")
}
tasks.withType<JavaCompile> {
@@ -1,23 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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.
*/
/**
* This package contains commonly used exceptions will be used in JDevKit.
*
* @since 1.0.0
*/
package com.onixbyte.devkit.core.exceptions;
@@ -1,29 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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.
*/
/**
* This package is the core 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 entire JDevKit project.
* <p>
* JDevKit is designed to be modular, and other specific feature modules within
* the library may rely on these exceptions from the core package.
*
* @since 1.0.0
*/
package com.onixbyte.devkit.core;
@@ -1,27 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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.
*/
/**
* 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 {@code devkit-core}, {@code guid} and {@code dev-utils}
* module.
*
* @since 1.0.0
*/
package com.onixbyte.devkit;
@@ -17,7 +17,8 @@
package com.onixbyte.devkit.utils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
@@ -68,9 +69,10 @@ import java.util.UUID;
* @version 1.1.0
* @since 1.1.0
*/
@Slf4j
public final class AesUtil {
private final static Logger log = LoggerFactory.getLogger(AesUtil.class);
/**
* Encrypts the data using the AES algorithm with the given secret.
*
@@ -17,6 +17,9 @@
package com.onixbyte.devkit.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
@@ -55,6 +58,8 @@ import java.util.Objects;
*/
public final class Base64Util {
private final static Logger log = LoggerFactory.getLogger(Base64Util.class);
/**
* Ensure that there is only one Base64 Encoder.
*
@@ -17,6 +17,9 @@
package com.onixbyte.devkit.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.Objects;
import java.util.function.BooleanSupplier;
@@ -44,6 +47,8 @@ import java.util.function.BooleanSupplier;
*/
public final class BoolUtil {
private final static Logger log = LoggerFactory.getLogger(BoolUtil.class);
/**
* Logical and calculation.
*
@@ -17,6 +17,9 @@
package com.onixbyte.devkit.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Objects;
import java.util.function.BooleanSupplier;
import java.util.function.Supplier;
@@ -73,6 +76,8 @@ import java.util.function.Supplier;
*/
public final class BranchUtil<T> {
private final static Logger log = LoggerFactory.getLogger(BranchUtil.class);
/**
* Create a {@code BranchUtil} instance.
*
@@ -17,6 +17,9 @@
package com.onixbyte.devkit.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
@@ -67,6 +70,8 @@ import java.util.Optional;
*/
public final class HashUtil {
private final static Logger log = LoggerFactory.getLogger(HashUtil.class);
/**
* Calculates the MD2 hash value of the specified string using the given charset.
*
@@ -17,18 +17,17 @@
package com.onixbyte.devkit.utils;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
* The {@link MapUtil} class provides utility methods for converting between objects and maps.
* This class leverages the {@link ObjectMapAdapter} interface to perform the conversions.
* <p>
* The utility methods in this class are useful for scenarios where objects need to be represented as maps for
* serialization, deserialization, or other purposes.
* The utility methods in this class are useful for scenarios where objects need to be represented
* as maps for serialization, deserialization, or other purposes.
* </p>
*
* <p><b>Example usage:</b></p>
@@ -84,9 +83,10 @@ import java.util.Optional;
* @version 1.7.0
* @since 1.0.0
*/
@Slf4j
public final class MapUtil {
private final static Logger log = LoggerFactory.getLogger(MapUtil.class);
/**
* Converts an object to a map by mapping the field names to their corresponding values.
*
@@ -24,8 +24,8 @@ import java.util.Map;
* This interface is useful for scenarios where objects need to be represented as maps for
* serialization, deserialization, or other purposes.
*
* <p>Implementations of this interface should provide the logic to convert an object of type {@code T}
* to a {@link Map} and vice versa.</p>
* <p>Implementations of this interface should provide the logic to convert an object of type
* {@code T} to a {@link Map} and vice versa.</p>
*
* <p><b>Example usage:</b></p>
* <pre>
@@ -17,6 +17,9 @@
package com.onixbyte.devkit.utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.stream.IntStream;
/**
@@ -31,6 +34,8 @@ import java.util.stream.IntStream;
*/
public final class RangeUtil {
private final static Logger log = LoggerFactory.getLogger(RangeUtil.class);
/**
* Private constructor prevent class being instantiated.
*/
@@ -1,27 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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.
*/
/**
* 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.
*
* @since 1.0.0
*/
package com.onixbyte.devkit.utils;
@@ -25,8 +25,7 @@ package com.onixbyte.guid;
* </p>
*
* <p><b>Example usage:</b></p>
* <pre>
* {@code
* <pre>{@code
* public class StringGuidCreator implements GuidCreator<String> {
* private final AtomicLong counter = new AtomicLong();
*
@@ -43,8 +42,7 @@ package com.onixbyte.guid;
* System.out.println("Generated GUID: " + guid);
* }
* }
* }
* </pre>
* }</pre>
*
* @param <IdType> this represents the type of the Global Unique Identifier
* @author Zihlu Wang
@@ -1,39 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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.
*/
/**
* This package contains the custom exception classes related to GUID generation. These exceptions
* are thrown when there are issues or errors during the generation or processing of global unique
* identifiers (GUIDs).
* <p>
* The main exception class in this package is {@link com.onixbyte.guid.exceptions.TimingException},
* which is a runtime exception and serves as the base exception for all other custom exceptions
* related to GUID generation.
* <p>
* Custom exceptions in this package provide specific information about the type of error that
* occurred during GUID generation, making it easier for developers to handle and respond to
* different scenarios when dealing with GUIDs. They are designed to enhance the robustness and
* reliability of the GUID generation process by providing clear and meaningful error messages to
* the developers.
* <p>
* Developers using the GUID generation module should be aware of the possible exceptions that can
* be thrown and handle them appropriately to ensure smooth operation and error handling in
* their applications.
*
* @since 1.0.0
*/
package com.onixbyte.guid.exceptions;
@@ -19,6 +19,8 @@ package com.onixbyte.guid.impl;
import com.onixbyte.guid.GuidCreator;
import com.onixbyte.guid.exceptions.TimingException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDateTime;
import java.time.ZoneId;
@@ -47,6 +49,8 @@ import java.time.ZoneId;
*/
public final class SnowflakeGuidCreator implements GuidCreator<Long> {
private final static Logger log = LoggerFactory.getLogger(SnowflakeGuidCreator.class);
/**
* Constructs a SnowflakeGuidGenerator with the default start epoch and custom worker ID, data
* centre ID.
@@ -1,33 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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 a set of tools for generating globally unique identifiers (GUIDs).
* <p>
* The goal of this library is to provide an efficient, reliable way to generate globally unique
* identifiers without requiring any specific environment or configuration.
* <p>
* Key features include:
* <ul>
* <li>Efficient generation of globally unique identifiers</li>
* <li>High performance and quick response</li>
* <li>Easy to integrate</li>
* </ul>
*
* @since 1.0.0
*/
package com.onixbyte.guid;
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,8 @@
package com.onixbyte.security;
import com.onixbyte.security.exception.KeyLoadingException;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
@@ -38,8 +39,7 @@ import java.util.Base64;
* </p>
*
* <p><b>Example usage:</b></p>
* <pre>
* {@code
* <pre>{@code
* String pemPrivateKey = """
* -----BEGIN PRIVATE KEY-----
* ...
@@ -51,16 +51,16 @@ import java.util.Base64;
* ...
* -----END PUBLIC KEY-----""";
* ECPublicKey publicKey = KeyLoader.loadEcdsaPublicKey(pemPublicKey);
* }
* </pre>
* }</pre>
*
* @author zihluwang
* @version 1.6.0
* @since 1.6.0
*/
@Slf4j
public class KeyLoader {
private final static Logger log = LoggerFactory.getLogger(KeyLoader.class);
/**
* Private constructor prevents from being initialised.
*/
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,25 +18,23 @@
package com.onixbyte.security.exception;
/**
* The {@code KeyLoadingException} class represents an exception that is thrown when there is an error
* loading cryptographic keys. This exception can be used to indicate various issues such as invalid key
* specifications, unsupported key algorithms, or other key loading errors.
* The {@code KeyLoadingException} class represents an exception that is thrown when there is an
* error loading cryptographic keys. This exception can be used to indicate various issues such as
* invalid key specifications, unsupported key algorithms, or other key loading errors.
* <p>
* This class extends {@link RuntimeException}, allowing it to be thrown without being declared in a method's
* {@code throws} clause.
* This class extends {@link RuntimeException}, allowing it to be thrown without being declared in
* a method's {@code throws} clause.
* </p>
*
* <p><b>Example usage:</b></p>
* <pre>
* {@code
* <pre>{@code
* try {
* ECPrivateKey privateKey = KeyLoader.loadEcdsaPrivateKey(pemPrivateKey);
* } catch (KeyLoadingException e) {
* // Handle the exception
* e.printStackTrace();
* }
* }
* </pre>
* }</pre>
*
* @author zihluwang
* @version 1.6.0
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,8 @@
package com.onixbyte.devkit.utils.unsafe;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
@@ -66,9 +67,10 @@ import java.util.Map;
* @version 1.4.2
* @since 1.4.2
*/
@Slf4j
public final class ReflectMapUtil {
private final static Logger log = LoggerFactory.getLogger(ReflectMapUtil.class);
/**
* Converts an object to a map by mapping the field names to their corresponding values.
*
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,7 +17,8 @@
package com.onixbyte.nums;
import lombok.Getter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.math.BigDecimal;
import java.math.RoundingMode;
@@ -90,9 +91,10 @@ import java.util.function.Function;
* @see BigDecimal
* @since 1.0.0
*/
@Getter
public final class ChainedCalcUtil {
private final static Logger log = LoggerFactory.getLogger(ChainedCalcUtil.class);
/**
* Creates a {@code ChainedCalcUtil} instance with the specified initial value.
*
@@ -235,6 +237,15 @@ public final class ChainedCalcUtil {
return value.setScale(scale, RoundingMode.HALF_UP);
}
/**
* Returns the current value as a {@link BigDecimal}.
*
* @return the current value as a {@link BigDecimal}
*/
public BigDecimal getValue() {
return value;
}
/**
* Returns the current value as a {@link Double}.
*
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,9 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.onixbyte.nums;
import com.onixbyte.nums.model.QuartileBounds;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
@@ -48,6 +51,8 @@ import java.util.List;
*/
public final class PercentileCalculator {
private final static Logger log = LoggerFactory.getLogger(PercentileCalculator.class);
/**
* Private constructor prevents from being initialised.
*/
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,8 @@
package com.onixbyte.propertyguard.autoconfiguration;
import com.onixbyte.devkit.utils.AesUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.boot.env.OriginTrackedMapPropertySource;
@@ -65,6 +67,8 @@ import java.util.Optional;
*/
public class PropertyGuard implements EnvironmentPostProcessor {
private final static Logger log = LoggerFactory.getLogger(PropertyGuard.class);
/**
* Create a {@link PropertyGuard} instance.
*/
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -38,7 +38,8 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.onixbyte.simplejwt.exceptions.IllegalKeyPairException;
import com.onixbyte.simplejwt.exceptions.IllegalSecretException;
import com.onixbyte.simplejwt.exceptions.UnsupportedAlgorithmException;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.InvocationTargetException;
import java.security.interfaces.ECPrivateKey;
@@ -98,9 +99,10 @@ import java.util.function.Function;
* @see JWTCreator.Builder
* @since 1.0.0
*/
@Slf4j
public class AuthzeroTokenResolver implements TokenResolver<DecodedJWT> {
private final static Logger log = LoggerFactory.getLogger(AuthzeroTokenResolver.class);
/**
* Create a builder of {@link AuthzeroTokenResolver}.
*
@@ -1,45 +0,0 @@
/*
* Copyright (C) 2024-2024 OnixByte.
*
* 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.
*/
/**
* This package contains classes related to the integration of the {@code com.auth0:java-jwt}
* library in the Simple JWT project. {@code com.auth0:java-jwt} is a powerful and widely-used
* identity as a Service (IDaaS) platform that provides secure authentication and authorisation
* solutions for web and mobile applications. The classes in this package provide the necessary
* functionality to handle JSON Web Tokens (JWTs) using the {@code com.auth0:java-jwt} library.
* <p>
* The main class in this package is the {@link
* com.onixbyte.simplejwt.authzero.AuthzeroTokenResolver}, which implements the
* {@link com.onixbyte.simplejwt.TokenResolver} interface and uses the {@code com.auth0:java-jwt}
* library to handle JWT operations. It provides the functionality to create, validate, and extract
* JWTs using the {@code com.auth0:java-jwt} library. Developers can use this class as the main
* token resolver in the Simple JWT project when integrating {@code com.auth0:java-jwt} as the
* JWT management library.
* <p>
* The {@link com.onixbyte.simplejwt.authzero.AuthzeroTokenResolver} relies on the
* {@code com.auth0:java-jwt} library to handle the underlying JWT operations, including token
* creation, validation, and extraction. It utilizes the {@code com.auth0:java-jwt}
* {@link com.auth0.jwt.algorithms.Algorithm} class to define and use different algorithms for
* JWT signing and verification.
* <p>
* Developers using the {@code com.auth0:java-jwt} integration should be familiar with the concepts
* and usage of the {@code com.auth0:java-jwt} library and follow the official
* {@code com.auth0:java-jwt} documentation for best practices and security considerations.
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt.authzero;
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,6 +18,8 @@
package com.onixbyte.simplejwt;
import com.onixbyte.simplejwt.exceptions.WeakSecretException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Random;
@@ -32,6 +34,8 @@ import java.util.Random;
*/
public final class SecretCreator {
private final static Logger log = LoggerFactory.getLogger(SecretCreator.class);
/**
* Generates a secure secret with the specified length and character sets.
*
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,8 +17,6 @@
package com.onixbyte.simplejwt;
import java.util.Map;
/**
* {@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
@@ -44,7 +42,4 @@ import java.util.Map;
* @since 1.0.0
*/
public interface TokenPayload {
// Marker interface for JWT payload data classes
}
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,27 +0,0 @@
/*
* Copyright (C) 2024-2024 OnixByte.
*
* 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.
*/
/**
* This package contains annotation classes that are used to prevent annotated
* properties from being automatically injected into the JSON Web Token (JWT)
* payload during token generation. These annotations can be applied to
* properties of a data class to exclude them from being included as part
* of the JWT payload.
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt.annotations;
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,8 +17,6 @@
package com.onixbyte.simplejwt.constants;
import lombok.Getter;
import java.util.List;
/**
@@ -45,7 +43,6 @@ import java.util.List;
* @version 1.1.0
* @since 1.0.0
*/
@Getter
public enum TokenAlgorithm {
/**
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,14 +17,11 @@
package com.onixbyte.simplejwt.constants;
import lombok.Getter;
/**
* The base data types used to process enum data.
*
* @author Zihlu Wang
*/
@Getter
public enum TokenDataType {
/**
@@ -70,4 +67,12 @@ public enum TokenDataType {
this.mappedClass = mappedClass;
}
/**
* Return the target mapped class.
*
* @return mapped class
*/
public Class<?> getMappedClass() {
return mappedClass;
}
}
@@ -1,26 +0,0 @@
/*
* Copyright (C) 2024-2024 OnixByte.
*
* 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.
*/
/**
* This package contains constant values related to JSON Web Token (JWT)
* processing. These constants define various aspects of JWT, such as the
* algorithms being used for token signing and verification, and other
* configuration parameters.
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt.constants;
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2024-2024 OnixByte.
* Copyright (C) 2024-2025 OnixByte.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1,39 +0,0 @@
/*
* Copyright (C) 2024-2024 OnixByte.
*
* 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 {@code cn.org.codecrafters.simplejwt.exceptions} package contains
* custom exception classes related to the
* {@code cn.org.codecrafters:simple-jwt-facade} library. These exceptions are
* thrown when there are issues or errors during the generation , validation,
* or processing of JSON Web Tokens (JWTs) in Java applications.
* <p>
* Custom exception classes in this package are designed to enhance the
* robustness and reliability of the JWT handling process by providing clear
* and meaningful error messages to the developers. They help developers
* identify and troubleshoot issues related to JWT generation, validation, or
* extraction and ensure smooth operation and error handling in
* their applications.
* <p>
* Developers using the {@code cn.org.codecrafters:simple-jwt-facade} library
* should be aware of the possible exceptions that can be thrown and handle
* them appropriately to ensure secure and reliable JWT handling in their
* Java applications.
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt.exceptions;
@@ -1,40 +0,0 @@
/*
* Copyright (C) 2024-2024 OnixByte.
*
* 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 {@code cn.org.codecrafters.simplejwt} package is the core package of the
* <b>Simple JWT</b> project, which provides a lightweight and easy-to-use
* library for working with JSON Web Tokens (JWTs) in Java applications. JWT is
* a widely-used standard for representing claims between two parties,
* typically used to secure web and mobile applications. This library aims to
* simplify the JWT handling process and provide convenient abstractions for
* JWT generation, validation, and extraction.
* <p>
* The <b>Simple JWT</b> library is designed to be flexible and customisable,
* allowing developers to use different algorithms, token resolvers, and token
* payload classes based on their specific application requirements. It aims to
* simplify the JWT handling process while maintaining security and best
* practices for working with JWTs.
* <p>
* Developers should refer to the official documentation and examples for the
* <b>Simple JWT</b> project to understand how to use the library effectively
* and securely in their Java applications.
*
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt;
@@ -24,7 +24,8 @@ import com.onixbyte.simplejwt.autoconfiguration.properties.SimpleJwtProperties;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.onixbyte.simplejwt.constants.TokenAlgorithm;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -55,7 +56,6 @@ import org.springframework.context.annotation.Bean;
* @version 1.6.0
* @since 1.0.0
*/
@Slf4j
@AutoConfiguration
@EnableConfigurationProperties(value = {SimpleJwtProperties.class})
@ConditionalOnClass({DecodedJWT.class, AuthzeroTokenResolver.class})
@@ -64,6 +64,8 @@ import org.springframework.context.annotation.Bean;
@AutoConfigureAfter(value = GuidAutoConfiguration.class)
public class AuthzeroTokenResolverAutoConfiguration {
private final static Logger log = LoggerFactory.getLogger(AuthzeroTokenResolverAutoConfiguration.class);
/**
* Constructs a new {@code SimpleJwtAutoConfiguration} instance with the
* provided SimpleJwtProperties.
@@ -19,7 +19,8 @@ package com.onixbyte.simplejwt.autoconfiguration;
import com.onixbyte.guid.GuidCreator;
import com.onixbyte.simplejwt.autoconfiguration.conditions.GuidCreatorCondition;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
@@ -33,10 +34,11 @@ import java.util.UUID;
* @version 1.1.0
* @since 1.0.0
*/
@Slf4j
@AutoConfiguration
public class GuidAutoConfiguration {
private final static Logger log = LoggerFactory.getLogger(GuidAutoConfiguration.class);
/**
* Default constructor.
*/
@@ -18,7 +18,8 @@
package com.onixbyte.simplejwt.autoconfiguration.conditions;
import com.onixbyte.guid.GuidCreator;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
@@ -32,9 +33,10 @@ import java.util.Objects;
* @version 1.1.0
* @since 1.0.0
*/
@Slf4j
public class GuidCreatorCondition implements Condition {
private final static Logger log = LoggerFactory.getLogger(GuidCreatorCondition.class);
/**
* Default constructor.
*/
@@ -1,38 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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.
*/
/**
* <p>
* The classes in this package are responsible for automatically configuring
* the Simple JWT library when it is used in a Spring Boot application. They
* provide default settings and configurations to ensure that the library works
* smoothly and seamlessly without requiring developers to manually configure
* it.
*
*
* <p>
* Developers using the Simple JWT library with Spring Boot do not need to
* explicitly configure the library, as the auto-configuration classes take
* care of setting up the necessary components and configurations
* automatically. However, developers still have the flexibility to customize
* the behavior of the library by providing their own configurations and
* properties.
*
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt.autoconfiguration;
@@ -20,7 +20,6 @@ package com.onixbyte.simplejwt.autoconfiguration.properties;
import com.onixbyte.simplejwt.SecretCreator;
import com.onixbyte.simplejwt.autoconfiguration.AuthzeroTokenResolverAutoConfiguration;
import com.onixbyte.simplejwt.constants.TokenAlgorithm;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@@ -42,7 +41,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* @version 1.1.0
* @since 1.0.0
*/
@Data
@ConfigurationProperties(prefix = "onixbyte.simple-jwt")
public class SimpleJwtProperties {
@@ -79,5 +77,94 @@ public class SimpleJwtProperties {
*/
private String publicKey;
/**
* Algorithm getter.
*
* @return algorithm
*/
public TokenAlgorithm getAlgorithm() {
return algorithm;
}
/**
* Algorithm setter.
*
* @param algorithm the algorithm
*/
public void setAlgorithm(TokenAlgorithm algorithm) {
this.algorithm = algorithm;
}
/**
* Issuer getter.
*
* @return issuer
*/
public String getIssuer() {
return issuer;
}
/**
* Issuer setter.
*
* @param issuer the issuer
*/
public void setIssuer(String issuer) {
this.issuer = issuer;
}
/**
* Secret setter.
*
* @return secret
*/
public String getSecret() {
return secret;
}
/**
* Secret setter.
*
* @param secret the secret
*/
public void setSecret(String secret) {
this.secret = secret;
}
/**
* Private key getter.
*
* @return private key
*/
public String getPrivateKey() {
return privateKey;
}
/**
* Private key setter.
*
* @param privateKey private key
*/
public void setPrivateKey(String privateKey) {
this.privateKey = privateKey;
}
/**
* Public key getter.
*
* @return public key
*/
public String getPublicKey() {
return publicKey;
}
/**
* Public key setter.
*
* @param publicKey public key
*/
public void setPublicKey(String publicKey) {
this.publicKey = publicKey;
}
}
@@ -1,35 +0,0 @@
/*
* Copyright (C) 2024-2025 OnixByte.
*
* 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 "cn.org.codecrafters.simplejwt.autoconfiguration.properties" package
* contains configuration properties classes used for Simple JWT library
* autoconfiguration. These classes define the properties that can be
* configured in the application's properties file (e.g.,
* application.properties) to customize the behavior and settings of the Simple
* JWT library.
* <p>
* Developers can customize the JWT algorithm, issuer, and secret by setting
* the corresponding properties in the application's properties file with the
* prefix "code-crafters.simple-jwt". The SimpleJwtAutoConfiguration class
* reads these properties and uses them to create the {@link
* com.onixbyte.simplejwt.TokenResolver} bean with the desired
* configuration.
*
* @since 1.0.0
*/
package com.onixbyte.simplejwt.autoconfiguration.properties;