private <C extends CtAbstractInvocation<T>> C addArgument(int position, CtExpression<?> argument) { if (argument == null) { return (C) this; } if (arguments == CtElementImpl.<CtExpression<?>>emptyList()) { arguments = new ArrayList<>(PARAMETERS_CONTAINER_DEFAULT_CAPACITY); } argument.setParent(this); getFactory().getEnvironment().getModelChangeListener().onListAdd(this, ARGUMENT, this.arguments, position, argument); arguments.add(position, argument); return (C) this; }
@Override public <C extends CtTargetedExpression<E, T>> C setTarget(T target) { if (target != null) { target.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, TARGET, target, this.target); this.target = target; return (C) this; }
@Override public <T extends CtIf> T setCondition(CtExpression<Boolean> condition) { if (condition != null) { condition.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, CONDITION, condition, this.condition); this.condition = condition; return (T) this; }
@Override public <T extends CtReturn<R>> T setReturnedExpression(CtExpression<R> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, EXPRESSION, expression, this.returnedExpression); this.returnedExpression = expression; return (T) this; }
@Override public <C extends CtVariable<T>> C setDefaultExpression(CtExpression<T> defaultExpression) { if (defaultExpression != null) { defaultExpression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, CtRole.DEFAULT_EXPRESSION, defaultExpression, this.defaultExpression); this.defaultExpression = defaultExpression; return (C) this; }
@Override public <C extends CtConditional<T>> C setThenExpression(CtExpression<T> thenExpression) { if (thenExpression != null) { thenExpression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, THEN, thenExpression, this.thenExpression); this.thenExpression = thenExpression; return (C) this; }
@Override public <C extends CtTargetedExpression<T, CtExpression<?>>> C setTarget(CtExpression<?> target) { if (target != null) { target.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, TARGET, target, this.target); this.target = target; return null; }
@Override public <C extends CtVariable<T>> C setDefaultExpression(CtExpression<T> defaultExpression) { if (defaultExpression != null) { defaultExpression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, CtRole.DEFAULT_EXPRESSION, defaultExpression, this.defaultExpression); this.defaultExpression = defaultExpression; return (C) this; }
@Override public <T extends CtFor> T setExpression(CtExpression<Boolean> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, EXPRESSION, expression, this.expression); this.expression = expression; return (T) this; }
@Override public <T extends CtWhile> T setLoopingExpression(CtExpression<Boolean> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, EXPRESSION, expression, this.expression); this.expression = expression; return (T) this; }
@Override public <T extends CtCase<E>> T setCaseExpression(CtExpression<E> caseExpression) { if (caseExpression != null) { caseExpression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, CtRole.CASE, caseExpression, this.caseExpression); this.caseExpression = caseExpression; return (T) this; }
@Override public <C extends CtBinaryOperator<T>> C setLeftHandOperand(CtExpression<?> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, LEFT_OPERAND, expression, this.leftHandOperand); leftHandOperand = expression; return (C) this; }
@Override public <C extends CtBinaryOperator<T>> C setRightHandOperand(CtExpression<?> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, RIGHT_OPERAND, expression, this.rightHandOperand); rightHandOperand = expression; return (C) this; }
@Override public <T extends CtThrow> T setThrownExpression(CtExpression<? extends Throwable> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, EXPRESSION, expression, this.throwExpression); this.throwExpression = expression; return (T) this; }
@Override public <T extends CtForEach> T setExpression(CtExpression<?> expression) { if (expression != null) { expression.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, EXPRESSION, expression, this.expression); this.expression = expression; return (T) this; }
@Override public <A extends CtAssert<T>> A setExpression(CtExpression<T> value) { if (value != null) { value.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, EXPRESSION, value, this.value); this.value = value; return (A) this; }
@Override public <C extends CtTargetedExpression<T, CtExpression<?>>> C setTarget(CtExpression<?> target) { if (target != null) { target.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, TARGET, target, this.target); this.target = target; return null; }
@Override public <C extends CtAssignment<T, A>> C setAssigned(CtExpression<T> assigned) { if (assigned != null) { assigned.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, ASSIGNED, assigned, this.assigned); this.assigned = assigned; return (C) this; }
@Override public <A extends CtAssert<T>> A setAssertExpression(CtExpression<Boolean> asserted) { if (asserted != null) { asserted.setParent(this); } getFactory().getEnvironment().getModelChangeListener().onObjectUpdate(this, CONDITION, asserted, this.asserted); this.asserted = asserted; return (A) this; }
@SuppressWarnings("unchecked") public static <T> CtExpression<T> compileExpression( CtCodeSnippetExpression<T> expr) throws SnippetCompilationError { CtReturn<T> ret = (CtReturn<T>) internalCompileStatement(expr, expr.getFactory().Type().OBJECT); CtExpression<T> returnedExpression = ret.getReturnedExpression(); // this compiled expression is not in a parent, ready to be used returnedExpression.delete(); returnedExpression.setParent(null); return returnedExpression; }