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(); }
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(); }
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(); }
ifBlock.append(proxyHelperInvocation); ifBlock.appendAll(controller.getInvokeAfterStatements(method)); body.append(ifBlock.finish().else_().append(nonInitializedCase).finish()); } else { ifBlock.append(declareFinalVariable("retVal", method.getReturnType().getErased(), proxyHelperInvocation)); ifBlock.append(loadVariable("retVal").returnValue()); if (nonInitializedReturns) { body.append(ifBlock.finish().else_().append(nestedCall(nonInitializedCase).returnValue()).finish()); } else { body.append(ifBlock.finish().else_().append(nonInitializedCase).finish());
).invoke("isEqual", Refs.get("a1"), Refs.get("a2")).returnValue()) .finish() .else_() ._(Stmt.load(true).returnValue()) .finish() .else_() ._(Stmt.load(false).returnValue()) .finish()) ).invoke("hashCodeOf", Refs.get("a1")).returnValue()) .finish() .else_() ._(Stmt.loadVariable("a1").invoke("annotationType").invoke("hashCode").returnValue()) .finish()).finish();
Stmt.loadVariable("this").invoke(injectorName, Stmt.loadVariable("widget"), defaultValueStatement(erasedFieldType))).finish() .else_() .append( Stmt.loadVariable("this").invoke(
.append(load(null).returnValue()) .finish() .else_() .append(nestedCall(demarshalStmt).returnValue()) .finish();
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(); }
@Test public void testIfElseBlockUsingNoRhs() { String s = StatementBuilder.create() .declareVariable("str", String.class) .loadVariable("str") .invoke("endsWith", "abc") .if_() ._(Stmt.declareVariable(Integer.class).named("n").initializeWith(0)) .finish() .else_() ._(Stmt.declareVariable(Integer.class).named("n").initializeWith(1)) .finish().toJavaString(); assertEquals("Failed to generate empty if block using no rhs", IF_ELSE_BLOCK_NO_RHS, s); }
@Test public void testNestedIfElseIfBlockUsingRhs() { 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() .else_() .append(StatementBuilder.create(c).loadVariable("m") .if_(BooleanOperator.GreaterThan, Variable.get("n")) .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(2)) .finish() ) .finish().toJavaString(); assertEquals("Failed to generate if-else-if-else block using rhs", IF_ELSEIF_ELSE_BLOCK_RHS_NESTED, s); }
@Test public void testIfElseBlockUsingRhs() { String s = StatementBuilder.create() .declareVariable("n", Integer.class) .declareVariable("m", Integer.class) .loadVariable("n") .if_(BooleanOperator.GreaterThan, Variable.get("m")) ._(Stmt.declareVariable(Integer.class).named("n").initializeWith(0)) .finish() .else_() ._(Stmt.declareVariable(Integer.class).named("n").initializeWith(1)) .finish().toJavaString(); assertEquals("Failed to generate empty if block using a rhs", IF_ELSE_BLOCK_RHS, s); }
@Test public void testNestedIfElseIfElseBlockUsingNoRhs() { 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() .else_() .append(StatementBuilder.create(c).loadVariable("s") .invoke("startsWith", "def") .if_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() .else_() .append(StatementBuilder.create(c).loadVariable("n").assignValue(2)) .finish() ) .finish().toJavaString(); assertEquals("Failed to generate if-else-if-else block using no rhs", IF_ELSEIF_ELSE_BLOCK_NO_RHS_NESTED, s); }
@Test public void testNestedIfElseIfBlockUsingNoRhs() { Context c = ContextBuilder.create().addVariable("s", String.class).addVariable("n", Integer.class).getContext(); String s = StatementBuilder.create(c) .loadVariable("s") .invoke("endsWith", "abc") .if_() ._(StatementBuilder.create(c).loadVariable("n").assignValue(0)) .finish() .else_() ._(StatementBuilder.create(c).loadVariable("s") .invoke("startsWith", "def") .if_() ._(StatementBuilder.create(c).loadVariable("n").assignValue(1)) .finish() ) .finish().toJavaString(); assertEquals("Failed to generate if-else-if-block using no rhs", IF_ELSEIF_BLOCK_NO_RHS_NESTED, 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); }
.finish(); proceedLogic.addStatement(interceptorStack.else_().finish()); return proceedLogic;
.finish(); proceedLogic.addStatement(interceptorStack.else_().finish()); return proceedLogic;
@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); }
.append(if_(Bool.expr(loadVariable("this").invoke("isValid", loadVariable("value"), castTo(ConstraintValidatorContext.class, loadLiteral(null))))) .append(invokeStatic(Collections.class, "emptySet").returnValue()) .finish().else_() .append(Stmt.declareVariable("paramMessage", String.class, castTo(String.class, loadVariable("parameters").invoke("get", Stmt.loadLiteral("message")))))