@Override public BlockBuilder<StatementEnd> while_(BooleanOperator op, Statement rhs) { if (rhs == null) rhs = NullLiteral.INSTANCE; return while_(new BooleanExpressionBuilder(rhs, op)); }
@Override public BlockBuilder<ElseBlockBuilder> if_(BooleanOperator op, Statement rhs) { if (rhs == null) rhs = NullLiteral.INSTANCE; return if_(new BooleanExpressionBuilder(rhs, op)); }
@Override public BlockBuilder<ElseBlockBuilder> ifNot() { return if_(new BooleanExpressionBuilder().negate()); }
@Override public Statement newObject(final Class<?> type, final Object... parameters) { return ObjectBuilder.newInstanceOf(type, context, callElementBuilder) .withParameters(parameters); }
log.info("generating RPC proxy loader class..."); ClassStructureBuilder<?> classBuilder = ClassBuilder.implement(RpcProxyLoader.class); final long time = System.currentTimeMillis(); final MethodBlockBuilder<?> loadProxies = final Statement proxyProvider = ObjectBuilder.newInstanceOf(ProxyProvider.class) .extend() .publicOverridesMethod("getProxy") .append(Stmt.nestedCall(Stmt.newObject(remoteProxy.getClassDefinition())).returnValue())
public ClassStructureBuilder<?> generate() { final String safeProxyClassName = remote.getFullyQualifiedName().replace('.', '_') + "Impl"; final ClassStructureBuilder<?> classBuilder = ClassBuilder.define(safeProxyClassName, AbstractRpcProxy.class) .packageScope() .implementsInterface(remote) .body(); for (final MetaMethod method : remote.getMethods()) { if (ProxyUtil.shouldProxyMethod(method)) { generateMethod(classBuilder, method); } } return classBuilder; }
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(); }
/** * Create a new statement builder. * @return a new statement builder instance. */ public static StatementBegin create() { return StatementBuilder.create(); }
@Override public BlockBuilder<StatementEnd> for_(final Statement initializer, final BooleanExpression condition, final Statement countingExpression) { return new LoopBuilderImpl(context, callElementBuilder).for_(initializer, condition, countingExpression); }
@Override public StatementBuilder initializeWith(final Statement initialization) { this.initialization = initialization; return finish(); }
@Override public Statement newObject(final MetaClass type, final Object... parameters) { return ObjectBuilder.newInstanceOf(type, context, callElementBuilder) .withParameters(parameters); }
@Override public BlockBuilder<ElseBlockBuilder> ifNot() { return if_(new BooleanExpressionBuilder().negate()); }
@Override public BlockBuilder<StatementEnd> while_(BooleanOperator op, Statement rhs) { if (rhs == null) rhs = NullLiteral.INSTANCE; return while_(new BooleanExpressionBuilder(rhs, op)); }
@Override public BlockBuilder<ElseBlockBuilder> if_(BooleanOperator op, Statement rhs) { if (rhs == null) rhs = NullLiteral.INSTANCE; return if_(new BooleanExpressionBuilder(rhs, op)); }
@Override public Statement newObject(final TypeLiteral<?> type, final Object... parameters) { return ObjectBuilder.newInstanceOf(type, context, callElementBuilder) .withParameters(parameters); }
@Override public BlockBuilder<StatementEnd> while_() { return while_(new BooleanExpressionBuilder()); }
@Override public BlockBuilder<ElseBlockBuilder> if_() { return if_(new BooleanExpressionBuilder()); }
@Override public Statement newObject(final Class<?> type, final Object... parameters) { return ObjectBuilder.newInstanceOf(type, context, callElementBuilder) .withParameters(parameters); }
@Override public BlockBuilder<StatementEnd> while_() { return while_(new BooleanExpressionBuilder()); }
@Override public BlockBuilder<ElseBlockBuilder> if_() { return if_(new BooleanExpressionBuilder()); }