Selaa lähdekoodia

Rename isConfigPOJO to isConfigObject

Lortseam 4 vuotta sitten
vanhempi
sitoutus
7bced9d8f7

+ 9 - 8
src/main/java/me/lortseam/completeconfig/api/ConfigContainer.java

@@ -15,12 +15,11 @@ import java.util.List;
 public interface ConfigContainer {
 
     /**
-     * Specifies whether this class is a POJO. If true, every field inside this class will be considered to be a config
-     * entry.
+     * Specifies whether this class was solely created for config use.
      *
-     * @return whether this class is a POJO
+     * @return whether this class is a config class
      */
-    default boolean isConfigPOJO() {
+    default boolean isConfigObject() {
         return false;
     }
 
@@ -34,6 +33,7 @@ public interface ConfigContainer {
             }
             clazz = (Class<? extends ConfigContainer>) clazz.getSuperclass();
         }
+        // TODO: Add nested static classes here instead of in Node#resolve
         return ImmutableList.copyOf(classes);
     }
 
@@ -51,8 +51,8 @@ public interface ConfigContainer {
      * Applied to declare that a field of type {@link ConfigContainer} is transitive. The container will then be
      * registered at the same level as this container.
      *
-     * <p>This annotation is only required inside non-POJO classes. POJO classes will always register every field of
-     * type {@link ConfigContainer}.
+     * <p>If {@link #isConfigObject()} returns {@code true}, all fields of type {@link ConfigContainer} will be
+     * resolved. Therefore, the use of this annotation is no longer required in that case.
      *
      * @see #getTransitiveContainers()
      */
@@ -63,8 +63,9 @@ public interface ConfigContainer {
     }
 
     /**
-     * Can be applied to a field inside a POJO {@link ConfigContainer} class to declare that that field should not
-     * be considered to be a config entry.
+     * Applied to declare that a field should not be resolved as config entry.
+     *
+     * <p>Only required if {@link #isConfigObject()} returns {@code true}.
      */
     @Target(ElementType.FIELD)
     @Retention(RetentionPolicy.RUNTIME)

+ 2 - 4
src/main/java/me/lortseam/completeconfig/api/ConfigEntry.java

@@ -8,10 +8,8 @@ import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
 
 /**
- * Applied to declare that a field is an entry inside the mod's config. Only required if
- * the {@link ConfigContainer} is not a POJO class.
- *
- * <p>This annotation also contains various options to modify the entry.
+ * Applied to declare that a field is an entry inside the mod's config.
+ * Also contains various options to modify the entry.
  */
 @Target(ElementType.FIELD)
 @Retention(RetentionPolicy.RUNTIME)

+ 2 - 2
src/main/java/me/lortseam/completeconfig/data/EntryMap.java

@@ -30,7 +30,7 @@ public class EntryMap extends ConfigMap<Entry> {
                 if (clazz != container.getClass() && Modifier.isStatic(field.getModifiers())) {
                     return false;
                 }
-                if (container.isConfigPOJO()) {
+                if (container.isConfigObject()) {
                     return !ConfigContainer.class.isAssignableFrom(field.getType()) && !field.isAnnotationPresent(ConfigContainer.Ignore.class);
                 }
                 return field.isAnnotationPresent(ConfigEntry.class);
@@ -47,7 +47,7 @@ public class EntryMap extends ConfigMap<Entry> {
                 if (clazz != container.getClass() && Modifier.isStatic(method.getModifiers())) {
                     return false;
                 }
-                return method.isAnnotationPresent(ConfigEntryListener.class) || container.isConfigPOJO() && method.getName().startsWith("set");
+                return method.isAnnotationPresent(ConfigEntryListener.class) || container.isConfigObject() && method.getName().startsWith("set");
             }).forEach(method -> {
                 String fieldName = null;
                 Class<? extends ConfigContainer> fieldClass = clazz;

+ 2 - 2
src/main/java/me/lortseam/completeconfig/data/Node.java

@@ -42,7 +42,7 @@ abstract class Node implements FlatDataPart<ConfigMap> {
         List<ConfigContainer> containers = new ArrayList<>();
         for (Class<? extends ConfigContainer> clazz : container.getConfigClasses()) {
             containers.addAll(Arrays.stream(clazz.getDeclaredFields()).filter(field -> {
-                if (container.isConfigPOJO()) {
+                if (container.isConfigObject()) {
                     return ConfigContainer.class.isAssignableFrom(field.getType());
                 }
                 if (field.isAnnotationPresent(ConfigContainer.Transitive.class)) {
@@ -62,7 +62,7 @@ abstract class Node implements FlatDataPart<ConfigMap> {
                     throw new RuntimeException(e);
                 }
             }).collect(Collectors.toList()));
-            if (container.isConfigPOJO()) {
+            if (container.isConfigObject()) {
                 resolve(Arrays.stream(clazz.getDeclaredClasses()).filter(nestedClass -> {
                     return ConfigContainer.class.isAssignableFrom(nestedClass) && Modifier.isStatic(nestedClass.getModifiers());
                 }).map(nestedClass -> {

+ 1 - 1
src/test/java/me/lortseam/completeconfig/data/containers/POJOContainerNestingContainerWithEntry.java

@@ -6,7 +6,7 @@ import me.lortseam.completeconfig.api.ConfigContainer;
 public class POJOContainerNestingContainerWithEntry implements ConfigContainer {
 
     @Override
-    public boolean isConfigPOJO() {
+    public boolean isConfigObject() {
         return true;
     }
 

+ 1 - 1
src/test/java/me/lortseam/completeconfig/data/containers/POJOContainerNestingStaticContainerWithEntry.java

@@ -6,7 +6,7 @@ import me.lortseam.completeconfig.api.ConfigContainer;
 public class POJOContainerNestingStaticContainerWithEntry implements ConfigContainer {
 
     @Override
-    public boolean isConfigPOJO() {
+    public boolean isConfigObject() {
         return true;
     }
 

+ 1 - 1
src/test/java/me/lortseam/completeconfig/data/containers/POJOContainerWithContainerWithEntry.java

@@ -7,7 +7,7 @@ public class POJOContainerWithContainerWithEntry implements ConfigContainer {
     private final ContainerWithEntry container = new ContainerWithEntry();
 
     @Override
-    public boolean isConfigPOJO() {
+    public boolean isConfigObject() {
         return true;
     }
 

+ 1 - 1
src/test/java/me/lortseam/completeconfig/data/containers/POJOContainerWithEmptyContainer.java

@@ -7,7 +7,7 @@ public class POJOContainerWithEmptyContainer implements ConfigContainer {
     private EmptyContainer container = new EmptyContainer();
 
     @Override
-    public boolean isConfigPOJO() {
+    public boolean isConfigObject() {
         return true;
     }
 

+ 1 - 1
src/test/java/me/lortseam/completeconfig/data/containers/POJOContainerWithEntry.java

@@ -7,7 +7,7 @@ public class POJOContainerWithEntry implements ConfigContainer {
     private boolean entry;
 
     @Override
-    public boolean isConfigPOJO() {
+    public boolean isConfigObject() {
         return true;
     }
 

+ 1 - 1
src/test/java/me/lortseam/completeconfig/data/containers/POJOContainerWithIgnoredField.java

@@ -8,7 +8,7 @@ public class POJOContainerWithIgnoredField implements ConfigContainer {
     private boolean noEntry;
 
     @Override
-    public boolean isConfigPOJO() {
+    public boolean isConfigObject() {
         return true;
     }