@Override public String toJavaString() { final Collection<Variable> vars = context.getDeclaredVariables(); final StringBuilder buf = new StringBuilder(128); vars.forEach(var -> buf.append(var.generate(context)).append(";\n")); return buf.toString(); }
@Override public String toJavaString() { final Collection<Variable> vars = context.getDeclaredVariables(); final StringBuilder buf = new StringBuilder(128); vars.forEach(var -> buf.append(var.generate(context)).append(";\n")); return buf.toString(); }
@Override public String generate(Context context) { if (generatedCache != null) return generatedCache; final StringBuilder buf = new StringBuilder("try {\n"); buf.append(block.generate(context)).append("\n} "); if (!catchBlocks.isEmpty()) { for (final Variable exception : catchBlocks.keySet()) { final Context ctx = Context.create(context).addVariable(exception); buf.append("catch (").append(exception.generate(ctx)).append(") ") .append("{\n") .append(catchBlocks.get(exception).generate(ctx)) .append("\n} "); } } else if (finallyBlock == null) { finallyBlock = new BlockStatement(); } if (finallyBlock != null) { final Context ctx = Context.create(context); buf.append(" finally {\n").append(finallyBlock.generate(ctx)).append("\n}\n"); } return generatedCache = buf.toString(); } }
@Override public String generate(Context context) { if (generatedCache != null) return generatedCache; final StringBuilder buf = new StringBuilder("try {\n"); buf.append(block.generate(context)).append("\n} "); if (!catchBlocks.isEmpty()) { for (final Variable exception : catchBlocks.keySet()) { final Context ctx = Context.create(context).addVariable(exception); buf.append("catch (").append(exception.generate(ctx)).append(") ") .append("{\n") .append(catchBlocks.get(exception).generate(ctx)) .append("\n} "); } } else if (finallyBlock == null) { finallyBlock = new BlockStatement(); } if (finallyBlock != null) { final Context ctx = Context.create(context); buf.append(" finally {\n").append(finallyBlock.generate(ctx)).append("\n}\n"); } return generatedCache = buf.toString(); } }
@Override public void handleCall(final CallWriter writer, final Context context, final Statement statement) { writer.reset(); context.addVariable(variable); writer.append(variable.generate(context)); if (next == null) { writer.append(";"); } nextOrReturn(writer, context, null); }
@Override public void handleCall(final CallWriter writer, final Context context, final Statement statement) { writer.reset(); context.addVariable(variable); writer.append(variable.generate(context)); if (next == null) { writer.append(";"); } nextOrReturn(writer, context, null); }
@Test public void testAddVariableWithObjectInitializationWithStringTypeInference() { Context ctx = ContextBuilder.create().addVariable("str", ObjectBuilder.newInstanceOf(String.class)).getContext(); VariableReference str = ctx.getVariable("str"); assertEquals("Wrong variable name", "str", str.getName()); // variable type and value cannot be verified before initialization statement was generated. Variable v = ctx.getVariables().get("str"); v.generate(ctx); assertNotNull("Value could not be generated", v.getValue()); Assert.assertEquals("Wrong variable type", MetaClassFactory.get(String.class), v.getType()); } }
@Test public void testAddVariableWithObjectInitializationWithExactTypeProvided() { Context ctx = ContextBuilder.create().addVariable("str", String.class, ObjectBuilder.newInstanceOf(String.class)).getContext(); VariableReference str = ctx.getVariable("str"); assertEquals("Wrong variable name", "str", str.getName()); Assert.assertEquals("Wrong variable type", MetaClassFactory.get(String.class), str.getType()); // variable value cannot be verified before initialization statement was generated. Variable v = ctx.getVariables().get("str"); v.generate(ctx); assertNotNull("Value could not be generated", v.getValue()); }