@Test public void stateKey() { StateMachine machine = StateMachine.builder() .states("OPEN", "RESOLVED", "CLOSED") .transition(Transition.builder("resolve").from("OPEN").to("RESOLVED").build()) .build(); assertThat(machine.state("OPEN")).isNotNull(); assertThat(machine.state("OPEN").transition("resolve")).isNotNull(); } }
private static void buildManualTransitions(StateMachine.Builder builder) { builder.transition(Transition.builder(DefaultTransitions.CONFIRM) .from(Issue.STATUS_OPEN).to(Issue.STATUS_CONFIRMED) .functions(new SetResolution(null)) .build()) .transition(Transition.builder(DefaultTransitions.CONFIRM) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_CONFIRMED) .functions(new SetResolution(null)) .build()) .transition(Transition.builder(DefaultTransitions.UNCONFIRM) .from(Issue.STATUS_CONFIRMED).to(Issue.STATUS_REOPENED) .functions(new SetResolution(null)) .build()) .transition(Transition.builder(DefaultTransitions.RESOLVE) .from(Issue.STATUS_OPEN).to(Issue.STATUS_RESOLVED) .functions(new SetResolution(Issue.RESOLUTION_FIXED)) .build()) .transition(Transition.builder(DefaultTransitions.RESOLVE) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_RESOLVED) .functions(new SetResolution(Issue.RESOLUTION_FIXED)) .build()) .transition(Transition.builder(DefaultTransitions.RESOLVE) .from(Issue.STATUS_CONFIRMED).to(Issue.STATUS_RESOLVED) .functions(new SetResolution(Issue.RESOLUTION_FIXED)) .build()) .transition(Transition.builder(DefaultTransitions.REOPEN) .from(Issue.STATUS_RESOLVED).to(Issue.STATUS_REOPENED) .functions(new SetResolution(null)) .transition(Transition.builder(DefaultTransitions.FALSE_POSITIVE)
private static void buildAutomaticTransitions(StateMachine.Builder builder) { .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_OPEN).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .automatic() .build()) .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .automatic() .build()) .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_CONFIRMED).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .automatic() .build()) .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_RESOLVED).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .transition(Transition.builder("automaticreopen") .from(Issue.STATUS_RESOLVED).to(Issue.STATUS_REOPENED) .conditions(new NotCondition(IsBeingClosed.INSTANCE), new HasResolution(Issue.RESOLUTION_FIXED))
private static void buildManualTransitions(StateMachine.Builder builder) { builder .transition(Transition.builder(DefaultTransitions.CONFIRM) .from(Issue.STATUS_OPEN).to(Issue.STATUS_CONFIRMED) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .functions(new SetResolution(null)) .build()) .transition(Transition.builder(DefaultTransitions.CONFIRM) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_CONFIRMED) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .functions(new SetResolution(null)) .build()) .transition(Transition.builder(DefaultTransitions.UNCONFIRM) .from(Issue.STATUS_CONFIRMED).to(Issue.STATUS_REOPENED) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .functions(new SetResolution(null)) .build()) .transition(Transition.builder(DefaultTransitions.RESOLVE) .from(Issue.STATUS_OPEN).to(Issue.STATUS_RESOLVED) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .functions(new SetResolution(Issue.RESOLUTION_FIXED)) .build()) .transition(Transition.builder(DefaultTransitions.RESOLVE) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_RESOLVED) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE) .functions(new SetResolution(Issue.RESOLUTION_FIXED)) .build()) .transition(Transition.builder(DefaultTransitions.RESOLVE) .from(Issue.STATUS_CONFIRMED).to(Issue.STATUS_RESOLVED) .conditions(IsNotHotspotNorManualVulnerability.INSTANCE)
.transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_OPEN).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .automatic() .build()) .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .automatic() .build()) .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_CONFIRMED).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .automatic() .build()) .transition(Transition.builder(AUTOMATIC_CLOSE_TRANSITION) .from(Issue.STATUS_RESOLVED).to(Issue.STATUS_CLOSED) .conditions(IsBeingClosed.INSTANCE) .transition(Transition.builder("automaticreopen") .from(Issue.STATUS_RESOLVED).to(Issue.STATUS_REOPENED) .conditions(new NotCondition(IsBeingClosed.INSTANCE), new HasResolution(Issue.RESOLUTION_FIXED), IsNotHotspotNorManualVulnerability.INSTANCE) .transition(Transition.builder("automaticuncloseopen") .from(Issue.STATUS_CLOSED).to(Issue.STATUS_OPEN) .conditions(
private static void buildSecurityHotspotTransitions(StateMachine.Builder builder) { builder .transition(Transition.builder(DefaultTransitions.DETECT) .from(Issue.STATUS_OPEN).to(Issue.STATUS_OPEN) .conditions(new HasType(RuleType.SECURITY_HOTSPOT)) .requiredProjectPermission(UserRole.SECURITYHOTSPOT_ADMIN) .build()) .transition(Transition.builder(DefaultTransitions.DETECT) .from(Issue.STATUS_REOPENED).to(Issue.STATUS_OPEN) .conditions(new HasType(RuleType.SECURITY_HOTSPOT)) .requiredProjectPermission(UserRole.SECURITYHOTSPOT_ADMIN) .build()) .transition(Transition.builder(DefaultTransitions.DETECT) .from(Issue.STATUS_RESOLVED).to(Issue.STATUS_OPEN) .conditions(new HasType(RuleType.SECURITY_HOTSPOT), new HasResolution(Issue.RESOLUTION_WONT_FIX)) .requiredProjectPermission(UserRole.SECURITYHOTSPOT_ADMIN) .build()) .transition(Transition.builder(DefaultTransitions.DISMISS) .from(Issue.STATUS_OPEN).to(Issue.STATUS_REOPENED) .conditions(IsManualVulnerability.INSTANCE) .requiredProjectPermission(UserRole.SECURITYHOTSPOT_ADMIN) .build()) .transition(Transition.builder(DefaultTransitions.REQUEST_REVIEW) .from(Issue.STATUS_OPEN).to(Issue.STATUS_RESOLVED) .conditions(IsManualVulnerability.INSTANCE) .functions(new SetType(RuleType.SECURITY_HOTSPOT), new SetResolution(Issue.RESOLUTION_FIXED))