Browse Source

SONAR-3755 save issue changes during automatic transitions

tags/3.6
Simon Brandhof 11 years ago
parent
commit
980303089b

+ 6
- 4
sonar-core/src/main/java/org/sonar/core/issue/workflow/IssueWorkflow.java View File

@@ -26,6 +26,7 @@ import org.sonar.api.issue.DefaultTransitions;
import org.sonar.api.issue.Issue;
import org.sonar.core.issue.DefaultIssue;
import org.sonar.core.issue.IssueChangeContext;
import org.sonar.core.issue.IssueUpdater;

import java.util.List;

@@ -33,9 +34,11 @@ public class IssueWorkflow implements BatchComponent, ServerComponent, Startable

private StateMachine machine;
private final FunctionExecutor functionExecutor;
private final IssueUpdater updater;

public IssueWorkflow(FunctionExecutor functionExecutor) {
public IssueWorkflow(FunctionExecutor functionExecutor, IssueUpdater updater) {
this.functionExecutor = functionExecutor;
this.updater = updater;
}

@Override
@@ -109,7 +112,7 @@ public class IssueWorkflow implements BatchComponent, ServerComponent, Startable
Transition transition = stateOf(issue).transition(transitionKey);
if (transition != null && !transition.automatic()) {
functionExecutor.execute(transition.functions(), issue, issueChangeContext);
issue.setStatus(transition.to());
updater.setStatus(issue, transition.to(), issueChangeContext);
return true;
}
return false;
@@ -124,8 +127,7 @@ public class IssueWorkflow implements BatchComponent, ServerComponent, Startable
Transition transition = stateOf(issue).outAutomaticTransition(issue);
if (transition != null) {
functionExecutor.execute(transition.functions(), issue, issueChangeContext);
issue.setStatus(transition.to());
issue.setUpdateDate(issueChangeContext.date());
updater.setStatus(issue, transition.to(), issueChangeContext);
}
}


+ 4
- 1
sonar-core/src/test/java/org/sonar/core/issue/workflow/IssueWorkflowTest.java View File

@@ -36,7 +36,10 @@ import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.Fail.fail;

public class IssueWorkflowTest {
IssueWorkflow workflow = new IssueWorkflow(new FunctionExecutor(new IssueUpdater()));


IssueUpdater updater = new IssueUpdater();
IssueWorkflow workflow = new IssueWorkflow(new FunctionExecutor(updater), updater);

@Test
public void should_init_state_machine() throws Exception {

Loading…
Cancel
Save