Skip to content

Commit 512b544

Browse files
committed
runtime-v2: add github exclusive trigger to schema
1 parent fe76954 commit 512b544

File tree

7 files changed

+56
-21
lines changed

7 files changed

+56
-21
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.walmartlabs.concord.runtime.v2.model;
2+
3+
/*-
4+
* *****
5+
* Concord
6+
* -----
7+
* Copyright (C) 2017 - 2024 Walmart Inc.
8+
* -----
9+
* Licensed under the Apache License, Version 2.0 (the "License");
10+
* you may not use this file except in compliance with the License.
11+
* You may obtain a copy of the License at
12+
*
13+
* http://www.apache.org/licenses/LICENSE-2.0
14+
*
15+
* Unless required by applicable law or agreed to in writing, software
16+
* distributed under the License is distributed on an "AS IS" BASIS,
17+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18+
* See the License for the specific language governing permissions and
19+
* limitations under the License.
20+
* =====
21+
*/
22+
23+
import com.fasterxml.jackson.annotation.JsonInclude;
24+
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
25+
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
26+
import org.immutables.value.Value;
27+
28+
import java.io.Serial;
29+
30+
@Value.Immutable
31+
@Value.Style(jdkOnly = true)
32+
@JsonInclude(JsonInclude.Include.NON_EMPTY)
33+
@JsonSerialize(as = ImmutableDefaultExclusiveMode.class)
34+
@JsonDeserialize(as = ImmutableDefaultExclusiveMode.class)
35+
public interface DefaultExclusiveMode extends ExclusiveMode {
36+
37+
@Serial
38+
long serialVersionUID = 1L;
39+
40+
static ExclusiveMode of(String group, Mode mode) {
41+
return ImmutableDefaultExclusiveMode.of(group, mode);
42+
}
43+
44+
}

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,13 @@
2020
* =====
2121
*/
2222

23-
import com.fasterxml.jackson.annotation.JsonInclude;
2423
import com.fasterxml.jackson.annotation.JsonProperty;
25-
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
26-
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
2724
import org.immutables.value.Value;
2825

2926
import java.io.Serializable;
3027

31-
@Value.Immutable
32-
@Value.Style(jdkOnly = true)
33-
@JsonInclude(JsonInclude.Include.NON_EMPTY)
34-
@JsonSerialize(as = ImmutableExclusiveMode.class)
35-
@JsonDeserialize(as = ImmutableExclusiveMode.class)
3628
public interface ExclusiveMode extends Serializable {
3729

38-
long serialVersionUID = 1L;
39-
4030
@Value.Parameter
4131
@JsonProperty(value = "group", required = true)
4232
String group();
@@ -64,7 +54,4 @@ enum Mode {
6454
wait
6555
}
6656

67-
static ExclusiveMode of(String group, Mode mode) {
68-
return ImmutableExclusiveMode.of(group, mode);
69-
}
7057
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@
2828
import org.immutables.value.Value;
2929

3030
import javax.annotation.Nullable;
31+
import java.io.Serial;
3132
import java.io.Serializable;
3233

3334
@Value.Immutable
3435
@Value.Style(jdkOnly = true)
3536
@JsonInclude(JsonInclude.Include.NON_EMPTY)
3637
@JsonSerialize(as = ImmutableGithubTriggerExclusiveMode.class)
3738
@JsonDeserialize(as = ImmutableGithubTriggerExclusiveMode.class)
38-
public interface GithubTriggerExclusiveMode extends Serializable {
39+
public interface GithubTriggerExclusiveMode extends ExclusiveMode, Serializable {
3940

41+
@Serial
4042
long serialVersionUID = 1L;
4143

4244
@Nullable

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(ImmutableExclusiveMode::builder,
38+
with(ImmutableDefaultExclusiveMode::builder,
3939
o -> options(
4040
mandatory("group", stringNotEmptyVal.map(o::group)),
4141
optional("mode", enumVal(ExclusiveMode.Mode.class).map(o::mode))))
42-
.map(ImmutableExclusiveMode.Builder::build));
42+
.map(ImmutableDefaultExclusiveMode.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: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaInject;
2525
import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaString;
2626
import com.walmartlabs.concord.runtime.v2.model.ExclusiveMode;
27+
import com.walmartlabs.concord.runtime.v2.model.GithubTriggerExclusiveMode;
2728
import com.walmartlabs.concord.runtime.v2.model.Trigger;
2829

2930
import java.util.List;
@@ -111,7 +112,7 @@ interface GithubTriggerParams extends DefaultTriggerParams {
111112
GithubTriggerConditions conditions();
112113

113114
@JsonProperty("exclusive")
114-
ExclusiveMode exclusive();
115+
GithubTriggerExclusiveMode exclusive();
115116

116117
interface GithubTriggerConditions {
117118
@JsonProperty(value = "type", required = true)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ public void test008() throws Exception {
351351
assertEquals(Collections.singletonMap("k", "v"), cfg.arguments());
352352
assertEquals(Collections.singletonMap("k", "v1"), cfg.requirements());
353353
assertEquals(Duration.parse("PT1H"), cfg.processTimeout());
354-
assertEquals(ExclusiveMode.of("X", ExclusiveMode.Mode.cancel), cfg.exclusive());
354+
assertEquals(DefaultExclusiveMode.of("X", ExclusiveMode.Mode.cancel), cfg.exclusive());
355355
assertEquals(EventConfiguration.builder()
356356
.recordTaskInVars(true)
357357
.inVarsBlacklist(Collections.singletonList("pass"))

server/impl/src/main/java/com/walmartlabs/concord/server/process/PayloadUtils.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
import com.walmartlabs.concord.common.DateTimeUtils;
2424
import com.walmartlabs.concord.repository.Snapshot;
25+
import com.walmartlabs.concord.runtime.v2.model.DefaultExclusiveMode;
2526
import com.walmartlabs.concord.runtime.v2.model.ExclusiveMode;
2627
import com.walmartlabs.concord.sdk.Constants;
2728
import com.walmartlabs.concord.sdk.MapUtils;
@@ -44,7 +45,7 @@ public static ExclusiveMode getExclusive(Payload p) {
4445
throw new ProcessException(p.getProcessKey(), "Invalid exclusive mode: exclusive group not specified or empty");
4546
}
4647
ExclusiveMode.Mode mode = MapUtils.getEnum(exclusive, "mode", ExclusiveMode.Mode.class, ExclusiveMode.Mode.cancel);
47-
return ExclusiveMode.of(group, mode);
48+
return DefaultExclusiveMode.of(group, mode);
4849
}
4950

5051
@SuppressWarnings("unchecked")
@@ -65,10 +66,10 @@ public static OffsetDateTime getStartAt(Payload p) {
6566
return null;
6667
}
6768

68-
if (v instanceof String) {
69+
if (v instanceof String iso) {
6970
OffsetDateTime t;
7071
try {
71-
t = DateTimeUtils.fromIsoString((String) v);
72+
t = DateTimeUtils.fromIsoString(iso);
7273
} catch (DateTimeParseException e) {
7374
throw new ProcessException(p.getProcessKey(), "Invalid '" + k + "' format, expected an ISO-8601 value, got: " + v);
7475
}

0 commit comments

Comments
 (0)