private Statement generateInterceptorLogic(ClassStructureBuilder<?> classBuilder, MetaMethod method, Statement requestLogic, List<Statement> parmVars, List<Class<?>> interceptors) { final Statement callContext = ProxyUtil.generateProxyMethodCallContext(context, RemoteCallContext.class, classBuilder.getClassDefinition(), method, requestLogic, interceptors).finish(); return Stmt.try_() .append( Stmt.declareVariable(CallContextStatus.class).asFinal().named("status").initializeWith( Stmt.newObject(CallContextStatus.class).withParameters(interceptors.toArray()))) .append( Stmt.declareVariable(RemoteCallContext.class).asFinal().named("callContext") .initializeWith(callContext)) .append( Stmt.loadVariable("callContext").invoke("setParameters", Stmt.newArray(Object.class).initialize(parmVars.toArray()))) .append( Stmt.loadVariable("callContext").invoke("proceed")) .finish() .catch_(Throwable.class, "throwable") .append( If.cond(Bool.notEquals(Stmt.loadVariable("errorCallback"), Stmt.loadLiteral(null))) .append( If.cond(Stmt.loadVariable("errorCallback").invoke("error", Stmt.load(null), Variable.get("throwable"))) .append(Stmt.loadVariable("this").invoke("invokeDefaultErrorHandlers", Variable.get("throwable"))) .finish() ).finish() .else_() .append(Stmt.loadVariable("this").invoke("invokeDefaultErrorHandlers", Variable.get("throwable"))) .finish()) .finish(); }
private BlockBuilder<ElseBlockBuilder> updateGetMarshallerConditionalBlock(BlockBuilder<ElseBlockBuilder> getMarshallerConditionalBlock, final String helperMethodName) { getMarshallerConditionalBlock = getMarshallerConditionalBlock.finish().elseif_(StringStatement.of(helperMethodName + "(a0)", boolean.class)) .append(Stmt.loadVariable(MARSHALLERS_VAR).invoke("get", Stmt.loadVariable("a0")).returnValue()); return getMarshallerConditionalBlock; }
@Test public void testIfBlockWithNullCheck() { String s = StatementBuilder.create() .declareVariable("str", String.class) .loadVariable("str") .if_(BooleanOperator.NotEquals, null) .finish() .toJavaString(); assertEquals("Failed to generate if block using a null rhs", EMPTY_IF_BLOCK_NULL_RHS, s); }
@Test public void testIfElseIfBlockUsingRhsAndElseifKeyword() { Context c = ContextBuilder.create().addVariable("n", Integer.class).addVariable("m", Integer.class).getContext(); String s = StatementBuilder.create(c) .loadVariable("n") .if_(BooleanOperator.GreaterThan, Variable.get("m")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(0)) .finish() .elseif_(StatementBuilder.create(c).loadVariable("m"), BooleanOperator.GreaterThan, Variable.get("n")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() .elseif_(StatementBuilder.create(c).loadVariable("m"), BooleanOperator.Equals, Variable.get("n")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(2)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(3)) .finish().toJavaString(); assertEquals("Failed to generate if - else if - else block using rhs", IF_ELSEIF_ELSE_BLOCK_RHS, s); }
@Test public void testIfElseIfBlockUsingNoRhsAndElseifKeyword() { Context c = ContextBuilder.create().addVariable("s", String.class).addVariable("n", Integer.class).getContext(); String s = StatementBuilder.create(c) .loadVariable("s") .invoke("endsWith", "abc") .if_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(0)) .finish() .elseif_(StatementBuilder.create(c).loadVariable("s").invoke("startsWith", "def")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish().toJavaString(); assertEquals("Failed to generate if-elseif block using no rhs", IF_ELSEIF_BLOCK_NO_RHS, s); }
@Test public void testIfElseIfElseBlockUsingNoRhsAndElseifKeyword() { Context c = ContextBuilder.create().addVariable("s", String.class).addVariable("n", Integer.class).getContext(); String s = StatementBuilder.create(c) .loadVariable("s") .invoke("endsWith", "abc") .if_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(0)) .finish() .elseif_(StatementBuilder.create(c).loadVariable("s").invoke("startsWith", "def")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(2)) .finish().toJavaString(); assertEquals("Failed to generate if - elseif - else block using no rhs", IF_ELSEIF_ELSE_BLOCK_NO_RHS, s); }
@Test public void testIfBlockUnchainedWithNestedExpressions() { Context ctx = Context.create().addVariable("a", boolean.class) .addVariable("b", boolean.class); String s = Stmt.create(ctx) .if_(Bool.expr( Bool.expr("foo", BooleanOperator.Equals, "bar"), BooleanOperator.Or, Bool.expr( Bool.expr("cat", BooleanOperator.Equals, "dog"), BooleanOperator.And, Bool.expr("girl", BooleanOperator.NotEquals, "boy")))) .finish() .elseif_(Bool.expr(Stmt.loadVariable("a"), BooleanOperator.And, Stmt.loadVariable("b"))) .append(Stmt.loadStatic(System.class, "out").invoke("println", Refs.get("a"))) .finish() .toJavaString(); assertEquals("Failed to generate if block using nested boolean expressions", IF_ELSEIF_BLOCK_UNCHAINED_NESTED_EXPRESSIONS, s); }
public static Statement buildCheckStatement(ContextualStatementBuilder authzCall, String onGranted, String onDenied) { BooleanExpression boolExpr = BooleanExpressionBuilder.create(authzCall).negate(); BlockBuilder<ElseBlockBuilder> builder = If.cond(boolExpr); if (onDenied != null && onDenied.trim().length() > 0) { builder.append(Stmt.loadVariable("this").invoke(onDenied)); } BlockBuilder<StatementEnd> endBuilder = builder.append(Stmt.returnVoid()).finish().else_(); if (onGranted != null && onGranted.trim().length() > 0) { endBuilder.append(Stmt.loadVariable("this").invoke(onGranted)); } return endBuilder.finish(); }
interceptorStack = interceptorStack.elseif_(Bool.equals( Stmt.loadVariable("status").invoke("getNextInterceptor"), interceptor)) .append(Stmt.declareFinalVariable("ctx", callContextType, Stmt.loadVariable("this"))) .finish(); proceedLogic.addStatement(interceptorStack.else_().finish()); return proceedLogic;
private BlockBuilder<ElseBlockBuilder> updateGetMarshallerConditionalBlock(BlockBuilder<ElseBlockBuilder> getMarshallerConditionalBlock, final String helperMethodName) { getMarshallerConditionalBlock = getMarshallerConditionalBlock.finish().elseif_(StringStatement.of(helperMethodName + "(a0)", boolean.class)) .append(Stmt.loadVariable(MARSHALLERS_VAR).invoke("get", Stmt.loadVariable("a0")).returnValue()); return getMarshallerConditionalBlock; }
@Test public void testIfBlockWithInvalidExpression() { try { StatementBuilder.create() .declareVariable("str", String.class) .declareVariable("str2", String.class) .loadVariable("str") .if_(BooleanOperator.GreaterThan, Variable.get("str2")).finish() .toJavaString(); fail("Expected InvalidExpressionException"); } catch (InvalidExpressionException e) { // expected assertTrue("Wrong exception thrown", e.getMessage().contains(String.class.getName())); } }
public static Statement buildCheckStatement(ContextualStatementBuilder authzCall, String onGranted, String onDenied) { BooleanExpression boolExpr = BooleanExpressionBuilder.create(authzCall).negate(); BlockBuilder<ElseBlockBuilder> builder = If.cond(boolExpr); if (onDenied != null && onDenied.trim().length() > 0) { builder.append(Stmt.loadVariable("this").invoke(onDenied)); } BlockBuilder<StatementEnd> endBuilder = builder.append(Stmt.returnVoid()).finish().else_(); if (onGranted != null && onGranted.trim().length() > 0) { endBuilder.append(Stmt.loadVariable("this").invoke(onGranted)); } return endBuilder.finish(); }
interceptorStack = interceptorStack.elseif_(Bool.equals( Stmt.loadVariable("status").invoke("getNextInterceptor"), interceptor)) .append(Stmt.declareFinalVariable("ctx", callContextType, Stmt.loadVariable("this"))) .finish(); proceedLogic.addStatement(interceptorStack.else_().finish()); return proceedLogic;
.append(Stmt.load(false).returnValue()) .finish() .elseif_( BooleanExpressionBuilder.create( Stmt.loadVariable("providedErrorCallback"), BooleanOperator.NotEquals, Stmt
@Test public void testEmptyIfBlockUsingLiteralRhs() { String s = StatementBuilder.create() .declareVariable("n", int.class) .loadVariable("n") .if_(BooleanOperator.Equals, 1) .finish().toJavaString(); assertEquals("Failed to generate empty if block using a literal rhs", EMPTY_IF_BLOCK_LITERAL_RHS, s); }
ifBody.appendAll(getAroundInvokeStatements(method)); BlockBuilder<StatementEnd> elseBody = ifBody.finish().else_(); ._(throw_(IllegalStateException.class, "call to hashCode() on an unclosed proxy.")) .finish() .else_() ._(Stmt.loadVariable(proxyVar).invoke("hashCode").returnValue()) .finish() ._(throw_(IllegalStateException.class, "call to equals() on an unclosed proxy.")) .finish() .else_() ._(Stmt.loadVariable(proxyVar).invoke("equals", Refs.get("o")).returnValue()) .finish()
.else_() .append(Stmt.loadVariable(colVarName).invoke("add", Refs.get(elemVarName))) .finish() .elseif_(Stmt.invokeStatic(BindableProxyFactory.class, "isBindableType", loadVariable(targetVar).invoke(readMethod))) .append(Stmt.loadVariable(cloneVar).invoke(writeMethod, .else_() .append(Stmt.loadVariable(cloneVar).invoke(writeMethod, loadVariable(targetVar).invoke(readMethod))) .finish()
.append(Stmt.load(false).returnValue()) .finish() .elseif_( BooleanExpressionBuilder.create( Stmt.loadVariable("providedErrorCallback"), BooleanOperator.NotEquals, Stmt
@Test public void testEmptyIfBlockUsingNoRhs() { String s = StatementBuilder.create() .declareVariable("str", String.class) .loadVariable("str") .invoke("endsWith", "abc") .if_() .finish().toJavaString(); assertEquals("Failed to generate empty if block using no rhs", EMPTY_IF_BLOCK_NO_RHS, s); }
ifBody.appendAll(getAroundInvokeStatements(method)); BlockBuilder<StatementEnd> elseBody = ifBody.finish().else_(); ._(throw_(IllegalStateException.class, "call to hashCode() on an unclosed proxy.")) .finish() .else_() ._(Stmt.loadVariable(proxyVar).invoke("hashCode").returnValue()) .finish() ._(throw_(IllegalStateException.class, "call to equals() on an unclosed proxy.")) .finish() .else_() ._(Stmt.loadVariable(proxyVar).invoke("equals", Refs.get("o")).returnValue()) .finish()