@Override public <T extends CtStatementList> T insertBegin(CtStatement statement) { ensureModifiableStatementsList(); statement.setParent(this); this.addStatement(0, statement); if (isImplicit() && this.statements.size() > 1) { setImplicit(false); } return (T) this; }
@Override public <T extends CtFor> T addForInit(CtStatement statement) { if (statement == null) { return (T) this; } if (forInit == CtElementImpl.<CtStatement>emptyList()) { forInit = new ArrayList<>(FOR_INIT_STATEMENTS_CONTAINER_DEFAULT_CAPACITY); } statement.setParent(this); getFactory().getEnvironment().getModelChangeListener().onListAdd(this, FOR_INIT, this.forInit, statement); forInit.add(statement); return (T) this; }
@Override public <T extends CtFor> T addForUpdate(CtStatement statement) { if (statement == null) { return (T) this; } if (forUpdate == CtElementImpl.<CtStatement>emptyList()) { forUpdate = new ArrayList<>(FOR_UPDATE_STATEMENTS_CONTAINER_DEFAULT_CAPACITY); } statement.setParent(this); getFactory().getEnvironment().getModelChangeListener().onListAdd(this, FOR_UPDATE, this.forUpdate, statement); forUpdate.add(statement); return (T) this; }
@Override public <T extends CtStatementList> T insertBegin(CtStatement statement) { ensureModifiableStatementsList(); statement.setParent(this); this.addStatement(0, statement); if (isImplicit() && this.statements.size() > 1) { setImplicit(false); } return (T) this; }
@Override public <T extends CtStatementList> T addStatement(int index, CtStatement statement) { if (statement == null) { return (T) this; } if (this.statements == CtElementImpl.<CtStatement>emptyList()) { this.statements = new ArrayList<>(BLOCK_STATEMENTS_CONTAINER_DEFAULT_CAPACITY); } statement.setParent(this); getFactory().getEnvironment().getModelChangeListener().onListAdd(this, STATEMENT, this.statements, index, statement); this.statements.add(index, statement); return (T) this; }
@Override public <T extends CtStatementList> T insertBegin(CtStatementList statements) { ensureModifiableStatementsList(); for (CtStatement statement : statements.getStatements()) { statement.setParent(this); this.addStatement(0, statement); } if (isImplicit() && this.statements.size() > 1) { setImplicit(false); } return (T) this; }
@Override public <T extends CtStatementList> T insertBegin(CtStatementList statements) { this.ensureModifiableStatementsList(); for (CtStatement statement : statements.getStatements()) { statement.setParent(this); this.addStatement(0, statement); } if (isImplicit() && this.statements.size() > 1) { setImplicit(false); } return (T) this; }
@Override public <T extends CtStatementList> T addStatement(int index, CtStatement statement) { if (statement == null) { return (T) this; } this.ensureModifiableStatementsList(); statement.setParent(this); getFactory().getEnvironment().getModelChangeListener().onListAdd(this, CtRole.STATEMENT, this.statements, index, statement); statements.add(index, statement); return (T) this; }
@Override public <T extends CtIf> T setElseStatement(CtStatement elseStatement) { if (elseStatement != null) { elseStatement.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, ELSE, elseStatement, this.elseStatement); this.elseStatement = elseStatement; return (T) this; }
@Override public <E> void visitCtCase(CtCase<E> e) { super.visitCtCase(e); target.setParent(e); e.setStatements(insertType.insertFromLastStatement(e.getStatements(), target, statementsToBeInserted)); }
@Override public <T extends CtIf> T setThenStatement(CtStatement thenStatement) { // then branch might be null: `if (condition) ;` if (thenStatement != null) { thenStatement.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, THEN, thenStatement, this.thenStatement); this.thenStatement = thenStatement; return (T) this; }
@Override public void scanCtLoop(CtLoop loop) { super.scanCtLoop(loop); CtStatement stat = loop.getBody(); if (stat instanceof CtBlock) { insertType.insert((CtBlock<?>) stat, statementsToBeInserted); } else { CtBlock<?> block = insertNewBlock(stat); target.setParent(block); loop.setBody(block); } }
@Override public <T extends CtContinue> T setLabelledStatement(CtStatement labelledStatement) { if (labelledStatement != null) { labelledStatement.setParent(this); } this.labelledStatement = labelledStatement; return (T) this; }
@Override public <T extends CtIf> T setElseStatement(CtStatement elseStatement) { if (elseStatement != null) { elseStatement.setParent(this); } this.elseStatement = elseStatement; return (T) this; }
@Override public <T extends CtLoop> T setBody(CtStatement body) { if (body != null) { body.setParent(this); } this.body = body; return (T) this; }
private static CtStatement internalCompileStatement(CtElement st, CtTypeReference returnType) { Factory f = st.getFactory(); String contents = createWrapperContent(st, f, returnType); build(f, contents); CtType<?> c = f.Type().get(WRAPPER_CLASS_NAME); // Get the part we want CtMethod<?> wrapper = c.getMethod(WRAPPER_METHOD_NAME); List<CtStatement> statements = wrapper.getBody().getStatements(); CtStatement ret = statements.get(statements.size() - 1); // Clean up c.getPackage().removeType(c); //disconnect element from the parent, so it can be added to another model ret.delete(); ret.setParent(null); if (ret instanceof CtClass) { CtClass klass = (CtClass) ret; ret.getFactory().Package().getRootPackage().addType(klass); klass.setSimpleName(klass.getSimpleName().replaceAll("^[0-9]*", "")); } return ret; }
@Override public <T extends CtStatementList> T addStatement(CtStatement statement) { ensureModifiableStatementsList(); statement.setParent(this); this.statements.add(statement); return (T) this; }
@Override public <T extends CtFor> T addForInit(CtStatement statement) { if (forInit == CtElementImpl.<CtStatement>emptyList()) { forInit = new ArrayList<CtStatement>(FOR_INIT_STATEMENTS_CONTAINER_DEFAULT_CAPACITY); } statement.setParent(this); forInit.add(statement); return (T) this; }
@Override public <T extends CtStatementList> T addStatement(CtStatement statement) { if (this.statements == CtElementImpl.<CtStatement>emptyList()) { this.statements = new ArrayList<CtStatement>(BLOCK_STATEMENTS_CONTAINER_DEFAULT_CAPACITY); } statement.setParent(this); this.statements.add(statement); return (T) this; }
@Override public <T extends CtStatementList> T addStatement(CtStatement statement) { if (statements == CtElementImpl.<CtStatement>emptyList()) { statements = new ArrayList<CtStatement>(CASE_STATEMENTS_CONTAINER_DEFAULT_CAPACITY); } statement.setParent(this); statements.add(statement); return (T) this; }