diff --git a/core/src/main/java/com/electronwill/nightconfig/core/conversion/InvalidValueException.java b/core/src/main/java/com/electronwill/nightconfig/core/conversion/InvalidValueException.java index e73655e3..6e26a22b 100644 --- a/core/src/main/java/com/electronwill/nightconfig/core/conversion/InvalidValueException.java +++ b/core/src/main/java/com/electronwill/nightconfig/core/conversion/InvalidValueException.java @@ -1,11 +1,16 @@ package com.electronwill.nightconfig.core.conversion; /** - * Thrown when a value that is associated to a field, or that should become associated to a - * field, doesn't conform to the @Spec(something) annotation of that field. + * Thrown when a value that is associated to a field, or that should become + * associated to a field, doesn't conform to the {@code @Spec(something)} + * annotation of that field. * + * @deprecated Use the new package + * {@link com.electronwill.nightconfig.core.serde} with + * {@code serde.annotations}. * @author TheElectronWill */ +@Deprecated public final class InvalidValueException extends RuntimeException { public InvalidValueException(String message) { super(message); @@ -25,4 +30,4 @@ public InvalidValueException(String message, Throwable cause) { public InvalidValueException(String messageFormat, Object... args) { super(String.format(messageFormat, args)); } -} \ No newline at end of file +} diff --git a/core/src/main/java/com/electronwill/nightconfig/core/conversion/ReflectionException.java b/core/src/main/java/com/electronwill/nightconfig/core/conversion/ReflectionException.java index b29ead0a..b8842225 100644 --- a/core/src/main/java/com/electronwill/nightconfig/core/conversion/ReflectionException.java +++ b/core/src/main/java/com/electronwill/nightconfig/core/conversion/ReflectionException.java @@ -3,8 +3,12 @@ /** * Thrown when an important reflective operation fails. * + * @deprecated Use the new package + * {@link com.electronwill.nightconfig.core.serde} with + * {@code serde.annotations}. * @author TheElectronWill */ +@Deprecated public class ReflectionException extends RuntimeException { public ReflectionException(String message) { super(message); @@ -13,4 +17,4 @@ public ReflectionException(String message) { public ReflectionException(String message, Throwable cause) { super(message, cause); } -} \ No newline at end of file +} diff --git a/core/src/main/java/com/electronwill/nightconfig/core/conversion/package-info.java b/core/src/main/java/com/electronwill/nightconfig/core/conversion/package-info.java index ce66cd7d..3d00caf6 100644 --- a/core/src/main/java/com/electronwill/nightconfig/core/conversion/package-info.java +++ b/core/src/main/java/com/electronwill/nightconfig/core/conversion/package-info.java @@ -1,9 +1,9 @@ /** - * Provides tools for converting configurations to/from Java objects, and converting config values on the fly. + * (deprecated) Provides tools for converting configurations to/from Java objects, and converting config values on the fly. *
* The most useful class in this package is {@link com.electronwill.nightconfig.core.conversion.ObjectConverter}, * which performs object-to-config deserialization and config-to-object serialization. - * - * @see ObjectConverter + *
+ * Note: as of NightConfig 3.7.0, this package is replaced by {@link com.electronwill.nightconfig.core.serde}.
*/
package com.electronwill.nightconfig.core.conversion;
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/AssertThat.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/AssertThat.java
deleted file mode 100644
index 7cacce9f..00000000
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/AssertThat.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.electronwill.nightconfig.core.serde;
-
-public class AssertThat {
-
-}
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/DeserializerContext.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/DeserializerContext.java
index 2ccf146f..2853a9b6 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/DeserializerContext.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/DeserializerContext.java
@@ -12,6 +12,9 @@
import com.electronwill.nightconfig.core.UnmodifiableConfig;
import com.electronwill.nightconfig.core.serde.annotations.*;
+/**
+ * Holds deserialization settings and provides some base deserialization logic.
+ */
public final class DeserializerContext {
final AbstractObjectDeserializer settings;
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectDeserializerBuilder.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectDeserializerBuilder.java
index 1a5905b9..aeaa8dbf 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectDeserializerBuilder.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectDeserializerBuilder.java
@@ -10,7 +10,7 @@
import com.electronwill.nightconfig.core.UnmodifiableConfig;
/**
- * Implements Config to Object deserialization.
+ * Builder for {@link ObjectDeserializer}.
*/
public final class ObjectDeserializerBuilder {
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializer.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializer.java
index c8423dfb..89320dce 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializer.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializer.java
@@ -7,6 +7,7 @@
import java.util.function.Supplier;
import com.electronwill.nightconfig.core.Config;
+import com.electronwill.nightconfig.core.UnmodifiableConfig;
import com.electronwill.nightconfig.core.ConfigFormat;
import com.electronwill.nightconfig.core.file.FileConfig;
import com.electronwill.nightconfig.core.serde.annotations.SerdeDefault;
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializerBuilder.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializerBuilder.java
index 4a1b3d93..ab5ecde9 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializerBuilder.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/ObjectSerializerBuilder.java
@@ -11,7 +11,7 @@
import com.electronwill.nightconfig.core.UnmodifiableConfig;
/**
- * Implements Object to Config serialization.
+ * Builder for {@link ObjectSerializer}.
*/
public final class ObjectSerializerBuilder {
final IdentityHashMap
+ * An exception is thrown if the field does not satisfy the condition.
+ */
public static enum AssertThat {
/**
* Throw an exception if the field is null.
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeAssertsContainer.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeAssertsContainer.java
index ae189eda..e81df4f7 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeAssertsContainer.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeAssertsContainer.java
@@ -1,7 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* A container for multiple {@link SerdeAssert} annotations, because
@@ -11,6 +10,7 @@
* you should simply repeat the {@code @SerdeAssert} annotation multiple times.
*/
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeAssertsContainer {
SerdeAssert[] value();
}
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeComment.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeComment.java
index fd7588c2..e6277fd2 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeComment.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeComment.java
@@ -1,8 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Repeatable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
import com.electronwill.nightconfig.core.CommentedConfig;
import com.electronwill.nightconfig.core.io.ConfigWriter;
@@ -34,6 +32,7 @@
*/
@Repeatable(SerdeCommentsContainer.class)
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeComment {
String value();
}
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeCommentsContainer.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeCommentsContainer.java
index 0ad22db0..d7456c66 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeCommentsContainer.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeCommentsContainer.java
@@ -1,8 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Repeatable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* A container for multiple {@link SerdeComment} annotations, because
@@ -12,6 +10,7 @@
* you should simply repeat the {@code @SerdeComment} annotation multiple times.
*/
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeCommentsContainer {
SerdeComment[] value();
}
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefault.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefault.java
index 2bb0f0a3..18eb6913 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefault.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefault.java
@@ -1,8 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Repeatable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
import com.electronwill.nightconfig.core.Config;
@@ -84,6 +82,7 @@
*/
@Repeatable(SerdeDefaultsContainer.class)
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeDefault {
/**
* The class that defines the method that provides the default value.
@@ -136,6 +135,11 @@
*/
WhenValue[] whenValue() default { WhenValue.IS_MISSING };
+ /**
+ * A condition that defines when to use the default value during (de)serialization.
+ *
+ * The default value is used if the condition is true.
+ */
public static enum WhenValue {
/**
* When deserializing a field, call the default value provider if the value is
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefaultsContainer.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefaultsContainer.java
index 56f9a963..98dda8d0 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefaultsContainer.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeDefaultsContainer.java
@@ -1,8 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Repeatable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* A container for multiple {@link SerdeDefault} annotations, because
@@ -12,6 +10,7 @@
* you should simply repeat the {@code @SerdeDefault} annotation multiple times.
*/
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeDefaultsContainer {
SerdeDefault[] value();
}
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeKey.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeKey.java
index 5902f542..81a2afea 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeKey.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeKey.java
@@ -1,7 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* Sets the key to use when serializing/deserializing an element, instead of its
@@ -32,6 +31,7 @@
*
*/
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeKey {
String value();
}
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipDeserializingIf.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipDeserializingIf.java
index 57628df8..0868fc53 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipDeserializingIf.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipDeserializingIf.java
@@ -1,7 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
import com.electronwill.nightconfig.core.UnmodifiableConfig;
@@ -78,6 +77,7 @@
*
*/
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeSkipDeserializingIf {
/**
* The type of skip predicate: either a predefined condition, or {@code CUSTOM}.
@@ -120,6 +120,11 @@
*/
String customCheck() default "";
+ /**
+ * A condition that defines when to skip the field during deserialization.
+ *
+ * The field is skipped if the condition is true.
+ */
public static enum SkipDeIf {
/**
* Skip the field if the corresponding config entry is missing.
diff --git a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipSerializingIf.java b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipSerializingIf.java
index bae89ddd..1b94ca80 100644
--- a/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipSerializingIf.java
+++ b/core/src/main/java/com/electronwill/nightconfig/core/serde/annotations/SerdeSkipSerializingIf.java
@@ -1,7 +1,6 @@
package com.electronwill.nightconfig.core.serde.annotations;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.*;
/**
* Don't serialize the annotated field if some condition is true.
@@ -61,6 +60,7 @@
*
*/
@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
public @interface SerdeSkipSerializingIf {
/**
* The type of skip predicate: either a predefined condition, or {@code CUSTOM}.
@@ -105,6 +105,11 @@
*/
String customCheck() default "";
+ /**
+ * A condition that defines when to skip the field during serialization.
+ *
+ * The field is skipped if the condition is true.
+ */
public static enum SkipSerIf {
/**
* Skip the field if it's null.