public void endEdit_aboutToRefresh() throws Exception {
if (!isDeleted()
&& getCreationSupport() instanceof ConstructorCreationSupport
&& getMethodInvocations().isEmpty()
&& getFieldAssignments().isEmpty()) {
ConstructorCreationSupport creationSupport =
(ConstructorCreationSupport) getCreationSupport();
ClassInstanceCreation creation = creationSupport.getCreation();
String signature = creationSupport.getDescription().getSignature();
// prepare arguments
List<Expression> arguments = DomGenerics.arguments(creation);
if (!AstNodeUtils.areLiterals(arguments)) {
return;
}
// evaluate arguments
List<Object> argumentValues;
{
EditorState state = JavaInfoUtils.getState(m_this);
EvaluationContext context =
new EvaluationContext(state.getEditorLoader(), state.getFlowDescription());
argumentValues = Lists.newArrayList();
for (Expression argument : arguments) {
Object value = AstEvaluationEngine.evaluate(context, argument);
JavaInfoEvaluationHelper.setValue(argument, value);
argumentValues.add(value);
}
}
// delete, if default constructor arguments
if (isDefault(signature, argumentValues)) {
delete();
}
// post process
{
boolean creationChanged =
postProcessConstructorCreation(signature, creation, argumentValues);
if (creationChanged) {
setCreationSupport(new ConstructorCreationSupport(creation));
}
}
}
}