public void generateToString() { JMethod toString1 = cls().method(JMod.PUBLIC, cm.ref("java.lang.String"), "toString"); toString1.body()._return(ref("this").invoke("toString").arg(lit(""))); JMethod toString2 = cls().method(JMod.PUBLIC, cm.ref("java.lang.String"), "toString"); toString2.param(String.class, "indent"); toString2.body().decl(cm.ref("java.lang.String"), "rc", lit("")); for (int i = 0; i < amqpFields.size(); i++) { Attribute attr = amqpFields.get(i); if ( attr.attribute.type().isArray() ) { JBlock block = toString2.body()._if(_this().ref(attr.attribute).ne(_null()))._then().block(); block._if(ref("rc").invoke("length").ne(lit(0)))._then().assignPlus(ref("rc"), lit(",\n")); block.assignPlus(ref("rc"), ref("indent").plus(lit(" " + attr.attribute.name() + ":").plus(cm.ref("java.util.Arrays").staticInvoke("toString").arg(_this().ref(attr.attribute))))); } else { JExpression value = _this().ref(attr.attribute); if ( generator.getMapping().get(attr.type) == null ) { value = value.invoke("toString").arg(ref("indent").plus(lit(" "))); } JBlock block = toString2.body()._if(_this().ref(attr.attribute).ne(_null()))._then().block(); block._if(ref("rc").invoke("length").ne(lit(0)))._then().assignPlus(ref("rc"), lit(",\n")); block.assignPlus(ref("rc"), ref("indent").plus(lit(" " + attr.attribute.name() + ":").plus(value))); } } toString2.body()._if(ref("rc").invoke("length").ne(lit(0)))._then(). assign(ref("rc"), lit(", {\n").plus(ref("rc").plus(lit("}")))); toString2.body()._return(lit("[" + toJavaClassName(type.getName())).plus(ref("rc")).plus(lit("]"))); }
@Override public HoldingContainer renderEnd(ClassGenerator<?> classGenerator, HoldingContainer[] inputVariables, JVar[] workspaceJVars, FieldReference fieldReference) { HoldingContainer out = null; JVar internalOutput = null; if (getReturnType().getMinorType() != TypeProtos.MinorType.LATE) { out = classGenerator.declare(getReturnType(), false); } JBlock sub = new JBlock(); if (getReturnType().getMinorType() != TypeProtos.MinorType.LATE) { internalOutput = sub.decl(JMod.FINAL, classGenerator.getHolderType(getReturnType()), getReturnValue().getName(), JExpr._new(classGenerator.getHolderType(getReturnType()))); } classGenerator.getEvalBlock().add(sub); if (getReturnType().getMinorType() == TypeProtos.MinorType.LATE) { sub.assignPlus(writerIdx, JExpr.lit(1)); } addProtectedBlock(classGenerator, sub, output(), null, workspaceJVars, false); if (getReturnType().getMinorType() != TypeProtos.MinorType.LATE) { sub.assign(out.getHolder(), internalOutput); } //hash aggregate uses workspace vectors. Initialization is done in "setup" and does not require "reset" block. if (!classGenerator.getMappingSet().isHashAggMapping()) { generateBody(classGenerator, ClassGenerator.BlockType.RESET, reset(), null, workspaceJVars, false); } generateBody(classGenerator, ClassGenerator.BlockType.CLEANUP, cleanup(), null, workspaceJVars, false); return out; } }
_for.test(JOp.lt(index, regExps.ref("length"))); _for.update(JOp.incr(index)); _for.body()._if(regExps.component(index).invoke("matches").arg(value.invoke("toString")))._then().assignPlus(matches, JExpr.lit(1)); final JConditional ifNoMatches = block._if(JOp.eq(matches, JExpr.lit(0))); ifNoMatches._then().assign(problem, JExpr._new(codeModel.ref(RegularExpressionsProblem.class)).arg(value).arg(patterns));