Bladeren bron

fix: DynamicInvoker (argument boxing)

Mariusz Sieroń 6 jaren geleden
bovenliggende
commit
7360d4cefd

+ 1 - 1
assira/src/main/java/net/ranides/assira/generic/DynamicInvoker.java

@@ -148,7 +148,7 @@ public class DynamicInvoker {
         private final Function func;
 
         public RFunction(Class<?> arg, IClass<?> ret, Function func) {
-            this.arg = arg;
+            this.arg = ClassUtils.box(arg);
             this.ret = ret;
             this.func = func;
         }

+ 16 - 0
assira/src/test/java/net/ranides/assira/generic/DynamicInvokerTest.java

@@ -53,6 +53,17 @@ public class DynamicInvokerTest {
 
     }
 
+    @Test
+    public void boxing() {
+
+        DynamicInvoker di = DynamicInvoker.builder()
+                .appendDelegate(new InvokeHelper(0))
+                .build();
+
+        assertEquals("7+7=14", di.call(7));
+        assertEquals("7+7=14", di.call(String.class, 7));
+    }
+
     @Test
     public void generic() {
 
@@ -102,5 +113,10 @@ public class DynamicInvokerTest {
             return Arrays.stream(value.split(",")).map(Integer::parseInt).collect(Collectors.toList());
         }
 
+        @Meta.DynamicDispatch
+        private static String add(int add) {
+            return add+"+"+add+"="+(add+add);
+        }
+
     }
 }