Skip to content

Commit a589f61

Browse files
authored
refactor: rename ROLLBACK to ROLLED_BACK in markType (#890)
1 parent 7ce84f0 commit a589f61

7 files changed

Lines changed: 151 additions & 11 deletions

File tree

cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/ChangeRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static ChangeRequest ongoingExecution(String id, boolean transactional) {
3939
}
4040

4141
public static ChangeRequest ongoingRollback(String id, boolean transactional) {
42-
return new ChangeRequest(id, CloudTargetSystemAuditMarkType.ROLLBACK, transactional);
42+
return new ChangeRequest(id, CloudTargetSystemAuditMarkType.ROLLED_BACK, transactional);
4343
}
4444

4545
public ChangeRequest(String id, CloudTargetSystemAuditMarkType ongoingStatus, boolean transactional) {

cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/vo/CloudTargetSystemAuditMarkType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
package io.flamingock.cloud.api.vo;
1717

1818
public enum CloudTargetSystemAuditMarkType {
19-
NONE, APPLIED, ROLLBACK
19+
NONE, APPLIED, ROLLED_BACK
2020
}

core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/targets/TargetSystemAuditMarkType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
package io.flamingock.internal.common.core.targets;
1717

1818
public enum TargetSystemAuditMarkType {
19-
NONE, APPLIED, ROLLBACK
19+
NONE, APPLIED, ROLLED_BACK
2020
}

core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundle.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,33 @@ public enum Operation {
3535

3636
START_EXECUTION, EXECUTION, ROLLBACK;
3737

38+
private static final java.util.Map<Operation, TargetSystemAuditMarkType> TO_MARK_TYPE;
39+
private static final java.util.Map<TargetSystemAuditMarkType, Operation> FROM_MARK_TYPE;
40+
41+
static {
42+
TO_MARK_TYPE = new java.util.EnumMap<>(Operation.class);
43+
TO_MARK_TYPE.put(EXECUTION, TargetSystemAuditMarkType.APPLIED);
44+
TO_MARK_TYPE.put(ROLLBACK, TargetSystemAuditMarkType.ROLLED_BACK);
45+
46+
FROM_MARK_TYPE = new java.util.EnumMap<>(TargetSystemAuditMarkType.class);
47+
FROM_MARK_TYPE.put(TargetSystemAuditMarkType.APPLIED, EXECUTION);
48+
FROM_MARK_TYPE.put(TargetSystemAuditMarkType.ROLLED_BACK, ROLLBACK);
49+
}
50+
3851
public TargetSystemAuditMarkType toOngoingStatusOperation() {
39-
return TargetSystemAuditMarkType.valueOf(this.name());
52+
TargetSystemAuditMarkType result = TO_MARK_TYPE.get(this);
53+
if (result == null) {
54+
throw new IllegalArgumentException("No TargetSystemAuditMarkType mapping for Operation." + this.name());
55+
}
56+
return result;
4057
}
4158

42-
public static AuditContextBundle.Operation fromOngoingStatusOperation(TargetSystemAuditMarkType ongoingOperation) {
43-
return AuditContextBundle.Operation.valueOf(ongoingOperation.name());
59+
public static Operation fromOngoingStatusOperation(TargetSystemAuditMarkType ongoingOperation) {
60+
Operation result = FROM_MARK_TYPE.get(ongoingOperation);
61+
if (result == null) {
62+
throw new IllegalArgumentException("No Operation mapping for TargetSystemAuditMarkType." + ongoingOperation.name());
63+
}
64+
return result;
4465
}
4566

4667
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/*
2+
* Copyright 2026 Flamingock (https://www.flamingock.io)
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.flamingock.internal.core.external.store.audit.domain;
17+
18+
import io.flamingock.internal.common.core.targets.TargetSystemAuditMarkType;
19+
import org.junit.jupiter.api.DisplayName;
20+
import org.junit.jupiter.api.Test;
21+
import org.junit.jupiter.params.ParameterizedTest;
22+
import org.junit.jupiter.params.provider.EnumSource;
23+
24+
import static org.junit.jupiter.api.Assertions.*;
25+
26+
class OperationMappingTest {
27+
28+
@Test
29+
@DisplayName("EXECUTION should map to APPLIED")
30+
void executionMapsToApplied() {
31+
assertEquals(TargetSystemAuditMarkType.APPLIED,
32+
AuditContextBundle.Operation.EXECUTION.toOngoingStatusOperation());
33+
}
34+
35+
@Test
36+
@DisplayName("ROLLBACK should map to ROLLED_BACK")
37+
void rollbackMapsToRolledBack() {
38+
assertEquals(TargetSystemAuditMarkType.ROLLED_BACK,
39+
AuditContextBundle.Operation.ROLLBACK.toOngoingStatusOperation());
40+
}
41+
42+
@Test
43+
@DisplayName("APPLIED should map back to EXECUTION")
44+
void appliedMapsToExecution() {
45+
assertEquals(AuditContextBundle.Operation.EXECUTION,
46+
AuditContextBundle.Operation.fromOngoingStatusOperation(TargetSystemAuditMarkType.APPLIED));
47+
}
48+
49+
@Test
50+
@DisplayName("ROLLED_BACK should map back to ROLLBACK")
51+
void rolledBackMapsToRollback() {
52+
assertEquals(AuditContextBundle.Operation.ROLLBACK,
53+
AuditContextBundle.Operation.fromOngoingStatusOperation(TargetSystemAuditMarkType.ROLLED_BACK));
54+
}
55+
56+
@Test
57+
@DisplayName("START_EXECUTION should throw when mapped to TargetSystemAuditMarkType")
58+
void startExecutionHasNoMapping() {
59+
assertThrows(IllegalArgumentException.class,
60+
() -> AuditContextBundle.Operation.START_EXECUTION.toOngoingStatusOperation());
61+
}
62+
63+
@Test
64+
@DisplayName("NONE should throw when mapped to Operation")
65+
void noneHasNoMapping() {
66+
assertThrows(IllegalArgumentException.class,
67+
() -> AuditContextBundle.Operation.fromOngoingStatusOperation(TargetSystemAuditMarkType.NONE));
68+
}
69+
70+
@ParameterizedTest(name = "Every mappable Operation.{0} should round-trip through TargetSystemAuditMarkType")
71+
@EnumSource(value = AuditContextBundle.Operation.class, names = {"EXECUTION", "ROLLBACK"})
72+
void operationRoundTrips(AuditContextBundle.Operation operation) {
73+
TargetSystemAuditMarkType markType = operation.toOngoingStatusOperation();
74+
AuditContextBundle.Operation back = AuditContextBundle.Operation.fromOngoingStatusOperation(markType);
75+
assertEquals(operation, back);
76+
}
77+
78+
@ParameterizedTest(name = "Every mappable TargetSystemAuditMarkType.{0} should round-trip through Operation")
79+
@EnumSource(value = TargetSystemAuditMarkType.class, names = {"APPLIED", "ROLLED_BACK"})
80+
void markTypeRoundTrips(TargetSystemAuditMarkType markType) {
81+
AuditContextBundle.Operation operation = AuditContextBundle.Operation.fromOngoingStatusOperation(markType);
82+
TargetSystemAuditMarkType back = operation.toOngoingStatusOperation();
83+
assertEquals(markType, back);
84+
}
85+
86+
@Test
87+
@DisplayName("All mappable Operations must have a mapping — fails if a new Operation is added without updating the map")
88+
void allMappableOperationsCovered() {
89+
int expectedMappable = 2; // EXECUTION, ROLLBACK — START_EXECUTION is intentionally unmapped
90+
int actualMappable = 0;
91+
for (AuditContextBundle.Operation op : AuditContextBundle.Operation.values()) {
92+
try {
93+
op.toOngoingStatusOperation();
94+
actualMappable++;
95+
} catch (IllegalArgumentException ignored) {
96+
}
97+
}
98+
assertEquals(expectedMappable, actualMappable,
99+
"A new Operation value was added without updating the mapping in Operation. " +
100+
"Update TO_MARK_TYPE/FROM_MARK_TYPE maps and this test.");
101+
}
102+
103+
@Test
104+
@DisplayName("All mappable TargetSystemAuditMarkTypes must have a mapping — fails if a new value is added without updating the map")
105+
void allMappableMarkTypesCovered() {
106+
int expectedMappable = 2; // APPLIED, ROLLED_BACK — NONE is intentionally unmapped
107+
int actualMappable = 0;
108+
for (TargetSystemAuditMarkType mt : TargetSystemAuditMarkType.values()) {
109+
try {
110+
AuditContextBundle.Operation.fromOngoingStatusOperation(mt);
111+
actualMappable++;
112+
} catch (IllegalArgumentException ignored) {
113+
}
114+
}
115+
assertEquals(expectedMappable, actualMappable,
116+
"A new TargetSystemAuditMarkType value was added without updating the mapping in Operation. " +
117+
"Update TO_MARK_TYPE/FROM_MARK_TYPE maps and this test.");
118+
}
119+
}

core/target-systems/flamingock-sql-targetsystem/src/main/java/io/flamingock/targetsystem/sql/SqlTargetSystemAuditMarker.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import io.flamingock.internal.common.core.error.FlamingockException;
1919
import io.flamingock.internal.common.sql.SqlDialect;
2020
import io.flamingock.internal.core.transaction.TransactionManager;
21-
import io.flamingock.internal.core.external.store.audit.domain.AuditContextBundle;
21+
import io.flamingock.internal.common.core.targets.TargetSystemAuditMarkType;
2222
import io.flamingock.internal.core.external.targets.mark.TargetSystemAuditMark;
2323
import io.flamingock.internal.core.external.targets.mark.TargetSystemAuditMarker;
2424

@@ -66,8 +66,8 @@ public Set<TargetSystemAuditMark> listAll() {
6666
Set<TargetSystemAuditMark> ongoingStatuses = new HashSet<>();
6767
while (resultSet.next()) {
6868
String changeId = resultSet.getString("change_id");
69-
AuditContextBundle.Operation operation = AuditContextBundle.Operation.valueOf(resultSet.getString("operation"));
70-
ongoingStatuses.add(new TargetSystemAuditMark(changeId, operation.toOngoingStatusOperation()));
69+
TargetSystemAuditMarkType markType = TargetSystemAuditMarkType.valueOf(resultSet.getString("operation"));
70+
ongoingStatuses.add(new TargetSystemAuditMark(changeId, markType));
7171
}
7272
return ongoingStatuses;
7373
} catch (SQLException ex) {

core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/SqlAuditMarkerDialectHelperTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ void addOngoingChangeMark(SqlDialect dialect) {
175175
// GIVEN
176176
String changeId1 = "test-change-id1";
177177
String changeId2 = "test-change-id2";
178-
TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.ROLLBACK;
178+
TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.ROLLED_BACK;
179179

180180
TargetSystemAuditMark mark1 = new TargetSystemAuditMark(changeId1, operation);
181181
TargetSystemAuditMark mark2 = new TargetSystemAuditMark(changeId2, operation);
@@ -221,7 +221,7 @@ void removeOngoingChangeMark(SqlDialect dialect) {
221221
// GIVEN
222222
String changeId1 = "test-change-id1";
223223
String changeId2 = "test-change-id2";
224-
TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.ROLLBACK;
224+
TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.ROLLED_BACK;
225225

226226
TargetSystemAuditMark mark1 = new TargetSystemAuditMark(changeId1, operation);
227227
TargetSystemAuditMark mark2 = new TargetSystemAuditMark(changeId2, operation);

0 commit comments

Comments
 (0)