Skip to content

Commit fb1755a

Browse files
committed
refactor without extra interface
1 parent 7c4b7ca commit fb1755a

File tree

6 files changed

+52
-23
lines changed

6 files changed

+52
-23
lines changed

runtime/v2/model/src/main/java/com/walmartlabs/concord/runtime/v2/model/ExclusiveMode.java

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,18 @@
2727
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
2828
import org.immutables.value.Value;
2929

30-
import java.io.Serial;
3130
import java.io.Serializable;
3231

32+
@Value.Immutable
33+
@Value.Style(jdkOnly = true)
3334
@JsonInclude(JsonInclude.Include.NON_EMPTY)
3435
@JsonIgnoreProperties(ignoreUnknown = true)
35-
@JsonSerialize(as = ImmutableDefaultExclusiveMode.class)
36-
@JsonDeserialize(as = ImmutableDefaultExclusiveMode.class)
36+
@JsonSerialize(as = ImmutableExclusiveMode.class)
37+
@JsonDeserialize(as = ImmutableExclusiveMode.class)
3738
public interface ExclusiveMode extends Serializable {
3839

40+
long serialVersionUID = 1L;
41+
3942
@Value.Parameter
4043
@JsonProperty(value = "group", required = true)
4144
String group();
@@ -64,19 +67,6 @@ enum Mode {
6467
}
6568

6669
static ExclusiveMode of(String group, Mode mode) {
67-
return ImmutableDefaultExclusiveMode.of(group, mode);
68-
}
69-
70-
@Value.Immutable
71-
@Value.Style(jdkOnly = true)
72-
@JsonInclude(JsonInclude.Include.NON_EMPTY)
73-
@JsonSerialize(as = ImmutableDefaultExclusiveMode.class)
74-
@JsonDeserialize(as = ImmutableDefaultExclusiveMode.class)
75-
interface DefaultExclusiveMode extends ExclusiveMode {
76-
77-
@Serial
78-
long serialVersionUID = 1L;
79-
70+
return ImmutableExclusiveMode.of(group, mode);
8071
}
81-
8272
}

runtime/v2/model/src/main/java/com/walmartlabs/concord/runtime/v2/model/GithubTriggerExclusiveMode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
@JsonInclude(JsonInclude.Include.NON_EMPTY)
3737
@JsonSerialize(as = ImmutableGithubTriggerExclusiveMode.class)
3838
@JsonDeserialize(as = ImmutableGithubTriggerExclusiveMode.class)
39-
public interface GithubTriggerExclusiveMode extends ExclusiveMode, Serializable {
39+
public interface GithubTriggerExclusiveMode extends Serializable {
4040

4141
@Serial
4242
long serialVersionUID = 1L;

runtime/v2/model/src/main/java/com/walmartlabs/concord/runtime/v2/parser/ConfigurationGrammar.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ public final class ConfigurationGrammar {
3535

3636
private static final Parser<Atom, ExclusiveMode> exclusive =
3737
betweenTokens(JsonToken.START_OBJECT, JsonToken.END_OBJECT,
38-
with(ImmutableDefaultExclusiveMode::builder,
38+
with(ImmutableExclusiveMode::builder,
3939
o -> options(
4040
mandatory("group", stringNotEmptyVal.map(o::group)),
4141
optional("mode", enumVal(ExclusiveMode.Mode.class).map(o::mode))))
42-
.map(ImmutableDefaultExclusiveMode.Builder::build));
42+
.map(ImmutableExclusiveMode.Builder::build));
4343

4444
public static final Parser<Atom, ExclusiveMode> exclusiveVal =
4545
orError(exclusive, YamlValueType.EXCLUSIVE_MODE);

runtime/v2/model/src/main/java/com/walmartlabs/concord/runtime/v2/schema/TriggerMixIn.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ interface GenericTriggerParams extends DefaultTriggerParams {
175175

176176
@JsonProperty("conditions")
177177
Map<String, Object> conditions();
178+
179+
@JsonProperty("exclusive")
180+
ExclusiveMode exclusive();
178181
}
179182
}
180183

@@ -188,8 +191,5 @@ interface DefaultTriggerParams {
188191

189192
@JsonProperty("arguments")
190193
Map<String, Object> arguments();
191-
192-
@JsonProperty("exclusive")
193-
ExclusiveMode exclusive();
194194
}
195195
}

runtime/v2/model/src/test/java/com/walmartlabs/concord/project/runtime/v2/parser/YamlOkParserTest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,6 +570,26 @@ public void test019() throws Exception {
570570
assertTrue(p1.configuration().debug());
571571
}
572572

573+
@Test // GitHub trigger exclusive grouping
574+
void test020() throws Exception {
575+
ProcessDefinition pd = load("020.yml");
576+
577+
List<Trigger> triggers = pd.triggers();
578+
assertNotNull(triggers);
579+
580+
assertEquals(2, triggers.size());
581+
582+
Trigger t = triggers.get(0);
583+
assertEquals("github", t.name());
584+
var exclusive = assertInstanceOf(GithubTriggerExclusiveMode.class, t.configuration().get("exclusive"));
585+
assertEquals("branch", exclusive.groupByProperty());
586+
587+
t = triggers.get(1);
588+
assertEquals("github", t.name());
589+
exclusive = assertInstanceOf(GithubTriggerExclusiveMode.class, t.configuration().get("exclusive"));
590+
assertEquals("event.pull_request.html_url", exclusive.groupByProperty());
591+
}
592+
573593
@Test
574594
public void testArgsOrder() throws Exception {
575595
ProcessDefinition pd = load("args-order.concord.yml");
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
2+
triggers:
3+
- github:
4+
version: 2
5+
useInitiator: true
6+
entryPoint: onPush
7+
conditions:
8+
type: "push"
9+
exclusive:
10+
groupBy: branch
11+
12+
- github:
13+
version: 2
14+
useInitiator: true
15+
entryPoint: onPush2
16+
conditions:
17+
type: push2
18+
exclusive:
19+
groupBy: "event.pull_request.html_url"

0 commit comments

Comments
 (0)