Selaa lähdekoodia

fix: CGAdapter: ignore non-abstract methods

Mariusz Sieroń 6 vuotta sitten
vanhempi
commit
973377c82e

+ 3 - 1
assira/src/main/java/net/ranides/assira/reflection/impl/CGAdapter.java

@@ -79,7 +79,9 @@ public class CGAdapter {
         implementWriteReplace();
 
         for(IMethod m : adapter.methods()) {
-            new MethodLink(m).link();
+            if (m.attributes().has(IAttribute.ABSTRACT)) {
+                new MethodLink(m).link();
+            }
         }
 
         declareStatic();

+ 2 - 1
assira/src/test/java/net/ranides/assira/reflection/AdapterFactoryTest.java

@@ -185,8 +185,9 @@ public class AdapterFactoryTest {
         LongInterface adapter = AdapterFactory.getSystem().cast(IClass.typeinfo(LongInterface.class), mock);
 
         adapter.putNumbers("name", 1200L, "-", -5L);
+        adapter.putNumbers(70L);
         assertEquals(33L, adapter.parseMe("33"));
 
-        assertEquals(Arrays.asList("putNumbers name:1200:-:-5", "parseMe 33"), mock.calls);
+        assertEquals(Arrays.asList("putNumbers name:1200:-:-5", "putNumbers auto:70:-:70", "parseMe 33"), mock.calls);
     }
 }

+ 8 - 0
assira/src/test/java/net/ranides/assira/reflection/adapter/example/LongInterface.java

@@ -10,4 +10,12 @@ public interface LongInterface {
 
     long parseMe(String arg);
 
+    default void putNumbers(long v) {
+        putNumbers("auto", v, "-", v);
+    }
+
+    static String getVersion() {
+        return "1.0";
+    }
+
 }