public static StringStatement of(final String statement, final MetaClass returnType) { return new StringStatement(statement, returnType); }
public static StringStatement of(final String statement) { return new StringStatement(statement); }
public static StringStatement of(final String statement) { return new StringStatement(statement); }
public static StringStatement of(final String statement, final MetaClass returnType) { return new StringStatement(statement, returnType); }
private void generateMethod(ClassStructureBuilder<?> classBuilder, MetaMethod method) { final List<Class<?>> interceptors = interceptorProvider.getInterceptors(remote, method); final boolean intercepted = !interceptors.isEmpty(); final Parameter[] parms = DefParameters.from(method).getParameters().toArray(new Parameter[0]); final Parameter[] finalParms = new Parameter[parms.length]; final List<Statement> parmVars = new ArrayList<Statement>(); for (int i = 0; i < parms.length; i++) { finalParms[i] = Parameter.of(parms[i].getType().getErased(), parms[i].getName(), true); parmVars.add(Stmt.loadVariable(parms[i].getName())); } final Statement parameters = (intercepted) ? new StringStatement("getParameters()", MetaClassFactory.get(Object[].class)) : Stmt.newArray(Object.class).initialize(parmVars.toArray()); final BlockBuilder<?> methodBlock = classBuilder.publicMethod(method.getReturnType().getErased(), method.getName(), finalParms); if (intercepted) { methodBlock.append(generateInterceptorLogic(classBuilder, method, generateRequest(classBuilder, method, parameters, true), parmVars, interceptors)); } else { methodBlock.append(generateRequest(classBuilder, method, parameters, false)); } final Statement returnStmt = ProxyUtil.generateProxyMethodReturnStatement(method); if (returnStmt != null) { methodBlock.append(returnStmt); } methodBlock.finish(); }
@Override public BlockBuilder<T> callSuper() { append(new StringStatement("super()", null)); return this; }
@Override public BlockBuilder<T> callSuper() { append(new StringStatement("super()", null)); return this; }
/** * Generates the code that will create the interceptor and then invoke the callback when done. If * IOC is available *and* the interceptor is a managed bean, then the IOC bean manager will be * used to load the interceptor. * * @param context * @param interceptor */ private static Statement generateAsyncInterceptorCreation(final GeneratorContext context, final Class<?> interceptor) { if (RebindUtils.isModuleInherited(context, IOC_MODULE_NAME) && isManagedBean(interceptor)) { // Note: for the IOC path, generate the code via StringStatement because we // need to make sure that IOC is an optional dependency. This should probably // be replaced with some sort of pluggable model instead (where a Statement can // be provided by some Provider in the IOC module itself maybe). final StringBuilder builder = new StringBuilder(); builder.append("org.jboss.errai.ioc.client.container.IOC.getAsyncBeanManager().lookupBeans(") .append(interceptor.getSimpleName()) .append(".class).iterator().next().getInstance(icc)"); return new StringStatement(builder.toString()); } else { return Stmt.invokeStatic(AsyncBeanFactory.class, "createBean", Stmt.newObject(interceptor), Variable.get("icc")); } }
/** * Generates the code that will create the interceptor and then invoke the callback when done. If * IOC is available *and* the interceptor is a managed bean, then the IOC bean manager will be * used to load the interceptor. * * @param context * @param interceptor */ private static Statement generateAsyncInterceptorCreation(final GeneratorContext context, final Class<?> interceptor) { if (RebindUtils.isModuleInherited(context, IOC_MODULE_NAME) && isManagedBean(interceptor)) { // Note: for the IOC path, generate the code via StringStatement because we // need to make sure that IOC is an optional dependency. This should probably // be replaced with some sort of pluggable model instead (where a Statement can // be provided by some Provider in the IOC module itself maybe). final StringBuilder builder = new StringBuilder(); builder.append("org.jboss.errai.ioc.client.container.IOC.getAsyncBeanManager().lookupBeans(") .append(interceptor.getSimpleName()) .append(".class).iterator().next().getInstance(icc)"); return new StringStatement(builder.toString()); } else { return Stmt.invokeStatic(AsyncBeanFactory.class, "createBean", Stmt.newObject(interceptor), Variable.get("icc")); } }
/** * Generates the call to * {@link RequestBuilder#sendRequest(String, com.google.gwt.http.client.RequestCallback)} for * interceptable methods. * * @return statement representing the request */ private Statement generateInterceptedRequest() { return generateRequest( Stmt.nestedCall(new StringStatement("getRequestBuilder()", MetaClassFactory.get(RequestBuilder.class))), Stmt.loadStatic(declaringClass, "this")); }
public static BlockBuilder<StatementEnd> autoForLoop(final String varName, final Statement value) { return Stmt.for_(Stmt.declareVariable(int.class).named("i").initializeWith(0), Bool.lessThan(Variable.get("i"), value), new StringStatement(varName + "++", null)); }
public static BlockBuilder<StatementEnd> autoForLoop(final String varName, final Statement value) { return Stmt.for_(Stmt.declareVariable(int.class).named("i").initializeWith(0), Bool.lessThan(Variable.get("i"), value), new StringStatement(varName + "++", null)); }
@Override public Statement resolve(DotNode dotNode) { Class<?> lhsType = dotNode.getLhs().getDataType().getReturnedClass(); // ensure the attribute is available as a field of the comparator String attrVarName = dotNode.getPath().replace('.', '_') + "_attr"; if (containingClass != null && !generatedClassVariables.contains(attrVarName)) { generatedClassVariables.add(attrVarName); containingClass.privateField(attrVarName, ErraiAttribute.class) .modifiers(Modifier.Final) .initializesWith( Stmt.nestedCall(new StringStatement("entityManager.getMetamodel()", MetaClassFactory.get(ErraiMetamodel.class))) .invoke("entity", Stmt.loadLiteral(lhsType)) .invoke("getAttribute", dotNode.getPropertyPath())) .finish(); } // XXX need a StringStatement here because codegen can't see fields of anonymous inner classes. (ERRAI-363) return Stmt.nestedCall(new StringStatement(attrVarName, MetaClassFactory.get(ErraiAttribute.class))) .invoke("get", Stmt.loadVariable(variableName)); } }
cmm.append(new StringStatement("metamodel.addEntityType(" + entityTypeVarName + ")")); cmm.append(new StringStatement("metamodel.freeze()"));
return new StringStatement("throw new RuntimeException(\"Not implemented\")");
private void generateMethod(ClassStructureBuilder<?> classBuilder, MetaMethod method) { final List<Class<?>> interceptors = interceptorProvider.getInterceptors(remote, method); final boolean intercepted = !interceptors.isEmpty(); final Parameter[] parms = DefParameters.from(method).getParameters().toArray(new Parameter[0]); final Parameter[] finalParms = new Parameter[parms.length]; final List<Statement> parmVars = new ArrayList<Statement>(); for (int i = 0; i < parms.length; i++) { finalParms[i] = Parameter.of(parms[i].getType().getErased(), parms[i].getName(), true); parmVars.add(Stmt.loadVariable(parms[i].getName())); } final Statement parameters = (intercepted) ? new StringStatement("getParameters()", MetaClassFactory.get(Object[].class)) : Stmt.newArray(Object.class).initialize(parmVars.toArray()); final BlockBuilder<?> methodBlock = classBuilder.publicMethod(method.getReturnType().getErased(), method.getName(), finalParms); if (intercepted) { methodBlock.append(generateInterceptorLogic(classBuilder, method, generateRequest(classBuilder, method, parameters, true), parmVars, interceptors)); } else { methodBlock.append(generateRequest(classBuilder, method, parameters, false)); } final Statement returnStmt = ProxyUtil.generateProxyMethodReturnStatement(method); if (returnStmt != null) { methodBlock.append(returnStmt); } methodBlock.finish(); }
return new StringStatement("return valueGenerator");
resourceMethod.getMethod(), generateInterceptedRequest(), interceptors) .publicOverridesMethod("setParameters", Parameter.of(Object[].class, "parameters")) .append(new StringStatement("super.setParameters(parameters)")) .append(generateUrl(jaxrsParams)) .append(generateRequestBuilder()) .append(generateHeaders(jaxrsParams)) .append(new StringStatement("setRequestBuilder(requestBuilder)")) .finish() .finish();
final BlockStatement block = new BlockStatement(); block.addStatement(Stmt.declareVariable("url", StringBuilder.class, Stmt.newObject(StringBuilder.class, new StringStatement("getBaseUrl()"))));