From 45f93e669b383466bbc2aa30eafeca17c71c3a7a Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 16:47:08 +0200 Subject: [PATCH 01/12] Add gitignore --- .gitignore | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..37fa371 --- /dev/null +++ b/.gitignore @@ -0,0 +1,107 @@ +### Java files ### +*.class +MANIFEST.MF + +# Package Files +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Mac OS +.DS_Store + +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm +# Ignore project files +*.iml +*.java___jb_tmp___ + +# Ignore IDEA directory +.idea/* + +# Include the project's code style settings file +#!.idea/codeStyleSettings.xml + +# File-based project format: +*.ipr +*.iws + +### Plugin-specific files: ### +# IntelliJ +/out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties + +### Eclipse ### +*.pydevproject +.metadata +.gradle +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath + +# Eclipse Core +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# PDT-specific +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml +.nb-gradle/ + +### Git ### +# Don't exclude the .gitignore itself +!.gitignore From 48911fcacb52f0dbafb93c505095331c9fc8bab7 Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 16:58:26 +0200 Subject: [PATCH 02/12] Add editor config --- .editorconfig | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7c1125c --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# Top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Set the charset, and space indention +[*.java] +charset = utf-8 +indent_style = tab From aee122a58bba94bda57e9540871b183f3bd1f448 Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 16:59:01 +0200 Subject: [PATCH 03/12] Maven clenup, test cleanup --- pom.xml | 71 +++---------------- .../ReflectionTest.java} | 38 +++++----- 2 files changed, 31 insertions(+), 78 deletions(-) rename src/test/java/org/inventivetalent/{reflectionhelper/test/Test.java => reflection/ReflectionTest.java} (69%) diff --git a/pom.xml b/pom.xml index a8c5f05..4cdbdd9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,4 @@ - @@ -9,83 +8,34 @@ reflectionhelper 1.13.0-SNAPSHOT + ReflectionHelper + API for accessing various classes and their members using reflection. + - ReflectionHelper_v${project.version} - src/main/java - - - src/main/java - - **/*.java - - - - src/main/resources - true - - plugin.yml - config.yml - - - maven-compiler-plugin - 3.3 + 3.6.2 - 1.7 - 1.7 + 1.8 + 1.8 - - org.apache.maven.plugins - maven-shade-plugin - 2.4 - - - package - - shade - - - - - org.inventivetalent:reflectionhelper** - - - - - - + - - inventive-repo - http://repo.inventivetalent.org/content/groups/public/ - md_5-repo http://repo.md-5.net/content/repositories/public/ - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - techcable-repo - http://repo.techcable.net/content/groups/public/ - - - - - + org.spigotmc spigot-api - 1.9-R0.1-SNAPSHOT + 1.12.2-R0.1-SNAPSHOT provided @@ -93,6 +43,7 @@ junit junit 4.12 + test @@ -106,4 +57,4 @@ http://repo.inventivetalent.org/content/repositories/snapshots/ - \ No newline at end of file + diff --git a/src/test/java/org/inventivetalent/reflectionhelper/test/Test.java b/src/test/java/org/inventivetalent/reflection/ReflectionTest.java similarity index 69% rename from src/test/java/org/inventivetalent/reflectionhelper/test/Test.java rename to src/test/java/org/inventivetalent/reflection/ReflectionTest.java index 57dcf08..276c389 100644 --- a/src/test/java/org/inventivetalent/reflectionhelper/test/Test.java +++ b/src/test/java/org/inventivetalent/reflection/ReflectionTest.java @@ -1,12 +1,14 @@ -package org.inventivetalent.reflectionhelper.test; +package org.inventivetalent.reflection; import org.inventivetalent.reflection.resolver.wrapper.MethodWrapper; +import org.junit.Test; import java.lang.reflect.Method; import static org.junit.Assert.*; -public class Test { +@SuppressWarnings({"unused", "WeakerAccess"}) +public class ReflectionTest { public double primitiveDummyMethod(String aString, double returnValue) { return returnValue; @@ -35,33 +37,33 @@ public int wildCardMethod4(String string) { return 0; } - @org.junit.Test + @Test public void primitiveSignatureTest() throws ReflectiveOperationException { - String signature = MethodWrapper.getMethodSignature(Test.class.getMethod("primitiveDummyMethod", String.class, double.class)); + String signature = MethodWrapper.getMethodSignature(ReflectionTest.class.getMethod("primitiveDummyMethod", String.class, double.class)); assertEquals("double primitiveDummyMethod(String,double)", signature); } - @org.junit.Test + @Test public void genericSignatureTest() throws ReflectiveOperationException { - String signature = MethodWrapper.getMethodSignature(Test.class.getMethod("genericDummyMethod", Thread.class, Exception.class)); + String signature = MethodWrapper.getMethodSignature(ReflectionTest.class.getMethod("genericDummyMethod", Thread.class, Exception.class)); assertEquals("Method genericDummyMethod(Thread,Exception)", signature); } - @org.junit.Test + @Test public void voidSignatureTest() throws ReflectiveOperationException { - String signature = MethodWrapper.getMethodSignature(Test.class.getMethod("voidDummyMethod", Character.class, Class.class, String.class)); + String signature = MethodWrapper.getMethodSignature(ReflectionTest.class.getMethod("voidDummyMethod", Character.class, Class.class, String.class)); assertEquals("void voidDummyMethod(Character,Class,String)", signature); } - @org.junit.Test + @Test public void fullNameSignatureTest() throws ReflectiveOperationException { - String signature = MethodWrapper.getMethodSignature(Test.class.getMethod("genericDummyMethod", Thread.class, Exception.class), true); + String signature = MethodWrapper.getMethodSignature(ReflectionTest.class.getMethod("genericDummyMethod", Thread.class, Exception.class), true); assertEquals("java.lang.reflect.Method genericDummyMethod(java.lang.Thread,java.lang.Exception)", signature); } - @org.junit.Test + @Test public void signatureObjectTest() throws ReflectiveOperationException { - MethodWrapper.MethodSignature signature = MethodWrapper.MethodSignature.of(Test.class.getMethod("genericDummyMethod", Thread.class, Exception.class), false); + MethodWrapper.MethodSignature signature = MethodWrapper.MethodSignature.of(ReflectionTest.class.getMethod("genericDummyMethod", Thread.class, Exception.class), false); assertEquals("Method", signature.getReturnType()); assertEquals("genericDummyMethod", signature.getName()); assertArrayEquals(new String[] { @@ -69,7 +71,7 @@ public void signatureObjectTest() throws ReflectiveOperationException { "Exception" }, signature.getParameterTypes()); } - @org.junit.Test + @Test public void signatureFromStringTest() { MethodWrapper.MethodSignature signature = MethodWrapper.MethodSignature.fromString("java.lang.reflect.Method genericDummyMethod(java.lang.Thread,java.lang.Exception)"); assertEquals("java.lang.reflect.Method", signature.getReturnType()); @@ -78,13 +80,13 @@ public void signatureFromStringTest() { assertEquals("java.lang.Exception", signature.getParameterType(1)); } - @org.junit.Test + @Test public void wildcardTest() throws ReflectiveOperationException { MethodWrapper.MethodSignature wildcardSignature = MethodWrapper.MethodSignature.fromString("* wildcardMethod*(String)"); - MethodWrapper.MethodSignature testSignature1 = MethodWrapper.MethodSignature.of(Test.class.getMethod("wildcardMethod1", String.class), false); - MethodWrapper.MethodSignature testSignature2 = MethodWrapper.MethodSignature.of(Test.class.getMethod("wildcardMethod2", String.class), false); - MethodWrapper.MethodSignature testSignature3 = MethodWrapper.MethodSignature.of(Test.class.getMethod("wildcardMethod3", boolean.class), false); - MethodWrapper.MethodSignature testSignature4 = MethodWrapper.MethodSignature.of(Test.class.getMethod("wildCardMethod4", String.class), false); + MethodWrapper.MethodSignature testSignature1 = MethodWrapper.MethodSignature.of(ReflectionTest.class.getMethod("wildcardMethod1", String.class), false); + MethodWrapper.MethodSignature testSignature2 = MethodWrapper.MethodSignature.of(ReflectionTest.class.getMethod("wildcardMethod2", String.class), false); + MethodWrapper.MethodSignature testSignature3 = MethodWrapper.MethodSignature.of(ReflectionTest.class.getMethod("wildcardMethod3", boolean.class), false); + MethodWrapper.MethodSignature testSignature4 = MethodWrapper.MethodSignature.of(ReflectionTest.class.getMethod("wildCardMethod4", String.class), false); assertTrue(wildcardSignature.matches(testSignature1)); assertTrue(wildcardSignature.matches(testSignature2)); From be168d5bbe06a3474fb072b97a3e15db70f117de Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:15:53 +0200 Subject: [PATCH 04/12] Cleanup --- .../annotation/ReflectionAnnotations.java | 18 +++---- .../reflection/minecraft/DataWatcher.java | 38 +++++++------- .../reflection/minecraft/Minecraft.java | 3 +- .../reflection/resolver/ClassResolver.java | 3 +- .../resolver/ConstructorResolver.java | 10 ++-- .../resolver/wrapper/ClassWrapper.java | 3 +- .../resolver/wrapper/ConstructorWrapper.java | 3 +- .../resolver/wrapper/FieldWrapper.java | 11 +++-- .../resolver/wrapper/MethodWrapper.java | 49 +++++++++++-------- 9 files changed, 80 insertions(+), 58 deletions(-) diff --git a/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java b/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java index b2c34c3..bda68d2 100644 --- a/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java +++ b/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java @@ -10,15 +10,17 @@ import java.lang.annotation.Annotation; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +@SuppressWarnings("unused") public class ReflectionAnnotations { public static final ReflectionAnnotations INSTANCE = new ReflectionAnnotations(); - static final Pattern classRefPattern = Pattern.compile("@Class\\((.*)\\)"); + private static final Pattern classRefPattern = Pattern.compile("@Class\\((.*)\\)"); private ReflectionAnnotations() { } @@ -83,7 +85,7 @@ public void load(Object toLoad) { return; } } - } else if (methodAnnotation != null) { + } else { List nameList = parseAnnotationVersions(Method.class, methodAnnotation); if (nameList.isEmpty()) { throw new IllegalArgumentException("@Method names cannot be empty"); } String[] names = nameList.toArray(new String[nameList.size()]); @@ -131,7 +133,7 @@ public void load(Object toLoad) { * @param annotation type * @return a list of matching names */ - List parseAnnotationVersions(java.lang.Class clazz, A annotation) { + private List parseAnnotationVersions(java.lang.Class clazz, A annotation) { List list = new ArrayList<>(); try { @@ -139,9 +141,7 @@ List parseAnnotationVersions(java.lang.Class c Minecraft.Version[] versions = (Minecraft.Version[]) clazz.getMethod("versions").invoke(annotation); if (versions.length == 0) {// No versions specified -> directly use the names - for (String name : names) { - list.add(name); - } + Collections.addAll(list, names); } else { if (versions.length > names.length) { throw new RuntimeException("versions array cannot have more elements than the names (" + clazz + ")"); @@ -165,7 +165,7 @@ List parseAnnotationVersions(java.lang.Class c return list; } - String parseClass(java.lang.Class clazz, A annotation, Object toLoad) { + private String parseClass(java.lang.Class clazz, A annotation, Object toLoad) { try { String className = (String) clazz.getMethod("className").invoke(annotation); Matcher matcher = classRefPattern.matcher(className); @@ -185,11 +185,11 @@ String parseClass(java.lang.Class clazz, A annotation, } } - void throwInvalidFieldType(java.lang.reflect.Field field, Object toLoad, String expected) { + private void throwInvalidFieldType(java.lang.reflect.Field field, Object toLoad, String expected) { throw new IllegalArgumentException("Field " + field.getName() + " in " + toLoad.getClass() + " is not of type " + expected + ", it's " + field.getType()); } - void throwReflectionException(String annotation, java.lang.reflect.Field field, Object toLoad, ReflectiveOperationException exception) { + private void throwReflectionException(String annotation, java.lang.reflect.Field field, Object toLoad, ReflectiveOperationException exception) { throw new RuntimeException("Failed to set " + annotation + " field " + field.getName() + " in " + toLoad.getClass(), exception); } diff --git a/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java b/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java index 09300ba..9b56956 100644 --- a/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java +++ b/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java @@ -9,25 +9,26 @@ import java.util.Arrays; import java.util.Map; +@SuppressWarnings({"unused", "WeakerAccess"}) public class DataWatcher { - static ClassResolver classResolver = new ClassResolver(); - static NMSClassResolver nmsClassResolver = new NMSClassResolver(); + //private static ClassResolver classResolver = new ClassResolver(); + private static NMSClassResolver nmsClassResolver = new NMSClassResolver(); - static Class ItemStack = nmsClassResolver.resolveSilent("ItemStack"); - static Class ChunkCoordinates = nmsClassResolver.resolveSilent("ChunkCoordinates"); - static Class BlockPosition = nmsClassResolver.resolveSilent("BlockPosition"); - static Class Vector3f = nmsClassResolver.resolveSilent("Vector3f"); - static Class DataWatcher = nmsClassResolver.resolveSilent("DataWatcher"); - static Class Entity = nmsClassResolver.resolveSilent("Entity"); - static Class TIntObjectMap = classResolver.resolveSilent("gnu.trove.map.TIntObjectMap", "net.minecraft.util.gnu.trove.map.TIntObjectMap"); + private static Class ItemStack = nmsClassResolver.resolveSilent("ItemStack"); + private static Class ChunkCoordinates = nmsClassResolver.resolveSilent("ChunkCoordinates"); + private static Class BlockPosition = nmsClassResolver.resolveSilent("BlockPosition"); + private static Class Vector3f = nmsClassResolver.resolveSilent("Vector3f"); + private static Class DataWatcher = nmsClassResolver.resolveSilent("DataWatcher"); + private static Class Entity = nmsClassResolver.resolveSilent("Entity"); + //private static Class TIntObjectMap = classResolver.resolveSilent("gnu.trove.map.TIntObjectMap", "net.minecraft.util.gnu.trove.map.TIntObjectMap"); - static ConstructorResolver DataWacherConstructorResolver = new ConstructorResolver(DataWatcher); + private static ConstructorResolver DataWacherConstructorResolver = new ConstructorResolver(DataWatcher); - static FieldResolver DataWatcherFieldResolver = new FieldResolver(DataWatcher); + private static FieldResolver DataWatcherFieldResolver = new FieldResolver(DataWatcher); - static MethodResolver TIntObjectMapMethodResolver = new MethodResolver(TIntObjectMap); - static MethodResolver DataWatcherMethodResolver = new MethodResolver(DataWatcher); + //private static MethodResolver TIntObjectMapMethodResolver = new MethodResolver(TIntObjectMap); + private static MethodResolver DataWatcherMethodResolver = new MethodResolver(DataWatcher); public static Object newDataWatcher(Object entity) throws ReflectiveOperationException { return DataWacherConstructorResolver.resolve(new Class[] { Entity }).newInstance(entity); @@ -123,6 +124,7 @@ public static Object setItem(Object dataWatcher, int index, Object dataWatcherOb return setItem(dataWatcher, index, newDataWatcherItem(dataWatcherObject, value)); } + @SuppressWarnings("unchecked") public static Object setItem(Object dataWatcher, int index, Object dataWatcherItem) throws ReflectiveOperationException { Map map = (Map) DataWatcherFieldResolver.resolveByLastTypeSilent(Map.class).get(dataWatcher); map.put(index, dataWatcherItem); @@ -134,10 +136,10 @@ public static Object setValue(Object dataWatcher, Object dataWatcherObject, Obje return dataWatcher; } - // public static Object getValue(Object dataWatcher, int index) throws ReflectiveOperationException { - // Map map = (Map) DataWatcherFieldResolver.resolve("c").get(dataWatcher); - // return map.get(index); - // } + //public static Object getValue(Object dataWatcher, int index) throws ReflectiveOperationException { + // Map map = (Map) DataWatcherFieldResolver.resolve("c").get(dataWatcher); + // return map.get(index); + //} public static Object getItem(Object dataWatcher, Object dataWatcherObject) throws ReflectiveOperationException { return DataWatcherMethodResolver.resolve(new ResolverQuery("c", DataWatcherObject)).invoke(dataWatcher, dataWatcherObject); @@ -156,6 +158,7 @@ public static Object getItemObject(Object item) throws ReflectiveOperationExcept return DataWatcherItemFieldResolver.resolve("a").get(item); } + @SuppressWarnings("unchecked") public static int getItemIndex(Object dataWatcher, Object item) throws ReflectiveOperationException { int index = -1;//Return -1 if the item is not in the DataWatcher Map map = (Map) DataWatcherFieldResolver.resolveByLastTypeSilent(Map.class).get(dataWatcher); @@ -375,6 +378,7 @@ public static Object newWatchableObject(int type, int index, Object value) throw Object.class }).newInstance(type, index, value); } + @SuppressWarnings("unchecked") public static Object setValue(Object dataWatcher, int index, Object value) throws ReflectiveOperationException { int type = getValueType(value); diff --git a/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java b/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java index 03462f8..dd782c4 100644 --- a/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java +++ b/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java @@ -19,6 +19,7 @@ /** * Helper class to access minecraft/bukkit specific objects */ +@SuppressWarnings({"unused", "WeakerAccess"}) public class Minecraft { static final Pattern NUMERIC_VERSION_PATTERN = Pattern.compile("v([0-9])_([0-9]*)_R([0-9])"); @@ -71,7 +72,7 @@ public static Entity getBukkitEntity(Object object) throws ReflectiveOperationEx public static Object getHandleSilent(Object object) { try { return getHandle(object); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ClassResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/ClassResolver.java index 1f1cc40..a1a598e 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ClassResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ClassResolver.java @@ -7,6 +7,7 @@ */ public class ClassResolver extends ResolverAbstract { + @SuppressWarnings("unchecked") public ClassWrapper resolveWrapper(String... names) { return new ClassWrapper<>(resolveSilent(names)); } @@ -14,7 +15,7 @@ public ClassWrapper resolveWrapper(String... names) { public Class resolveSilent(String... names) { try { return resolve(names); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java index fd24261..5bef06c 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java @@ -8,6 +8,8 @@ /** * Resolver for constructors */ + +@SuppressWarnings({"unused", "WeakerAccess"}) public class ConstructorResolver extends MemberResolver { public ConstructorResolver(Class clazz) { @@ -33,10 +35,12 @@ public Constructor resolveIndexSilent(int index) { } @Override + @SuppressWarnings("unchecked") public ConstructorWrapper resolveIndexWrapper(int index) { return new ConstructorWrapper<>(resolveIndexSilent(index)); } + @SuppressWarnings("unchecked") public ConstructorWrapper resolveWrapper(Class[]... types) { return new ConstructorWrapper<>(resolveSilent(types)); } @@ -44,7 +48,7 @@ public ConstructorWrapper resolveWrapper(Class[]... types) { public Constructor resolveSilent(Class[]... types) { try { return resolve(types); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -75,7 +79,7 @@ public Constructor resolveFirstConstructor() throws ReflectiveOperationException public Constructor resolveFirstConstructorSilent() { try { return resolveFirstConstructor(); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -92,7 +96,7 @@ public Constructor resolveLastConstructor() throws ReflectiveOperationException public Constructor resolveLastConstructorSilent() { try { return resolveLastConstructor(); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java index 342584c..22f2fe3 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java @@ -1,5 +1,6 @@ package org.inventivetalent.reflection.resolver.wrapper; +@SuppressWarnings({"unused", "WeakerAccess"}) public class ClassWrapper extends WrapperAbstract { private final Class clazz; @@ -32,7 +33,7 @@ public R newInstance() { public R newInstanceSilent() { try { return this.clazz.newInstance(); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java index 254bb48..707790f 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java @@ -2,6 +2,7 @@ import java.lang.reflect.Constructor; +@SuppressWarnings({"unused", "WeakerAccess"}) public class ConstructorWrapper extends WrapperAbstract { private final Constructor constructor; @@ -26,7 +27,7 @@ public R newInstance(Object... args) { public R newInstanceSilent(Object... args) { try { return this.constructor.newInstance(args); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java index ea4c439..5038c44 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java @@ -2,6 +2,7 @@ import java.lang.reflect.Field; +@SuppressWarnings({"unused", "WeakerAccess"}) public class FieldWrapper extends WrapperAbstract { private final Field field; @@ -19,6 +20,7 @@ public String getName() { return this.field.getName(); } + @SuppressWarnings("unchecked") public R get(Object object) { try { return (R) this.field.get(object); @@ -27,10 +29,11 @@ public R get(Object object) { } } + @SuppressWarnings("unchecked") public R getSilent(Object object) { try { return (R) this.field.get(object); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -46,7 +49,7 @@ public void set(Object object, R value) { public void setSilent(Object object, R value) { try { this.field.set(object, value); - } catch (Exception e) { + } catch (Exception ignored) { } } @@ -61,9 +64,7 @@ public boolean equals(Object object) { FieldWrapper that = (FieldWrapper) object; - if (field != null ? !field.equals(that.field) : that.field != null) { return false; } - - return true; + return field != null ? field.equals(that.field) : that.field == null; } @Override diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java index 888c12b..3701fca 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java @@ -5,6 +5,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +@SuppressWarnings({"unused", "WeakerAccess"}) public class MethodWrapper extends WrapperAbstract { private final Method method; @@ -22,6 +23,7 @@ public String getName() { return this.method.getName(); } + @SuppressWarnings("unchecked") public R invoke(Object object, Object... args) { try { return (R) this.method.invoke(object, args); @@ -30,10 +32,11 @@ public R invoke(Object object, Object... args) { } } + @SuppressWarnings("unchecked") public R invokeSilent(Object object, Object... args) { try { return (R) this.method.invoke(object, args); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -50,7 +53,6 @@ public boolean equals(Object object) { MethodWrapper that = (MethodWrapper) object; return method != null ? method.equals(that.method) : that.method == null; - } @Override @@ -206,18 +208,18 @@ public String getSignature() { public boolean matches(MethodSignature other) { if (other == null) { return false; } - // if (!returnType.equals(other.returnType)) { - // if (!isReturnTypeWildcard()) { return false; } - // } - // if (!name.equals(other.name)) { - // if (!isNameWildcard()) { return false; } - // } - // if (parameterTypes.length != other.parameterTypes.length) { return false; } - // for (int i = 0; i < parameterTypes.length; i++) { - // if (!getParameterType(i).equals(other.getParameterType(i))) { - // if (!isParameterWildcard(i)) { return false; } - // } - // } + //if (!returnType.equals(other.returnType)) { + // if (!isReturnTypeWildcard()) { return false; } + //} + //if (!name.equals(other.name)) { + // if (!isNameWildcard()) { return false; } + //} + //if (parameterTypes.length != other.parameterTypes.length) { return false; } + //for (int i = 0; i < parameterTypes.length; i++) { + // if (!getParameterType(i).equals(other.getParameterType(i))) { + // if (!isParameterWildcard(i)) { return false; } + // } + //} if (!returnTypePattern.matcher(other.returnType).matches()) { return false; @@ -237,16 +239,23 @@ public boolean matches(MethodSignature other) { @Override public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } MethodSignature signature1 = (MethodSignature) o; - if (!returnType.equals(signature1.returnType)) { return false; } - if (!name.equals(signature1.name)) { return false; } + if (!returnType.equals(signature1.returnType)) { + return false; + } + if (!name.equals(signature1.name)) { + return false; + } // Probably incorrect - comparing Object[] arrays with Arrays.equals - if (!Arrays.equals(parameterTypes, signature1.parameterTypes)) { return false; } - return signature.equals(signature1.signature); + return Arrays.equals(parameterTypes, signature1.parameterTypes) && signature.equals(signature1.signature); } From 2856ad12b581f86d1dfb8889c78731ddb87c6dcc Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:16:02 +0200 Subject: [PATCH 05/12] Cleanup --- .../reflection/resolver/FieldResolver.java | 9 +++++---- .../reflection/resolver/MemberResolver.java | 2 ++ .../reflection/resolver/MethodResolver.java | 3 ++- .../reflection/resolver/ResolverAbstract.java | 3 ++- .../reflection/resolver/ResolverQuery.java | 3 ++- .../org/inventivetalent/reflection/util/AccessUtil.java | 3 +++ 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java index ed63bd6..69741d3 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java @@ -8,6 +8,7 @@ /** * Resolver for fields */ +@SuppressWarnings({"unused", "WeakerAccess"}) public class FieldResolver extends MemberResolver { public FieldResolver(Class clazz) { @@ -44,7 +45,7 @@ public FieldWrapper resolveWrapper(String... names) { public Field resolveSilent(String... names) { try { return resolve(names); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -63,7 +64,7 @@ public Field resolve(String... names) throws NoSuchFieldException { public Field resolveSilent(ResolverQuery... queries) { try { return resolve(queries); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -121,7 +122,7 @@ public Field resolveByFirstType(Class type) throws ReflectiveOperationExcepti public Field resolveByFirstTypeSilent(Class type) { try { return resolveByFirstType(type); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } @@ -148,7 +149,7 @@ public Field resolveByLastType(Class type) throws ReflectiveOperationExceptio public Field resolveByLastTypeSilent(Class type) { try { return resolveByLastType(type); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java index 8913ecd..c050b84 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java @@ -12,6 +12,8 @@ * @see FieldResolver * @see MethodResolver */ + +@SuppressWarnings({"unused", "WeakerAccess"}) public abstract class MemberResolver extends ResolverAbstract { protected Class clazz; diff --git a/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java index f378425..3237a28 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java @@ -8,6 +8,7 @@ /** * Resolver for methods */ +@SuppressWarnings({"unused", "WeakerAccess"}) public class MethodResolver extends MemberResolver { public MethodResolver(Class clazz) { @@ -72,7 +73,7 @@ public MethodWrapper resolveWrapper(ResolverQuery... queries) { public Method resolveSilent(String... names) { try { return resolve(names); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java b/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java index a438a6b..115e535 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java @@ -13,6 +13,7 @@ * @see FieldResolver * @see MethodResolver */ +@SuppressWarnings({"unused", "WeakerAccess"}) public abstract class ResolverAbstract { protected final Map resolvedObjects = new ConcurrentHashMap(); @@ -26,7 +27,7 @@ public abstract class ResolverAbstract { protected T resolveSilent(ResolverQuery... queries) { try { return resolve(queries); - } catch (Exception e) { + } catch (Exception ignored) { } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java b/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java index 599ebbc..c04588d 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java @@ -9,6 +9,7 @@ * * @see org.inventivetalent.reflection.resolver.ResolverQuery.Builder */ +@SuppressWarnings({"unused", "WeakerAccess"}) public class ResolverQuery { private String name; @@ -73,7 +74,7 @@ public static Builder builder() { */ public static class Builder { - private List queryList = new ArrayList(); + private List queryList = new ArrayList<>(); private Builder() { } diff --git a/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java b/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java index 3ac2957..94448ec 100644 --- a/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java +++ b/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java @@ -9,6 +9,9 @@ */ public abstract class AccessUtil { + private AccessUtil() { + } + /** * Sets the field accessible and removes final modifiers * From 23fcb478c5aeb4b22b5e61ce746d161995aaa7b7 Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:16:41 +0200 Subject: [PATCH 06/12] Consistent codestyle --- .../annotation/ReflectionAnnotations.java | 20 ++- .../reflection/minecraft/DataWatcher.java | 63 +++++---- .../reflection/minecraft/Minecraft.java | 124 +++++++++--------- .../resolver/ConstructorResolver.java | 4 +- .../reflection/resolver/FieldResolver.java | 4 +- .../reflection/resolver/MemberResolver.java | 4 +- .../reflection/resolver/MethodResolver.java | 28 ++-- .../reflection/resolver/ResolverAbstract.java | 8 +- .../reflection/resolver/ResolverQuery.java | 22 ++-- .../resolver/wrapper/ClassWrapper.java | 8 +- .../resolver/wrapper/ConstructorWrapper.java | 8 +- .../resolver/wrapper/FieldWrapper.java | 8 +- .../resolver/wrapper/MethodWrapper.java | 112 +++++++++------- .../reflection/util/AccessUtil.java | 6 +- 14 files changed, 247 insertions(+), 172 deletions(-) diff --git a/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java b/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java index bda68d2..98c31b2 100644 --- a/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java +++ b/src/main/java/org/inventivetalent/reflection/annotation/ReflectionAnnotations.java @@ -26,7 +26,9 @@ private ReflectionAnnotations() { } public void load(Object toLoad) { - if (toLoad == null) { throw new IllegalArgumentException("toLoad cannot be null"); } + if (toLoad == null) { + throw new IllegalArgumentException("toLoad cannot be null"); + } ClassResolver classResolver = new ClassResolver(); @@ -43,7 +45,9 @@ public void load(Object toLoad) { if (classAnnotation != null) { List nameList = parseAnnotationVersions(Class.class, classAnnotation); - if (nameList.isEmpty()) { throw new IllegalArgumentException("@Class names cannot be empty"); } + if (nameList.isEmpty()) { + throw new IllegalArgumentException("@Class names cannot be empty"); + } String[] names = nameList.toArray(new String[nameList.size()]); for (int i = 0; i < names.length; i++) {// Replace NMS & OBC names[i] = names[i] @@ -67,7 +71,9 @@ public void load(Object toLoad) { } } else if (fieldAnnotation != null) { List nameList = parseAnnotationVersions(Field.class, fieldAnnotation); - if (nameList.isEmpty()) { throw new IllegalArgumentException("@Field names cannot be empty"); } + if (nameList.isEmpty()) { + throw new IllegalArgumentException("@Field names cannot be empty"); + } String[] names = nameList.toArray(new String[nameList.size()]); try { FieldResolver fieldResolver = new FieldResolver(parseClass(Field.class, fieldAnnotation, toLoad)); @@ -87,7 +93,9 @@ public void load(Object toLoad) { } } else { List nameList = parseAnnotationVersions(Method.class, methodAnnotation); - if (nameList.isEmpty()) { throw new IllegalArgumentException("@Method names cannot be empty"); } + if (nameList.isEmpty()) { + throw new IllegalArgumentException("@Method names cannot be empty"); + } String[] names = nameList.toArray(new String[nameList.size()]); boolean isSignature = names[0].contains(" ");// Only signatures can contain spaces (e.g. "void aMethod()") @@ -170,7 +178,9 @@ private String parseClass(java.lang.Class clazz, A ann String className = (String) clazz.getMethod("className").invoke(annotation); Matcher matcher = classRefPattern.matcher(className); while (matcher.find()) { - if (matcher.groupCount() != 1) { continue; } + if (matcher.groupCount() != 1) { + continue; + } String fieldName = matcher.group(1);// It's a reference to a previously loaded class java.lang.reflect.Field field = toLoad.getClass().getField(fieldName); if (ClassWrapper.class.isAssignableFrom(field.getType())) { diff --git a/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java b/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java index 9b56956..23ddb15 100644 --- a/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java +++ b/src/main/java/org/inventivetalent/reflection/minecraft/DataWatcher.java @@ -1,6 +1,9 @@ package org.inventivetalent.reflection.minecraft; -import org.inventivetalent.reflection.resolver.*; +import org.inventivetalent.reflection.resolver.ConstructorResolver; +import org.inventivetalent.reflection.resolver.FieldResolver; +import org.inventivetalent.reflection.resolver.MethodResolver; +import org.inventivetalent.reflection.resolver.ResolverQuery; import org.inventivetalent.reflection.resolver.minecraft.NMSClassResolver; import java.lang.reflect.Field; @@ -15,12 +18,12 @@ public class DataWatcher { //private static ClassResolver classResolver = new ClassResolver(); private static NMSClassResolver nmsClassResolver = new NMSClassResolver(); - private static Class ItemStack = nmsClassResolver.resolveSilent("ItemStack"); + private static Class ItemStack = nmsClassResolver.resolveSilent("ItemStack"); private static Class ChunkCoordinates = nmsClassResolver.resolveSilent("ChunkCoordinates"); - private static Class BlockPosition = nmsClassResolver.resolveSilent("BlockPosition"); - private static Class Vector3f = nmsClassResolver.resolveSilent("Vector3f"); - private static Class DataWatcher = nmsClassResolver.resolveSilent("DataWatcher"); - private static Class Entity = nmsClassResolver.resolveSilent("Entity"); + private static Class BlockPosition = nmsClassResolver.resolveSilent("BlockPosition"); + private static Class Vector3f = nmsClassResolver.resolveSilent("Vector3f"); + private static Class DataWatcher = nmsClassResolver.resolveSilent("DataWatcher"); + private static Class Entity = nmsClassResolver.resolveSilent("Entity"); //private static Class TIntObjectMap = classResolver.resolveSilent("gnu.trove.map.TIntObjectMap", "net.minecraft.util.gnu.trove.map.TIntObjectMap"); private static ConstructorResolver DataWacherConstructorResolver = new ConstructorResolver(DataWatcher); @@ -28,10 +31,13 @@ public class DataWatcher { private static FieldResolver DataWatcherFieldResolver = new FieldResolver(DataWatcher); //private static MethodResolver TIntObjectMapMethodResolver = new MethodResolver(TIntObjectMap); - private static MethodResolver DataWatcherMethodResolver = new MethodResolver(DataWatcher); + private static MethodResolver DataWatcherMethodResolver = new MethodResolver(DataWatcher); + + private DataWatcher() { + } public static Object newDataWatcher(Object entity) throws ReflectiveOperationException { - return DataWacherConstructorResolver.resolve(new Class[] { Entity }).newInstance(entity); + return DataWacherConstructorResolver.resolve(new Class[]{Entity}).newInstance(entity); } public static Object setValue(Object dataWatcher, int index, Object dataWatcherObject/*1.9*/, Object value) throws ReflectiveOperationException { @@ -107,7 +113,7 @@ public static int getValueType(Object value) { */ public static class V1_9 { - static Class DataWatcherItem = nmsClassResolver.resolveSilent("DataWatcher$Item");//>= 1.9 only + static Class DataWatcherItem = nmsClassResolver.resolveSilent("DataWatcher$Item");//>= 1.9 only static Class DataWatcherObject = nmsClassResolver.resolveSilent("DataWatcherObject");//>= 1.9 only static ConstructorResolver DataWatcherItemConstructorResolver;//>=1.9 only @@ -116,7 +122,9 @@ public static class V1_9 { static FieldResolver DataWatcherObjectFieldResolver;//>=1.9 only public static Object newDataWatcherItem(Object dataWatcherObject, Object value) throws ReflectiveOperationException { - if (DataWatcherItemConstructorResolver == null) { DataWatcherItemConstructorResolver = new ConstructorResolver(DataWatcherItem); } + if (DataWatcherItemConstructorResolver == null) { + DataWatcherItemConstructorResolver = new ConstructorResolver(DataWatcherItem); + } return DataWatcherItemConstructorResolver.resolveFirstConstructor().newInstance(dataWatcherObject, value); } @@ -154,7 +162,9 @@ public static Object getValue(Object dataWatcher, ValueType type) throws Reflect } public static Object getItemObject(Object item) throws ReflectiveOperationException { - if (DataWatcherItemFieldResolver == null) { DataWatcherItemFieldResolver = new FieldResolver(DataWatcherItem); } + if (DataWatcherItemFieldResolver == null) { + DataWatcherItemFieldResolver = new FieldResolver(DataWatcherItem); + } return DataWatcherItemFieldResolver.resolve("a").get(item); } @@ -172,7 +182,9 @@ public static int getItemIndex(Object dataWatcher, Object item) throws Reflectiv } public static Type getItemType(Object item) throws ReflectiveOperationException { - if (DataWatcherObjectFieldResolver == null) { DataWatcherObjectFieldResolver = new FieldResolver(DataWatcherObject); } + if (DataWatcherObjectFieldResolver == null) { + DataWatcherObjectFieldResolver = new FieldResolver(DataWatcherObject); + } Object object = getItemObject(item); Object serializer = DataWatcherObjectFieldResolver.resolve("b").get(object); Type[] genericInterfaces = serializer.getClass().getGenericInterfaces(); @@ -189,7 +201,9 @@ public static Type getItemType(Object item) throws ReflectiveOperationException } public static Object getItemValue(Object item) throws ReflectiveOperationException { - if (DataWatcherItemFieldResolver == null) { DataWatcherItemFieldResolver = new FieldResolver(DataWatcherItem); } + if (DataWatcherItemFieldResolver == null) { + DataWatcherItemFieldResolver = new FieldResolver(DataWatcherItem); + } return DataWatcherItemFieldResolver.resolve("b").get(item); } @@ -371,11 +385,13 @@ public static Object newWatchableObject(int index, Object value) throws Reflecti } public static Object newWatchableObject(int type, int index, Object value) throws ReflectiveOperationException { - if (WatchableObjectConstructorResolver == null) { WatchableObjectConstructorResolver = new ConstructorResolver(WatchableObject); } - return WatchableObjectConstructorResolver.resolve(new Class[] { + if (WatchableObjectConstructorResolver == null) { + WatchableObjectConstructorResolver = new ConstructorResolver(WatchableObject); + } + return WatchableObjectConstructorResolver.resolve(new Class[]{ int.class, int.class, - Object.class }).newInstance(type, index, value); + Object.class}).newInstance(type, index, value); } @SuppressWarnings("unchecked") @@ -395,22 +411,25 @@ public static Object getValue(Object dataWatcher, int index) throws ReflectiveOp } public static int getWatchableObjectIndex(Object object) throws ReflectiveOperationException { - if (WatchableObjectFieldResolver == null) { WatchableObjectFieldResolver = new FieldResolver(WatchableObject); } + if (WatchableObjectFieldResolver == null) { + WatchableObjectFieldResolver = new FieldResolver(WatchableObject); + } return WatchableObjectFieldResolver.resolve("b").getInt(object); } public static int getWatchableObjectType(Object object) throws ReflectiveOperationException { - if (WatchableObjectFieldResolver == null) { WatchableObjectFieldResolver = new FieldResolver(WatchableObject); } + if (WatchableObjectFieldResolver == null) { + WatchableObjectFieldResolver = new FieldResolver(WatchableObject); + } return WatchableObjectFieldResolver.resolve("a").getInt(object); } public static Object getWatchableObjectValue(Object object) throws ReflectiveOperationException { - if (WatchableObjectFieldResolver == null) { WatchableObjectFieldResolver = new FieldResolver(WatchableObject); } + if (WatchableObjectFieldResolver == null) { + WatchableObjectFieldResolver = new FieldResolver(WatchableObject); + } return WatchableObjectFieldResolver.resolve("c").get(object); } } - - private DataWatcher() { - } } diff --git a/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java b/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java index dd782c4..5c1e70b 100644 --- a/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java +++ b/src/main/java/org/inventivetalent/reflection/minecraft/Minecraft.java @@ -21,10 +21,8 @@ */ @SuppressWarnings({"unused", "WeakerAccess"}) public class Minecraft { - static final Pattern NUMERIC_VERSION_PATTERN = Pattern.compile("v([0-9])_([0-9]*)_R([0-9])"); - public static final Version VERSION; - + static final Pattern NUMERIC_VERSION_PATTERN = Pattern.compile("v([0-9])_([0-9]*)_R([0-9])"); private static NMSClassResolver nmsClassResolver = new NMSClassResolver(); private static OBCClassResolver obcClassResolver = new OBCClassResolver(); private static Class NmsEntity; @@ -77,6 +75,18 @@ public static Object getHandleSilent(Object object) { return null; } + public static Object newEnumInstance(Class clazz, Class[] types, Object[] values) throws ReflectiveOperationException { + Constructor constructor = new ConstructorResolver(clazz).resolve(types); + Field accessorField = new FieldResolver(Constructor.class).resolve("constructorAccessor"); + ConstructorAccessor constructorAccessor = (ConstructorAccessor) accessorField.get(constructor); + if (constructorAccessor == null) { + new MethodResolver(Constructor.class).resolve("acquireConstructorAccessor").invoke(constructor); + constructorAccessor = (ConstructorAccessor) accessorField.get(constructor); + } + return constructorAccessor.newInstance(values); + + } + public enum Version { UNKNOWN(-1) { @Override @@ -102,7 +112,7 @@ public boolean matchesPackageName(String packageName) { v1_10_R1(11001), v1_11_R1(11101), - + v1_12_R1(11201); private int version; @@ -111,60 +121,32 @@ public boolean matchesPackageName(String packageName) { this.version = version; } - /** - * @return the version-number - */ - public int version() { - return version; - } - - /** - * @param version the version to check - * @return true if this version is older than the specified version - */ - public boolean olderThan(Version version) { - return version() < version.version(); - } - - /** - * @param version the version to check - * @return true if this version is newer than the specified version - */ - public boolean newerThan(Version version) { - return version() >= version.version(); - } - - /** - * @param oldVersion The older version to check - * @param newVersion The newer version to check - * @return true if this version is newer than the oldVersion and older that the newVersion - */ - public boolean inRange(Version oldVersion, Version newVersion) { - return newerThan(oldVersion) && olderThan(newVersion); - } - - public boolean matchesPackageName(String packageName) { - return packageName.toLowerCase().contains(name().toLowerCase()); - } - public static Version getVersion() { String name = Bukkit.getServer().getClass().getPackage().getName(); String versionPackage = name.substring(name.lastIndexOf('.') + 1) + "."; for (Version version : values()) { - if (version.matchesPackageName(versionPackage)) { return version; } + if (version.matchesPackageName(versionPackage)) { + return version; + } } System.err.println("[ReflectionHelper] Failed to find version enum for '" + name + "'/'" + versionPackage + "'"); System.out.println("[ReflectionHelper] Generating dynamic constant..."); Matcher matcher = NUMERIC_VERSION_PATTERN.matcher(versionPackage); while (matcher.find()) { - if (matcher.groupCount() < 3) { continue; } + if (matcher.groupCount() < 3) { + continue; + } String majorString = matcher.group(1); String minorString = matcher.group(2); - if (minorString.length() == 1) { minorString = "0" + minorString; } + if (minorString.length() == 1) { + minorString = "0" + minorString; + } String patchString = matcher.group(3); - if (patchString.length() == 1) { patchString = "0" + patchString; } + if (patchString.length() == 1) { + patchString = "0" + patchString; + } String numVersionString = majorString + minorString + patchString; int numVersion = Integer.parseInt(numVersionString); @@ -176,13 +158,13 @@ public static Version getVersion() { Version[] oldValues = (Version[]) valuesField.get(null); Version[] newValues = new Version[oldValues.length + 1]; System.arraycopy(oldValues, 0, newValues, 0, oldValues.length); - Version dynamicVersion = (Version) newEnumInstance(Version.class, new Class[] { + Version dynamicVersion = (Version) newEnumInstance(Version.class, new Class[]{ String.class, int.class, - int.class }, new Object[] { + int.class}, new Object[]{ packge, newValues.length - 1, - numVersion }); + numVersion}); newValues[newValues.length - 1] = dynamicVersion; valuesField.set(null, newValues); @@ -197,22 +179,46 @@ public static Version getVersion() { return UNKNOWN; } - @Override - public String toString() { - return name() + " (" + version() + ")"; + /** + * @return the version-number + */ + public int version() { + return version; } - } - public static Object newEnumInstance(Class clazz, Class[] types, Object[] values) throws ReflectiveOperationException { - Constructor constructor = new ConstructorResolver(clazz).resolve(types); - Field accessorField = new FieldResolver(Constructor.class).resolve("constructorAccessor"); - ConstructorAccessor constructorAccessor = (ConstructorAccessor) accessorField.get(constructor); - if (constructorAccessor == null) { - new MethodResolver(Constructor.class).resolve("acquireConstructorAccessor").invoke(constructor); - constructorAccessor = (ConstructorAccessor) accessorField.get(constructor); + /** + * @param version the version to check + * @return true if this version is older than the specified version + */ + public boolean olderThan(Version version) { + return version() < version.version(); + } + + /** + * @param version the version to check + * @return true if this version is newer than the specified version + */ + public boolean newerThan(Version version) { + return version() >= version.version(); + } + + /** + * @param oldVersion The older version to check + * @param newVersion The newer version to check + * @return true if this version is newer than the oldVersion and older that the newVersion + */ + public boolean inRange(Version oldVersion, Version newVersion) { + return newerThan(oldVersion) && olderThan(newVersion); } - return constructorAccessor.newInstance(values); + public boolean matchesPackageName(String packageName) { + return packageName.toLowerCase().contains(name().toLowerCase()); + } + + @Override + public String toString() { + return name() + " (" + version() + ")"; + } } } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java index 5bef06c..0f4d34b 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ConstructorResolver.java @@ -89,7 +89,9 @@ public Constructor resolveLastConstructor() throws ReflectiveOperationException for (Constructor constructor1 : this.clazz.getDeclaredConstructors()) { constructor = constructor1; } - if (constructor != null) { return AccessUtil.setAccessible(constructor); } + if (constructor != null) { + return AccessUtil.setAccessible(constructor); + } return null; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java index 69741d3..1a09339 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/FieldResolver.java @@ -142,7 +142,9 @@ public Field resolveByLastType(Class type) throws ReflectiveOperationExceptio field = field1; } } - if (field == null) { throw new NoSuchFieldException("Could not resolve field of type '" + type.toString() + "' in class " + this.clazz); } + if (field == null) { + throw new NoSuchFieldException("Could not resolve field of type '" + type.toString() + "' in class " + this.clazz); + } return AccessUtil.setAccessible(field); } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java index c050b84..df864e4 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/MemberResolver.java @@ -19,7 +19,9 @@ public abstract class MemberResolver extends ResolverAbstract< protected Class clazz; public MemberResolver(Class clazz) { - if (clazz == null) { throw new IllegalArgumentException("class cannot be null"); } + if (clazz == null) { + throw new IllegalArgumentException("class cannot be null"); + } this.clazz = clazz; } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java b/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java index 3237a28..3e8aeeb 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/MethodResolver.java @@ -19,7 +19,21 @@ public MethodResolver(String className) throws ClassNotFoundException { super(className); } - public Method resolveSignature(String... signatures)throws ReflectiveOperationException { + static boolean ClassListEqual(Class[] l1, Class[] l2) { + boolean equal = true; + if (l1.length != l2.length) { + return false; + } + for (int i = 0; i < l1.length; i++) { + if (l1[i] != l2[i]) { + equal = false; + break; + } + } + return equal; + } + + public Method resolveSignature(String... signatures) throws ReflectiveOperationException { for (Method method : clazz.getDeclaredMethods()) { String methodSignature = MethodWrapper.getMethodSignature(method); for (String s : signatures) { @@ -114,16 +128,4 @@ protected Method resolveObject(ResolverQuery query) throws ReflectiveOperationEx protected NoSuchMethodException notFoundException(String joinedNames) { return new NoSuchMethodException("Could not resolve method for " + joinedNames + " in class " + this.clazz); } - - static boolean ClassListEqual(Class[] l1, Class[] l2) { - boolean equal = true; - if (l1.length != l2.length) { return false; } - for (int i = 0; i < l1.length; i++) { - if (l1[i] != l2[i]) { - equal = false; - break; - } - } - return equal; - } } diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java b/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java index 115e535..7b132ff 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ResolverAbstract.java @@ -41,10 +41,14 @@ protected T resolveSilent(ResolverQuery... queries) { * @throws IllegalArgumentException if the given possibilities are empty */ protected T resolve(ResolverQuery... queries) throws ReflectiveOperationException { - if (queries == null || queries.length <= 0) { throw new IllegalArgumentException("Given possibilities are empty"); } + if (queries == null || queries.length <= 0) { + throw new IllegalArgumentException("Given possibilities are empty"); + } for (ResolverQuery query : queries) { //Object is already resolved, return it directly - if (resolvedObjects.containsKey(query)) { return resolvedObjects.get(query); } + if (resolvedObjects.containsKey(query)) { + return resolvedObjects.get(query); + } //Object is not yet resolved, try to find it try { diff --git a/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java b/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java index c04588d..5a4321f 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/ResolverQuery.java @@ -12,7 +12,7 @@ @SuppressWarnings({"unused", "WeakerAccess"}) public class ResolverQuery { - private String name; + private String name; private Class[] types; public ResolverQuery(String name, Class... types) { @@ -29,6 +29,10 @@ public ResolverQuery(Class... types) { this.types = types; } + public static Builder builder() { + return new Builder(); + } + public String getName() { return name; } @@ -39,12 +43,18 @@ public Class[] getTypes() { @Override public boolean equals(Object o) { - if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { return false; } + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } ResolverQuery that = (ResolverQuery) o; - if (name != null ? !name.equals(that.name) : that.name != null) { return false; } + if (name != null ? !name.equals(that.name) : that.name != null) { + return false; + } // Probably incorrect - comparing Object[] arrays with Arrays.equals return Arrays.equals(types, that.types); @@ -65,10 +75,6 @@ public String toString() { '}'; } - public static Builder builder() { - return new Builder(); - } - /** * Builder class for {@link ResolverQuery} Access using {@link ResolverQuery#builder()} */ diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java index 22f2fe3..aa94dd1 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ClassWrapper.java @@ -40,8 +40,12 @@ public R newInstanceSilent() { @Override public boolean equals(Object object) { - if (this == object) { return true; } - if (object == null || getClass() != object.getClass()) { return false; } + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } ClassWrapper that = (ClassWrapper) object; diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java index 707790f..9a6d152 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/ConstructorWrapper.java @@ -42,8 +42,12 @@ public Constructor getConstructor() { @Override public boolean equals(Object object) { - if (this == object) { return true; } - if (object == null || getClass() != object.getClass()) { return false; } + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } ConstructorWrapper that = (ConstructorWrapper) object; diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java index 5038c44..8d2a667 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/FieldWrapper.java @@ -59,8 +59,12 @@ public Field getField() { @Override public boolean equals(Object object) { - if (this == object) { return true; } - if (object == null || getClass() != object.getClass()) { return false; } + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } FieldWrapper that = (FieldWrapper) object; diff --git a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java index 3701fca..3225132 100644 --- a/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java +++ b/src/main/java/org/inventivetalent/reflection/resolver/wrapper/MethodWrapper.java @@ -14,6 +14,47 @@ public MethodWrapper(Method method) { this.method = method; } + /** + * Generates a method's signature. + * + * @param method the method to get the signature for + * @param fullClassNames whether to use the full class name + * @return the method's signature + */ + public static String getMethodSignature(Method method, boolean fullClassNames) { + // StringBuilder stringBuilder = new StringBuilder(); + // + // Class returnType = method.getReturnType(); + // if (returnType.isPrimitive()) { + // stringBuilder.append(returnType); + // } else { + // stringBuilder.append(fullClassNames ? returnType.getName() : returnType.getSimpleName()); + // } + // stringBuilder.append(" "); + // stringBuilder.append(method.getName()); + // + // stringBuilder.append("("); + // + // boolean first = true; + // for (Class clazz : method.getParameterTypes()) { + // if (!first) { stringBuilder.append(","); } + // stringBuilder.append(fullClassNames ? clazz.getName() : clazz.getSimpleName()); + // first = false; + // } + // return stringBuilder.append(")").toString(); + + return MethodSignature.of(method, fullClassNames).getSignature(); + } + + /** + * @param method Method to get the signature for + * @return the signature + * @see #getMethodSignature(Method, boolean) + */ + public static String getMethodSignature(Method method) { + return getMethodSignature(method, false); + } + @Override public boolean exists() { return this.method != null; @@ -47,8 +88,12 @@ public Method getMethod() { @Override public boolean equals(Object object) { - if (this == object) { return true; } - if (object == null || getClass() != object.getClass()) { return false; } + if (this == object) { + return true; + } + if (object == null || getClass() != object.getClass()) { + return false; + } MethodWrapper that = (MethodWrapper) object; @@ -60,56 +105,15 @@ public int hashCode() { return method != null ? method.hashCode() : 0; } - /** - * Generates a method's signature. - * - * @param method the method to get the signature for - * @param fullClassNames whether to use the full class name - * @return the method's signature - */ - public static String getMethodSignature(Method method, boolean fullClassNames) { - // StringBuilder stringBuilder = new StringBuilder(); - // - // Class returnType = method.getReturnType(); - // if (returnType.isPrimitive()) { - // stringBuilder.append(returnType); - // } else { - // stringBuilder.append(fullClassNames ? returnType.getName() : returnType.getSimpleName()); - // } - // stringBuilder.append(" "); - // stringBuilder.append(method.getName()); - // - // stringBuilder.append("("); - // - // boolean first = true; - // for (Class clazz : method.getParameterTypes()) { - // if (!first) { stringBuilder.append(","); } - // stringBuilder.append(fullClassNames ? clazz.getName() : clazz.getSimpleName()); - // first = false; - // } - // return stringBuilder.append(")").toString(); - - return MethodSignature.of(method, fullClassNames).getSignature(); - } - - /** - * @param method Method to get the signature for - * @return the signature - * @see #getMethodSignature(Method, boolean) - */ - public static String getMethodSignature(Method method) { - return getMethodSignature(method, false); - } - public static class MethodSignature { static final Pattern SIGNATURE_STRING_PATTERN = Pattern.compile("(.+) (.*)\\((.*)\\)"); - private final String returnType; - private final Pattern returnTypePattern; - private final String name; - private final Pattern namePattern; + private final String returnType; + private final Pattern returnTypePattern; + private final String name; + private final Pattern namePattern; private final String[] parameterTypes; - private final String signature; + private final String signature; public MethodSignature(String returnType, String name, String[] parameterTypes) { this.returnType = returnType; @@ -155,7 +159,9 @@ public static MethodSignature of(Method method, boolean fullClassNames) { } public static MethodSignature fromString(String signatureString) { - if (signatureString == null) { return null; } + if (signatureString == null) { + return null; + } Matcher matcher = SIGNATURE_STRING_PATTERN.matcher(signatureString); if (matcher.find()) { if (matcher.groupCount() != 3) { @@ -206,7 +212,9 @@ public String getSignature() { * @return whether the signatures match */ public boolean matches(MethodSignature other) { - if (other == null) { return false; } + if (other == null) { + return false; + } //if (!returnType.equals(other.returnType)) { // if (!isReturnTypeWildcard()) { return false; } @@ -227,7 +235,9 @@ public boolean matches(MethodSignature other) { if (!namePattern.matcher(other.name).matches()) { return false; } - if (parameterTypes.length != other.parameterTypes.length) { return false; } + if (parameterTypes.length != other.parameterTypes.length) { + return false; + } for (int i = 0; i < parameterTypes.length; i++) { if (!Pattern.compile(getParameterType(i).replace("?", "\\w").replace("*", "\\w*")).matcher(other.getParameterType(i)).matches()) { return false; diff --git a/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java b/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java index 94448ec..c1b61c0 100644 --- a/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java +++ b/src/main/java/org/inventivetalent/reflection/util/AccessUtil.java @@ -17,7 +17,7 @@ private AccessUtil() { * * @param field Field to set accessible * @return the Field - * @throws ReflectiveOperationException (usually never) + * @throws ReflectiveOperationException (usually never) */ public static Field setAccessible(Field field) throws ReflectiveOperationException { field.setAccessible(true); @@ -32,7 +32,7 @@ public static Field setAccessible(Field field) throws ReflectiveOperationExcepti * * @param method Method to set accessible * @return the Method - * @throws ReflectiveOperationException (usually never) + * @throws ReflectiveOperationException (usually never) */ public static Method setAccessible(Method method) throws ReflectiveOperationException { method.setAccessible(true); @@ -44,7 +44,7 @@ public static Method setAccessible(Method method) throws ReflectiveOperationExce * * @param constructor Constructor to set accessible * @return the Constructor - * @throws ReflectiveOperationException (usually never) + * @throws ReflectiveOperationException (usually never) */ public static Constructor setAccessible(Constructor constructor) throws ReflectiveOperationException { constructor.setAccessible(true); From c0a3c32c7bcf07d1790e09dc709623a6df2beb57 Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:17:58 +0200 Subject: [PATCH 07/12] Suppress warnings --- .../java/org/inventivetalent/reflection/annotation/Class.java | 1 + .../java/org/inventivetalent/reflection/annotation/Field.java | 1 + .../java/org/inventivetalent/reflection/annotation/Method.java | 1 + 3 files changed, 3 insertions(+) diff --git a/src/main/java/org/inventivetalent/reflection/annotation/Class.java b/src/main/java/org/inventivetalent/reflection/annotation/Class.java index 15761c5..f2a7068 100644 --- a/src/main/java/org/inventivetalent/reflection/annotation/Class.java +++ b/src/main/java/org/inventivetalent/reflection/annotation/Class.java @@ -12,6 +12,7 @@ */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) +@SuppressWarnings("unused") public @interface Class { /** diff --git a/src/main/java/org/inventivetalent/reflection/annotation/Field.java b/src/main/java/org/inventivetalent/reflection/annotation/Field.java index 80430fe..bcd4760 100644 --- a/src/main/java/org/inventivetalent/reflection/annotation/Field.java +++ b/src/main/java/org/inventivetalent/reflection/annotation/Field.java @@ -12,6 +12,7 @@ */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) +@SuppressWarnings("unused") public @interface Field { /** diff --git a/src/main/java/org/inventivetalent/reflection/annotation/Method.java b/src/main/java/org/inventivetalent/reflection/annotation/Method.java index ddd2513..a4352de 100644 --- a/src/main/java/org/inventivetalent/reflection/annotation/Method.java +++ b/src/main/java/org/inventivetalent/reflection/annotation/Method.java @@ -12,6 +12,7 @@ */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) +@SuppressWarnings("unused") public @interface Method { /** From 64c0b8a4c5a129fd2f48f87165d25746722b9acf Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:19:58 +0200 Subject: [PATCH 08/12] Fix travis build --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b0a84a3..6cf501f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,10 @@ +sudo: false language: java jdk: - oraclejdk8 -script: "mvn deploy --settings settings.xml" +script: "mvn clean package deploy --settings settings.xml" + env: global: - secure: "hKUxyzr5yj9u7JTOpN8r09P/8X9AJMiVvNvgERq+KIG7ngm3hsxODg/CQiB64ch3Rx3molO6g7qUBUTFa4/OiFqmCePxEF+ZpjGER+9tjpWA4Ot/EKWP+ERAuMg/2M7sPhjzfbV1UJfhEvRGNhThTdiThgXeTAG9DIpUAuaYTCfevFRJuFVaunqGN/f0nKNLEr95DkkYycgni2wye1sRRvcOM+shv/VM3YxwCUlUGEEuMlxaN0vvw13n/keu4Jr2qvfyw7750mqu2IqqTLeVpEZgZwb1bM8U2DcVKv6527fOCWQf1+c/3aPHXQnJly1TeS69k4WadefrVZbsA4y5NwX+vE8Ju+0zBSACWQTGGewZAzZIxIrh7m3VXMouvAdQckt8o4vea7Gq61coOXbNuY6rEdHGofEmrWZccjV0Hn8dpVDxTk7jAWxnO+TxOekdLI3mviqyi/Bfn/obqrGvreUOYoFhKyP9ZR2WWO2To0hyhDDyZxHdq1OPjMqeeFYqG40lDq7LvIhFKeT1zt+vR/X+oV04YuZ7/AyhFP0mwjSFeITf8rh7RmPaJrQxE/g3/aXTAEqGtwOUhsIfnAOAI0kiw1qQlNou+iGWwfXVjBX91dsARWXwD6AzMh9FQaQjh0wwj0Ue6H5+K0d9lK0UmWGVZU0O+sKLxulO4D3r2DM=" @@ -13,7 +15,7 @@ deploy: secure: "jA5sN5LpJJUUeTvSdsbAJqrvQvqo05dUeRQDEBgCYA8qDa4aEV0YOOEloscw6nNHSt1cU942oI50Xxp8Ykvfxk8FtRFj4COR3bjtLu2COF4jo/tVa7xcyQhh9dPe2srZkmb59CY5KdjwhMcnlk8B8F0p5ir3NWyoFtwEHeLbfRSCMhHqkwosmSM+V11k3+xG8RcZnTlfTqt/I1GnSoL7vUfLUt16IU5CSioomlW3SMJ0wCpb62iTyTQO7WWfRWa3Yl8kYp+nNXS+2zT1821eLAVH7LugZOs22y0OMu+Mka2uwWa5ylbEttqsJwe2ZTJP5fSDN20uyOcJFNLf67bD87BOEz73kl5E/dwJwvJe8XQtveSZ+LP+Iw1viOia8gYUnnI+l9JRGKNECurbY9QC2/5UjCzULw8NRyNjfLU1C+5htT+BNM+O+Oa6PWqvTONDJgR8dGl476vVJL8JLwfBtjrvMXAC3lqEAi4Y0j9eGOYWihSekfyWnPPiL+oyRUMqqhHLrvC+iKrEWpK+9p0hN9nQ6ugbHyi8o4+F+6iqlmoS/mH9P0hekEUJ5WybqcvncGFvKfMFmXVY3vjg2QoDwqNG4Z/K8phbDHGhcTyoFjpMTEnfJTuAEQTxPSslHvkdw7VjKSjyJ8yn0+Yt2SpsDMsINUtyrAsnui2tWbuS54w=" file_glob: true file: - - "target/ReflectionHelper_v*.jar" + - "target/reflectionhelper-*.jar" skip_cleanup: true on: tags: true From 8ea809c171dec5b720b3b7055059fd3866fa3712 Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:23:32 +0200 Subject: [PATCH 09/12] Suppress proprietary API warnings, set project encoding --- pom.xml | 6 ++++++ .../java/org/inventivetalent/reflection/ReflectionTest.java | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 4cdbdd9..d4c7702 100644 --- a/pom.xml +++ b/pom.xml @@ -11,12 +11,18 @@ ReflectionHelper API for accessing various classes and their members using reflection. + + UTF-8 + + maven-compiler-plugin 3.6.2 + true + -XDignore.symbol.file 1.8 1.8 diff --git a/src/test/java/org/inventivetalent/reflection/ReflectionTest.java b/src/test/java/org/inventivetalent/reflection/ReflectionTest.java index 276c389..7593f2c 100644 --- a/src/test/java/org/inventivetalent/reflection/ReflectionTest.java +++ b/src/test/java/org/inventivetalent/reflection/ReflectionTest.java @@ -66,9 +66,9 @@ public void signatureObjectTest() throws ReflectiveOperationException { MethodWrapper.MethodSignature signature = MethodWrapper.MethodSignature.of(ReflectionTest.class.getMethod("genericDummyMethod", Thread.class, Exception.class), false); assertEquals("Method", signature.getReturnType()); assertEquals("genericDummyMethod", signature.getName()); - assertArrayEquals(new String[] { + assertArrayEquals(new String[]{ "Thread", - "Exception" }, signature.getParameterTypes()); + "Exception"}, signature.getParameterTypes()); } @Test From 0d25d401a1be72fe960cde83ebe9071186b92a03 Mon Sep 17 00:00:00 2001 From: sgdc3 Date: Mon, 25 Sep 2017 17:42:11 +0200 Subject: [PATCH 10/12] Whoops, wrong spigot repository --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d4c7702..81cdf52 100644 --- a/pom.xml +++ b/pom.xml @@ -32,8 +32,8 @@ - md_5-repo - http://repo.md-5.net/content/repositories/public/ + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ From 55151c3507e083fa09677725ee9dd877b15e8df1 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Mon, 25 Sep 2017 19:21:22 +0200 Subject: [PATCH 11/12] Remove custom deployer --- .travis.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6cf501f..eafdcd1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,13 +9,3 @@ env: global: - secure: "hKUxyzr5yj9u7JTOpN8r09P/8X9AJMiVvNvgERq+KIG7ngm3hsxODg/CQiB64ch3Rx3molO6g7qUBUTFa4/OiFqmCePxEF+ZpjGER+9tjpWA4Ot/EKWP+ERAuMg/2M7sPhjzfbV1UJfhEvRGNhThTdiThgXeTAG9DIpUAuaYTCfevFRJuFVaunqGN/f0nKNLEr95DkkYycgni2wye1sRRvcOM+shv/VM3YxwCUlUGEEuMlxaN0vvw13n/keu4Jr2qvfyw7750mqu2IqqTLeVpEZgZwb1bM8U2DcVKv6527fOCWQf1+c/3aPHXQnJly1TeS69k4WadefrVZbsA4y5NwX+vE8Ju+0zBSACWQTGGewZAzZIxIrh7m3VXMouvAdQckt8o4vea7Gq61coOXbNuY6rEdHGofEmrWZccjV0Hn8dpVDxTk7jAWxnO+TxOekdLI3mviqyi/Bfn/obqrGvreUOYoFhKyP9ZR2WWO2To0hyhDDyZxHdq1OPjMqeeFYqG40lDq7LvIhFKeT1zt+vR/X+oV04YuZ7/AyhFP0mwjSFeITf8rh7RmPaJrQxE/g3/aXTAEqGtwOUhsIfnAOAI0kiw1qQlNou+iGWwfXVjBX91dsARWXwD6AzMh9FQaQjh0wwj0Ue6H5+K0d9lK0UmWGVZU0O+sKLxulO4D3r2DM=" - secure: "GH3FtcvragmFD2wbXc9nOCHT4qp8P7aQ8KmSpRbAJ1LR+OkEjvOk1RZwkGjEzQ4AJGWhFHFX3WmFR/9si0ystdWEBI1pubL/L7o79q5l8H60Az90lrz8hmruGeZaVs5klFQBE8IWQ9BvR3n8OGCOIZCqDIshJIB1+3QX7X7vIK95M91ZPps4N5gRpwwU69pB1N16MKJ1BhzZQIWTvA+rB+x5lAlomjWJEwCGuT2d1ZkBjTex/sGEab816LbfOp4/6DvoOdO45FiqCebaSwO6j7Ejg7WV19Q2XLFN6GaFyESHW0hrpoAg96jWyJrKjEP9N0+l7MgwvweZ/cME8BVyA7mstLeqpJgLMlNTKoknKwOv0NNeUn4a64NwCzjkVziokncbCBiJLdw5r0usJqW7rbo9fmQI710asItJN56rqH+elsa1vDpzqSpEqBB3T5AW4VBvsMu5BFhEmC+9W5iMiUhqP/CMFW2+IJeGh4Shb2BNeUm2uelHTiQTogv4/7fK1UUM6opYz2OtFakZO288isg5r+jTrZYFAVVhq4tczyDDhF5fTw9lcpZmreVh/z0u0TemDXM44Iw3wsg8Hmyh+d3C9gDjknpprX3UAN2b2R82+cA43dW3x4rs5m/aHQ4rHuK4oMH0T57gSDtgxp01YjMPQ57Fus2Z8FKVnfhZ8KI=" -deploy: - provider: releases - api_key: - secure: "jA5sN5LpJJUUeTvSdsbAJqrvQvqo05dUeRQDEBgCYA8qDa4aEV0YOOEloscw6nNHSt1cU942oI50Xxp8Ykvfxk8FtRFj4COR3bjtLu2COF4jo/tVa7xcyQhh9dPe2srZkmb59CY5KdjwhMcnlk8B8F0p5ir3NWyoFtwEHeLbfRSCMhHqkwosmSM+V11k3+xG8RcZnTlfTqt/I1GnSoL7vUfLUt16IU5CSioomlW3SMJ0wCpb62iTyTQO7WWfRWa3Yl8kYp+nNXS+2zT1821eLAVH7LugZOs22y0OMu+Mka2uwWa5ylbEttqsJwe2ZTJP5fSDN20uyOcJFNLf67bD87BOEz73kl5E/dwJwvJe8XQtveSZ+LP+Iw1viOia8gYUnnI+l9JRGKNECurbY9QC2/5UjCzULw8NRyNjfLU1C+5htT+BNM+O+Oa6PWqvTONDJgR8dGl476vVJL8JLwfBtjrvMXAC3lqEAi4Y0j9eGOYWihSekfyWnPPiL+oyRUMqqhHLrvC+iKrEWpK+9p0hN9nQ6ugbHyi8o4+F+6iqlmoS/mH9P0hekEUJ5WybqcvncGFvKfMFmXVY3vjg2QoDwqNG4Z/K8phbDHGhcTyoFjpMTEnfJTuAEQTxPSslHvkdw7VjKSjyJ8yn0+Yt2SpsDMsINUtyrAsnui2tWbuS54w=" - file_glob: true - file: - - "target/reflectionhelper-*.jar" - skip_cleanup: true - on: - tags: true From fb5d23485bf9fd3f767f90b99bde38c3fd78c6fe Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Mon, 25 Sep 2017 22:53:03 +0200 Subject: [PATCH 12/12] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 81cdf52..529c456 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.inventivetalent reflectionhelper - 1.13.0-SNAPSHOT + 1.13.1-SNAPSHOT ReflectionHelper API for accessing various classes and their members using reflection.