public static ContextualStatementBuilder invokeStatic(final MetaClass clazz, final String methodName, final Object... parameters) { return StatementBuilder.create().invokeStatic(clazz, methodName, parameters); }
public static ContextualStatementBuilder invokeStatic(final Class<?> clazz, final String methodName, final Object... parameters) { return StatementBuilder.create().invokeStatic(clazz, methodName, parameters); }
public static ContextualStatementBuilder invokeStatic(final MetaClass clazz, final String methodName, final Object... parameters) { return StatementBuilder.create().invokeStatic(clazz, methodName, parameters); }
public static ContextualStatementBuilder invokeStatic(final Class<?> clazz, final String methodName, final Object... parameters) { return StatementBuilder.create().invokeStatic(clazz, methodName, parameters); }
@Test @SuppressWarnings(value = { "all" }) public void testCreateAndInitializeTwoDimensionalArrayWithStatements() { final String s = StatementBuilder.create().newArray(String.class) .initialize(new Statement[][] { { StatementBuilder.create().invokeStatic(Integer.class, "toString", 1), StatementBuilder.create().invokeStatic(Integer.class, "toString", 2) }, { StatementBuilder.create().invokeStatic(Integer.class, "toString", 3), StatementBuilder.create().invokeStatic(Integer.class, "toString", 4) } }) .toJavaString(); assertEquals("Failed to generate two dimensional array using statements", "new String[][] { { Integer.toString(1), Integer.toString(2) }, " + "{ Integer.toString(3), Integer.toString(4) } }", s); }
@Test @SuppressWarnings(value = { "all" }) public void testCreateAndInitializeTwoDimensionalArrayWithStatementsAndLiterals() { final String s = StatementBuilder.create().newArray(String.class) .initialize(new Object[][] { { StatementBuilder.create().invokeStatic(Integer.class, "toString", 1), "2" }, { StatementBuilder.create().invokeStatic(Integer.class, "toString", 3), "4" } }) .toJavaString(); assertEquals("Failed to generate two dimensional array using statements and objects", "new String[][] { { Integer.toString(1), \"2\" }," + " { Integer.toString(3), \"4\" } }", s); }
@Test public void testInvokeStaticMethod() { String s = StatementBuilder.create() .invokeStatic(Integer.class, "getInteger", "123") .toJavaString(); assertEquals("Failed to generate static method invocation", "Integer.getInteger(\"123\")", s); }
final Statement subscribeStatement = Stmt.create(ctx).invokeStatic(CDI.class, subscribeMethod, parmClassName, callBackBlock.finish().finish());
@Test public void testInvokeUndefinedStaticMethod() { try { StatementBuilder.create() .invokeStatic(Integer.class, "intValue") .toJavaString(); fail("expected UndefinedMethodException"); } catch (UndefinedMethodException udme) { // expected assertEquals("Wrong exception details", udme.getMethodName(), "intValue"); } }
@Test public void testInvokeWithParameterizedClassAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("set", Set.class, StatementBuilder.create().invokeStatic(Foo.class, "baz", Set.class)) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from Class<T>", "Set set = Foo.baz(Set.class);", s); }
@Test public void testInvokeWithVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("s", String.class) .declareVariable("str", String.class, StatementBuilder.create().invokeStatic(Foo.class, "foo", Variable.get("s"))) .toJavaString(); assertEquals("Failed to generate method invocation using variable return type", "String str = Foo.foo(s);", s); }
@Test public void testInvokeWithParameterizedListAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("list", new TypeLiteral<List<String>>() { }) .declareVariable("str", String.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("list"))) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from List<T>", "String str = Foo.bar(list);", s); }
@Test public void testInvokeWithParameterizedMapAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("map", new TypeLiteral<Map<String, Integer>>() { }) .declareVariable("val", Integer.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("map"))) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from Map<K, V>", "Integer val = Foo.bar(map);", s); }
@Test public void testInvokeWithNestedParameterizedListAndVariableReturnType() { String s = StatementBuilder.create(Context.create().autoImport()) .declareVariable("n", int.class) .declareVariable("list", new TypeLiteral<List<List<Map<String, Integer>>>>() { }) .declareVariable("str", String.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("n"), Variable.get("list"))) .toJavaString(); assertEquals("Failed to generate method invocation with variable return type inferred from nested List<T>", "String str = Foo.bar(n, list);", s); }
@Test public void testInvokeWithInvalidVariableReturnType() { try { StatementBuilder.create(Context.create().autoImport()) .declareVariable("list", new TypeLiteral<List<String>>() { }) .declareVariable("n", Integer.class, StatementBuilder.create().invokeStatic(Foo.class, "bar", Variable.get("list"))) .toJavaString(); fail("expected InvalidTypeException"); } catch (InvalidTypeException e) { // expected assertEquals("Wrong exception message", "java.lang.Integer is not assignable from java.lang.String", e.getMessage()); } }