Bläddra i källkod

Java 16 code improvements

Lortseam 4 år sedan
förälder
incheckning
926b08bd07

+ 1 - 1
lib/src/main/java/me/lortseam/completeconfig/data/BaseCollection.java

@@ -40,7 +40,7 @@ abstract class BaseCollection implements ParentDataPart, Translatable {
                 }
                 return false;
             }).map(field -> {
-                if (!field.isAccessible()) {
+                if (!field.canAccess(container)) {
                     field.setAccessible(true);
                 }
                 try {

+ 2 - 3
lib/src/main/java/me/lortseam/completeconfig/data/BooleanEntry.java

@@ -5,7 +5,6 @@ import me.lortseam.completeconfig.text.TranslationKey;
 import net.fabricmc.api.EnvType;
 import net.fabricmc.api.Environment;
 import net.minecraft.text.Text;
-import org.apache.commons.lang3.StringUtils;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -27,10 +26,10 @@ public class BooleanEntry extends Entry<Boolean> {
             valueTranslations = new HashMap<>();
             Optional<ConfigEntry.Boolean> annotation = origin.getOptionalAnnotation(ConfigEntry.Boolean.class);
             if (annotation.isPresent()) {
-                if (!StringUtils.isBlank(annotation.get().trueTranslationKey())) {
+                if (!annotation.get().trueTranslationKey().isBlank()) {
                     valueTranslations.put(true, getTranslation().root().append(annotation.get().trueTranslationKey()));
                 }
-                if (!StringUtils.isBlank(annotation.get().falseTranslationKey())) {
+                if (!annotation.get().falseTranslationKey().isBlank()) {
                     valueTranslations.put(false, getTranslation().root().append(annotation.get().falseTranslationKey()));
                 }
             }

+ 6 - 7
lib/src/main/java/me/lortseam/completeconfig/data/Entry.java

@@ -19,7 +19,6 @@ import me.lortseam.completeconfig.text.TranslationKey;
 import me.lortseam.completeconfig.util.ReflectionUtils;
 import net.fabricmc.api.EnvType;
 import net.fabricmc.api.Environment;
-import org.apache.commons.lang3.StringUtils;
 import org.spongepowered.configurate.CommentedConfigurationNode;
 import org.spongepowered.configurate.serialize.SerializationException;
 
@@ -70,17 +69,17 @@ public class Entry<T> implements DataPart, Identifiable, Translatable, TooltipSu
     protected Entry(EntryOrigin origin, UnaryOperator<T> valueModifier) {
         ConfigRegistry.register(origin);
         this.origin = origin;
-        if (!origin.getField().isAccessible()) {
+        if (!origin.getField().canAccess(origin.getObject())) {
             origin.getField().setAccessible(true);
         }
         typeClass = (Class<T>) ReflectionUtils.getTypeClass(getType());
         this.valueModifier = valueModifier;
         defaultValue = getValue();
         Optional<ConfigEntry> annotation = origin.getOptionalAnnotation(ConfigEntry.class);
-        id = annotation.isPresent() && !StringUtils.isBlank(annotation.get().value()) ? annotation.get().value() : origin.getField().getName();
+        id = annotation.isPresent() && !annotation.get().value().isBlank() ? annotation.get().value() : origin.getField().getName();
         requiresRestart = annotation.isPresent() && annotation.get().requiresRestart();
-        comment = annotation.isPresent() && !StringUtils.isBlank(annotation.get().comment()) ? annotation.get().comment() : null;
-        setter = ReflectionUtils.getSetterMethod(origin.getField()).<Setter<T>>map(method -> method::invoke).orElse((object, value) -> origin.getField().set(object, value));
+        comment = annotation.isPresent() && !annotation.get().comment().isBlank() ? annotation.get().comment() : null;
+        setter = ReflectionUtils.getSetterMethod(origin.getField(), origin.getObject()).<Setter<T>>map(method -> method::invoke).orElse((object, value) -> origin.getField().set(object, value));
     }
 
     protected Entry(EntryOrigin origin) {
@@ -137,7 +136,7 @@ public class Entry<T> implements DataPart, Identifiable, Translatable, TooltipSu
     public TranslationKey getTranslation() {
         if (translation == null) {
             Optional<ConfigEntry> annotation = origin.getOptionalAnnotation(ConfigEntry.class);
-            if (annotation.isPresent() && !StringUtils.isBlank(annotation.get().translationKey())) {
+            if (annotation.isPresent() && !annotation.get().translationKey().isBlank()) {
                 translation = origin.getParent().getTranslation().root().append(annotation.get().translationKey());
             } else {
                 translation = origin.getParent().getTranslation().append(id);
@@ -152,7 +151,7 @@ public class Entry<T> implements DataPart, Identifiable, Translatable, TooltipSu
             Optional<ConfigEntry> annotation = origin.getOptionalAnnotation(ConfigEntry.class);
             if (annotation.isPresent() && annotation.get().tooltipTranslationKeys().length > 0) {
                 tooltipTranslation = Arrays.stream(annotation.get().tooltipTranslationKeys()).map(key -> {
-                    if (StringUtils.isBlank(key)) {
+                    if (key.isBlank()) {
                         throw new IllegalAnnotationParameterException("Tooltip translation key of entry " + origin.getField() + " may not be blank");
                     }
                     return getTranslation().root().append(key);

+ 1 - 2
lib/src/main/java/me/lortseam/completeconfig/data/SliderEntry.java

@@ -5,7 +5,6 @@ import me.lortseam.completeconfig.text.TranslationKey;
 import net.fabricmc.api.EnvType;
 import net.fabricmc.api.Environment;
 import net.minecraft.text.Text;
-import org.apache.commons.lang3.StringUtils;
 
 import java.util.function.Function;
 
@@ -22,7 +21,7 @@ public class SliderEntry<T extends Number> extends BoundedEntry<T> {
     public Function<T, Text> getValueTextSupplier() {
         if (valueTranslation == null) {
             ConfigEntry.Slider slider = origin.getAnnotation(ConfigEntry.Slider.class);
-            if (!StringUtils.isBlank(slider.valueTranslationKey())) {
+            if (!slider.valueTranslationKey().isBlank()) {
                 valueTranslation = getTranslation().root().append(slider.valueTranslationKey());
             } else {
                 valueTranslation = getTranslation().append("value");

+ 3 - 3
lib/src/main/java/me/lortseam/completeconfig/util/ReflectionUtils.java

@@ -21,13 +21,13 @@ public final class ReflectionUtils {
 
     public static <T> T instantiateClass(Class<T> clazz) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
         Constructor<T> constructor = clazz.getDeclaredConstructor();
-        if (!constructor.isAccessible()) {
+        if (!constructor.canAccess(null)) {
             constructor.setAccessible(true);
         }
         return constructor.newInstance();
     }
 
-    public static Optional<Method> getSetterMethod(Field field) {
+    public static Optional<Method> getSetterMethod(Field field, Object object) {
         Method method;
         try {
             method = field.getDeclaringClass().getDeclaredMethod("set" + StringUtils.capitalize(field.getName()), getTypeClass(getFieldType(field)));
@@ -37,7 +37,7 @@ public final class ReflectionUtils {
         if (Modifier.isStatic(field.getModifiers()) != Modifier.isStatic(method.getModifiers()) || !method.getReturnType().equals(Void.TYPE)) {
             return Optional.empty();
         }
-        if (!method.isAccessible()) {
+        if (!method.canAccess(object)) {
             method.setAccessible(true);
         }
         return Optional.of(method);

+ 6 - 12
lib/src/test/java/me/lortseam/completeconfig/test/extension/FabricLoaderExtension.java

@@ -14,19 +14,13 @@ import static org.mockito.Mockito.*;
 public class FabricLoaderExtension implements Extension {
 
     static {
+        EnvType env = switch (System.getProperty("fabric.dli.env")) {
+            case "client" -> EnvType.CLIENT;
+            case "server" -> EnvType.SERVER;
+            default -> throw new IllegalArgumentException("Unknown environment property");
+        };
         FabricLoader loader = mock(FabricLoader.class);
-        switch (System.getProperty("fabric.dli.env")) {
-            case "client":
-                when(loader.getEnvironmentType()).thenReturn(EnvType.CLIENT);
-                break;
-
-            case "server":
-                when(loader.getEnvironmentType()).thenReturn(EnvType.SERVER);
-                break;
-
-            default:
-                throw new IllegalArgumentException("Unknown environment property");
-        }
+        when(loader.getEnvironmentType()).thenReturn(env);
         when(loader.isModLoaded(anyString())).thenReturn(true);
         when(loader.getModContainer(anyString())).thenAnswer(invocation -> {
             ModMetadata metadata = mock(ModMetadata.class);