private static void checkDuplications(Transition[] transitions, String stateKey) { Set<String> keys = new HashSet<>(); Arrays.stream(transitions) .filter(transition -> !keys.add(transition.key())) .findAny() .ifPresent(transition -> { throw new IllegalArgumentException("Transition '" + transition.key() + "' is declared several times from the originating state '" + stateKey + "'"); }); }
Transition transition(String transitionKey) { return Arrays.stream(outTransitions) .filter(transition -> transitionKey.equals(transition.key())) .findAny() .orElseThrow(() -> new IllegalArgumentException("Transition from state " + key + " does not exist: " + transitionKey)); } }
@CheckForNull public Transition outAutomaticTransition(Issue issue) { final Transition[] result = new Transition[1]; Set<String> keys = new HashSet<>(); Arrays.stream(outTransitions) .filter(Transition::automatic) .filter(transition -> transition.supports(issue)) .peek(transition -> result[0] = transition) .filter(transition -> !keys.add(transition.key())) .findAny() .ifPresent(transition -> { throw new IllegalArgumentException("Several automatic transitions are available for issue: " + issue); }); return result[0]; }
@Override public String apply(@Nullable Transition transition) { return transition.key(); } });
public void checkTransitionPermission(String transitionKey, DefaultIssue defaultIssue) { String projectUuid = requireNonNull(defaultIssue.projectUuid()); workflow.outTransitions(defaultIssue) .stream() .filter(transition -> transition.key().equals(transitionKey) && isNotBlank(transition.requiredProjectPermission())) .forEach(transition -> userSession.checkComponentUuidPermission(transition.requiredProjectPermission(), projectUuid)); }
private static void formatIssueTransitions(SearchResponseData data, Issue.Builder wsIssue, IssueDto dto) { Transitions.Builder wsTransitions = Transitions.newBuilder(); List<Transition> transitions = data.getTransitionsForIssueKey(dto.getKey()); if (transitions != null) { for (Transition transition : transitions) { wsTransitions.addTransitions(transition.key()); } } wsIssue.setTransitions(wsTransitions); }
@Test public void test_simplest_transition() { Transition transition = Transition.builder("close") .from("OPEN").to("CLOSED") .build(); assertThat(transition.key()).isEqualTo("close"); assertThat(transition.from()).isEqualTo("OPEN"); assertThat(transition.to()).isEqualTo("CLOSED"); assertThat(transition.conditions()).isEmpty(); assertThat(transition.functions()).isEmpty(); assertThat(transition.requiredProjectPermission()).isNull(); }
@Test public void test_builder() { Transition transition = Transition.builder("close") .from("OPEN").to("CLOSED") .conditions(condition1, condition2) .functions(function1, function2) .requiredProjectPermission(UserRole.ISSUE_ADMIN) .build(); assertThat(transition.key()).isEqualTo("close"); assertThat(transition.from()).isEqualTo("OPEN"); assertThat(transition.to()).isEqualTo("CLOSED"); assertThat(transition.conditions()).containsOnly(condition1, condition2); assertThat(transition.functions()).containsOnly(function1, function2); assertThat(transition.automatic()).isFalse(); assertThat(transition.requiredProjectPermission()).isEqualTo(UserRole.ISSUE_ADMIN); }
private static void checkDuplications(Transition[] transitions, String stateKey) { Set<String> keys = new HashSet<>(); Arrays.stream(transitions) .filter(transition -> !keys.add(transition.key())) .findAny() .ifPresent(transition -> { throw new IllegalArgumentException("Transition '" + transition.key() + "' is declared several times from the originating state '" + stateKey + "'"); }); }
Transition transition(String transitionKey) { return Arrays.stream(outTransitions) .filter(transition -> transitionKey.equals(transition.key())) .findAny() .orElseThrow(() -> new IllegalArgumentException("Transition from state " + key + " does not exist: " + transitionKey)); } }
@CheckForNull public Transition outAutomaticTransition(Issue issue) { final Transition[] result = new Transition[1]; Set<String> keys = new HashSet<>(); Arrays.stream(outTransitions) .filter(Transition::automatic) .filter(transition -> transition.supports(issue)) .peek(transition -> result[0] = transition) .filter(transition -> !keys.add(transition.key())) .findAny() .ifPresent(transition -> { throw new IllegalArgumentException("Several automatic transitions are available for issue: " + issue); }); return result[0]; }
public void checkTransitionPermission(String transitionKey, DefaultIssue defaultIssue) { String projectUuid = requireNonNull(defaultIssue.projectUuid()); workflow.outTransitions(defaultIssue) .stream() .filter(transition -> transition.key().equals(transitionKey) && isNotBlank(transition.requiredProjectPermission())) .forEach(transition -> userSession.checkComponentUuidPermission(transition.requiredProjectPermission(), projectUuid)); }
private static void formatIssueTransitions(SearchResponseData data, Issue.Builder wsIssue, IssueDto dto) { Transitions.Builder wsTransitions = Transitions.newBuilder(); List<Transition> transitions = data.getTransitionsForIssueKey(dto.getKey()); if (transitions != null) { for (Transition transition : transitions) { wsTransitions.addTransitions(transition.key()); } } wsIssue.setTransitions(wsTransitions); }