diff --git a/CLAUDE.md b/CLAUDE.md index e3b93d154..1726c17f5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -141,7 +141,7 @@ This is a multi-module Gradle project using Kotlin DSL. - AuditStore initialization requires full hierarchical context for dependency resolution **Plugin System**: Extensible architecture via `Plugin` interface: -- Contribute task filters, event publishers, and dependency contexts +- Contribute change filters, event publishers, and dependency contexts - Platform plugins (e.g., `flamingock-springboot-integration`) provide framework integration - Initialized after base context setup but before hierarchical context building @@ -339,24 +339,24 @@ YAML File ChangeTemplateFileContent ↓ (preview building) TemplatePreviewChange (unified) - ↓ (loaded task building - template lookup from registry) + ↓ (loaded change building - template lookup from registry) AbstractTemplateLoadedChange ├── SimpleTemplateLoadedChange (for AbstractSimpleTemplate) └── SteppableTemplateLoadedChange (for AbstractSteppableTemplate) ↓ (execution preparation) -TemplateExecutableTask - ├── SimpleTemplateExecutableTask (calls setStep()) - └── SteppableTemplateExecutableTask (calls setSteps()) +TemplateExecutableChange + ├── SimpleTemplateExecutableChange (calls setStep()) + └── SteppableTemplateExecutableChange (calls setSteps()) ↓ (runtime execution) Template instance with injected dependencies ``` **Key Classes in Flow**: - `ChangeTemplateFileContent` - YAML parsed data (`core/flamingock-core-commons`) -- `TemplatePreviewTaskBuilder` - Builds preview from file content (`core/flamingock-core-commons`) -- `TemplateLoadedTaskBuilder` - Resolves template class, builds type-specific loaded change (`core/flamingock-core`) -- `TemplateExecutableTaskBuilder` - Builds type-specific executable task (`core/flamingock-core`) -- `TemplateExecutableTask` - Abstract base for template execution (`core/flamingock-core`) +- `TemplatePreviewChangeBuilder` - Builds preview from file content (`core/flamingock-core-commons`) +- `TemplateLoadedChangeBuilder` - Resolves template class, builds type-specific loaded change (`core/flamingock-core`) +- `TemplateExecutableChangeBuilder` - Builds type-specific executable change (`core/flamingock-core`) +- `TemplateExecutableChange` - Abstract base for template execution (`core/flamingock-core`) ### Discovery Mechanism (SPI) @@ -444,20 +444,20 @@ AbstractTemplateLoadedChange (abstract base) **Executable Phase:** ``` -TemplateExecutableTask (abstract base) -├── SimpleTemplateExecutableTask (calls setStep()) -└── SteppableTemplateExecutableTask (calls setSteps()) +TemplateExecutableChange (abstract base) +├── SimpleTemplateExecutableChange (calls setStep()) +└── SteppableTemplateExecutableChange (calls setSteps()) ``` -**Type Detection:** Happens in `TemplateLoadedTaskBuilder.build()` using: +**Type Detection:** Happens in `TemplateLoadedChangeBuilder.build()` using: - `AbstractSteppableTemplate.class.isAssignableFrom(templateClass)` → SteppableTemplateLoadedChange - Otherwise → SimpleTemplateLoadedChange (default for AbstractSimpleTemplate and unknown types) **Note:** Preview phase (`TemplatePreviewChange`) remains unified since YAML is parsed before template type is known. -### SteppableTemplateExecutableTask Apply/Rollback Lifecycle +### SteppableTemplateExecutableChange Apply/Rollback Lifecycle -The `SteppableTemplateExecutableTask` manages multi-step execution with per-step rollback: +The `SteppableTemplateExecutableChange` manages multi-step execution with per-step rollback: **Apply Phase:** - Iterates through steps in order (0 → N-1) @@ -471,7 +471,7 @@ The `SteppableTemplateExecutableTask` manages multi-step execution with per-step - **Skips steps without rollback payload** (`hasRollback()` returns false) - **Skips if template has no `@Rollback` method** (logs warning) -**Key Design Decision:** Same `SteppableTemplateExecutableTask` instance is used for both apply and rollback (no retry). The `stepIndex` state persists to enable rollback from the exact failure point. +**Key Design Decision:** Same `SteppableTemplateExecutableChange` instance is used for both apply and rollback (no retry). The `stepIndex` state persists to enable rollback from the exact failure point. ### Dependency Injection in Templates diff --git a/RECOVERY_EXAMPLE.md b/RECOVERY_EXAMPLE.md index 9f73dfef0..23189e35d 100644 --- a/RECOVERY_EXAMPLE.md +++ b/RECOVERY_EXAMPLE.md @@ -96,8 +96,8 @@ stages: The recovery strategy is available throughout the execution pipeline: ```java -// In ExecutableTask (available during execution) -ExecutableTask task = // ... get from pipeline +// In ExecutableChange (available during execution) +ExecutableChange task = // ... get from pipeline RecoveryDescriptor recovery = task.getRecovery(); RecoveryStrategy strategy = recovery.getStrategy(); diff --git a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/AuditEntryRequest.java b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/AuditEntryRequest.java index 7b166992b..e48ea4447 100644 --- a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/AuditEntryRequest.java +++ b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/AuditEntryRequest.java @@ -22,8 +22,8 @@ public class AuditEntryRequest { + private String changeId; private String stageId; - private String taskId; private String author; private long appliedAtEpochMillis; private CloudAuditStatus state; @@ -45,7 +45,7 @@ public AuditEntryRequest() { } public AuditEntryRequest(String stageId, - String taskId, + String changeId, String author, long appliedAtEpochMillis, CloudAuditStatus state, @@ -63,7 +63,7 @@ public AuditEntryRequest(String stageId, CloudRecoveryStrategy recoveryStrategy, Boolean transactionFlag) { this.stageId = stageId; - this.taskId = taskId; + this.changeId = changeId; this.author = author; this.appliedAtEpochMillis = appliedAtEpochMillis; this.state = state; @@ -87,8 +87,8 @@ public String getStageId() { return stageId; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } public String getAuthor() { diff --git a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/ChangeRequest.java b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/ChangeRequest.java index 8491fb507..fbb9b4963 100644 --- a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/ChangeRequest.java +++ b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/ChangeRequest.java @@ -30,7 +30,7 @@ public class ChangeRequest { public ChangeRequest() { } - public static ChangeRequest task(String id, boolean transactional) { + public static ChangeRequest change(String id, boolean transactional) { return new ChangeRequest(id, CloudTargetSystemAuditMarkType.NONE, transactional); } diff --git a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/StageRequest.java b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/StageRequest.java index 6ed358cb0..62647538c 100644 --- a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/StageRequest.java +++ b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/request/StageRequest.java @@ -22,15 +22,15 @@ public class StageRequest { private int order; - private List tasks; + private List changes; public StageRequest() { } - public StageRequest(String name, int order, List tasks) { + public StageRequest(String name, int order, List changes) { this.name = name; this.order = order; - this.tasks = tasks; + this.changes = changes; } public String getName() { @@ -41,8 +41,8 @@ public int getOrder() { return order; } - public List getTasks() { - return tasks; + public List getChanges() { + return changes; } public void setName(String name) { @@ -53,8 +53,8 @@ public void setOrder(int order) { this.order = order; } - public void setTasks(List tasks) { - this.tasks = tasks; + public void setChanges(List changes) { + this.changes = changes; } @Override @@ -64,11 +64,11 @@ public boolean equals(Object o) { StageRequest that = (StageRequest) o; return order == that.order && java.util.Objects.equals(name, that.name) - && java.util.Objects.equals(tasks, that.tasks); + && java.util.Objects.equals(changes, that.changes); } @Override public int hashCode() { - return java.util.Objects.hash(name, order, tasks); + return java.util.Objects.hash(name, order, changes); } } diff --git a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/response/StageResponse.java b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/response/StageResponse.java index e2d407887..a11436f30 100644 --- a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/response/StageResponse.java +++ b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/response/StageResponse.java @@ -22,15 +22,15 @@ public class StageResponse { private int order; - private List tasks; + private List changes; public StageResponse() { } - public StageResponse(String name, int order, List tasks) { + public StageResponse(String name, int order, List changes) { this.name = name; this.order = order; - this.tasks = tasks; + this.changes = changes; } public String getName() { @@ -41,12 +41,12 @@ public void setName(String name) { this.name = name; } - public List getTasks() { - return tasks; + public List getChanges() { + return changes; } - public void setTasks(List tasks) { - this.tasks = tasks; + public void setChanges(List changes) { + this.changes = changes; } public int getOrder() { @@ -64,11 +64,11 @@ public boolean equals(Object o) { StageResponse that = (StageResponse) o; return order == that.order && java.util.Objects.equals(name, that.name) - && java.util.Objects.equals(tasks, that.tasks); + && java.util.Objects.equals(changes, that.changes); } @Override public int hashCode() { - return java.util.Objects.hash(name, order, tasks); + return java.util.Objects.hash(name, order, changes); } } diff --git a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/vo/CloudChangeAction.java b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/vo/CloudChangeAction.java index eaf0e03c5..60a285c8a 100644 --- a/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/vo/CloudChangeAction.java +++ b/cloud/flamingock-cloud-api/src/main/java/io/flamingock/cloud/api/vo/CloudChangeAction.java @@ -18,25 +18,25 @@ /** * Represents the cloud orchestrator's decision about what action should be taken - * for a specific task. This enum maintains separation from the internal ChangeAction + * for a specific change. This enum maintains separation from the internal ChangeAction * to preserve cloud domain boundaries while keeping aligned enum values. */ public enum CloudChangeAction { /** - * The task needs to be applied/applied - cloud orchestrator determined it should run. + * The change needs to be applied/applied - cloud orchestrator determined it should run. * Maps to ChangeAction.APPLY. */ APPLY, /** - * The task should be skipped as it has already been successfully applied. + * The change should be skipped as it has already been successfully applied. * Maps to ChangeAction.SKIP. */ SKIP, /** - * Manual intervention is required for this task. + * Manual intervention is required for this change. * Maps to ChangeAction.MANUAL_INTERVENTION. */ MANUAL_INTERVENTION diff --git a/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/audit/HtttpAuditWriter.java b/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/audit/HtttpAuditWriter.java index 934e388ae..73f7020ee 100644 --- a/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/audit/HtttpAuditWriter.java +++ b/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/audit/HtttpAuditWriter.java @@ -56,7 +56,7 @@ public HtttpAuditWriter(String host, this.runnerId = runnerId; this.pathTemplate = String.format( - "/api/%s/environment/%s/service/%s/execution/{executionId}/task/{taskId}/audit", + "/api/%s/environment/%s/service/%s/execution/{executionId}/change/{changeId}/audit", apiVersion, environmentId.toString(), serviceId.toString()); @@ -74,12 +74,12 @@ public Result writeEntry(AuditEntry auditEntry) { .withRunnerId(runnerId) .withBearerToken(authManager.getJwtToken()) .addPathParameter("executionId", auditEntry.getExecutionId()) - .addPathParameter("taskId", auditEntry.getTaskId()) + .addPathParameter("changeId", auditEntry.getChangeId()) .setBody(auditEntryRequest) .execute(); return Result.OK(); } catch (Throwable throwable) { - logger.debug("Error writing audit [{}] :\n{}", auditEntry.getTaskId(), throwable.toString()); + logger.debug("Error writing audit [{}] :\n{}", auditEntry.getChangeId(), throwable.toString()); return new Result.Error(throwable); } @@ -91,7 +91,7 @@ private AuditEntryRequest buildRequest(AuditEntry auditEntry) { CloudTxStrategy txType = auditEntry.getTxType() != null ? CloudApiMapper.toCloud(auditEntry.getTxType()) : null; return new AuditEntryRequest( auditEntry.getStageId(), - auditEntry.getTaskId(), + auditEntry.getChangeId(), auditEntry.getAuthor(), appliedAtEpochMillis, CloudApiMapper.toCloud(auditEntry.getState()), diff --git a/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanMapper.java b/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanMapper.java index ab8994381..58601bf98 100644 --- a/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanMapper.java +++ b/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanMapper.java @@ -35,8 +35,8 @@ import io.flamingock.internal.core.external.store.lock.LockKey; import io.flamingock.internal.core.pipeline.execution.ExecutableStage; import io.flamingock.internal.core.pipeline.loaded.stage.AbstractLoadedStage; -import io.flamingock.internal.common.core.task.TaskDescriptor; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.common.core.change.ChangeDescriptor; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -58,19 +58,19 @@ public static ExecutionPlanRequest toRequest(List loadedSta List requestStages = new ArrayList<>(loadedStages.size()); for (int i = 0; i < loadedStages.size(); i++) { AbstractLoadedStage currentStage = loadedStages.get(i); - List stageTasks = currentStage - .getTasks() + List stageChanges = currentStage + .getChanges() .stream() .map(descriptor -> CloudExecutionPlanMapper.mapToChangeRequest(descriptor, ongoingStatusesMap)) .collect(Collectors.toList()); - requestStages.add(new StageRequest(currentStage.getName(), i, stageTasks)); + requestStages.add(new StageRequest(currentStage.getName(), i, stageChanges)); } return new ExecutionPlanRequest(lockAcquiredForMillis, requestStages); } - private static ChangeRequest mapToChangeRequest(AbstractLoadedTask descriptor, - Map ongoingStatusesMap) { + private static ChangeRequest mapToChangeRequest(AbstractLoadedChange descriptor, + Map ongoingStatusesMap) { TargetSystemAuditMarkType domainStatus = ongoingStatusesMap.get(descriptor.getId()); CloudTargetSystemAuditMarkType cloudStatus = domainStatus != null ? CloudApiMapper.toCloud(domainStatus) @@ -96,12 +96,12 @@ static List getExecutableStages(ExecutionPlanResponse response, } private static ExecutableStage mapToExecutable(AbstractLoadedStage loadedStage, StageResponse stageResponse) { - Map taskStateMap = stageResponse.getTasks() + Map changeStateMap = stageResponse.getChanges() .stream() .collect(Collectors.toMap(ChangeResponse::getId, ChangeResponse::getAction)); // Build action map using anti-corruption layer - ChangeActionMap actionPlan = getChangeActionMap(loadedStage, taskStateMap); + ChangeActionMap actionPlan = getChangeActionMap(loadedStage, changeStateMap); return loadedStage.applyActions(actionPlan); } @@ -109,16 +109,16 @@ private static ExecutableStage mapToExecutable(AbstractLoadedStage loadedStage, private static ChangeActionMap getChangeActionMap(AbstractLoadedStage loadedStage, Map actionsMapByChangeId) { Map actionMap = new HashMap<>(); - for (TaskDescriptor task : loadedStage.getTasks()) { - String taskId = task.getId(); - CloudChangeAction cloudAction = actionsMapByChangeId.get(taskId); + for (ChangeDescriptor change : loadedStage.getChanges()) { + String changeId = change.getId(); + CloudChangeAction cloudAction = actionsMapByChangeId.get(changeId); - // If task not in response, assume it's already applied (cloud orchestrator decision) + // If change not in response, assume it's already applied (cloud orchestrator decision) if (cloudAction == null) { - actionMap.put(taskId, ChangeAction.SKIP); + actionMap.put(changeId, ChangeAction.SKIP); } else { // Use anti-corruption layer to map cloud domain to internal domain - actionMap.put(taskId, mapCloudActionToChangeAction(cloudAction)); + actionMap.put(changeId, mapCloudActionToChangeAction(cloudAction)); } } diff --git a/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanner.java b/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanner.java index 1c24d5a71..bd93f2a6a 100644 --- a/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanner.java +++ b/cloud/flamingock-cloud/src/main/java/io/flamingock/cloud/planner/CloudExecutionPlanner.java @@ -133,7 +133,7 @@ private ExecutionPlanResponse createExecution(List loadedSt Map auditMarks = getOngoingStatuses() .stream() - .collect(Collectors.toMap(TargetSystemAuditMark::getTaskId, TargetSystemAuditMark::getOperation)); + .collect(Collectors.toMap(TargetSystemAuditMark::getChangeId, TargetSystemAuditMark::getOperation)); ExecutionPlanRequest requestBody = CloudExecutionPlanMapper.toRequest( loadedStages, diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/cloud/audit/HttpAuditWriterMapperTest.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/cloud/audit/HttpAuditWriterMapperTest.java index 608f829c7..1008d4da4 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/cloud/audit/HttpAuditWriterMapperTest.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/cloud/audit/HttpAuditWriterMapperTest.java @@ -46,7 +46,7 @@ void shouldIncludeTxTypeInRequest() { // When AuditEntryRequest request = new AuditEntryRequest( auditEntry.getStageId(), - auditEntry.getTaskId(), + auditEntry.getChangeId(), auditEntry.getAuthor(), System.currentTimeMillis(), CloudApiMapper.toCloud(auditEntry.getState()), @@ -78,7 +78,7 @@ void shouldHandleNullTxType() { // When AuditEntryRequest request = new AuditEntryRequest( auditEntry.getStageId(), - auditEntry.getTaskId(), + auditEntry.getChangeId(), auditEntry.getAuthor(), System.currentTimeMillis(), CloudApiMapper.toCloud(auditEntry.getState()), diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudAuditPersistenceTest.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudAuditPersistenceTest.java index 212b5acc9..e5bc496e6 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudAuditPersistenceTest.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudAuditPersistenceTest.java @@ -136,7 +136,7 @@ void happyPath() { String executionId = "execution-1"; mockRunnerServer .addSimpleStageExecutionPlan(executionId, "changes", auditEntryExpectations) - .addExecutionWithAllTasksRequestResponse(executionId) + .addExecutionWithAllChangesRequestResponse(executionId) .addExecutionContinueRequestResponse(); mockRunnerServer.start(); @@ -160,7 +160,7 @@ void shouldPerformRightCallsWhenAwaitExecuteContinue() { mockRunnerServer .addSimpleStageExecutionPlan(executionId, "changes", auditEntryExpectations) .addExecutionAwaitRequestResponse(executionId) - .addExecutionWithAllTasksRequestResponse(executionId) + .addExecutionWithAllChangesRequestResponse(executionId) .addExecutionContinueRequestResponse() .start(); diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudTransactionTest.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudTransactionTest.java index 3d70769f4..ce6df1122 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudTransactionTest.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/CloudTransactionTest.java @@ -128,7 +128,7 @@ void happyPath() { String executionId = "execution-1"; mockRunnerServer .addSimpleStageExecutionPlan(executionId, "changes", auditEntries) - .addExecutionWithAllTasksRequestResponse(executionId) + .addExecutionWithAllChangesRequestResponse(executionId) .addExecutionContinueRequestResponse(); mockRunnerServer.start(); @@ -142,12 +142,12 @@ void happyPath() { runner.execute(); //THEN - verify(cloudTargetSystem.getOnGoingTaskStatusRepository(), new Times(2)).listAll(); - verify(cloudTargetSystem.getOnGoingTaskStatusRepository(), new Times(1)).mark(new TargetSystemAuditMark("create-persons-table-from-template", TargetSystemAuditMarkType.APPLIED)); + verify(cloudTargetSystem.getOnGoingChangeStatusRepository(), new Times(2)).listAll(); + verify(cloudTargetSystem.getOnGoingChangeStatusRepository(), new Times(1)).mark(new TargetSystemAuditMark("create-persons-table-from-template", TargetSystemAuditMarkType.APPLIED)); ArgumentCaptor changeIdValuesCaptor = ArgumentCaptor.forClass(String.class); - verify(cloudTargetSystem.getOnGoingTaskStatusRepository(), new Times(1)).mark(new TargetSystemAuditMark("create-persons-table-from-template-2", TargetSystemAuditMarkType.APPLIED)); - verify(cloudTargetSystem.getOnGoingTaskStatusRepository(), new Times(2)).clearMark(changeIdValuesCaptor.capture()); + verify(cloudTargetSystem.getOnGoingChangeStatusRepository(), new Times(1)).mark(new TargetSystemAuditMark("create-persons-table-from-template-2", TargetSystemAuditMarkType.APPLIED)); + verify(cloudTargetSystem.getOnGoingChangeStatusRepository(), new Times(2)).clearMark(changeIdValuesCaptor.capture()); List allValues = changeIdValuesCaptor.getAllValues(); Assertions.assertEquals("create-persons-table-from-template", allValues.get(0)); diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_001__CloudChange1.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_001__CloudChange1.java index 59d0478d9..2ab0dac31 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_001__CloudChange1.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_001__CloudChange1.java @@ -18,12 +18,12 @@ import io.flamingock.api.annotations.Change; import io.flamingock.api.annotations.Apply; import io.flamingock.api.annotations.TargetSystem; -import io.flamingock.core.utils.TaskExecutionChecker; +import io.flamingock.core.utils.ChangeExecutionChecker; @TargetSystem(id = "auth0") @Change(id = "create-persons-table-from-template", author = "aperezdieppa") public class _001__CloudChange1 { - public static final TaskExecutionChecker checker = new TaskExecutionChecker(); + public static final ChangeExecutionChecker checker = new ChangeExecutionChecker(); @Apply public void apply() { diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_002__CloudChange2.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_002__CloudChange2.java index de3cdf40f..acda04cc4 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_002__CloudChange2.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/changes/_002__CloudChange2.java @@ -18,12 +18,12 @@ import io.flamingock.api.annotations.Change; import io.flamingock.api.annotations.Apply; import io.flamingock.api.annotations.TargetSystem; -import io.flamingock.core.utils.TaskExecutionChecker; +import io.flamingock.core.utils.ChangeExecutionChecker; @TargetSystem(id = "auth0") @Change(id = "create-persons-table-from-template-2", author = "aperezdieppa") public class _002__CloudChange2 { - public static final TaskExecutionChecker checker = new TaskExecutionChecker(); + public static final ChangeExecutionChecker checker = new ChangeExecutionChecker(); @Apply public void apply() { diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/utils/TestCloudTargetSystem.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/utils/TestCloudTargetSystem.java index 4ad63b2e4..656cd63e8 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/utils/TestCloudTargetSystem.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/cloud/utils/TestCloudTargetSystem.java @@ -40,7 +40,7 @@ public TestCloudTargetSystem(String id, TargetSystemAuditMark... statuses) { this.txWrapper = Mockito.spy(new TestCloudTxWrapper()); } - public TargetSystemAuditMarker getOnGoingTaskStatusRepository() { + public TargetSystemAuditMarker getOnGoingChangeStatusRepository() { return ongoignRepo; } @@ -84,7 +84,7 @@ public Set listAll() { @Override public void clearMark(String changeId) { - ongoingStatuses.removeIf(status -> changeId.equals(status.getTaskId())); + ongoingStatuses.removeIf(status -> changeId.equals(status.getChangeId())); } @Override diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TaskExecutionChecker.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/ChangeExecutionChecker.java similarity index 67% rename from cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TaskExecutionChecker.java rename to cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/ChangeExecutionChecker.java index 21101f77b..b6b0012fa 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TaskExecutionChecker.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/ChangeExecutionChecker.java @@ -20,11 +20,11 @@ import java.util.List; import java.util.stream.Collectors; -public class TaskExecutionChecker { +public class ChangeExecutionChecker { - private final List history = new ArrayList<>(); + private final List history = new ArrayList<>(); - public TaskExecutionChecker() { + public ChangeExecutionChecker() { } public void reset() { @@ -32,53 +32,53 @@ public void reset() { } public boolean isApplied() { - return history.contains(TestTaskExecution.EXECUTION); + return history.contains(TestChangeExecution.EXECUTION); } public void markExecution() { - history.add(TestTaskExecution.EXECUTION); + history.add(TestChangeExecution.EXECUTION); } public boolean isRolledBack() { - return history.contains(TestTaskExecution.ROLLBACK_EXECUTION); + return history.contains(TestChangeExecution.ROLLBACK_EXECUTION); } public void markRollBackExecution() { - history.add(TestTaskExecution.ROLLBACK_EXECUTION); + history.add(TestChangeExecution.ROLLBACK_EXECUTION); } - public void checkOrderStrict(TestTaskExecution execution, TestTaskExecution... otherExecutions) { - List allExecutions = new ArrayList<>(); + public void checkOrderStrict(TestChangeExecution execution, TestChangeExecution... otherExecutions) { + List allExecutions = new ArrayList<>(); allExecutions.add(execution); allExecutions.addAll(Arrays.asList(otherExecutions)); checkOrderStrict(allExecutions); } - public void checkOrderStrict(List executions) { + public void checkOrderStrict(List executions) { if(executions.size() != history.size()) { throw new RuntimeException(String.format("(strict)Expected executions[%d] doesn't match actual executions[%d]" + "\nexpected:\n\t%s" + "\nactual:\n\t%s\n", executions.size(), history.size(), - executions.stream().map(TestTaskExecution::name).collect(Collectors.joining(",\n\t")), - history.stream().map(TestTaskExecution::name).collect(Collectors.joining(",\n\t")) + executions.stream().map(TestChangeExecution::name).collect(Collectors.joining(",\n\t")), + history.stream().map(TestChangeExecution::name).collect(Collectors.joining(",\n\t")) )); } checkExecutions(executions); } - public void checkOrder(TestTaskExecution execution, TestTaskExecution... otherExecutions) { + public void checkOrder(TestChangeExecution execution, TestChangeExecution... otherExecutions) { - List allExecutions = new ArrayList<>(); + List allExecutions = new ArrayList<>(); allExecutions.add(execution); allExecutions.addAll(Arrays.asList(otherExecutions)); checkExecutions(allExecutions); } - private void checkExecutions(List allExecutions) { + private void checkExecutions(List allExecutions) { for (int index = 0; index < allExecutions.size(); index++) { if (history.size() <= index) { throw new RuntimeException(String.format("history[%d executions] shorter than expected history", diff --git a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TestTaskExecution.java b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TestChangeExecution.java similarity index 95% rename from cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TestTaskExecution.java rename to cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TestChangeExecution.java index 074061b07..ab53671e6 100644 --- a/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TestTaskExecution.java +++ b/cloud/flamingock-cloud/src/test/java/io/flamingock/core/utils/TestChangeExecution.java @@ -15,7 +15,7 @@ */ package io.flamingock.core.utils; -public enum TestTaskExecution { +public enum TestChangeExecution { EXECUTION, ROLLBACK_EXECUTION } diff --git a/community/flamingock-couchbase-auditstore/src/main/java/io/flamingock/store/couchbase/internal/CouchbaseAuditor.java b/community/flamingock-couchbase-auditstore/src/main/java/io/flamingock/store/couchbase/internal/CouchbaseAuditor.java index a653ec803..0fc331540 100644 --- a/community/flamingock-couchbase-auditstore/src/main/java/io/flamingock/store/couchbase/internal/CouchbaseAuditor.java +++ b/community/flamingock-couchbase-auditstore/src/main/java/io/flamingock/store/couchbase/internal/CouchbaseAuditor.java @@ -92,7 +92,7 @@ public List getAuditHistory() { private String toKey(AuditEntry auditEntry) { return auditEntry.getExecutionId() + '#' + - auditEntry.getTaskId() + + auditEntry.getChangeId() + '#' + auditEntry.getState().name(); } diff --git a/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/CouchbaseAuditStoreTest.java b/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/CouchbaseAuditStoreTest.java index c844a7084..4d1e7b4c3 100644 --- a/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/CouchbaseAuditStoreTest.java +++ b/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/CouchbaseAuditStoreTest.java @@ -83,7 +83,7 @@ void happyPath() { Bucket bucket = cluster.bucket(BUCKET_NAME); Collection testCollection = bucket.defaultCollection(); - String[] expectedTaskIds = {"create-index", "insert-document", "insert-another-document"}; + String[] expectedChangeIds = {"create-index", "insert-document", "insert-another-document"}; //Given-When-Then AuditTestSupport.withTestKit(testKit) .GIVEN_Changes( @@ -98,12 +98,12 @@ void happyPath() { .build() .run()) .THEN_VerifyAuditSequenceStrict( - STARTED(expectedTaskIds[0]), - APPLIED(expectedTaskIds[0]), - STARTED(expectedTaskIds[1]), - APPLIED(expectedTaskIds[1]), - STARTED(expectedTaskIds[2]), - APPLIED(expectedTaskIds[2]) + STARTED(expectedChangeIds[0]), + APPLIED(expectedChangeIds[0]), + STARTED(expectedChangeIds[1]), + APPLIED(expectedChangeIds[1]), + STARTED(expectedChangeIds[2]), + APPLIED(expectedChangeIds[2]) ) .run(); @@ -125,7 +125,7 @@ void failedWithRollback() { Bucket bucket = cluster.bucket(BUCKET_NAME); Collection testCollection = bucket.defaultCollection(); - String[] expectedTaskIds = {"create-index", "insert-document", "execution-with-exception"}; + String[] expectedChangeIds = {"create-index", "insert-document", "execution-with-exception"}; //Given-When-Then AuditTestSupport.withTestKit(testKit) .GIVEN_Changes( @@ -144,13 +144,13 @@ void failedWithRollback() { }); }) .THEN_VerifyAuditSequenceStrict( - STARTED(expectedTaskIds[0]), - APPLIED(expectedTaskIds[0]), - STARTED(expectedTaskIds[1]), - APPLIED(expectedTaskIds[1]), - STARTED(expectedTaskIds[2]), - FAILED(expectedTaskIds[2]), - ROLLED_BACK(expectedTaskIds[2]) + STARTED(expectedChangeIds[0]), + APPLIED(expectedChangeIds[0]), + STARTED(expectedChangeIds[1]), + APPLIED(expectedChangeIds[1]), + STARTED(expectedChangeIds[2]), + FAILED(expectedChangeIds[2]), + ROLLED_BACK(expectedChangeIds[2]) ) .run(); @@ -169,7 +169,7 @@ void failedWithoutRollback() { Bucket bucket = cluster.bucket(BUCKET_NAME); Collection testCollection = bucket.defaultCollection(); - String[] expectedTaskIds = {"create-index", "insert-document", "execution-with-exception"}; + String[] expectedChangeIds = {"create-index", "insert-document", "execution-with-exception"}; //Given-When-Then AuditTestSupport.withTestKit(testKit) .GIVEN_Changes( @@ -188,13 +188,13 @@ void failedWithoutRollback() { }); }) .THEN_VerifyAuditSequenceStrict( - STARTED(expectedTaskIds[0]), - APPLIED(expectedTaskIds[0]), - STARTED(expectedTaskIds[1]), - APPLIED(expectedTaskIds[1]), - STARTED(expectedTaskIds[2]), - FAILED(expectedTaskIds[2]), - ROLLED_BACK(expectedTaskIds[2]) + STARTED(expectedChangeIds[0]), + APPLIED(expectedChangeIds[0]), + STARTED(expectedChangeIds[1]), + APPLIED(expectedChangeIds[1]), + STARTED(expectedChangeIds[2]), + FAILED(expectedChangeIds[2]), + ROLLED_BACK(expectedChangeIds[2]) ) .run(); diff --git a/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/PipelineTestHelper.java b/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/PipelineTestHelper.java index 7b3a4c76a..c85ae4d37 100644 --- a/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/PipelineTestHelper.java +++ b/community/flamingock-couchbase-auditstore/src/test/java/io/flamingock/store/couchbase/PipelineTestHelper.java @@ -19,9 +19,9 @@ import io.flamingock.api.annotations.TargetSystem; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.PreviewConstructor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import io.flamingock.api.annotations.Change; @@ -73,7 +73,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { ChangeInfo changeInfo = infoExtractor.apply(trio.getFirst()); PreviewMethod rollback = null; @@ -81,8 +81,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -98,7 +98,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio getParameterTypes(List> second) { @SafeVarargs public static PreviewPipeline getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { Function, ChangeInfo> extractor = infoExtractor; ChangeInfo changeInfo = extractor.apply(trio.getFirst()); @@ -82,8 +82,8 @@ public static PreviewPipeline getPreviewPipeline(String stageName, Trio rollback = new PreviewMethod("rollback", getParameterTypes(trio.getThird())); } - List changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -99,7 +99,7 @@ public static PreviewPipeline getPreviewPipeline(String stageName, Trio RecoveryDescriptor.getDefault(), false )); - return changes; + return changeList; }) .flatMap(List::stream) .collect(Collectors.toList()); @@ -110,7 +110,7 @@ public static PreviewPipeline getPreviewPipeline(String stageName, Trio "some description", null, null, - tasks + changes ); return new PreviewPipeline(Collections.singletonList(stage)); diff --git a/community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/internal/entities/AuditEntryEntityTest.java b/community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/internal/entities/AuditEntryEntityTest.java index fce2c2520..101a5122d 100644 --- a/community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/internal/entities/AuditEntryEntityTest.java +++ b/community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/internal/entities/AuditEntryEntityTest.java @@ -55,7 +55,7 @@ void shouldConvertToAndFromAuditEntryWithTxType() { // Then assertEquals(AuditTxType.TX_SEPARATE_NO_MARKER, converted.getTxType()); assertEquals(original.getExecutionId(), converted.getExecutionId()); - assertEquals(original.getTaskId(), converted.getTaskId()); + assertEquals(original.getChangeId(), converted.getChangeId()); assertEquals(original.getAuthor(), converted.getAuthor()); assertEquals(original.getState(), converted.getState()); assertEquals(original.getSourceFile(), converted.getSourceFile()); @@ -127,7 +127,7 @@ void shouldConvertToAndFromAuditEntryWithTargetSystemId() { // Then assertEquals(expectedTargetSystemId, converted.getTargetSystemId()); assertEquals(original.getExecutionId(), converted.getExecutionId()); - assertEquals(original.getTaskId(), converted.getTaskId()); + assertEquals(original.getChangeId(), converted.getChangeId()); assertEquals(original.getAuthor(), converted.getAuthor()); assertEquals(original.getState(), converted.getState()); assertEquals(original.getSourceFile(), converted.getSourceFile()); diff --git a/community/flamingock-mongodb-sync-auditstore/src/main/java/io/flamingock/store/mongodb/sync/internal/MongoDBSyncAuditor.java b/community/flamingock-mongodb-sync-auditstore/src/main/java/io/flamingock/store/mongodb/sync/internal/MongoDBSyncAuditor.java index 9b49b0ae8..f9fa329e0 100644 --- a/community/flamingock-mongodb-sync-auditstore/src/main/java/io/flamingock/store/mongodb/sync/internal/MongoDBSyncAuditor.java +++ b/community/flamingock-mongodb-sync-auditstore/src/main/java/io/flamingock/store/mongodb/sync/internal/MongoDBSyncAuditor.java @@ -80,7 +80,7 @@ protected void initialize(boolean autoCreate) { public Result writeEntry(AuditEntry auditEntry) { Bson filter = Filters.and( Filters.eq(KEY_EXECUTION_ID, auditEntry.getExecutionId()), - Filters.eq(KEY_CHANGE_ID, auditEntry.getTaskId()), + Filters.eq(KEY_CHANGE_ID, auditEntry.getChangeId()), Filters.eq(KEY_STATE, auditEntry.getState().name()) ); diff --git a/community/flamingock-sql-auditstore/src/main/java/io/flamingock/store/sql/internal/SqlAuditor.java b/community/flamingock-sql-auditstore/src/main/java/io/flamingock/store/sql/internal/SqlAuditor.java index e709b2d0b..d39a7d877 100644 --- a/community/flamingock-sql-auditstore/src/main/java/io/flamingock/store/sql/internal/SqlAuditor.java +++ b/community/flamingock-sql-auditstore/src/main/java/io/flamingock/store/sql/internal/SqlAuditor.java @@ -78,7 +78,7 @@ public Result writeEntry(AuditEntry auditEntry) { dialectHelper.getInsertSqlString(auditTableName))) { ps.setString(1, auditEntry.getExecutionId()); ps.setString(2, auditEntry.getStageId()); - ps.setString(3, auditEntry.getTaskId()); + ps.setString(3, auditEntry.getChangeId()); ps.setString(4, auditEntry.getAuthor()); ps.setTimestamp(5, Timestamp.valueOf(auditEntry.getCreatedAt())); ps.setString(6, auditEntry.getState() != null ? auditEntry.getState().name() : null); diff --git a/community/flamingock-sql-auditstore/src/test/java/io/flamingock/store/sql/PipelineTestHelper.java b/community/flamingock-sql-auditstore/src/test/java/io/flamingock/store/sql/PipelineTestHelper.java index 8a7f058ab..5d378e9b3 100644 --- a/community/flamingock-sql-auditstore/src/test/java/io/flamingock/store/sql/PipelineTestHelper.java +++ b/community/flamingock-sql-auditstore/src/test/java/io/flamingock/store/sql/PipelineTestHelper.java @@ -24,9 +24,9 @@ import io.flamingock.internal.common.core.preview.PreviewMethod; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import org.jetbrains.annotations.NotNull; @@ -73,7 +73,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { ChangeInfo changeInfo = infoExtractor.apply(trio.getFirst()); PreviewMethod rollback = null; @@ -81,8 +81,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -98,7 +98,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio[] changeClasses = getChangeClasses(dialectName, "happyPath"); - String[] expectedTaskIds = {"create-index", "insert-document", "insert-another-document"}; + String[] expectedChangeIds = {"create-index", "insert-document", "insert-another-document"}; //Given-When-Then AuditTestSupport.withTestKit(testKit) .GIVEN_Changes( @@ -300,12 +300,12 @@ void happyPathWithMockedPipeline(SqlDialect sqlDialect, String dialectName) thro .build() .run()) .THEN_VerifyAuditSequenceStrict( - STARTED(expectedTaskIds[0]), - APPLIED(expectedTaskIds[0]), - STARTED(expectedTaskIds[1]), - APPLIED(expectedTaskIds[1]), - STARTED(expectedTaskIds[2]), - APPLIED(expectedTaskIds[2]) + STARTED(expectedChangeIds[0]), + APPLIED(expectedChangeIds[0]), + STARTED(expectedChangeIds[1]), + APPLIED(expectedChangeIds[1]), + STARTED(expectedChangeIds[2]), + APPLIED(expectedChangeIds[2]) ) .run(); @@ -324,7 +324,7 @@ void failedWithRollback(SqlDialect sqlDialect, String dialectName) throws Except TestKit testKit = SqlTestKit.create(sqlAuditStore, context.dataSource); Class[] changeClasses = getChangeClasses(dialectName, "failedWithRollback"); - String[] expectedTaskIds = {"create-index", "insert-document", "execution-with-exception"}; + String[] expectedChangeIds = {"create-index", "insert-document", "execution-with-exception"}; //Given-When-Then AuditTestSupport.withTestKit(testKit) .GIVEN_Changes( @@ -340,13 +340,13 @@ void failedWithRollback(SqlDialect sqlDialect, String dialectName) throws Except .run(); })) .THEN_VerifyAuditSequenceStrict( - STARTED(expectedTaskIds[0]), - APPLIED(expectedTaskIds[0]), - STARTED(expectedTaskIds[1]), - APPLIED(expectedTaskIds[1]), - STARTED(expectedTaskIds[2]), - FAILED(expectedTaskIds[2]), - ROLLED_BACK(expectedTaskIds[2]) + STARTED(expectedChangeIds[0]), + APPLIED(expectedChangeIds[0]), + STARTED(expectedChangeIds[1]), + APPLIED(expectedChangeIds[1]), + STARTED(expectedChangeIds[2]), + FAILED(expectedChangeIds[2]), + ROLLED_BACK(expectedChangeIds[2]) ) .run(); @@ -365,7 +365,7 @@ void failedWithoutRollback(SqlDialect sqlDialect, String dialectName) throws Exc TestKit testKit = SqlTestKit.create(sqlAuditStore, context.dataSource); Class[] changeClasses = getChangeClasses(dialectName, "failedWithoutRollback"); - String[] expectedTaskIds = {"create-index", "insert-document", "execution-with-exception"}; + String[] expectedChangeIds = {"create-index", "insert-document", "execution-with-exception"}; //Given-When-Then AuditTestSupport.withTestKit(testKit) .GIVEN_Changes( @@ -381,13 +381,13 @@ void failedWithoutRollback(SqlDialect sqlDialect, String dialectName) throws Exc .run(); })) .THEN_VerifyAuditSequenceStrict( - STARTED(expectedTaskIds[0]), - APPLIED(expectedTaskIds[0]), - STARTED(expectedTaskIds[1]), - APPLIED(expectedTaskIds[1]), - STARTED(expectedTaskIds[2]), - FAILED(expectedTaskIds[2]), - ROLLED_BACK(expectedTaskIds[2]) + STARTED(expectedChangeIds[0]), + APPLIED(expectedChangeIds[0]), + STARTED(expectedChangeIds[1]), + APPLIED(expectedChangeIds[1]), + STARTED(expectedChangeIds[2]), + FAILED(expectedChangeIds[2]), + ROLLED_BACK(expectedChangeIds[2]) ) .run(); diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditEntry.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditEntry.java index 013ea9de9..97f37ed92 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditEntry.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditEntry.java @@ -25,7 +25,7 @@ public class AuditEntry implements Comparable { private final String executionId; private final String stageId; //TODO move to changeId - private final String taskId; + private final String changeId; private final String author; private final LocalDateTime createdAt; private final Status state; @@ -45,7 +45,7 @@ public class AuditEntry implements Comparable { public AuditEntry(String executionId, String stageId, - String taskId, + String changeId, String author, LocalDateTime timestamp, Status state, @@ -65,7 +65,7 @@ public AuditEntry(String executionId, Boolean transactionFlag) { this.executionId = executionId; this.stageId = stageId; - this.taskId = taskId; + this.changeId = changeId; this.author = author; this.createdAt = timestamp; this.state = state; @@ -92,7 +92,7 @@ public AuditEntry(String executionId, @Deprecated public AuditEntry(String executionId, String stageId, - String taskId, + String changeId, String author, LocalDateTime timestamp, Status state, @@ -106,7 +106,7 @@ public AuditEntry(String executionId, boolean systemChange, String errorTrace, AuditTxType txStrategy) { - this(executionId, stageId, taskId, author, timestamp, state, type, className, methodName, sourceFile, + this(executionId, stageId, changeId, author, timestamp, state, type, className, methodName, sourceFile, executionMillis, executionHostname, metadata, systemChange, errorTrace, txStrategy, null, null, RecoveryStrategy.MANUAL_INTERVENTION, null); } @@ -117,7 +117,7 @@ public AuditEntry(String executionId, @Deprecated public AuditEntry(String executionId, String stageId, - String taskId, + String changeId, String author, LocalDateTime timestamp, Status state, @@ -130,7 +130,7 @@ public AuditEntry(String executionId, Object metadata, boolean systemChange, String errorTrace) { - this(executionId, stageId, taskId, author, timestamp, state, type, className, methodName, sourceFile, + this(executionId, stageId, changeId, author, timestamp, state, type, className, methodName, sourceFile, executionMillis, executionHostname, metadata, systemChange, errorTrace, null, null, null, RecoveryStrategy.MANUAL_INTERVENTION, null); } @@ -152,8 +152,8 @@ public String getStageId() { return stageId; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } public String getAuthor() { @@ -277,7 +277,7 @@ public int compareTo(AuditEntry other) { return timeComparison; } - if(taskId.equals(other.getTaskId())) { + if(changeId.equals(other.getChangeId())) { // Level 2: Sort by state priority (if timestamps and order are equal) return Integer.compare(this.state.getPriority(), other.state.getPriority()); } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditSnapshotBuilder.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditSnapshotBuilder.java index 9219242dd..e8a7fcf30 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditSnapshotBuilder.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditSnapshotBuilder.java @@ -25,16 +25,16 @@ public class AuditSnapshotBuilder { private final Map entryMap = new LinkedHashMap<>(); public void addEntry(AuditEntry newEntry) { - if(!entryMap.containsKey(newEntry.getTaskId())) { - entryMap.put(newEntry.getTaskId(), newEntry); + if(!entryMap.containsKey(newEntry.getChangeId())) { + entryMap.put(newEntry.getChangeId(), newEntry); } else { - AuditEntry currentEntry = entryMap.get(newEntry.getTaskId()); + AuditEntry currentEntry = entryMap.get(newEntry.getChangeId()); AuditEntry winner = AuditEntry.getMostRelevant(currentEntry, newEntry); if(winner.equals(newEntry)) { //we need to remove it first because LinkedHashMap keeps the original key position, //and in case to replace it, we want to update the position - entryMap.remove(currentEntry.getTaskId()); - entryMap.put(newEntry.getTaskId(), winner); + entryMap.remove(currentEntry.getChangeId()); + entryMap.put(newEntry.getChangeId(), winner); } } } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditWriter.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditWriter.java index 437e88099..93de12cc9 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditWriter.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/AuditWriter.java @@ -18,7 +18,7 @@ import io.flamingock.internal.util.Result; /** - * This class implements the Facade pattern containing the responsibility to log the taskStep, map it to Entry + * This class implements the Facade pattern containing the responsibility to log the changeStep, map it to Entry * and log then entry just in order to avoid having too many classes to implement that depend on the * same AuditEntry implementation, which would enforce to add the generic to the holder/orchestrator class. * However, the `mapper responsibility` is intended to be delegated to a Mapper class, but that's left to decide diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/issue/AuditEntryIssue.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/issue/AuditEntryIssue.java index 8971f8758..4b381b531 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/issue/AuditEntryIssue.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/audit/issue/AuditEntryIssue.java @@ -26,7 +26,7 @@ protected AuditEntryIssue(AuditEntry auditEntry) { } public String getChangeId() { - return auditEntry.getTaskId(); + return auditEntry.getChangeId(); } public AuditEntry getAuditEntry() { diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/AbstractTaskDescriptor.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptor.java similarity index 82% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/AbstractTaskDescriptor.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptor.java index ba5b5c683..1447423ea 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/AbstractTaskDescriptor.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptor.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.common.core.task; +package io.flamingock.internal.common.core.change; import java.util.Optional; import java.util.StringJoiner; -public abstract class AbstractTaskDescriptor implements TaskDescriptor { +public abstract class AbstractChangeDescriptor implements ChangeDescriptor { protected String id; @@ -43,19 +43,19 @@ public abstract class AbstractTaskDescriptor implements TaskDescriptor { protected boolean legacy; - public AbstractTaskDescriptor(){} - - public AbstractTaskDescriptor(String id, - String order, - String author, - String source, - String sourceFile, - boolean runAlways, - Boolean transactionalFlag, - boolean system, - TargetSystemDescriptor targetSystem, - RecoveryDescriptor recovery, - boolean legacy) { + public AbstractChangeDescriptor(){} + + public AbstractChangeDescriptor(String id, + String order, + String author, + String source, + String sourceFile, + boolean runAlways, + Boolean transactionalFlag, + boolean system, + TargetSystemDescriptor targetSystem, + RecoveryDescriptor recovery, + boolean legacy) { this.id = id; this.order = order; this.author = author; @@ -173,7 +173,7 @@ public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - AbstractTaskDescriptor that = (AbstractTaskDescriptor) o; + AbstractChangeDescriptor that = (AbstractChangeDescriptor) o; return id.equals(that.id); } @@ -185,7 +185,7 @@ public int hashCode() { @Override public String toString() { - return new StringJoiner(", ", AbstractTaskDescriptor.class.getSimpleName() + "[", "]") + return new StringJoiner(", ", AbstractChangeDescriptor.class.getSimpleName() + "[", "]") .add("source=" + source) .add("sourceFile=" + sourceFile) .add("sourceClass=" + getSource()) diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/TaskDescriptor.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/ChangeDescriptor.java similarity index 90% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/TaskDescriptor.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/ChangeDescriptor.java index 966135710..e5698fc85 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/TaskDescriptor.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/ChangeDescriptor.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.common.core.task; +package io.flamingock.internal.common.core.change; import java.util.Optional; -public interface TaskDescriptor extends Comparable { +public interface ChangeDescriptor extends Comparable { String getId(); @@ -59,7 +59,7 @@ default boolean isSortable() { } @Override - default int compareTo(TaskDescriptor other) { + default int compareTo(ChangeDescriptor other) { if (!other.getOrder().isPresent()) { return -1; } else if (!this.getOrder().isPresent()) { diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/RecoveryDescriptor.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/RecoveryDescriptor.java similarity index 96% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/RecoveryDescriptor.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/RecoveryDescriptor.java index add36dc8e..5aa714b5b 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/RecoveryDescriptor.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/RecoveryDescriptor.java @@ -13,15 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.common.core.task; +package io.flamingock.internal.common.core.change; -import io.flamingock.api.annotations.Recovery; import io.flamingock.api.RecoveryStrategy; import java.util.Objects; /** - * Descriptor that holds recovery strategy configuration for a change or task. + * Descriptor that holds recovery strategy configuration for a change or change. * This encapsulates the recovery strategy to allow for future extensions. */ public class RecoveryDescriptor { diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/TargetSystemDescriptor.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/TargetSystemDescriptor.java similarity index 95% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/TargetSystemDescriptor.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/TargetSystemDescriptor.java index d750fe5bf..ecfcb0d1a 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/task/TargetSystemDescriptor.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/TargetSystemDescriptor.java @@ -13,12 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.common.core.task; +package io.flamingock.internal.common.core.change; import java.util.Objects; /** - * Descriptor that references a target system from a change or task. + * Descriptor that references a target system from a change or change. * This is a reference to link the change to a target system defined elsewhere, * not the actual target system definition itself. */ diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/error/validation/ValidationError.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/error/validation/ValidationError.java index 5aa0c13c4..b881cff99 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/error/validation/ValidationError.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/error/validation/ValidationError.java @@ -24,8 +24,8 @@ public class ValidationError { * Creates a new validation error. * * @param message error message - * @param entityId ID of the entity that failed (task ID, stage name, order...) - * @param entityType The type of entity that failed ("task", "stage", "pipeline") + * @param entityId ID of the entity that failed (change ID, stage name, order...) + * @param entityType The type of entity that failed ("change", "stage", "pipeline") */ public ValidationError(String message, String entityId, String entityType) { this.message = message; diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineDescriptor.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineDescriptor.java index dda033c66..efbf449ad 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineDescriptor.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineDescriptor.java @@ -16,13 +16,13 @@ package io.flamingock.internal.common.core.pipeline; import io.flamingock.internal.common.core.context.ContextContributor; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import java.util.Optional; public interface PipelineDescriptor extends ContextContributor { - Optional getLoadedTask(String taskId); + Optional getLoadedChange(String changeId); - Optional getStageByTask(String taskId); + Optional getStageByChange(String changeId); } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineHelper.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineHelper.java index 50670871e..eaa43debf 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineHelper.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/PipelineHelper.java @@ -35,25 +35,25 @@ public String getStageId(AuditEntry auditEntryFromOrigin) { if (Boolean.TRUE.equals(auditEntryFromOrigin.getSystemChange())) { return LEGACY_STAGE_ID; } else { - String taskIdInPipeline = getBaseTaskId(auditEntryFromOrigin); - return pipelineDescriptor.getStageByTask(taskIdInPipeline).orElseThrow(() -> generateTaskIdException(taskIdInPipeline)); + String changeIdInPipeline = getBaseChangeId(auditEntryFromOrigin); + return pipelineDescriptor.getStageByChange(changeIdInPipeline).orElseThrow(() -> generateChangeIdException(changeIdInPipeline)); } } - public String getBaseTaskId(AuditEntry auditEntry) { - String originalTaskId = auditEntry.getTaskId(); - int index = originalTaskId.indexOf("_before"); - return index >= 0 ? originalTaskId.substring(0, index) : originalTaskId; + public String getBaseChangeId(AuditEntry auditEntry) { + String originalChangeId = auditEntry.getChangeId(); + int index = originalChangeId.indexOf("_before"); + return index >= 0 ? originalChangeId.substring(0, index) : originalChangeId; } - public String getStorableTaskId(AuditEntry auditEntry) { - return auditEntry.getTaskId(); + public String getStorableChangeId(AuditEntry auditEntry) { + return auditEntry.getChangeId(); } @NotNull - public IllegalArgumentException generateTaskIdException(String taskIdInPipeline) { - return new IllegalArgumentException(String.format(errorTemplate, taskIdInPipeline)); + public IllegalArgumentException generateChangeIdException(String changeIdInPipeline) { + return new IllegalArgumentException(String.format(errorTemplate, changeIdInPipeline)); } } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/StageDescriptor.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/StageDescriptor.java index 905c6e9e8..467148ee1 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/StageDescriptor.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/pipeline/StageDescriptor.java @@ -15,7 +15,7 @@ */ package io.flamingock.internal.common.core.pipeline; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import java.util.Collection; @@ -23,5 +23,5 @@ public interface StageDescriptor { String getName(); - Collection getLoadedTasks(); + Collection getLoadedChanges(); } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewTask.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewChange.java similarity index 68% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewTask.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewChange.java index cd0c9c4e6..35a5013da 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewTask.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewChange.java @@ -17,32 +17,32 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import io.flamingock.internal.common.core.task.AbstractTaskDescriptor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.AbstractChangeDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = CodePreviewChange.class, name = "codePreviewChange"), @JsonSubTypes.Type(value = TemplatePreviewChange.class, name = "templatePreviewChange") }) -public abstract class AbstractPreviewTask extends AbstractTaskDescriptor { +public abstract class AbstractPreviewChange extends AbstractChangeDescriptor { - public AbstractPreviewTask() { + public AbstractPreviewChange() { super(); } - public AbstractPreviewTask(String id, - String order, - String author, - String source, - String sourceFile, - boolean runAlways, - Boolean transactional, - boolean system, - TargetSystemDescriptor targetSystem, - RecoveryDescriptor recovery, - boolean legacy) { + public AbstractPreviewChange(String id, + String order, + String author, + String source, + String sourceFile, + boolean runAlways, + Boolean transactional, + boolean system, + TargetSystemDescriptor targetSystem, + RecoveryDescriptor recovery, + boolean legacy) { super(id, order, author, source, sourceFile, runAlways, transactional, system, targetSystem, recovery, legacy); } @@ -56,7 +56,7 @@ public String pretty() { @Override public String toString() { - return "AbstractPreviewTask{" + + return "AbstractPreviewChange{" + "id='" + id + '\'' + ", order='" + order + '\'' + ", source='" + source + '\'' + diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/CodePreviewChange.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/CodePreviewChange.java index a9d261f9f..087f7a9d5 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/CodePreviewChange.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/CodePreviewChange.java @@ -15,12 +15,12 @@ */ package io.flamingock.internal.common.core.preview; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import java.beans.Transient; -public class CodePreviewChange extends AbstractPreviewTask { +public class CodePreviewChange extends AbstractPreviewChange { private PreviewConstructor previewConstructor; private PreviewMethod applyPreviewMethod; diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/PreviewStage.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/PreviewStage.java index cc39d9a7f..65ca91106 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/PreviewStage.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/PreviewStage.java @@ -16,7 +16,7 @@ package io.flamingock.internal.common.core.preview; import io.flamingock.api.StageType; -import io.flamingock.internal.common.core.preview.builder.PreviewTaskBuilder; +import io.flamingock.internal.common.core.preview.builder.PreviewChangeBuilder; import io.flamingock.internal.common.core.template.ChangeTemplateFileContent; import io.flamingock.internal.util.FileUtil; import io.flamingock.internal.util.Pair; @@ -32,7 +32,7 @@ /** * This class represents the process defined by the user in the builder, yaml, etc. - * It doesn't necessary contain directly the tasks, it can contain the code packages, etc. + * It doesn't necessary contain directly the changes, it can contain the code packages, etc. */ public class PreviewStage { @@ -47,7 +47,7 @@ public class PreviewStage { private String resourcesDir; - private Collection tasks; + private Collection changes; public PreviewStage() { @@ -59,13 +59,13 @@ public PreviewStage(String name, String description, String sourcesPackage, String resourcesDir, - Collection tasks) { + Collection changes) { this.name = name; this.type = type; this.description = description; this.sourcesPackage = sourcesPackage; this.resourcesDir = resourcesDir; - this.tasks = tasks; + this.changes = changes; } public static DefaultBuilder defaultBuilder(StageType type) { @@ -119,12 +119,12 @@ public void setResourcesDir(String resourcesDir) { this.resourcesDir = resourcesDir; } - public Collection getTasks() { - return tasks; + public Collection getChanges() { + return changes; } - public void setTasks(Collection tasks) { - this.tasks = tasks; + public void setChanges(Collection changes) { + this.changes = changes; } @@ -148,7 +148,7 @@ public String toString() { ", description='" + description + '\'' + ", sourcesPackage='" + sourcesPackage + '\'' + ", resourcesDir='" + resourcesDir + '\'' + - ", tasks=" + tasks + + ", changes=" + changes + '}'; } @@ -168,7 +168,7 @@ protected PreviewStage buildInstance(String name, String description, String sourcesPackage, String resourcesDir, - Collection allDescriptors) { + Collection allDescriptors) { return new PreviewStage(name, type, description, sourcesPackage, resourcesDir, allDescriptors); } } @@ -176,18 +176,18 @@ protected PreviewStage buildInstance(String name, /** * Builder for constructing {@link PreviewStage} instances. *

- * A {@code PreviewStage} represents a stage containing one or more {@link AbstractPreviewTask} units, + * A {@code PreviewStage} represents a stage containing one or more {@link AbstractPreviewChange} units, * which can be defined either: *

    *
  • Explicitly via {@link #setChanges(Collection)}
  • *
  • Implicitly by parsing templated YAML files located in a specified resources directory or source package
  • *
*

- * If tasks are to be loaded from a source package, both {@link #setSourcesPackage(String)} and + * If changes are to be loaded from a source package, both {@link #setSourcesPackage(String)} and * {@link #setSourcesRoots(Collection)} must be provided. Optionally, {@link #setResourcesRoot(String)} should be set * to specify the root of the source tree (e.g., {@code src/main/java}, {@code src/main/kotlin}, etc.). *

- * The builder enforces consistency in task ordering: if all tasks are {@link AbstractPreviewTask#isSortable() sortable}, + * The builder enforces consistency in change ordering: if all changes are {@link AbstractPreviewChange#isSortable() sortable}, * they will be sorted; if only some are sortable, an exception will be thrown. */ public abstract static class AbstractBuilder { @@ -198,7 +198,7 @@ public abstract static class AbstractBuilder { private String sourcesPackage; private String resourcesRoot; private Collection sourcesRoots; - private Collection changes; + private Collection changes; private boolean parallel = false; protected AbstractBuilder() { @@ -275,18 +275,18 @@ public AbstractBuilder setResourcesDir(String resourcesDir) { } /** - * Sets a collection of {@link AbstractPreviewTask} implementations directly. + * Sets a collection of {@link AbstractPreviewChange} implementations directly. * - * @param changes the collection of change task classes + * @param changes the collection of change change classes * @return this builder instance */ - public AbstractBuilder setChanges(Collection changes) { + public AbstractBuilder setChanges(Collection changes) { this.changes = changes; return this; } /** - * Sets whether tasks should be applied in parallel. + * Sets whether changes should be applied in parallel. * * @param parallel {@code true} to enable parallel execution; {@code false} otherwise * @return this builder instance @@ -325,7 +325,7 @@ public T build() { throw new RuntimeException("Stage requires name"); } - Collection changeClassesList = changes != null + Collection changeClassesList = changes != null ? changes : Collections.emptyList(); @@ -333,8 +333,8 @@ public T build() { throw new RuntimeException("No changes provided for stage: " + name); } - Collection templatedTasksDescriptors = getTemplatedTaskDescriptors(resourcesDirectories); - Collection allDescriptors = Stream.concat(templatedTasksDescriptors.stream(), changeClassesList.stream()) + Collection templatedChangesDescriptors = getTemplatedChangeDescriptors(resourcesDirectories); + Collection allDescriptors = Stream.concat(templatedChangesDescriptors.stream(), changeClassesList.stream()) .collect(Collectors.toList()); @@ -346,15 +346,15 @@ abstract protected T buildInstance(String name, String description, String sourcesPackage, String resourcesDir, - Collection allDescriptors); + Collection allDescriptors); /** - * Parses and builds templated {@link AbstractPreviewTask} descriptors from YAML files located in the given directories. + * Parses and builds templated {@link AbstractPreviewChange} descriptors from YAML files located in the given directories. * * @param resourcesDirectories collection of directories to scan - * @return collection of parsed and built {@link AbstractPreviewTask} instances + * @return collection of parsed and built {@link AbstractPreviewChange} instances */ - private Collection getTemplatedTaskDescriptors(Collection resourcesDirectories) { + private Collection getTemplatedChangeDescriptors(Collection resourcesDirectories) { if (resourcesDirectories == null) { return Collections.emptyList(); } @@ -366,9 +366,9 @@ private Collection getTemplatedTaskDescriptors(Collection PreviewTaskBuilder + .map(pairWithFileName -> PreviewChangeBuilder .getTemplateBuilder(pairWithFileName.getFirst(), pairWithFileName.getSecond())) - .map(PreviewTaskBuilder::build) + .map(PreviewChangeBuilder::build) .collect(Collectors.toList()); } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/SystemPreviewStage.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/SystemPreviewStage.java index c64ed8642..5eccb7916 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/SystemPreviewStage.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/SystemPreviewStage.java @@ -22,7 +22,7 @@ /** * This class represents the process defined by the user in the builder, yaml, etc. - * It doesn't necessary contain directly the tasks, it can contain the code packages, etc. + * It doesn't necessary contain directly the changes, it can contain the code packages, etc. */ public class SystemPreviewStage extends PreviewStage { @@ -36,8 +36,8 @@ public SystemPreviewStage(String name, String description, String sourcesPackage, String resourcesDir, - Collection tasks) { - super(name, StageType.SYSTEM, description, sourcesPackage, resourcesDir, tasks); + Collection changes) { + super(name, StageType.SYSTEM, description, sourcesPackage, resourcesDir, changes); } @@ -53,7 +53,7 @@ protected SystemPreviewStage buildInstance(String name, String description, String sourcesPackage, String resourcesDir, - Collection allDescriptors) { + Collection allDescriptors) { return new SystemPreviewStage(name, description, sourcesPackage, resourcesDir, allDescriptors); } } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/TemplatePreviewChange.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/TemplatePreviewChange.java index f2b7e215b..2f1f3a40f 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/TemplatePreviewChange.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/TemplatePreviewChange.java @@ -15,12 +15,12 @@ */ package io.flamingock.internal.common.core.preview; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import java.util.List; -public class TemplatePreviewChange extends AbstractPreviewTask { +public class TemplatePreviewChange extends AbstractPreviewChange { private String fileName; private List profiles; diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/CodePreviewTaskBuilder.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/CodePreviewChangeBuilder.java similarity index 83% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/CodePreviewTaskBuilder.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/CodePreviewChangeBuilder.java index a6f9a7f5d..46236f45c 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/CodePreviewTaskBuilder.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/CodePreviewChangeBuilder.java @@ -26,8 +26,8 @@ import io.flamingock.internal.common.core.preview.CodePreviewChange; import io.flamingock.internal.common.core.preview.PreviewConstructor; import io.flamingock.internal.common.core.preview.PreviewMethod; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.util.ReflectionUtil; import org.jetbrains.annotations.NotNull; @@ -40,7 +40,7 @@ import java.util.Optional; -public class CodePreviewTaskBuilder implements PreviewTaskBuilder { +public class CodePreviewChangeBuilder implements PreviewChangeBuilder { private String id; private String order; @@ -55,78 +55,78 @@ public class CodePreviewTaskBuilder implements PreviewTaskBuilder { -public interface PreviewTaskBuilder { - - static PreviewTaskBuilder getTemplateBuilder(String fileName, - ChangeTemplateFileContent templatedTaskDefinition) { - return TemplatePreviewTaskBuilder.builder(templatedTaskDefinition).setFileName(fileName); + static PreviewChangeBuilder getTemplateBuilder(String fileName, + ChangeTemplateFileContent templatedChangeDefinition) { + return TemplatePreviewChangeBuilder.builder(templatedChangeDefinition).setFileName(fileName); } A build(); diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewTaskBuilder.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewChangeBuilder.java similarity index 67% rename from core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewTaskBuilder.java rename to core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewChangeBuilder.java index faa96bc51..c185d936d 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewTaskBuilder.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewChangeBuilder.java @@ -18,8 +18,8 @@ import io.flamingock.internal.common.core.preview.ChangeOrderExtractor; import io.flamingock.internal.common.core.template.ChangeTemplateFileContent; import io.flamingock.internal.common.core.preview.TemplatePreviewChange; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -28,7 +28,7 @@ import java.util.stream.Collectors; -class TemplatePreviewTaskBuilder implements PreviewTaskBuilder { +class TemplatePreviewChangeBuilder implements PreviewChangeBuilder { private String fileName; private String id; @@ -45,28 +45,28 @@ class TemplatePreviewTaskBuilder implements PreviewTaskBuilder getProfiles() { } - TemplatePreviewTaskBuilder setFromDefinition(ChangeTemplateFileContent templateTaskDescriptor) { + TemplatePreviewChangeBuilder setFromDefinition(ChangeTemplateFileContent templateChangeDescriptor) { //fileName is set in "setFileName" method //order is extract from the fileName in the "build" method - setId(templateTaskDescriptor.getId()); - setAuthor(templateTaskDescriptor.getAuthor()); - setTemplate(templateTaskDescriptor.getTemplate()); - setProfilesString(templateTaskDescriptor.getProfiles()); - setConfiguration(templateTaskDescriptor.getConfiguration()); - setApply(templateTaskDescriptor.getApply()); - setRollback(templateTaskDescriptor.getRollback()); - setSteps(templateTaskDescriptor.getSteps()); - setTransactionalFlag(templateTaskDescriptor.getTransactional()); + setId(templateChangeDescriptor.getId()); + setAuthor(templateChangeDescriptor.getAuthor()); + setTemplate(templateChangeDescriptor.getTemplate()); + setProfilesString(templateChangeDescriptor.getProfiles()); + setConfiguration(templateChangeDescriptor.getConfiguration()); + setApply(templateChangeDescriptor.getApply()); + setRollback(templateChangeDescriptor.getRollback()); + setSteps(templateChangeDescriptor.getSteps()); + setTransactionalFlag(templateChangeDescriptor.getTransactional()); setRunAlways(false); - setTargetSystem(templateTaskDescriptor.getTargetSystem()); - setRecovery(templateTaskDescriptor.getRecovery() != null ? templateTaskDescriptor.getRecovery() : RecoveryDescriptor.getDefault()); + setTargetSystem(templateChangeDescriptor.getTargetSystem()); + setRecovery(templateChangeDescriptor.getRecovery() != null ? templateChangeDescriptor.getRecovery() : RecoveryDescriptor.getDefault()); return this; } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/recovery/action/ChangeActionResolver.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/recovery/action/ChangeActionResolver.java index 50823c9f3..be77be046 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/recovery/action/ChangeActionResolver.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/recovery/action/ChangeActionResolver.java @@ -43,23 +43,23 @@ public static ChangeAction resolve(AuditEntry auditEntry) { case MANUAL_MARKED_AS_APPLIED: case APPLIED: log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, SKIP, "Change already marked/applied"); + auditEntry.getChangeId(), status, txStrategy, SKIP, "Change already marked/applied"); return SKIP; case STARTED: if (txStrategy == AuditTxType.TX_SEPARATE_WITH_MARKER) { log.warn("Change[{}] uses TX_SEPARATE_WITH_MARKER, which is not supported in the Community Edition.", - auditEntry.getTaskId()); + auditEntry.getChangeId()); } log.debug("Change[{}] STARTED: recovery.isAlwaysRetry()={}, recovery.strategy={}", - auditEntry.getTaskId(), auditEntry.getRecoveryStrategy().isAlwaysRetry(), auditEntry.getRecoveryStrategy()); + auditEntry.getChangeId(), auditEntry.getRecoveryStrategy().isAlwaysRetry(), auditEntry.getRecoveryStrategy()); if (auditEntry.getRecoveryStrategy().isAlwaysRetry()) { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, APPLY, + auditEntry.getChangeId(), status, txStrategy, APPLY, "Interrupted execution, retry allowed by recovery strategy=" + auditEntry.getRecoveryStrategy()); return APPLY; } else { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, MANUAL_INTERVENTION, + auditEntry.getChangeId(), status, txStrategy, MANUAL_INTERVENTION, "Interrupted execution, requires manual intervention"); return MANUAL_INTERVENTION; } @@ -68,18 +68,18 @@ public static ChangeAction resolve(AuditEntry auditEntry) { if (txStrategy == null || txStrategy == AuditTxType.NON_TX) { if (auditEntry.getRecoveryStrategy().isAlwaysRetry()) { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, APPLY, + auditEntry.getChangeId(), status, txStrategy, APPLY, "Failure on NON_TX change, retry allowed by recovery strategy=" + auditEntry.getRecoveryStrategy()); return APPLY; } else { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, MANUAL_INTERVENTION, + auditEntry.getChangeId(), status, txStrategy, MANUAL_INTERVENTION, "Failure on NON_TX change, manual intervention required"); return MANUAL_INTERVENTION; } } else { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, APPLY, + auditEntry.getChangeId(), status, txStrategy, APPLY, "Transactional failure, safe to retry"); return APPLY; } @@ -87,19 +87,19 @@ public static ChangeAction resolve(AuditEntry auditEntry) { case MANUAL_MARKED_AS_ROLLED_BACK: case ROLLED_BACK: log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, APPLY, + auditEntry.getChangeId(), status, txStrategy, APPLY, "Previous execution rolled back cleanly, safe to retry"); return APPLY; case ROLLBACK_FAILED: if (auditEntry.getRecoveryStrategy().isAlwaysRetry()) { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, APPLY, + auditEntry.getChangeId(), status, txStrategy, APPLY, "Rollback failed, retry forced by recovery strategy=" + auditEntry.getRecoveryStrategy()); return APPLY; } else { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, MANUAL_INTERVENTION, + auditEntry.getChangeId(), status, txStrategy, MANUAL_INTERVENTION, "Rollback failed, manual intervention required"); return MANUAL_INTERVENTION; } @@ -107,12 +107,12 @@ public static ChangeAction resolve(AuditEntry auditEntry) { default: if (auditEntry.getRecoveryStrategy().isAlwaysRetry()) { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, APPLY, + auditEntry.getChangeId(), status, txStrategy, APPLY, "Unknown status, retry forced by recovery strategy=" + auditEntry.getRecoveryStrategy()); return APPLY; } else { log.debug("Change[{}] in state='{}}' (TxType={}}) -> Action={}} | Reason: {}", - auditEntry.getTaskId(), status, txStrategy, MANUAL_INTERVENTION, + auditEntry.getChangeId(), status, txStrategy, MANUAL_INTERVENTION, "Unknown status, manual intervention required"); return MANUAL_INTERVENTION; } diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/response/data/AuditListResponseData.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/response/data/AuditListResponseData.java index a7472d38b..e093c27be 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/response/data/AuditListResponseData.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/response/data/AuditListResponseData.java @@ -49,7 +49,7 @@ public void setEntries(List entries) { * DTO representing a single audit entry for CLI response. */ public static class AuditEntryDto { - private String taskId; + private String changeId; private String author; private String state; private String stageId; @@ -66,8 +66,8 @@ public static class AuditEntryDto { public AuditEntryDto() { } - public AuditEntryDto(String taskId, String author, String state, String stageId, LocalDateTime createdAt, long executionMillis) { - this.taskId = taskId; + public AuditEntryDto(String changeId, String author, String state, String stageId, LocalDateTime createdAt, long executionMillis) { + this.changeId = changeId; this.author = author; this.state = state; this.stageId = stageId; @@ -75,9 +75,9 @@ public AuditEntryDto(String taskId, String author, String state, String stageId, this.executionMillis = executionMillis; } - public AuditEntryDto(String taskId, String author, String state, String stageId, LocalDateTime createdAt, long executionMillis, + public AuditEntryDto(String changeId, String author, String state, String stageId, LocalDateTime createdAt, long executionMillis, String executionId, String className, String methodName, String executionHostname, String targetSystemId) { - this.taskId = taskId; + this.changeId = changeId; this.author = author; this.state = state; this.stageId = stageId; @@ -90,12 +90,12 @@ public AuditEntryDto(String taskId, String author, String state, String stageId, this.targetSystemId = targetSystemId; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } - public void setTaskId(String taskId) { - this.taskId = taskId; + public void setChangeId(String changeId) { + this.changeId = changeId; } public String getAuthor() { diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/ChangeTemplateFileContent.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/ChangeTemplateFileContent.java index d99fcef90..b8a4865ce 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/ChangeTemplateFileContent.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/ChangeTemplateFileContent.java @@ -15,8 +15,8 @@ */ package io.flamingock.internal.common.core.template; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; public class ChangeTemplateFileContent { private String id; diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/TemplateValidator.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/TemplateValidator.java index 3c1c193f8..f94fe2866 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/TemplateValidator.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/template/TemplateValidator.java @@ -104,7 +104,7 @@ public ValidationResult validate(TemplatePreviewChange preview) { /** * Validates the YAML content structure against a resolved template definition. - * This method is used by {@code TemplateLoadedTaskBuilder} which already has the template definition + * This method is used by {@code TemplateLoadedChangeBuilder} which already has the template definition * resolved, avoiding a redundant lookup. * * @param definition the resolved template definition diff --git a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/util/Serializer.java b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/util/Serializer.java index 2d7ef340c..ddca18898 100644 --- a/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/util/Serializer.java +++ b/core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/util/Serializer.java @@ -22,7 +22,7 @@ import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.PreviewStage; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import javax.annotation.processing.ProcessingEnvironment; import javax.tools.FileObject; @@ -81,11 +81,11 @@ private void serializeClassesList(FlamingockMetadata metadata) { } private static void serializeClassesFromStage(Writer writer, PreviewStage stage) { - for (TaskDescriptor task : stage.getTasks()) { + for (ChangeDescriptor change : stage.getChanges()) { - if(CodePreviewChange.class.isAssignableFrom(task.getClass())) { + if(CodePreviewChange.class.isAssignableFrom(change.getClass())) { try { - writer.write(task.getSource()); + writer.write(change.getSource()); writer.write(System.lineSeparator()); } catch (IOException e) { throw new RuntimeException(e); diff --git a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/task/AbstractTaskDescriptorTest.java b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptorTest.java similarity index 75% rename from core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/task/AbstractTaskDescriptorTest.java rename to core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptorTest.java index 7f37e0915..7d83e3fc5 100644 --- a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/task/AbstractTaskDescriptorTest.java +++ b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptorTest.java @@ -13,8 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.common.core.task; +package io.flamingock.internal.common.core.change; +import io.flamingock.internal.common.core.change.AbstractChangeDescriptor; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -22,11 +23,11 @@ import static org.junit.jupiter.api.Assertions.*; -@DisplayName("AbstractTaskDescriptor transactional nullable support") -class AbstractTaskDescriptorTest { +@DisplayName("AbstractChangeDescriptor transactional nullable support") +class AbstractChangeDescriptorTest { - private static AbstractTaskDescriptor createDescriptor(Boolean transactional) { - return new AbstractTaskDescriptor( + private static AbstractChangeDescriptor createDescriptor(Boolean transactional) { + return new AbstractChangeDescriptor( "test-id", "001", "author", "source", "sourceFile", false, transactional, false, null, null, false @@ -36,28 +37,28 @@ private static AbstractTaskDescriptor createDescriptor(Boolean transactional) { @Test @DisplayName("getTransactionalFlag() returns empty when field is null") void getTransactionalReturnsEmptyWhenNull() { - AbstractTaskDescriptor descriptor = createDescriptor(null); + AbstractChangeDescriptor descriptor = createDescriptor(null); assertEquals(Optional.empty(), descriptor.getTransactionalFlag()); } @Test @DisplayName("getTransactionalFlag() returns Optional.of(true) when field is true") void getTransactionalReturnsPresentWhenTrue() { - AbstractTaskDescriptor descriptor = createDescriptor(true); + AbstractChangeDescriptor descriptor = createDescriptor(true); assertEquals(Optional.of(true), descriptor.getTransactionalFlag()); } @Test @DisplayName("getTransactionalFlag() returns Optional.of(false) when field is false") void getTransactionalReturnsPresentWhenFalse() { - AbstractTaskDescriptor descriptor = createDescriptor(false); + AbstractChangeDescriptor descriptor = createDescriptor(false); assertEquals(Optional.of(false), descriptor.getTransactionalFlag()); } @Test @DisplayName("setTransactionalFlag() accepts null") void setTransactionalFlagAcceptsNull() { - AbstractTaskDescriptor descriptor = createDescriptor(true); + AbstractChangeDescriptor descriptor = createDescriptor(true); descriptor.setTransactionalFlag(null); assertEquals(Optional.empty(), descriptor.getTransactionalFlag()); } @@ -65,7 +66,7 @@ void setTransactionalFlagAcceptsNull() { @Test @DisplayName("toString() handles null transactional without throwing") void toStringHandlesNullTransactional() { - AbstractTaskDescriptor descriptor = createDescriptor(null); + AbstractChangeDescriptor descriptor = createDescriptor(null); assertDoesNotThrow(() -> descriptor.toString()); assertTrue(descriptor.toString().contains("transactionalFlag=null")); } diff --git a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/CodePreviewTaskBuilderTest.java b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/CodePreviewChangeBuilderTest.java similarity index 90% rename from core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/CodePreviewTaskBuilderTest.java rename to core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/CodePreviewChangeBuilderTest.java index 8b55ae683..78ece86e6 100644 --- a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/CodePreviewTaskBuilderTest.java +++ b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/CodePreviewChangeBuilderTest.java @@ -18,18 +18,18 @@ import io.flamingock.internal.common.core.preview.CodePreviewChange; import io.flamingock.internal.common.core.preview.PreviewConstructor; import io.flamingock.internal.common.core.preview.PreviewMethod; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import org.junit.jupiter.api.Test; import java.util.Collections; import static org.junit.jupiter.api.Assertions.assertNull; -class CodePreviewTaskBuilderTest { +class CodePreviewChangeBuilderTest { @Test void shouldBuildNullSourceFileForCodeChanges() { - CodePreviewChange preview = CodePreviewTaskBuilder.instance() + CodePreviewChange preview = CodePreviewChangeBuilder.instance() .setId("test-id") .setOrder("001") .setAuthor("author") diff --git a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewTaskBuilderTest.java b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewChangeBuilderTest.java similarity index 86% rename from core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewTaskBuilderTest.java rename to core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewChangeBuilderTest.java index 757f3c87f..4fd76702c 100644 --- a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewTaskBuilderTest.java +++ b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/preview/builder/TemplatePreviewChangeBuilderTest.java @@ -16,7 +16,7 @@ package io.flamingock.internal.common.core.preview.builder; import io.flamingock.internal.common.core.preview.TemplatePreviewChange; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.common.core.template.ChangeTemplateFileContent; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -25,8 +25,8 @@ import static org.junit.jupiter.api.Assertions.*; -@DisplayName("TemplatePreviewTaskBuilder transactional nullable support") -class TemplatePreviewTaskBuilderTest { +@DisplayName("TemplatePreviewChangeBuilder transactional nullable support") +class TemplatePreviewChangeBuilderTest { @Test @DisplayName("Should preserve null transactional from YAML") @@ -36,7 +36,7 @@ void shouldPreserveNullTransactionalFromYaml() { null, null, "CREATE TABLE", null, TargetSystemDescriptor.fromId("postgresql"), null); - TemplatePreviewChange preview = TemplatePreviewTaskBuilder.builder(content) + TemplatePreviewChange preview = TemplatePreviewChangeBuilder.builder(content) .setFileName("_0001__test.yaml") .build(); @@ -52,7 +52,7 @@ void shouldPreserveExplicitTrueTransactional() { true, null, "CREATE TABLE", null, TargetSystemDescriptor.fromId("postgresql"), null); - TemplatePreviewChange preview = TemplatePreviewTaskBuilder.builder(content) + TemplatePreviewChange preview = TemplatePreviewChangeBuilder.builder(content) .setFileName("_0001__test.yaml") .build(); @@ -68,7 +68,7 @@ void shouldPreserveExplicitFalseTransactional() { false, null, "CREATE TABLE", null, TargetSystemDescriptor.fromId("postgresql"), null); - TemplatePreviewChange preview = TemplatePreviewTaskBuilder.builder(content) + TemplatePreviewChange preview = TemplatePreviewChangeBuilder.builder(content) .setFileName("_0001__test.yaml") .build(); diff --git a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/response/ResponseSerializationTest.java b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/response/ResponseSerializationTest.java index 7ae4f15c9..acc4d1367 100644 --- a/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/response/ResponseSerializationTest.java +++ b/core/flamingock-core-commons/src/test/java/io/flamingock/internal/common/core/response/ResponseSerializationTest.java @@ -135,14 +135,14 @@ void shouldSerializeAndDeserializeAuditListResponseData() throws Exception { assertEquals(2, deserialized.getEntries().size()); AuditListResponseData.AuditEntryDto first = deserialized.getEntries().get(0); - assertEquals("change-001", first.getTaskId()); + assertEquals("change-001", first.getChangeId()); assertEquals("developer", first.getAuthor()); assertEquals("APPLIED", first.getState()); assertEquals("stage-1", first.getStageId()); assertEquals(100, first.getExecutionMillis()); AuditListResponseData.AuditEntryDto second = deserialized.getEntries().get(1); - assertEquals("change-002", second.getTaskId()); + assertEquals("change-002", second.getChangeId()); assertEquals(150, second.getExecutionMillis()); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/AbstractChangeRunnerBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/AbstractChangeRunnerBuilder.java index 3e6b619bf..a4d9f98cb 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/AbstractChangeRunnerBuilder.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/AbstractChangeRunnerBuilder.java @@ -52,7 +52,7 @@ import io.flamingock.internal.core.builder.runner.Runner; import io.flamingock.internal.core.builder.runner.RunnerBuilder; import io.flamingock.internal.core.builder.runner.RunnerFactory; -import io.flamingock.internal.core.task.filter.TaskFilter; +import io.flamingock.internal.core.change.filter.ChangeFilter; import io.flamingock.internal.util.CollectionUtil; import io.flamingock.internal.util.Property; import io.flamingock.internal.util.id.RunnerId; @@ -178,7 +178,7 @@ public HOLDER setApplicationArguments(String[] args) { *

Integration Points:

*
    *
  • Plugins: External context merged via {@code buildHierarchicalContext()}
  • - *
  • Plugins: Contribute task filters and event publishers
  • + *
  • Plugins: Contribute change filters and event publishers
  • *
  • Templates: Loaded for YAML-based pipeline definitions
  • *
* @@ -234,14 +234,14 @@ public final Runner build() { private LoadedPipeline loadPipeline(FlamingockMetadata flamingockMetadata) { - List taskFiltersFromPlugins = pluginManager.getPlugins() + List changeFiltersFromPlugins = pluginManager.getPlugins() .stream() - .map(Plugin::getTaskFilters) + .map(Plugin::getChangeFilters) .flatMap(List::stream) .collect(Collectors.toList()); return LoadedPipeline.builder() - .addFilters(taskFiltersFromPlugins) + .addFilters(changeFiltersFromPlugins) .addPreviewPipeline(flamingockMetadata.getPipeline()) .build(); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/OpsClient.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/OpsClient.java index 1ff188df6..c86e1775c 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/OpsClient.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/builder/OpsClient.java @@ -89,7 +89,7 @@ public FixResult fixAuditIssue(String changeId, Resolution resolution) { AuditEntry fixedAuditEntry = new AuditEntry( ExecutionId.getNewExecutionId(), currentEntry.getStageId(), - currentEntry.getTaskId(), + currentEntry.getChangeId(), "flamingock-cli",//TODO in cloud this will be retrieved from the token LocalDateTime.now(), getState(resolution), diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/AbstractExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractExecutableChange.java similarity index 85% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/AbstractExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractExecutableChange.java index 8ec7dd77a..93e082266 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/AbstractExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractExecutableChange.java @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.common.core.recovery.action.ChangeAction; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import java.util.Objects; import java.util.Optional; -public abstract class AbstractExecutableTask implements ExecutableTask { +public abstract class AbstractExecutableChange implements ExecutableChange { private final String stageName; @@ -31,7 +31,7 @@ public abstract class AbstractExecutableTask that = (AbstractExecutableTask) o; + if (!(o instanceof AbstractExecutableChange)) return false; + AbstractExecutableChange that = (AbstractExecutableChange) o; return loadedChange.equals(that.loadedChange); } @@ -139,7 +139,7 @@ public int hashCode() { @Override public String toString() { - return "ExecutableTask{" + + return "ExecutableChange{" + "id='" + loadedChange.getId() + '\'' + ", action=" + action + ", targetSystem='" + (getTargetSystem() != null ? getTargetSystem().getId() : null) + '\'' + diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/AbstractTemplateExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractTemplateExecutableChange.java similarity index 77% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/AbstractTemplateExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractTemplateExecutableChange.java index 4b265abdb..0ac4a0b18 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/AbstractTemplateExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractTemplateExecutableChange.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.api.template.ChangeTemplate; import io.flamingock.api.template.TemplateField; import io.flamingock.api.template.TemplatePayload; import io.flamingock.api.template.wrappers.TemplateVoid; import io.flamingock.internal.common.core.recovery.action.ChangeAction; -import io.flamingock.internal.core.task.loaded.AbstractTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractTemplateLoadedChange; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -28,7 +28,7 @@ import java.util.Arrays; /** - * Abstract base class for template executable tasks. + * Abstract base class for template executable changes. * Contains common logic for executing templates, with type-specific data setting * delegated to subclasses. * @@ -37,15 +37,15 @@ * @param the rollback payload type * @param the type of template loaded change */ -public abstract class AbstractTemplateExecutableTask> extends ReflectionExecutableTask { +public abstract class AbstractTemplateExecutableChange> extends ReflectionExecutableChange { protected final Logger logger = FlamingockLoggerFactory.getLogger("TemplateExecutableChange"); - public AbstractTemplateExecutableTask(String stageName, - LOADED_CHANGE loadedChange, - ChangeAction action, - Method executionMethod, - Method rollbackMethod) { + public AbstractTemplateExecutableChange(String stageName, + LOADED_CHANGE loadedChange, + ChangeAction action, + Method executionMethod, + Method rollbackMethod) { super(stageName, loadedChange, action, executionMethod, rollbackMethod); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/CodeExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/CodeExecutableChange.java similarity index 83% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/CodeExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/CodeExecutableChange.java index 173100324..44c073123 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/CodeExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/CodeExecutableChange.java @@ -13,33 +13,33 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.internal.common.core.error.ChangeExecutionException; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.loaded.AbstractReflectionLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractReflectionLoadedChange; import java.lang.reflect.Method; /** - * This class is a reflection version of the ExecutableTask. + * This class is a reflection version of the ExecutableChange. *

* It creates a new instance on demand in every execution(apply and rollback), because it's intended to be applied * just once. The only case it will be potentially applied twice is if it fails, and in that case will only happen * once(in case of sequential execution) or very few times(in case or parallel execution and happen to fail multiple - * concurrent tasks at the same time),because after that the process will abort. + * concurrent changes at the same time),because after that the process will abort. *

* For this reason it's more optimal to do it on demand, that articulate some synchronisation mechanism. *

* However, the methods are extracted in advance, so we can spot wrong configuration before starting the process and * fail fast. */ -public class CodeExecutableTask - extends ReflectionExecutableTask { +public class CodeExecutableChange + extends ReflectionExecutableChange { - public CodeExecutableTask(String stageName, + public CodeExecutableChange(String stageName, LOADED_CHANGE loadedChange, ChangeAction action, Method executionMethod, diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/ExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ExecutableChange.java similarity index 82% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/ExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ExecutableChange.java index 50ec9df26..047a9db96 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/ExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ExecutableChange.java @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import io.flamingock.internal.common.core.recovery.action.ChangeAction; -public interface ExecutableTask extends TaskDescriptor { +public interface ExecutableChange extends ChangeDescriptor { boolean isTransactional(); - TaskDescriptor getLoadedChange(); + ChangeDescriptor getLoadedChange(); String getStageName(); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/ReflectionExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ReflectionExecutableChange.java similarity index 69% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/ReflectionExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ReflectionExecutableChange.java index c64f793e0..a1702266e 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/ReflectionExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ReflectionExecutableChange.java @@ -13,38 +13,38 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; -import io.flamingock.internal.core.task.loaded.AbstractReflectionLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractReflectionLoadedChange; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import java.lang.reflect.Method; /** - * This class is a reflection version of the ExecutableTask. + * This class is a reflection version of the ExecutableChange. *

* It creates a new instance on demand in every execution(apply and rollback), because it's intended to be applied * just once. The only case it will be potentially applied twice is if it fails, and in that case will only happen * once(in case of sequential execution) or very few times(in case or parallel execution and happen to fail multiple - * concurrent tasks at the same time),because after that the process will abort. + * concurrent changes at the same time),because after that the process will abort. *

* For this reason it's more optimal to do it on demand, that articulate some synchronisation mechanism. *

* However, the methods are extracted in advance, so we can spot wrong configuration before starting the process and * fail fast. */ -public abstract class ReflectionExecutableTask - extends AbstractExecutableTask implements ExecutableTask { +public abstract class ReflectionExecutableChange + extends AbstractExecutableChange implements ExecutableChange { protected final Method executionMethod; protected final Method rollbackMethod; - public ReflectionExecutableTask(String stageName, - LOADED_CHANGE loadedChange, - ChangeAction action, - Method executionMethod, - Method rollbackMethod) { + public ReflectionExecutableChange(String stageName, + LOADED_CHANGE loadedChange, + ChangeAction action, + Method executionMethod, + Method rollbackMethod) { super(stageName, loadedChange, action); this.executionMethod = executionMethod; this.rollbackMethod = rollbackMethod; diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/Rollback.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/Rollback.java similarity index 90% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/Rollback.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/Rollback.java index a2a48ba60..cec03bb41 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/Rollback.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/Rollback.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.internal.core.runtime.ExecutionRuntime; public interface Rollback { - ExecutableTask getTask(); + ExecutableChange getChange(); void rollback(ExecutionRuntime runtimeHelper); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/SimpleTemplateExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SimpleTemplateExecutableChange.java similarity index 85% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/SimpleTemplateExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SimpleTemplateExecutableChange.java index 841d4a4ab..266f006c2 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/SimpleTemplateExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SimpleTemplateExecutableChange.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.api.template.AbstractChangeTemplate; import io.flamingock.api.template.TemplateField; @@ -21,12 +21,12 @@ import io.flamingock.internal.common.core.error.ChangeExecutionException; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.loaded.SimpleTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.SimpleTemplateLoadedChange; import java.lang.reflect.Method; /** - * Executable task for simple templates (single apply/rollback step). + * Executable change for simple templates (single apply/rollback step). * Handles templates annotated with {@code @ChangeTemplate(steppable = false)} or without annotation. * * @param the configuration type for the template @@ -34,11 +34,11 @@ * @param the rollback payload type */ @SuppressWarnings({"rawtypes", "unchecked"}) -public class SimpleTemplateExecutableTask - extends AbstractTemplateExecutableTask> { +public class SimpleTemplateExecutableChange + extends AbstractTemplateExecutableChange> { - public SimpleTemplateExecutableTask(String stageName, + public SimpleTemplateExecutableChange(String stageName, SimpleTemplateLoadedChange loadedChange, ChangeAction action, Method executionMethod, diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/SteppableTemplateExecutableTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChange.java similarity index 89% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/SteppableTemplateExecutableTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChange.java index b7a794c85..47323018b 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/SteppableTemplateExecutableTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChange.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.api.template.AbstractChangeTemplate; import io.flamingock.api.template.TemplateField; @@ -22,14 +22,14 @@ import io.flamingock.internal.common.core.error.ChangeExecutionException; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.loaded.MultiStepTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.MultiStepTemplateLoadedChange; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Method; import java.util.List; /** - * Executable task for steppable templates (multiple steps). + * Executable change for steppable templates (multiple steps). * Handles templates annotated with {@code @ChangeTemplate(steppable = true)}. * * @param the configuration type for the template @@ -37,13 +37,13 @@ * @param the rollback payload type */ @SuppressWarnings({"rawtypes", "unchecked"}) -public class SteppableTemplateExecutableTask - extends AbstractTemplateExecutableTask> { +public class SteppableTemplateExecutableChange + extends AbstractTemplateExecutableChange> { private int stepIndex = -1; - public SteppableTemplateExecutableTask(String stageName, + public SteppableTemplateExecutableChange(String stageName, MultiStepTemplateLoadedChange loadedChange, ChangeAction action, Method executionMethod, diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/CodeExecutableChangeBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/CodeExecutableChangeBuilder.java new file mode 100644 index 000000000..fed5e626c --- /dev/null +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/CodeExecutableChangeBuilder.java @@ -0,0 +1,99 @@ +/* + * Copyright 2023 Flamingock (https://www.flamingock.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.flamingock.internal.core.change.executable.builder; + +import io.flamingock.internal.common.core.recovery.action.ChangeAction; +import io.flamingock.internal.core.change.executable.CodeExecutableChange; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.executable.ReflectionExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractReflectionLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; + +import java.lang.reflect.Method; +import java.util.Optional; + + +/** + * Factory for Change classes + */ +public class CodeExecutableChangeBuilder implements ExecutableChangeBuilder { + private static final CodeExecutableChangeBuilder instance = new CodeExecutableChangeBuilder(); + + private String stageName; + private ChangeAction changeAction; + private CodeLoadedChange loadedChange; + + static CodeExecutableChangeBuilder getInstance() { + return instance; + } + + public static boolean supports(AbstractLoadedChange loadedChange) { + return CodeLoadedChange.class.isAssignableFrom(loadedChange.getClass()); + } + + + @Override + public CodeLoadedChange cast(AbstractLoadedChange loadedChange) { + return (CodeLoadedChange) loadedChange; + } + + @Override + public CodeExecutableChangeBuilder setLoadedChange(CodeLoadedChange loadedChange) { + this.loadedChange = loadedChange; + return this; + } + + @Override + public CodeExecutableChangeBuilder setStageName(String stageName) { + this.stageName = stageName; + return this; + } + + @Override + public CodeExecutableChangeBuilder setChangeAction(ChangeAction action) { + this.changeAction = action; + return this; + } + + @Override + public ExecutableChange build() { + return getChangesFromReflection(stageName, loadedChange, changeAction); + } + + /** + * New ChangeAction-based method for building changes. + */ + private ReflectionExecutableChange getChangesFromReflection(String stageName, + CodeLoadedChange loadedChange, + ChangeAction action) { + return buildChangesInternal(stageName, loadedChange, action); + } + + private ReflectionExecutableChange buildChangesInternal(String stageName, + CodeLoadedChange loadedChange, + ChangeAction action) { + Method executionMethod = loadedChange.getApplyMethod(); + Optional rollbackMethodOpt = loadedChange.getRollbackMethod(); + + return new CodeExecutableChange<>( + stageName, + loadedChange, + action, + executionMethod, + rollbackMethodOpt.orElse(null)); + } +} \ No newline at end of file diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/ExecutableChangeBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/ExecutableChangeBuilder.java new file mode 100644 index 000000000..23f628e97 --- /dev/null +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/ExecutableChangeBuilder.java @@ -0,0 +1,77 @@ +/* + * Copyright 2023 Flamingock (https://www.flamingock.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.flamingock.internal.core.change.executable.builder; + +import io.flamingock.internal.common.core.recovery.action.ChangeAction; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; + +public interface ExecutableChangeBuilder { + + /** + * Builds executable changes based on a ChangeAction - the new action-based approach. + * + * @param loadedChange the loaded change to build executable changes from + * @param stageName the name of the stage containing the change + * @param action the change action to apply to the change + * @return executable change + */ + static ExecutableChange build(AbstractLoadedChange loadedChange, String stageName, ChangeAction action) { + return getInstance(loadedChange) + .setStageName(stageName) + .setChangeAction(action) + .build(); + } + + + static ExecutableChangeBuilder getInstance(AbstractLoadedChange loadedChange) { + + if(TemplateExecutableChangeBuilder.supports(loadedChange)) { + TemplateExecutableChangeBuilder templateBuilder = TemplateExecutableChangeBuilder.getInstance(); + AbstractTemplateLoadedChange castedChange = templateBuilder.cast(loadedChange); + return templateBuilder.setLoadedChange(castedChange); + + } else if(CodeExecutableChangeBuilder.supports(loadedChange)) { + CodeExecutableChangeBuilder codeBuilder = CodeExecutableChangeBuilder.getInstance(); + CodeLoadedChange castedChange = codeBuilder.cast(loadedChange); + return codeBuilder.setLoadedChange(castedChange); + + } else { + throw new IllegalArgumentException(String.format("ExecutableChange type not recognised[%s]", loadedChange.getClass().getName())); + + } + } + + + LOADED_CHANGE cast(AbstractLoadedChange loadedChange); + + ExecutableChangeBuilder setLoadedChange(LOADED_CHANGE change); + + ExecutableChangeBuilder setStageName(String stageName); + + /** + * Sets the change action that determines how the change should be handled. + * This is the new action-based approach. + * + * @param action the change action to set + * @return this builder instance for method chaining + */ + ExecutableChangeBuilder setChangeAction(ChangeAction action); + + ExecutableChange build(); +} diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/TemplateExecutableTaskBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/TemplateExecutableChangeBuilder.java similarity index 53% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/TemplateExecutableTaskBuilder.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/TemplateExecutableChangeBuilder.java index d9d32acf4..a56319089 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/TemplateExecutableTaskBuilder.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/builder/TemplateExecutableChangeBuilder.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable.builder; +package io.flamingock.internal.core.change.executable.builder; import io.flamingock.internal.common.core.recovery.action.ChangeAction; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.executable.SimpleTemplateExecutableTask; -import io.flamingock.internal.core.task.executable.SteppableTemplateExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractTemplateLoadedChange; -import io.flamingock.internal.core.task.loaded.SimpleTemplateLoadedChange; -import io.flamingock.internal.core.task.loaded.MultiStepTemplateLoadedChange; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.executable.SimpleTemplateExecutableChange; +import io.flamingock.internal.core.change.executable.SteppableTemplateExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.SimpleTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.MultiStepTemplateLoadedChange; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -32,92 +32,92 @@ /** * Factory for Change classes */ -public class TemplateExecutableTaskBuilder implements ExecutableTaskBuilder> { +public class TemplateExecutableChangeBuilder implements ExecutableChangeBuilder> { private final static Logger logger = FlamingockLoggerFactory.getLogger("TemplateBuilder"); - private static final TemplateExecutableTaskBuilder instance = new TemplateExecutableTaskBuilder(); + private static final TemplateExecutableChangeBuilder instance = new TemplateExecutableChangeBuilder(); private String stageName; private ChangeAction changeAction; - private AbstractTemplateLoadedChange loadedTask; + private AbstractTemplateLoadedChange loadedChange; - static TemplateExecutableTaskBuilder getInstance() { + static TemplateExecutableChangeBuilder getInstance() { return instance; } - public static boolean supports(AbstractLoadedTask loadedTask) { - return AbstractTemplateLoadedChange.class.isAssignableFrom(loadedTask.getClass()); + public static boolean supports(AbstractLoadedChange loadedChange) { + return AbstractTemplateLoadedChange.class.isAssignableFrom(loadedChange.getClass()); } @Override - public AbstractTemplateLoadedChange cast(AbstractLoadedTask loadedTask) { - return (AbstractTemplateLoadedChange) loadedTask; + public AbstractTemplateLoadedChange cast(AbstractLoadedChange loadedChange) { + return (AbstractTemplateLoadedChange) loadedChange; } @Override - public TemplateExecutableTaskBuilder setLoadedTask(AbstractTemplateLoadedChange loadedTask) { - this.loadedTask = loadedTask; + public TemplateExecutableChangeBuilder setLoadedChange(AbstractTemplateLoadedChange loadedChange) { + this.loadedChange = loadedChange; return this; } @Override - public TemplateExecutableTaskBuilder setStageName(String stageName) { + public TemplateExecutableChangeBuilder setStageName(String stageName) { this.stageName = stageName; return this; } @Override - public TemplateExecutableTaskBuilder setChangeAction(ChangeAction action) { + public TemplateExecutableChangeBuilder setChangeAction(ChangeAction action) { this.changeAction = action; return this; } @Override - public ExecutableTask build() { - Method rollbackMethod = loadedTask.getRollbackMethod().orElse(null); + public ExecutableChange build() { + Method rollbackMethod = loadedChange.getRollbackMethod().orElse(null); - if (loadedTask instanceof SimpleTemplateLoadedChange) { - SimpleTemplateLoadedChange simple = (SimpleTemplateLoadedChange) loadedTask; + if (loadedChange instanceof SimpleTemplateLoadedChange) { + SimpleTemplateLoadedChange simple = (SimpleTemplateLoadedChange) loadedChange; // Only include rollback method if rollback data is present if (simple.hasRollbackPayload()) { if (rollbackMethod != null) { - logger.trace("Change[{}] provides rollback in configuration", loadedTask.getId()); + logger.trace("Change[{}] provides rollback in configuration", loadedChange.getId()); } else { logger.warn("Change[{}] provides rollback in configuration, but template[{}] doesn't support manual rollback", - loadedTask.getId(), - loadedTask.getSource() + loadedChange.getId(), + loadedChange.getSource() ); } } else { if (rollbackMethod != null) { logger.warn("Change[{}] does not provide rollback, but template[{}] supports manual rollback", - loadedTask.getId(), - loadedTask.getSource() + loadedChange.getId(), + loadedChange.getSource() ); } rollbackMethod = null; } - return new SimpleTemplateExecutableTask<>( + return new SimpleTemplateExecutableChange<>( stageName, simple, changeAction, - loadedTask.getApplyMethod(), + loadedChange.getApplyMethod(), rollbackMethod ); - } else if (loadedTask instanceof MultiStepTemplateLoadedChange) { - MultiStepTemplateLoadedChange steppable = (MultiStepTemplateLoadedChange) loadedTask; + } else if (loadedChange instanceof MultiStepTemplateLoadedChange) { + MultiStepTemplateLoadedChange steppable = (MultiStepTemplateLoadedChange) loadedChange; if (rollbackMethod != null) { - logger.trace("Change[{}] is a steppable template with rollback method", loadedTask.getId()); + logger.trace("Change[{}] is a steppable template with rollback method", loadedChange.getId()); } - return new SteppableTemplateExecutableTask<>( + return new SteppableTemplateExecutableChange<>( stageName, steppable, changeAction, - loadedTask.getApplyMethod(), + loadedChange.getApplyMethod(), rollbackMethod ); } - throw new IllegalArgumentException("Unknown template type: " + loadedTask.getClass().getName()); + throw new IllegalArgumentException("Unknown template type: " + loadedChange.getClass().getName()); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/filter/TaskFilter.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/filter/ChangeFilter.java similarity index 75% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/filter/TaskFilter.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/filter/ChangeFilter.java index d7261ccb9..7aa1c29c4 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/filter/TaskFilter.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/filter/ChangeFilter.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.filter; +package io.flamingock.internal.core.change.filter; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; -public interface TaskFilter { - boolean filter(AbstractLoadedTask descriptor); +public interface ChangeFilter { + boolean filter(AbstractLoadedChange descriptor); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractLoadedTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractLoadedChange.java similarity index 56% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractLoadedTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractLoadedChange.java index 737fc47a4..a55ea93f4 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractLoadedTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractLoadedChange.java @@ -13,13 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.internal.common.core.error.validation.Validatable; -import io.flamingock.internal.common.core.task.AbstractTaskDescriptor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.AbstractChangeDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext; import java.lang.reflect.Constructor; @@ -27,22 +27,22 @@ import java.util.Optional; -public abstract class AbstractLoadedTask extends AbstractTaskDescriptor implements Validatable { +public abstract class AbstractLoadedChange extends AbstractChangeDescriptor implements Validatable { private final boolean transactional; - public AbstractLoadedTask(String id, - String order, - String author, - String implementationSourceName, - String sourceFile, - boolean runAlways, - Boolean transactionalFlag, - boolean transactional, - boolean system, - TargetSystemDescriptor targetSystem, - RecoveryDescriptor recovery, - boolean legacy) { + public AbstractLoadedChange(String id, + String order, + String author, + String implementationSourceName, + String sourceFile, + boolean runAlways, + Boolean transactionalFlag, + boolean transactional, + boolean system, + TargetSystemDescriptor targetSystem, + RecoveryDescriptor recovery, + boolean legacy) { super(id, order, author, implementationSourceName, sourceFile, runAlways, transactionalFlag, system, targetSystem, recovery, legacy); this.transactional = transactional; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractReflectionLoadedTask.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractReflectionLoadedChange.java similarity index 56% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractReflectionLoadedTask.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractReflectionLoadedChange.java index 59cdccd63..49da958fb 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractReflectionLoadedTask.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractReflectionLoadedChange.java @@ -13,17 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import java.lang.reflect.Constructor; import java.lang.reflect.Method; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; + +import io.flamingock.internal.common.core.error.validation.ValidationError; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext; +import io.flamingock.internal.util.log.FlamingockLoggerFactory; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; + +import java.util.ArrayList; +import java.util.List; import java.util.Optional; +import java.util.regex.Pattern; /** - * Abstract base class for loaded tasks that use Java reflection to execute changes. + * Abstract base class for loaded changes that use Java reflection to execute changes. * *

This class serves as the foundation for both code-based and template-based changes, * providing common reflection-based execution capabilities. It handles the distinction between @@ -53,10 +63,19 @@ * * @author Antonio Perez * @since 6.0 - * @see AbstractLoadedTask + * @see AbstractLoadedChange */ -public abstract class AbstractReflectionLoadedTask extends AbstractLoadedTask { - +public abstract class AbstractReflectionLoadedChange extends AbstractLoadedChange { + private static final Logger logger = FlamingockLoggerFactory.getLogger("ReflectionChange"); + /** + * Regex pattern for validating the order field in Changes. + * The pattern requires at least 3 alphanumeric characters (a-z, A-Z, 0-9) anywhere in the string. + * Can contain any other characters (underscores, dots, hyphens, etc.) along with the alphanumeric chars. + * Examples: "abc", "123", "V1_2_3", "001abc", "release_1_2_beta", "20250925_01_migrationWithUnderscores" + * Empty is not allowed + */ + private final static String ORDER_REG_EXP = "^(?=(?:[^a-zA-Z0-9]*[a-zA-Z0-9]){3}).+$"; + private final static Pattern ORDER_PATTERN = Pattern.compile(ORDER_REG_EXP); /** * The source file name where this change is defined. * @@ -91,19 +110,23 @@ public abstract class AbstractReflectionLoadedTask extends AbstractLoadedTask { */ protected final Class implementationClass; - public AbstractReflectionLoadedTask(String fileName, - String id, - String order, - String author, - Class implementationClass, - boolean runAlways, - Boolean transactionalFlag, - boolean transactional, - boolean system, - TargetSystemDescriptor targetSystem, - RecoveryDescriptor recovery, - boolean legacy) { + private final Constructor constructor; + + public AbstractReflectionLoadedChange(String fileName, + String id, + String order, + String author, + Class implementationClass, + Constructor constructor, + boolean runAlways, + Boolean transactionalFlag, + boolean transactional, + boolean system, + TargetSystemDescriptor targetSystem, + RecoveryDescriptor recovery, + boolean legacy) { super(id, order, author, implementationClass.getName(), fileName, runAlways, transactionalFlag, transactional, system, targetSystem, recovery, legacy); + this.constructor = constructor; this.fileName = fileName; this.implementationClass = implementationClass; } @@ -136,7 +159,10 @@ public Class getImplementationClass() { * * @return the constructor for creating instances of the implementation class */ - public abstract Constructor getConstructor(); + @Override + public Constructor getConstructor() { + return constructor; + } /** * Returns the method to be invoked for executing the change. @@ -166,4 +192,49 @@ public Class getImplementationClass() { */ public abstract Optional getRollbackMethod(); + + @Override + public List getValidationErrors(StageValidationContext context) { + List errors = new ArrayList<>(); + final String entityType = "change"; + + // Validate ID is not null or empty + if (id == null || id.trim().isEmpty()) { + errors.add(new ValidationError("ID cannot be null or empty", "unknown", entityType)); + } + + getOrderError(context).ifPresent(errors::add); + + + // Validate source is not null or empty + if (source == null || source.trim().isEmpty()) { + errors.add(new ValidationError("Source cannot be null or empty", id, entityType)); + } + + return errors; + } + + + @NotNull + private Optional getOrderError(StageValidationContext context) { + String order = getOrder().orElse(null); + if (context.getSortType().isSorted()) { + if (order == null || order.isEmpty()) { + return Optional.of(new ValidationError("Change in a sorted stage but no order value was provided", id, "change")); + } + + if (context.getSortType() == StageValidationContext.SortType.SEQUENTIAL_FORMATTED) { + if (!ORDER_PATTERN.matcher(order).matches()) { + String message = String.format("Invalid order field format in change[%s]. Order must match pattern: %s", id, ORDER_REG_EXP); + return Optional.of(new ValidationError(message, id, "change")); + } + } + + } else if (order != null) { + logger.warn("Change[{}] is in an auto-sorted stage but order value was provided - order will be ignored and managed automatically by Flamingock", id); + + } + return Optional.empty(); + } + } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractTemplateLoadedChange.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractTemplateLoadedChange.java similarity index 94% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractTemplateLoadedChange.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractTemplateLoadedChange.java index d92236671..4d85f86d7 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractTemplateLoadedChange.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractTemplateLoadedChange.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.annotations.ApplyTemplate; import io.flamingock.api.annotations.RollbackTemplate; @@ -22,8 +22,8 @@ import io.flamingock.api.template.TemplatePayload; import io.flamingock.api.template.TemplateValidationContext; import io.flamingock.internal.common.core.error.validation.ValidationError; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext; import io.flamingock.internal.util.ReflectionUtil; import io.flamingock.internal.util.log.FlamingockLoggerFactory; @@ -44,7 +44,7 @@ * @param the apply payload type * @param the rollback payload type */ -public abstract class AbstractTemplateLoadedChange extends AbstractLoadedChange { +public abstract class AbstractTemplateLoadedChange extends AbstractReflectionLoadedChange { protected static final Logger logger = FlamingockLoggerFactory.getLogger(AbstractTemplateLoadedChange.class); @@ -62,12 +62,12 @@ protected AbstractTemplateLoadedChange(String changeFileName, Boolean transactionalFlag, boolean transactional, boolean runAlways, - boolean systemTask, + boolean systemChange, CONFIG configurationPayload, TargetSystemDescriptor targetSystem, RecoveryDescriptor recovery, boolean rollbackPayloadRequired) { - super(changeFileName, id, order, author, templateClass, constructor, runAlways, transactionalFlag, transactional, systemTask, targetSystem, recovery, false); + super(changeFileName, id, order, author, templateClass, constructor, runAlways, transactionalFlag, transactional, systemChange, targetSystem, recovery, false); this.profiles = profiles; this.configurationPayload = configurationPayload; this.rollbackPayloadRequired = rollbackPayloadRequired; diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/ChangeOrderUtil.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/ChangeOrderUtil.java similarity index 99% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/ChangeOrderUtil.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/ChangeOrderUtil.java index aba4f7841..65d0e67a0 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/ChangeOrderUtil.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/ChangeOrderUtil.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.internal.common.core.error.FlamingockException; diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/CodeLoadedChange.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChange.java similarity index 86% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/CodeLoadedChange.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChange.java index 35b724b27..e091bea66 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/CodeLoadedChange.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChange.java @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Optional; import java.util.StringJoiner; -public class CodeLoadedChange extends AbstractLoadedChange { +public class CodeLoadedChange extends AbstractReflectionLoadedChange { private final Method applyMethod; private final Optional rollbackMethod; @@ -39,11 +39,11 @@ public class CodeLoadedChange extends AbstractLoadedChange { boolean runAlways, Boolean transactionalFlag, boolean transactional, - boolean systemTask, + boolean systemChange, TargetSystemDescriptor targetSystem, RecoveryDescriptor recovery, boolean legacy) { - super(sourceFile, id, order, author, changeClass, constructor, runAlways, transactionalFlag, transactional, systemTask, targetSystem, recovery, legacy); + super(sourceFile, id, order, author, changeClass, constructor, runAlways, transactionalFlag, transactional, systemChange, targetSystem, recovery, legacy); this.applyMethod = applyMethod; this.rollbackMethod = rollbackMethod; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/CodeLoadedTaskBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChangeBuilder.java similarity index 83% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/CodeLoadedTaskBuilder.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChangeBuilder.java index 69121b6fb..677ab904a 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/CodeLoadedTaskBuilder.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChangeBuilder.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.annotations.Apply; import io.flamingock.api.annotations.FlamingockConstructor; @@ -22,10 +22,10 @@ import io.flamingock.internal.common.core.preview.ChangeOrderExtractor; import io.flamingock.api.annotations.Change; import io.flamingock.api.annotations.Recovery; -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; import io.flamingock.internal.common.core.preview.CodePreviewChange; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.util.ReflectionUtil; import java.lang.reflect.Constructor; @@ -33,7 +33,7 @@ import java.util.List; import java.util.Optional; -public class CodeLoadedTaskBuilder implements LoadedTaskBuilder { +public class CodeLoadedChangeBuilder implements LoadedChangeBuilder { private String id; private String orderInContent; @@ -50,23 +50,23 @@ public class CodeLoadedTaskBuilder implements LoadedTaskBuilder sourceClass) { + static CodeLoadedChangeBuilder getInstanceFromClass(Class sourceClass) { return getInstance().setSourceClass(sourceClass); } - public static boolean supportsPreview(AbstractPreviewTask previewTask) { - return CodePreviewChange.class.isAssignableFrom(previewTask.getClass()); + public static boolean supportsPreview(AbstractPreviewChange previewChange) { + return CodePreviewChange.class.isAssignableFrom(previewChange.getClass()); } public static boolean supportsSourceClass(Class sourceClass) { @@ -74,7 +74,7 @@ public static boolean supportsSourceClass(Class sourceClass) { } - private CodeLoadedTaskBuilder setPreview(CodePreviewChange preview) { + private CodeLoadedChangeBuilder setPreview(CodePreviewChange preview) { setId(preview.getId()); setOrder(preview.getOrder().orElse(null)); setAuthor(preview.getAuthor()); @@ -92,7 +92,7 @@ private CodeLoadedTaskBuilder setPreview(CodePreviewChange preview) { return this; } - private CodeLoadedTaskBuilder setSourceClass(Class sourceClass) { + private CodeLoadedChangeBuilder setSourceClass(Class sourceClass) { if (sourceClass.isAnnotationPresent(Change.class)) { setFromFlamingockChangeAnnotation(sourceClass, sourceClass.getAnnotation(Change.class)); return this; @@ -106,74 +106,74 @@ private CodeLoadedTaskBuilder setSourceClass(Class sourceClass) { } } - public CodeLoadedTaskBuilder setId(String id) { + public CodeLoadedChangeBuilder setId(String id) { this.id = id; return this; } @Override - public CodeLoadedTaskBuilder setTargetSystem(TargetSystemDescriptor targetSystem) { + public CodeLoadedChangeBuilder setTargetSystem(TargetSystemDescriptor targetSystem) { this.targetSystem = targetSystem; return this; } @Override - public CodeLoadedTaskBuilder setRecovery(RecoveryDescriptor recovery) { + public CodeLoadedChangeBuilder setRecovery(RecoveryDescriptor recovery) { this.recovery = recovery; return this; } - public CodeLoadedTaskBuilder setOrder(String orderInContent) { + public CodeLoadedChangeBuilder setOrder(String orderInContent) { this.orderInContent = orderInContent; return this; } - public CodeLoadedTaskBuilder setAuthor(String author) { + public CodeLoadedChangeBuilder setAuthor(String author) { this.author = author; return this; } - public CodeLoadedTaskBuilder setChangeClassName(String changeClassName) { + public CodeLoadedChangeBuilder setChangeClassName(String changeClassName) { this.changeClassName = changeClassName; return this; } - public CodeLoadedTaskBuilder setConstructor(Constructor constructor) { + public CodeLoadedChangeBuilder setConstructor(Constructor constructor) { this.constructor = constructor; return this; } - public CodeLoadedTaskBuilder setRunAlways(boolean runAlways) { + public CodeLoadedChangeBuilder setRunAlways(boolean runAlways) { this.isRunAlways = runAlways; return this; } - public CodeLoadedTaskBuilder setTransactionalFlag(Boolean transactionalFlag) { + public CodeLoadedChangeBuilder setTransactionalFlag(Boolean transactionalFlag) { this.transactionalFlag = transactionalFlag; return this; } - public CodeLoadedTaskBuilder setSourceFile(String sourceFile) { + public CodeLoadedChangeBuilder setSourceFile(String sourceFile) { this.sourceFile = sourceFile; return this; } - public CodeLoadedTaskBuilder setSystem(boolean system) { + public CodeLoadedChangeBuilder setSystem(boolean system) { this.isSystem = system; return this; } - public CodeLoadedTaskBuilder setApplyMethod(Method applyMethod) { + public CodeLoadedChangeBuilder setApplyMethod(Method applyMethod) { this.applyMethod = applyMethod; return this; } - public CodeLoadedTaskBuilder setRollbackMethod(Optional rollbackMethod) { + public CodeLoadedChangeBuilder setRollbackMethod(Optional rollbackMethod) { this.rollbackMethod = rollbackMethod; return this; } - public CodeLoadedTaskBuilder setLegacy(boolean legacy) { + public CodeLoadedChangeBuilder setLegacy(boolean legacy) { this.legacy = legacy; return this; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/LoadedChangeBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/LoadedChangeBuilder.java new file mode 100644 index 000000000..38d47713b --- /dev/null +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/LoadedChangeBuilder.java @@ -0,0 +1,64 @@ +/* + * Copyright 2023 Flamingock (https://www.flamingock.io) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.flamingock.internal.core.change.loaded; + +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; +import io.flamingock.internal.common.core.preview.CodePreviewChange; +import io.flamingock.internal.common.core.preview.TemplatePreviewChange; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; + +public interface LoadedChangeBuilder { + + static AbstractLoadedChange build(AbstractPreviewChange previewChange) { + return getInstance(previewChange).build(); + } + + static LoadedChangeBuilder getInstance(AbstractPreviewChange previewChange) { + if (TemplateLoadedChangeBuilder.supportsPreview(previewChange)) { + return TemplateLoadedChangeBuilder.getInstanceFromPreview((TemplatePreviewChange) previewChange); + + } else if (CodeLoadedChangeBuilder.supportsPreview(previewChange)) { + return CodeLoadedChangeBuilder.getInstanceFromPreview((CodePreviewChange) previewChange); + + } + throw new RuntimeException("Not implemented build from preview to loaded"); + } + + static CodeLoadedChangeBuilder getCodeBuilderInstance(Class sourceClass) { + if (CodeLoadedChangeBuilder.supportsSourceClass(sourceClass)) { + return CodeLoadedChangeBuilder.getInstanceFromClass(sourceClass); + + } + throw new RuntimeException("Not implemented build from preview to loaded"); + } + + + LoadedChangeBuilder setId(String id); + + LoadedChangeBuilder setTargetSystem(TargetSystemDescriptor targetSystem); + + LoadedChangeBuilder setRecovery(RecoveryDescriptor recovery); + + LoadedChangeBuilder setRunAlways(boolean runAlways); + + LoadedChangeBuilder setTransactionalFlag(Boolean transactionalFlag); + + LoadedChangeBuilder setSystem(boolean system); + + LOADED_CHANGE build(); + +} diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/MultiStepTemplateLoadedChange.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/MultiStepTemplateLoadedChange.java similarity index 95% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/MultiStepTemplateLoadedChange.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/MultiStepTemplateLoadedChange.java index 84dd6909a..83be41618 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/MultiStepTemplateLoadedChange.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/MultiStepTemplateLoadedChange.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.template.AbstractChangeTemplate; import io.flamingock.api.template.TemplateField; @@ -22,8 +22,8 @@ import io.flamingock.api.template.TemplateStep; import io.flamingock.api.template.TemplateValidationContext; import io.flamingock.internal.common.core.error.validation.ValidationError; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import java.lang.reflect.Constructor; import java.util.ArrayList; @@ -35,7 +35,7 @@ * Used for templates annotated with {@code @ChangeTemplate(steppable = true)}. *

* The steps are converted from raw YAML data (List of Maps) to typed TemplateStep objects - * at load time, enabling early validation and cleaner executable tasks. + * at load time, enabling early validation and cleaner executable changes. * * @param the configuration type for the template * @param the apply payload type @@ -56,13 +56,13 @@ public class MultiStepTemplateLoadedChange> steps, TargetSystemDescriptor targetSystem, RecoveryDescriptor recovery, boolean rollbackPayloadRequired) { - super(changeFileName, id, order, author, templateClass, constructor, profiles, transactionalFlag, transactional, runAlways, systemTask, configuration, targetSystem, recovery, rollbackPayloadRequired); + super(changeFileName, id, order, author, templateClass, constructor, profiles, transactionalFlag, transactional, runAlways, systemChange, configuration, targetSystem, recovery, rollbackPayloadRequired); this.steps = steps; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/SimpleTemplateLoadedChange.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChange.java similarity index 95% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/SimpleTemplateLoadedChange.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChange.java index c30c43940..08ec83d13 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/SimpleTemplateLoadedChange.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChange.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.template.AbstractChangeTemplate; import io.flamingock.api.template.TemplateField; @@ -21,8 +21,8 @@ import io.flamingock.api.template.TemplatePayloadValidationError; import io.flamingock.api.template.TemplateValidationContext; import io.flamingock.internal.common.core.error.validation.ValidationError; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import java.lang.reflect.Constructor; import java.util.ArrayList; @@ -34,7 +34,7 @@ * Used for templates annotated with {@code @ChangeTemplate(steppable = false)} or without annotation. *

* The payloads are converted from raw YAML data (Object/Map) to typed values - * at load time, enabling early validation and cleaner executable tasks. + * at load time, enabling early validation and cleaner executable changes. * * @param the configuration type for the template * @param the apply payload type @@ -57,14 +57,14 @@ public class SimpleTemplateLoadedChange> { +public class TemplateLoadedChangeBuilder implements LoadedChangeBuilder> { - private static final Logger logger = FlamingockLoggerFactory.getLogger(TemplateLoadedTaskBuilder.class); + private static final Logger logger = FlamingockLoggerFactory.getLogger(TemplateLoadedChangeBuilder.class); private static final TemplateValidator DEFAULT_VALIDATOR = new TemplateValidator(); @@ -69,62 +69,62 @@ public class TemplateLoadedTaskBuilder implements LoadedTaskBuilder profiles) { this.profiles = profiles; } - public TemplateLoadedTaskBuilder setRunAlways(boolean runAlways) { + public TemplateLoadedChangeBuilder setRunAlways(boolean runAlways) { this.runAlways = runAlways; return this; } - public TemplateLoadedTaskBuilder setTransactionalFlag(Boolean transactionalFlag) { + public TemplateLoadedChangeBuilder setTransactionalFlag(Boolean transactionalFlag) { this.transactionalFlag = transactionalFlag; return this; } - public TemplateLoadedTaskBuilder setSystem(boolean system) { + public TemplateLoadedChangeBuilder setSystem(boolean system) { this.system = system; return this; } - public TemplateLoadedTaskBuilder setFileName(String fileName) { + public TemplateLoadedChangeBuilder setFileName(String fileName) { this.fileName = fileName; return this; } - public TemplateLoadedTaskBuilder setConfiguration(Object configuration) { + public TemplateLoadedChangeBuilder setConfiguration(Object configuration) { this.configuration = configuration; return this; } - public TemplateLoadedTaskBuilder setApplyPayload(Object applyPayload) { + public TemplateLoadedChangeBuilder setApplyPayload(Object applyPayload) { this.applyPayload = applyPayload; return this; } - public TemplateLoadedTaskBuilder setRollbackPayload(Object rollbackPayload) { + public TemplateLoadedChangeBuilder setRollbackPayload(Object rollbackPayload) { this.rollbackPayload = rollbackPayload; return this; } - public TemplateLoadedTaskBuilder setSteps(Object steps) { + public TemplateLoadedChangeBuilder setSteps(Object steps) { this.steps = steps; return this; } @@ -176,7 +176,7 @@ public TemplateLoadedTaskBuilder setSteps(Object steps) { @Override @SuppressWarnings({"unchecked", "rawtypes"}) public AbstractTemplateLoadedChange build() { - // boolean isTaskTransactional = true;//TODO implement this. isTaskTransactionalAccordingTemplate(templateSpec); + // boolean isChangeTransactional = true;//TODO implement this. isChangeTransactionalAccordingTemplate(templateSpec); ChangeTemplateDefinition definition = ChangeTemplateManager.getTemplate(templateName) .orElseThrow(()-> new FlamingockException(String.format("Template[%s] not found. This is probably because template's name is wrong or template's library not imported", templateName))); @@ -415,7 +415,7 @@ private void logTransactionalInference(boolean inferred) { } } - private TemplateLoadedTaskBuilder setPreview(TemplatePreviewChange preview) { + private TemplateLoadedChangeBuilder setPreview(TemplatePreviewChange preview) { this.preview = preview; setFileName(preview.getFileName()); setId(preview.getId()); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/FailedChangeProcessResult.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/FailedChangeProcessResult.java similarity index 89% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/FailedChangeProcessResult.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/FailedChangeProcessResult.java index d258e81c7..680efd7da 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/FailedChangeProcessResult.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/FailedChangeProcessResult.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation; +package io.flamingock.internal.core.change.navigation; import io.flamingock.internal.common.core.response.data.ChangeResult; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessResult; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessResult; /** * Result of a failed change process. diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/AuditStoreStepOperations.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/AuditStoreStepOperations.java similarity index 78% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/AuditStoreStepOperations.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/AuditStoreStepOperations.java index b6ee4b8e5..04385882f 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/AuditStoreStepOperations.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/AuditStoreStepOperations.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator; +package io.flamingock.internal.core.change.navigation.navigator; import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.core.external.store.audit.LifecycleAuditWriter; @@ -22,10 +22,10 @@ import io.flamingock.internal.core.external.store.audit.domain.RuntimeContext; import io.flamingock.internal.core.external.store.audit.domain.StartExecutionAuditContextBundle; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.navigation.step.StartStep; -import io.flamingock.internal.core.task.navigation.step.complete.failed.CompleteAutoRolledBackStep; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.StartStep; +import io.flamingock.internal.core.change.navigation.step.complete.failed.CompleteAutoRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; import io.flamingock.internal.util.Result; import java.time.LocalDateTime; @@ -44,22 +44,22 @@ public AuditStoreStepOperations(LifecycleAuditWriter auditWriter, AuditTxType au public Result auditStartExecution(StartStep startStep, ExecutionContext executionContext, LocalDateTime appliedAt) { RuntimeContext runtimeContext = RuntimeContext.builder().setStartStep(startStep).setAppliedAt(appliedAt).build(); - return auditWriter.writeStartExecution(new StartExecutionAuditContextBundle(startStep.getLoadedTask(), executionContext, runtimeContext, auditTxType, targetSystemId)); + return auditWriter.writeStartExecution(new StartExecutionAuditContextBundle(startStep.getLoadedChange(), executionContext, runtimeContext, auditTxType, targetSystemId)); } public Result auditExecution(ExecutionStep executionStep, ExecutionContext executionContext, LocalDateTime appliedAt) { RuntimeContext runtimeContext = RuntimeContext.builder().setExecutionStep(executionStep).setAppliedAt(appliedAt).build(); - return auditWriter.writeExecution(new ExecutionAuditContextBundle(executionStep.getLoadedTask(), executionContext, runtimeContext, auditTxType, targetSystemId)); + return auditWriter.writeExecution(new ExecutionAuditContextBundle(executionStep.getLoadedChange(), executionContext, runtimeContext, auditTxType, targetSystemId)); } public Result auditManualRollback(ManualRolledBackStep rolledBackStep, ExecutionContext executionContext, LocalDateTime appliedAt) { RuntimeContext runtimeContext = RuntimeContext.builder().setManualRollbackStep(rolledBackStep).setAppliedAt(appliedAt).build(); - return auditWriter.writeRollback(new RollbackAuditContextBundle(rolledBackStep.getLoadedTask(), executionContext, runtimeContext, auditTxType, targetSystemId)); + return auditWriter.writeRollback(new RollbackAuditContextBundle(rolledBackStep.getLoadedChange(), executionContext, runtimeContext, auditTxType, targetSystemId)); } public Result auditAutoRollback(CompleteAutoRolledBackStep rolledBackStep, ExecutionContext executionContext, LocalDateTime appliedAt) { RuntimeContext runtimeContext = RuntimeContext.builder().setAutoRollbackStep(rolledBackStep).setAppliedAt(appliedAt).build(); - return auditWriter.writeRollback(new RollbackAuditContextBundle(rolledBackStep.getLoadedTask(), executionContext, runtimeContext, auditTxType, targetSystemId)); + return auditWriter.writeRollback(new RollbackAuditContextBundle(rolledBackStep.getLoadedChange(), executionContext, runtimeContext, auditTxType, targetSystemId)); } } \ No newline at end of file diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessLogger.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessLogger.java similarity index 76% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessLogger.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessLogger.java index 1d36f022e..a41a1b2f7 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessLogger.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessLogger.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator; - -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.common.core.task.TaskDescriptor; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.execution.FailedExecutionStep; -import io.flamingock.internal.core.task.navigation.step.execution.SuccessApplyStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.FailedManualRolledBackStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +package io.flamingock.internal.core.change.navigation.navigator; + +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; +import io.flamingock.internal.core.change.navigation.step.execution.FailedExecutionStep; +import io.flamingock.internal.core.change.navigation.step.execution.SuccessApplyStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.FailedManualRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; import io.flamingock.internal.util.Result; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -53,33 +53,33 @@ public void logSkippedExecution(String changeId) { } public void logExecutionResult(ExecutionStep executionStep) { - String taskId = executionStep.getTask().getId(); + String changeId = executionStep.getChange().getId(); String duration = formatDuration(executionStep.getDuration()); if (executionStep instanceof SuccessApplyStep) { - logger.info("Change applied [change={} duration={}]", taskId, duration); + logger.info("Change applied [change={} duration={}]", changeId, duration); } else if (executionStep instanceof FailedExecutionStep) { FailedExecutionStep failed = (FailedExecutionStep) executionStep; logger.error("Change failed [change={} duration={}]: {}", - taskId, duration, failed.getMainError().getMessage()); + changeId, duration, failed.getMainError().getMessage()); } } - public void logAutoRollback(ExecutableTask executableChange, long duration) { + public void logAutoRollback(ExecutableChange executableChange, long duration) { String formattedDuration = formatDuration(duration); logger.info("Change rolled back [change={} duration={}]", executableChange.getId(), formattedDuration); } public void logManualRollbackResult(ManualRolledBackStep rolledBack) { - String taskId = rolledBack.getTask().getId(); + String changeId = rolledBack.getChange().getId(); String duration = formatDuration(rolledBack.getDuration()); if (rolledBack instanceof FailedManualRolledBackStep) { FailedManualRolledBackStep failed = (FailedManualRolledBackStep) rolledBack; logger.error("Rollback failed [change={} duration={}]: {}", - taskId, duration, failed.getMainError().getMessage()); + changeId, duration, failed.getMainError().getMessage()); } else { - logger.info("Change rolled back [change={} duration={}]", taskId, duration); + logger.info("Change rolled back [change={} duration={}]", changeId, duration); } } @@ -96,15 +96,15 @@ public void logAuditStartResult(Result auditResult, String id) { logAuditResult(auditResult, id, START_DESC); } - public void logAuditExecutionResult(Result auditResult, TaskDescriptor change) { + public void logAuditExecutionResult(Result auditResult, ChangeDescriptor change) { logAuditResult(auditResult, change.getId(), EXECUTION_DESC); } - public void logAuditManualRollbackResult(Result auditResult, TaskDescriptor change) { + public void logAuditManualRollbackResult(Result auditResult, ChangeDescriptor change) { logAuditResult(auditResult, change.getId(), MANUAL_ROLLBACK_DESC); } - public void logAuditAutoRollbackResult(Result auditResult, TaskDescriptor change) { + public void logAuditAutoRollbackResult(Result auditResult, ChangeDescriptor change) { logAuditResult(auditResult, change.getId(), AUTO_ROLLBACK_DESC); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessResult.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessResult.java similarity index 95% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessResult.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessResult.java index ef3d49be4..35f17f907 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessResult.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessResult.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator; +package io.flamingock.internal.core.change.navigation.navigator; import io.flamingock.internal.common.core.response.data.ChangeResult; diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessStrategy.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessStrategy.java similarity index 93% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessStrategy.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessStrategy.java index 0597d3163..39b0c4daf 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessStrategy.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator; +package io.flamingock.internal.core.change.navigation.navigator; /** * Strategy interface for processing changes. diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessStrategyFactory.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessStrategyFactory.java similarity index 91% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessStrategyFactory.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessStrategyFactory.java index 0a2328a58..2a7ebbbd3 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/ChangeProcessStrategyFactory.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/ChangeProcessStrategyFactory.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator; +package io.flamingock.internal.core.change.navigation.navigator; import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.common.core.context.ContextResolver; @@ -26,10 +26,10 @@ import io.flamingock.internal.core.external.targets.TargetSystemManager; import io.flamingock.internal.core.external.targets.operations.TargetSystemOps; import io.flamingock.internal.core.external.targets.operations.TransactionalTargetSystemOps; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.navigator.strategy.NonTxChangeProcessStrategy; -import io.flamingock.internal.core.task.navigation.navigator.strategy.SharedTxChangeProcessStrategy; -import io.flamingock.internal.core.task.navigation.navigator.strategy.SimpleTxChangeProcessStrategy; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.navigator.strategy.NonTxChangeProcessStrategy; +import io.flamingock.internal.core.change.navigation.navigator.strategy.SharedTxChangeProcessStrategy; +import io.flamingock.internal.core.change.navigation.navigator.strategy.SimpleTxChangeProcessStrategy; import io.flamingock.internal.util.TimeService; import java.util.Set; @@ -58,7 +58,7 @@ public class ChangeProcessStrategyFactory { private final TargetSystemManager targetSystemManager; - protected ExecutableTask change; + protected ExecutableChange change; protected LifecycleAuditWriter auditWriter; @@ -74,7 +74,7 @@ public ChangeProcessStrategyFactory(TargetSystemManager targetSystemManager) { this.targetSystemManager = targetSystemManager; } - public ChangeProcessStrategyFactory setChange(ExecutableTask change) { + public ChangeProcessStrategyFactory setChange(ExecutableChange change) { this.change = change; return this; } @@ -126,7 +126,7 @@ public ChangeProcessStrategy build() { auditStoreOps, baseContext, executionContext, - new ChangeResultBuilder().fromTask(change), + new ChangeResultBuilder().fromChange(change), lockGuardProxyFactory, TimeService.getDefault() ); @@ -156,7 +156,7 @@ private TargetSystemOps getTargetSystem() { * @param proxyFactory Lock guard proxy factory * @return Configured strategy instance appropriate for the target system */ - public static ChangeProcessStrategy getStrategy(ExecutableTask change, + public static ChangeProcessStrategy getStrategy(ExecutableChange change, TargetSystemOps targetSystemOps, AuditStoreStepOperations auditStoreOps, ContextResolver baseContext, @@ -190,7 +190,7 @@ public static ChangeProcessStrategy getStrategy(ExecutableTask change, } } - private static AuditTxType getAuditTxStrategy(ExecutableTask change, TargetSystemOps targetSystem) { + private static AuditTxType getAuditTxStrategy(ExecutableChange change, TargetSystemOps targetSystem) { if(!change.isTransactional()) { return AuditTxType.NON_TX; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/AbstractChangeProcessStrategy.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/AbstractChangeProcessStrategy.java similarity index 84% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/AbstractChangeProcessStrategy.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/AbstractChangeProcessStrategy.java index 288d41453..54b6297f3 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/AbstractChangeProcessStrategy.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/AbstractChangeProcessStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator.strategy; +package io.flamingock.internal.core.change.navigation.navigator.strategy; import io.flamingock.internal.common.core.context.Context; import io.flamingock.internal.common.core.context.ContextResolver; @@ -25,19 +25,18 @@ import io.flamingock.internal.core.runtime.ExecutionRuntime; import io.flamingock.internal.core.runtime.proxy.LockGuardProxyFactory; import io.flamingock.internal.core.external.targets.operations.TargetSystemOps; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessResult; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessStrategy; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessLogger; -import io.flamingock.internal.core.task.navigation.navigator.AuditStoreStepOperations; -import io.flamingock.internal.core.task.navigation.step.ExecutableStep; -import io.flamingock.internal.core.task.navigation.step.StartStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.AfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.complete.CompletedAlreadyAppliedStep; -import io.flamingock.internal.core.task.navigation.step.complete.failed.CompleteAutoRolledBackStep; -import io.flamingock.internal.core.task.navigation.step.complete.failed.CompletedFailedManualRollback; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessResult; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessStrategy; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessLogger; +import io.flamingock.internal.core.change.navigation.navigator.AuditStoreStepOperations; +import io.flamingock.internal.core.change.navigation.step.ExecutableStep; +import io.flamingock.internal.core.change.navigation.step.StartStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.AfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.complete.failed.CompleteAutoRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.complete.failed.CompletedFailedManualRollback; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; import io.flamingock.internal.util.Result; import io.flamingock.internal.util.TimeService; @@ -77,7 +76,7 @@ public abstract class AbstractChangeProcessStrategy implements ChangeProcessStrategy { protected static final ChangeProcessLogger stepLogger = new ChangeProcessLogger(); - protected final ExecutableTask change; + protected final ExecutableChange change; protected final TS_OPS targetSystemOps; @@ -93,7 +92,7 @@ public abstract class AbstractChangeProcessStrategyConcrete strategies must implement this method to define their specific * transaction handling, execution flow, and error recovery patterns. * - * @return Task execution result with success/failure status and details + * @return Change execution result with success/failure status and details */ abstract protected ChangeProcessResult doApplyChange(); @@ -145,7 +144,7 @@ public final ChangeProcessResult applyChange() { protected ExecutableStep auditAndLogStartExecution(StartStep startStep, ExecutionContext executionContext) { Result auditResult = auditStoreOperations.auditStartExecution(startStep, executionContext, timeService.currentDateTime()); - stepLogger.logAuditStartResult(auditResult, startStep.getLoadedTask().getId()); + stepLogger.logAuditStartResult(auditResult, startStep.getLoadedChange().getId()); ExecutableStep executableStep = startStep.start(); return executableStep; } @@ -161,7 +160,7 @@ protected AfterExecutionAuditStep auditAndLogExecution(ExecutionStep executionSt Result auditResult = auditStoreOperations.auditExecution(executionStep, executionContext, timeService.currentDateTime()); - stepLogger.logAuditExecutionResult(auditResult, executionStep.getLoadedTask()); + stepLogger.logAuditExecutionResult(auditResult, executionStep.getLoadedChange()); AfterExecutionAuditStep afterExecutionAudit = executionStep.withAuditResult(auditResult); return afterExecutionAudit; } @@ -169,13 +168,13 @@ protected AfterExecutionAuditStep auditAndLogExecution(ExecutionStep executionSt protected void auditAndLogManualRollback(ManualRolledBackStep rolledBackStep, ExecutionContext executionContext) { Result auditResult = auditStoreOperations.auditManualRollback(rolledBackStep, executionContext, timeService.currentDateTime()); - stepLogger.logAuditManualRollbackResult(auditResult, rolledBackStep.getLoadedTask()); + stepLogger.logAuditManualRollbackResult(auditResult, rolledBackStep.getLoadedChange()); CompletedFailedManualRollback failedStep = rolledBackStep.applyAuditResult(auditResult); } protected void auditAndLogAutoRollback(CompleteAutoRolledBackStep rolledBackStep, ExecutionContext executionContext) { Result auditResult = auditStoreOperations.auditAutoRollback(rolledBackStep, executionContext, timeService.currentDateTime()); - stepLogger.logAuditAutoRollbackResult(auditResult, rolledBackStep.getLoadedTask()); + stepLogger.logAuditAutoRollbackResult(auditResult, rolledBackStep.getLoadedChange()); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/NonTxChangeProcessStrategy.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/NonTxChangeProcessStrategy.java similarity index 82% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/NonTxChangeProcessStrategy.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/NonTxChangeProcessStrategy.java index de903961e..e83f55734 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/NonTxChangeProcessStrategy.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/NonTxChangeProcessStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator.strategy; +package io.flamingock.internal.core.change.navigation.navigator.strategy; import io.flamingock.internal.common.core.context.ContextResolver; import io.flamingock.internal.common.core.response.data.ChangeResult; @@ -21,17 +21,17 @@ import io.flamingock.internal.core.pipeline.execution.ExecutionContext; import io.flamingock.internal.core.runtime.proxy.LockGuardProxyFactory; import io.flamingock.internal.core.external.targets.operations.TargetSystemOps; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.FailedChangeProcessResult; -import io.flamingock.internal.core.task.navigation.navigator.AuditStoreStepOperations; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessResult; -import io.flamingock.internal.core.task.navigation.step.ExecutableStep; -import io.flamingock.internal.core.task.navigation.step.StartStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.AfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.FailedAfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.RollableStep; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.FailedChangeProcessResult; +import io.flamingock.internal.core.change.navigation.navigator.AuditStoreStepOperations; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessResult; +import io.flamingock.internal.core.change.navigation.step.ExecutableStep; +import io.flamingock.internal.core.change.navigation.step.StartStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.AfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.FailedAfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.RollableStep; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; import io.flamingock.internal.util.TimeService; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -74,7 +74,7 @@ public class NonTxChangeProcessStrategy extends AbstractChangeProcessStrategy executionStep = new Wrapper<>(null); // Execute change and audit within single transaction diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/SimpleTxChangeProcessStrategy.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/SimpleTxChangeProcessStrategy.java similarity index 84% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/SimpleTxChangeProcessStrategy.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/SimpleTxChangeProcessStrategy.java index ad7e3becc..3aa6db329 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/navigator/strategy/SimpleTxChangeProcessStrategy.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/navigator/strategy/SimpleTxChangeProcessStrategy.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.navigator.strategy; +package io.flamingock.internal.core.change.navigation.navigator.strategy; import io.flamingock.internal.common.core.context.ContextResolver; import io.flamingock.internal.common.core.response.data.ChangeResult; @@ -21,18 +21,16 @@ import io.flamingock.internal.core.pipeline.execution.ExecutionContext; import io.flamingock.internal.core.runtime.proxy.LockGuardProxyFactory; import io.flamingock.internal.core.external.targets.operations.TransactionalTargetSystemOps; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.FailedChangeProcessResult; -import io.flamingock.internal.core.task.navigation.navigator.AuditStoreStepOperations; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessResult; -import io.flamingock.internal.core.task.navigation.step.ExecutableStep; -import io.flamingock.internal.core.task.navigation.step.RollableFailedStep; -import io.flamingock.internal.core.task.navigation.step.StartStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.AfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.FailedAfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.complete.failed.CompleteAutoRolledBackStep; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.FailedChangeProcessResult; +import io.flamingock.internal.core.change.navigation.navigator.AuditStoreStepOperations; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessResult; +import io.flamingock.internal.core.change.navigation.step.ExecutableStep; +import io.flamingock.internal.core.change.navigation.step.StartStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.AfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.FailedAfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.complete.failed.CompleteAutoRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; import io.flamingock.internal.util.TimeService; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -81,7 +79,7 @@ public class SimpleTxChangeProcessStrategy extends AbstractChangeProcessStrategy private static final Logger logger = FlamingockLoggerFactory.getLogger("SimpleTxStrategy"); - public SimpleTxChangeProcessStrategy(ExecutableTask change, + public SimpleTxChangeProcessStrategy(ExecutableChange change, ExecutionContext executionContext, TransactionalTargetSystemOps targetSystemOps, AuditStoreStepOperations auditStoreOperations, @@ -96,7 +94,7 @@ public SimpleTxChangeProcessStrategy(ExecutableTask change, protected ChangeProcessResult doApplyChange() { resultBuilder.startTimer(); - logger.debug("Executing transactional task [change={}]", change.getId()); + logger.debug("Executing transactional change [change={}]", change.getId()); StartStep startStep = new StartStep(change); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/AbstractTaskStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/AbstractChangeStep.java similarity index 62% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/AbstractTaskStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/AbstractChangeStep.java index 364d24f99..14c149a32 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/AbstractTaskStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/AbstractChangeStep.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; -public abstract class AbstractTaskStep implements TaskStep { +public abstract class AbstractChangeStep implements ChangeStep { - protected final ExecutableTask task; + protected final ExecutableChange change; - protected AbstractTaskStep(ExecutableTask task) { - this.task = task; + protected AbstractChangeStep(ExecutableChange change) { + this.change = change; } @Override - public ExecutableTask getTask() { - return task; + public ExecutableChange getChange() { + return change; } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/TaskStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/ChangeStep.java similarity index 62% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/TaskStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/ChangeStep.java index 943adeea1..80dcd76e3 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/TaskStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/ChangeStep.java @@ -13,16 +13,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; -public interface TaskStep { - ExecutableTask getTask(); +public interface ChangeStep { + ExecutableChange getChange(); - default AbstractLoadedTask getLoadedTask() { - return (AbstractLoadedTask) getTask().getLoadedChange(); + default AbstractLoadedChange getLoadedChange() { + return (AbstractLoadedChange) getChange().getLoadedChange(); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/ExecutableStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/ExecutableStep.java similarity index 71% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/ExecutableStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/ExecutableStep.java index 794303dd8..c586c4895 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/ExecutableStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/ExecutableStep.java @@ -13,24 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.execution.FailedExecutionStep; -import io.flamingock.internal.core.task.navigation.step.execution.SuccessApplyStep; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; +import io.flamingock.internal.core.change.navigation.step.execution.FailedExecutionStep; +import io.flamingock.internal.core.change.navigation.step.execution.SuccessApplyStep; import io.flamingock.internal.core.runtime.ExecutionRuntime; import io.flamingock.internal.util.StopWatch; -public class ExecutableStep extends AbstractTaskStep { +public class ExecutableStep extends AbstractChangeStep { public ExecutableStep(StartStep step) { - super(step.getTask()); + super(step.getChange()); } public ExecutionStep execute(ExecutionRuntime executionRuntime) { StopWatch stopWatch = StopWatch.startAndGet(); try { - task.apply(executionRuntime); + change.apply(executionRuntime); return SuccessApplyStep.instance(this, stopWatch.getElapsed()); } catch (Throwable throwable) { return FailedExecutionStep.instance(this, stopWatch.getElapsed(), throwable); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/FailedStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/FailedStep.java similarity index 86% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/FailedStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/FailedStep.java index 72bb034cd..fb0f24b59 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/FailedStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/FailedStep.java @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; /** * Marker interface to indicate a failed state */ -public interface FailedStep extends TaskStep { +public interface FailedStep extends ChangeStep { } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/FailedWithErrorStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/FailedWithErrorStep.java similarity index 92% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/FailedWithErrorStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/FailedWithErrorStep.java index f467ad02b..287d869bc 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/FailedWithErrorStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/FailedWithErrorStep.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; public interface FailedWithErrorStep extends FailedStep { Throwable getMainError(); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/RollableFailedStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/RollableFailedStep.java similarity index 83% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/RollableFailedStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/RollableFailedStep.java index 6d1a8c5c0..6d99d57e4 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/RollableFailedStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/RollableFailedStep.java @@ -13,9 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; -import io.flamingock.internal.core.task.navigation.step.afteraudit.RollableStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.RollableStep; public interface RollableFailedStep extends FailedStep { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/StartStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/StartStep.java similarity index 73% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/StartStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/StartStep.java index 313444293..77b4c8c65 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/StartStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/StartStep.java @@ -13,14 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; -public class StartStep extends AbstractTaskStep { +public class StartStep extends AbstractChangeStep { - public StartStep(ExecutableTask task) { - super(task); + public StartStep(ExecutableChange change) { + super(change); } public ExecutableStep start() { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/SuccessableStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/SuccessableStep.java similarity index 94% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/SuccessableStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/SuccessableStep.java index b2b7806f2..8e7067e53 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/SuccessableStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/SuccessableStep.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step; +package io.flamingock.internal.core.change.navigation.step; public interface SuccessableStep { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/AfterExecutionAuditStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/AfterExecutionAuditStep.java similarity index 62% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/AfterExecutionAuditStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/AfterExecutionAuditStep.java index df4bb11db..f85d67bb0 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/AfterExecutionAuditStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/AfterExecutionAuditStep.java @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.afteraudit; +package io.flamingock.internal.core.change.navigation.step.afteraudit; -import io.flamingock.internal.core.task.navigation.step.AbstractTaskStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.AbstractChangeStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; -public abstract class AfterExecutionAuditStep extends AbstractTaskStep implements SuccessableStep { +public abstract class AfterExecutionAuditStep extends AbstractChangeStep implements SuccessableStep { protected final boolean successExecutionAudit; - protected AfterExecutionAuditStep(ExecutableTask task, boolean successExecutionAudit) { - super(task); + protected AfterExecutionAuditStep(ExecutableChange change, boolean successExecutionAudit) { + super(change); this.successExecutionAudit = successExecutionAudit; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedAfterExecutionAuditStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedAfterExecutionAuditStep.java similarity index 54% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedAfterExecutionAuditStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedAfterExecutionAuditStep.java index a21e8031e..08f0202c5 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedAfterExecutionAuditStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedAfterExecutionAuditStep.java @@ -13,41 +13,38 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.afteraudit; +package io.flamingock.internal.core.change.navigation.step.afteraudit; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; -import io.flamingock.internal.core.task.navigation.step.RollableFailedStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.FailedWithErrorStep; +import io.flamingock.internal.core.change.navigation.step.RollableFailedStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; import io.flamingock.internal.util.Result; -import java.util.List; -import java.util.stream.Collectors; - public abstract class FailedAfterExecutionAuditStep extends AfterExecutionAuditStep implements SuccessableStep, RollableFailedStep, FailedWithErrorStep { - public static FailedAfterExecutionAuditStep fromFailedApply(ExecutableTask task, Throwable errorOnApply, Result auditResult) { + public static FailedAfterExecutionAuditStep fromFailedApply(ExecutableChange change, Throwable errorOnApply, Result auditResult) { if (auditResult instanceof Result.Error) { Result.Error errorResult = (Result.Error) auditResult; - return new FailedExecutionFailedAuditStep(task, errorOnApply, errorResult.getError()); + return new FailedExecutionFailedAuditStep(change, errorOnApply, errorResult.getError()); } else { - return new FailedExecutionSuccessAuditStep(task, errorOnApply); + return new FailedExecutionSuccessAuditStep(change, errorOnApply); } } - public static FailedAfterExecutionAuditStep fromSuccessApply(ExecutableTask task, Result.Error errorOnAudit) { - return new SuccessExecutionFailedAuditStep(task, errorOnAudit.getError()); + public static FailedAfterExecutionAuditStep fromSuccessApply(ExecutableChange change, Result.Error errorOnAudit) { + return new SuccessExecutionFailedAuditStep(change, errorOnAudit.getError()); } - protected FailedAfterExecutionAuditStep(ExecutableTask task, boolean successAuditOperation) { - super(task, successAuditOperation); + protected FailedAfterExecutionAuditStep(ExecutableChange change, boolean successAuditOperation) { + super(change, successAuditOperation); } @Override public final RollableStep getRollbackStep() { - return new RollableStep(getTask()); + return new RollableStep(getChange()); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedExecutionFailedAuditStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedExecutionFailedAuditStep.java similarity index 80% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedExecutionFailedAuditStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedExecutionFailedAuditStep.java index cefaf8da1..6a6ca4b94 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedExecutionFailedAuditStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedExecutionFailedAuditStep.java @@ -13,20 +13,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.afteraudit; +package io.flamingock.internal.core.change.navigation.step.afteraudit; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; public final class FailedExecutionFailedAuditStep extends FailedAfterExecutionAuditStep { private final Throwable errorOnApply; private final Throwable errorOnAudit; - FailedExecutionFailedAuditStep(ExecutableTask task, + FailedExecutionFailedAuditStep(ExecutableChange change, Throwable errorOnApply, Throwable errorOnAudit) { - super(task, true); + super(change, true); this.errorOnApply = errorOnApply; this.errorOnAudit = errorOnAudit; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedExecutionSuccessAuditStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedExecutionSuccessAuditStep.java similarity index 79% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedExecutionSuccessAuditStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedExecutionSuccessAuditStep.java index 8af2843f1..e09883eb1 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/FailedExecutionSuccessAuditStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/FailedExecutionSuccessAuditStep.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.afteraudit; +package io.flamingock.internal.core.change.navigation.step.afteraudit; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; public final class FailedExecutionSuccessAuditStep extends FailedAfterExecutionAuditStep { private final Throwable errorOnApply; - FailedExecutionSuccessAuditStep(ExecutableTask task, Throwable errorOnApply) { - super(task, true); + FailedExecutionSuccessAuditStep(ExecutableChange change, Throwable errorOnApply) { + super(change, true); this.errorOnApply = errorOnApply; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/RollableStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/RollableStep.java similarity index 69% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/RollableStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/RollableStep.java index 6b1e52938..3d7b2c756 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/RollableStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/RollableStep.java @@ -13,25 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.afteraudit; +package io.flamingock.internal.core.change.navigation.step.afteraudit; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.AbstractTaskStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.step.AbstractChangeStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.executable.Rollback; import io.flamingock.internal.util.StopWatch; -public final class RollableStep extends AbstractTaskStep { +public final class RollableStep extends AbstractChangeStep { - public RollableStep(ExecutableTask executableChange) { + public RollableStep(ExecutableChange executableChange) { super(executableChange); } public ManualRolledBackStep rollback(ExecutionRuntime executionRuntime) { StopWatch stopWatch = StopWatch.startAndGet(); - ExecutableTask change = this.getTask(); + ExecutableChange change = this.getChange(); try { change.rollback(executionRuntime); return ManualRolledBackStep.successfulRollback(change, stopWatch.getElapsed()); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/SuccessExecutionFailedAuditStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/SuccessExecutionFailedAuditStep.java similarity index 74% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/SuccessExecutionFailedAuditStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/SuccessExecutionFailedAuditStep.java index 7f38e012d..dbfb3ea47 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/afteraudit/SuccessExecutionFailedAuditStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/afteraudit/SuccessExecutionFailedAuditStep.java @@ -13,18 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.afteraudit; +package io.flamingock.internal.core.change.navigation.step.afteraudit; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.step.FailedWithErrorStep; public final class SuccessExecutionFailedAuditStep extends FailedAfterExecutionAuditStep implements FailedWithErrorStep { private final Throwable errorOnAudit; - SuccessExecutionFailedAuditStep(ExecutableTask task, Throwable errorOnAudit) { - super(task, false); + SuccessExecutionFailedAuditStep(ExecutableChange change, Throwable errorOnAudit) { + super(change, false); this.errorOnAudit = errorOnAudit; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/CompletedAlreadyAppliedStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/CompletedAlreadyAppliedStep.java similarity index 61% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/CompletedAlreadyAppliedStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/CompletedAlreadyAppliedStep.java index 26a901818..8ccf16775 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/CompletedAlreadyAppliedStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/CompletedAlreadyAppliedStep.java @@ -13,15 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.complete; +package io.flamingock.internal.core.change.navigation.step.complete; -import io.flamingock.internal.core.task.navigation.step.AbstractTaskStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.AbstractChangeStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; -public final class CompletedAlreadyAppliedStep extends AbstractTaskStep { +public final class CompletedAlreadyAppliedStep extends AbstractChangeStep { - public CompletedAlreadyAppliedStep(ExecutableTask appliedTask) { - super(appliedTask); + public CompletedAlreadyAppliedStep(ExecutableChange appliedChange) { + super(appliedChange); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/CompletedSuccessStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/CompletedSuccessStep.java similarity index 62% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/CompletedSuccessStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/CompletedSuccessStep.java index 460a0d7ee..178025e62 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/CompletedSuccessStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/CompletedSuccessStep.java @@ -13,20 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.complete; +package io.flamingock.internal.core.change.navigation.step.complete; -import io.flamingock.internal.core.task.navigation.step.afteraudit.AfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.execution.SuccessApplyStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.afteraudit.AfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.execution.SuccessApplyStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; public final class CompletedSuccessStep extends AfterExecutionAuditStep { public static CompletedSuccessStep fromSuccessExecution(SuccessApplyStep appliedStep) { - return new CompletedSuccessStep(appliedStep.getTask()); + return new CompletedSuccessStep(appliedStep.getChange()); } - private CompletedSuccessStep(ExecutableTask appliedTask) { - super(appliedTask, true); + private CompletedSuccessStep(ExecutableChange appliedChange) { + super(appliedChange, true); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompleteAutoRolledBackStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompleteAutoRolledBackStep.java similarity index 54% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompleteAutoRolledBackStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompleteAutoRolledBackStep.java index 895a324a5..d0e5c5255 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompleteAutoRolledBackStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompleteAutoRolledBackStep.java @@ -13,25 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.complete.failed; +package io.flamingock.internal.core.change.navigation.step.complete.failed; -import io.flamingock.internal.core.task.navigation.step.RollableFailedStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.RollableStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.RolledBackStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; - -import java.util.List; -import java.util.stream.Collectors; +import io.flamingock.internal.core.change.navigation.step.RollableFailedStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.RollableStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.RolledBackStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; public class CompleteAutoRolledBackStep extends RolledBackStep implements SuccessableStep, RollableFailedStep { - public CompleteAutoRolledBackStep(ExecutableTask task, boolean rollbackSuccess) { - super(task, rollbackSuccess); + public CompleteAutoRolledBackStep(ExecutableChange change, boolean rollbackSuccess) { + super(change, rollbackSuccess); } @Override public final RollableStep getRollbackStep() { - return new RollableStep(getTask()); + return new RollableStep(getChange()); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompletedFailedAtRollbackAuditStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompletedFailedAtRollbackAuditStep.java similarity index 72% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompletedFailedAtRollbackAuditStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompletedFailedAtRollbackAuditStep.java index 4bd102a8b..01ac12ad6 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompletedFailedAtRollbackAuditStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompletedFailedAtRollbackAuditStep.java @@ -13,17 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.complete.failed; +package io.flamingock.internal.core.change.navigation.step.complete.failed; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.FailedWithErrorStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; public final class CompletedFailedAtRollbackAuditStep extends CompletedFailedManualRollback implements FailedWithErrorStep { private final Throwable errorAtRollbackAudit; - CompletedFailedAtRollbackAuditStep(ManualRolledBackStep taskStep, Throwable errorAtRollbackAudit) { - super(taskStep.getTask()); + CompletedFailedAtRollbackAuditStep(ManualRolledBackStep changeStep, Throwable errorAtRollbackAudit) { + super(changeStep.getChange()); this.errorAtRollbackAudit = errorAtRollbackAudit; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompletedFailedManualRollback.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompletedFailedManualRollback.java similarity index 62% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompletedFailedManualRollback.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompletedFailedManualRollback.java index 97753e572..b5682d848 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/complete/failed/CompletedFailedManualRollback.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/complete/failed/CompletedFailedManualRollback.java @@ -13,25 +13,25 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.complete.failed; +package io.flamingock.internal.core.change.navigation.step.complete.failed; -import io.flamingock.internal.core.task.navigation.step.AbstractTaskStep; -import io.flamingock.internal.core.task.navigation.step.FailedStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.AbstractChangeStep; +import io.flamingock.internal.core.change.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; import io.flamingock.internal.util.Result; -public class CompletedFailedManualRollback extends AbstractTaskStep implements SuccessableStep, FailedStep { +public class CompletedFailedManualRollback extends AbstractChangeStep implements SuccessableStep, FailedStep { public static CompletedFailedManualRollback fromRollbackAuditResult(ManualRolledBackStep rolledBack, Result auditResult) { return auditResult instanceof Result.Error ? new CompletedFailedAtRollbackAuditStep(rolledBack, ((Result.Error) auditResult).getError()) - : new CompletedFailedManualRollback(rolledBack.getTask()); + : new CompletedFailedManualRollback(rolledBack.getChange()); } - protected CompletedFailedManualRollback(ExecutableTask task) { - super(task); + protected CompletedFailedManualRollback(ExecutableChange change) { + super(change); } @Override diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/ExecutionStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/ExecutionStep.java similarity index 64% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/ExecutionStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/ExecutionStep.java index 2f4150b04..5ed6c3627 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/ExecutionStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/ExecutionStep.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.execution; +package io.flamingock.internal.core.change.navigation.step.execution; -import io.flamingock.internal.core.task.navigation.step.AbstractTaskStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.AfterExecutionAuditStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.AbstractChangeStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.AfterExecutionAuditStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; import io.flamingock.internal.util.Result; -public abstract class ExecutionStep extends AbstractTaskStep implements SuccessableStep { +public abstract class ExecutionStep extends AbstractChangeStep implements SuccessableStep { private final long duration; private final boolean successExecution; - protected ExecutionStep(ExecutableTask task, boolean successExecution, long duration) { - super(task); + protected ExecutionStep(ExecutableChange change, boolean successExecution, long duration) { + super(change); this.successExecution = successExecution; this.duration = duration; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/FailedExecutionStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/FailedExecutionStep.java similarity index 61% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/FailedExecutionStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/FailedExecutionStep.java index 3f38d2db8..3c080e346 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/FailedExecutionStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/FailedExecutionStep.java @@ -13,24 +13,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.execution; +package io.flamingock.internal.core.change.navigation.step.execution; -import io.flamingock.internal.core.task.navigation.step.ExecutableStep; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.FailedAfterExecutionAuditStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.ExecutableStep; +import io.flamingock.internal.core.change.navigation.step.FailedWithErrorStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.FailedAfterExecutionAuditStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; import io.flamingock.internal.util.Result; public final class FailedExecutionStep extends ExecutionStep implements FailedWithErrorStep { public static FailedExecutionStep instance(ExecutableStep initialStep, long executionTimeMillis, Throwable throwable) { - return new FailedExecutionStep(initialStep.getTask(), executionTimeMillis, throwable); + return new FailedExecutionStep(initialStep.getChange(), executionTimeMillis, throwable); } private final Throwable errorOnApply; - private FailedExecutionStep(ExecutableTask task, long executionTimeMillis, Throwable errorOnApply) { - super(task, false, executionTimeMillis); + private FailedExecutionStep(ExecutableChange change, long executionTimeMillis, Throwable errorOnApply) { + super(change, false, executionTimeMillis); this.errorOnApply = errorOnApply; } @@ -41,7 +41,7 @@ public Throwable getMainError() { @Override public FailedAfterExecutionAuditStep withAuditResult(Result auditResult) { - return FailedAfterExecutionAuditStep.fromFailedApply(task, errorOnApply, auditResult); + return FailedAfterExecutionAuditStep.fromFailedApply(change, errorOnApply, auditResult); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/SuccessApplyStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/SuccessApplyStep.java similarity index 59% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/SuccessApplyStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/SuccessApplyStep.java index e4ade09d2..e39b8bce2 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/execution/SuccessApplyStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/execution/SuccessApplyStep.java @@ -13,28 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.execution; +package io.flamingock.internal.core.change.navigation.step.execution; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.ExecutableStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.AfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.afteraudit.FailedAfterExecutionAuditStep; -import io.flamingock.internal.core.task.navigation.step.complete.CompletedSuccessStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.step.ExecutableStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.AfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.afteraudit.FailedAfterExecutionAuditStep; +import io.flamingock.internal.core.change.navigation.step.complete.CompletedSuccessStep; import io.flamingock.internal.util.Result; public final class SuccessApplyStep extends ExecutionStep { public static SuccessApplyStep instance(ExecutableStep initialStep, long executionTimeMillis) { - return new SuccessApplyStep(initialStep.getTask(), executionTimeMillis); + return new SuccessApplyStep(initialStep.getChange(), executionTimeMillis); } - private SuccessApplyStep(ExecutableTask task, long executionTimeMillis) { - super(task, true, executionTimeMillis); + private SuccessApplyStep(ExecutableChange change, long executionTimeMillis) { + super(change, true, executionTimeMillis); } @Override public AfterExecutionAuditStep withAuditResult(Result auditResult) { return auditResult.isError() - ? FailedAfterExecutionAuditStep.fromSuccessApply(task, (Result.Error) auditResult) + ? FailedAfterExecutionAuditStep.fromSuccessApply(change, (Result.Error) auditResult) : CompletedSuccessStep.fromSuccessExecution(this); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/FailedManualRolledBackStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/FailedManualRolledBackStep.java similarity index 71% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/FailedManualRolledBackStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/FailedManualRolledBackStep.java index adf6925cd..8132c9b19 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/FailedManualRolledBackStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/FailedManualRolledBackStep.java @@ -13,18 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.rolledback; +package io.flamingock.internal.core.change.navigation.step.rolledback; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; -import io.flamingock.internal.core.task.executable.Rollback; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.step.FailedWithErrorStep; public final class FailedManualRolledBackStep extends ManualRolledBackStep implements FailedWithErrorStep { private final Throwable error; - FailedManualRolledBackStep(ExecutableTask executableChange, long duration, Throwable error) { + FailedManualRolledBackStep(ExecutableChange executableChange, long duration, Throwable error) { super(executableChange, false, duration); this.error = error; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/ManualRolledBackStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/ManualRolledBackStep.java similarity index 68% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/ManualRolledBackStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/ManualRolledBackStep.java index a606eb72a..363babaa7 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/ManualRolledBackStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/ManualRolledBackStep.java @@ -13,29 +13,28 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.rolledback; +package io.flamingock.internal.core.change.navigation.step.rolledback; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.step.FailedStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.navigation.step.complete.failed.CompletedFailedManualRollback; -import io.flamingock.internal.core.task.executable.Rollback; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.navigation.step.complete.failed.CompletedFailedManualRollback; import io.flamingock.internal.util.Result; public class ManualRolledBackStep extends RolledBackStep implements SuccessableStep, FailedStep { private final long duration; - protected ManualRolledBackStep(ExecutableTask executableChange, boolean rollbackSuccess, long duration) { + protected ManualRolledBackStep(ExecutableChange executableChange, boolean rollbackSuccess, long duration) { super(executableChange, rollbackSuccess); this.duration = duration; } - public static ManualRolledBackStep successfulRollback(ExecutableTask executableChange, long duration) { + public static ManualRolledBackStep successfulRollback(ExecutableChange executableChange, long duration) { return new ManualRolledBackStep(executableChange, true, duration); } - public static ManualRolledBackStep failedRollback(ExecutableTask executableChange, long duration, Throwable error) { + public static ManualRolledBackStep failedRollback(ExecutableChange executableChange, long duration, Throwable error) { return new FailedManualRolledBackStep(executableChange, duration, error); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/RolledBackStep.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/RolledBackStep.java similarity index 59% rename from core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/RolledBackStep.java rename to core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/RolledBackStep.java index 10b50e911..eb3d11e35 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/navigation/step/rolledback/RolledBackStep.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/change/navigation/step/rolledback/RolledBackStep.java @@ -13,20 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.navigation.step.rolledback; +package io.flamingock.internal.core.change.navigation.step.rolledback; -import io.flamingock.internal.core.task.navigation.step.AbstractTaskStep; -import io.flamingock.internal.core.task.navigation.step.FailedStep; -import io.flamingock.internal.core.task.navigation.step.SuccessableStep; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.navigation.step.AbstractChangeStep; +import io.flamingock.internal.core.change.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.SuccessableStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; -public abstract class RolledBackStep extends AbstractTaskStep implements SuccessableStep, FailedStep { +public abstract class RolledBackStep extends AbstractChangeStep implements SuccessableStep, FailedStep { private final boolean rollbackSuccess; - public RolledBackStep(ExecutableTask task, boolean rollbackSuccess) { - super(task); + public RolledBackStep(ExecutableChange change, boolean rollbackSuccess) { + super(change); this.rollbackSuccess = rollbackSuccess; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/LifecycleAuditWriter.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/LifecycleAuditWriter.java index 87a3def00..615814544 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/LifecycleAuditWriter.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/LifecycleAuditWriter.java @@ -22,7 +22,7 @@ import io.flamingock.internal.util.Result; /** - * This class implements the Facade pattern containing the responsibility to log the taskStep, map it to Entry + * This class implements the Facade pattern containing the responsibility to log the changeStep, map it to Entry * and log then entry just in order to avoid having too many classes to implement that depend on the * same AuditEntry implementation, which would enforce to add the generic to the holder/orchestrator class. * However, the `mapper responsibility` is intended to be delegated to a Mapper class, but that's left to decide diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundle.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundle.java index 858ab0192..c5efd7dec 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundle.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundle.java @@ -20,8 +20,8 @@ import io.flamingock.internal.common.core.audit.AuditEntry; import io.flamingock.internal.common.core.targets.TargetSystemAuditMarkType; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractTemplateLoadedChange; import static io.flamingock.internal.common.core.audit.AuditEntry.ChangeType.MONGOCK_BEFORE; import static io.flamingock.internal.common.core.audit.AuditEntry.ChangeType.MONGOCK_EXECUTION; @@ -46,14 +46,14 @@ public static AuditContextBundle.Operation fromOngoingStatusOperation(TargetSyst } private final Operation operation; - private final AbstractLoadedTask changeDescriptor; + private final AbstractLoadedChange changeDescriptor; private final ExecutionContext executionContext; private final RuntimeContext runtimeContext; private final AuditTxType operationType; private final String targetSystemId; public AuditContextBundle(Operation operation, - AbstractLoadedTask changeDescriptor, + AbstractLoadedChange changeDescriptor, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, @@ -70,7 +70,7 @@ public Operation getOperation() { return operation; } - public AbstractLoadedTask getChangeDescriptor() { + public AbstractLoadedChange getChangeDescriptor() { return changeDescriptor; } @@ -92,7 +92,7 @@ public String getTargetSystemId() { public AuditEntry toAuditEntry() { - AbstractLoadedTask loadedChange = getChangeDescriptor(); + AbstractLoadedChange loadedChange = getChangeDescriptor(); ExecutionContext stageExecutionContext = getExecutionContext(); RuntimeContext runtimeContext = getRuntimeContext(); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/ExecutionAuditContextBundle.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/ExecutionAuditContextBundle.java index 616c69d2b..12e3783ed 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/ExecutionAuditContextBundle.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/ExecutionAuditContextBundle.java @@ -17,11 +17,11 @@ import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; public class ExecutionAuditContextBundle extends AuditContextBundle { - public ExecutionAuditContextBundle(AbstractLoadedTask loadedTask, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, String targetSystemId) { - super(Operation.EXECUTION, loadedTask, executionContext, runtimeContext, auditTxType, targetSystemId); + public ExecutionAuditContextBundle(AbstractLoadedChange loadedChange, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, String targetSystemId) { + super(Operation.EXECUTION, loadedChange, executionContext, runtimeContext, auditTxType, targetSystemId); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RollbackAuditContextBundle.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RollbackAuditContextBundle.java index cf5b01512..9ec958246 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RollbackAuditContextBundle.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RollbackAuditContextBundle.java @@ -17,11 +17,11 @@ import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; public class RollbackAuditContextBundle extends AuditContextBundle { - public RollbackAuditContextBundle(AbstractLoadedTask loadedTask, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, String targetSystemId) { - super(Operation.ROLLBACK, loadedTask, executionContext, runtimeContext, auditTxType, targetSystemId); + public RollbackAuditContextBundle(AbstractLoadedChange loadedChange, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, String targetSystemId) { + super(Operation.ROLLBACK, loadedChange, executionContext, runtimeContext, auditTxType, targetSystemId); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RuntimeContext.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RuntimeContext.java index 95f83f2c2..05408f79c 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RuntimeContext.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/RuntimeContext.java @@ -15,12 +15,12 @@ */ package io.flamingock.internal.core.external.store.audit.domain; -import io.flamingock.internal.core.task.navigation.step.FailedWithErrorStep; -import io.flamingock.internal.core.task.navigation.step.StartStep; -import io.flamingock.internal.core.task.navigation.step.TaskStep; -import io.flamingock.internal.core.task.navigation.step.complete.failed.CompleteAutoRolledBackStep; -import io.flamingock.internal.core.task.navigation.step.execution.ExecutionStep; -import io.flamingock.internal.core.task.navigation.step.rolledback.ManualRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.FailedWithErrorStep; +import io.flamingock.internal.core.change.navigation.step.StartStep; +import io.flamingock.internal.core.change.navigation.step.ChangeStep; +import io.flamingock.internal.core.change.navigation.step.complete.failed.CompleteAutoRolledBackStep; +import io.flamingock.internal.core.change.navigation.step.execution.ExecutionStep; +import io.flamingock.internal.core.change.navigation.step.rolledback.ManualRolledBackStep; import java.time.LocalDateTime; import java.util.Optional; @@ -104,26 +104,26 @@ public static class Builder { private Builder() { } - public Builder setStartStep(StartStep taskStep) { + public Builder setStartStep(StartStep changeStep) { duration = 0L; - methodExecutor = taskStep.getTask().getApplyMethodName(); - stageName = taskStep.getTask().getStageName(); - setResult(taskStep); + methodExecutor = changeStep.getChange().getApplyMethodName(); + stageName = changeStep.getChange().getStageName(); + setResult(changeStep); return this; } - public Builder setExecutionStep(ExecutionStep taskStep) { - duration = taskStep.getDuration(); - methodExecutor = taskStep.getTask().getApplyMethodName(); - stageName = taskStep.getTask().getStageName(); - setResult(taskStep); + public Builder setExecutionStep(ExecutionStep changeStep) { + duration = changeStep.getDuration(); + methodExecutor = changeStep.getChange().getApplyMethodName(); + stageName = changeStep.getChange().getStageName(); + setResult(changeStep); return this; } public Builder setManualRollbackStep(ManualRolledBackStep rolledBackStep) { duration = rolledBackStep.getDuration(); - methodExecutor = rolledBackStep.getTask().getRollbackMethodName(); - stageName = rolledBackStep.getTask().getStageName(); + methodExecutor = rolledBackStep.getChange().getRollbackMethodName(); + stageName = rolledBackStep.getChange().getStageName(); setResult(rolledBackStep); return this; } @@ -131,15 +131,15 @@ public Builder setManualRollbackStep(ManualRolledBackStep rolledBackStep) { public Builder setAutoRollbackStep(CompleteAutoRolledBackStep rolledBackStep) { duration = 0L; methodExecutor = "native_db_engine"; - stageName = rolledBackStep.getTask().getStageName(); + stageName = rolledBackStep.getChange().getStageName(); setResult(rolledBackStep); return this; } - private void setResult(TaskStep taskStep) { - if (taskStep instanceof FailedWithErrorStep) { + private void setResult(ChangeStep changeStep) { + if (changeStep instanceof FailedWithErrorStep) { executionResult = ExecutionResult.FAILED; - error = ((FailedWithErrorStep) taskStep).getMainError(); + error = ((FailedWithErrorStep) changeStep).getMainError(); } else { executionResult = ExecutionResult.SUCCESS; error = null; diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/StartExecutionAuditContextBundle.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/StartExecutionAuditContextBundle.java index c6a2c7726..d42d20764 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/StartExecutionAuditContextBundle.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/audit/domain/StartExecutionAuditContextBundle.java @@ -17,11 +17,11 @@ import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; public class StartExecutionAuditContextBundle extends AuditContextBundle { - public StartExecutionAuditContextBundle(AbstractLoadedTask loadedTask, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, String targetSystemId) { - super(Operation.START_EXECUTION, loadedTask, executionContext, runtimeContext, auditTxType, targetSystemId); + public StartExecutionAuditContextBundle(AbstractLoadedChange loadedChange, ExecutionContext executionContext, RuntimeContext runtimeContext, AuditTxType auditTxType, String targetSystemId) { + super(Operation.START_EXECUTION, loadedChange, executionContext, runtimeContext, auditTxType, targetSystemId); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/lock/Lock.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/lock/Lock.java index cc72087f3..21ea57f5b 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/lock/Lock.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/store/lock/Lock.java @@ -139,7 +139,7 @@ public final boolean extend() throws LockException { /** * This should be called once all the process guarded by the lock(those who assumed the lock is ensured) has finished. - * Otherwise, a race condition where a process A ensures the lock, starts a task that takes 2 seconds, but before finishing, + * Otherwise, a race condition where a process A ensures the lock, starts a change that takes 2 seconds, but before finishing, * the lock is released(closed) and another instances acquire the lock, before process A has finished. */ public final void release() { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TargetSystemManager.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TargetSystemManager.java index 35fddf19d..d3ca3a764 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TargetSystemManager.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TargetSystemManager.java @@ -19,7 +19,7 @@ import io.flamingock.internal.common.core.context.ContextInitializable; import io.flamingock.internal.common.core.context.ContextResolver; import io.flamingock.internal.common.core.error.FlamingockException; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.core.external.targets.operations.TargetSystemOps; import io.flamingock.internal.core.external.targets.operations.TargetSystemOpsImpl; import io.flamingock.internal.core.external.targets.operations.TransactionalTargetSystemOpsImpl; diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TransactionalTargetSystem.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TransactionalTargetSystem.java index 31c9e1941..fae2195bc 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TransactionalTargetSystem.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/TransactionalTargetSystem.java @@ -45,7 +45,7 @@ public abstract class TransactionalTargetSystem implements ContextInitializable { - protected String onGoingTasksRepositoryName = CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME; + protected String onGoingChangesRepositoryName = CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME; protected boolean autoCreate = true; protected TargetSystemAuditMarker markerRepository; @@ -54,8 +54,8 @@ public TransactionalTargetSystem(String id) { } public boolean hasMarker() { - TargetSystemAuditMarker onGoingTaskStatusRepository = getOnGoingTaskStatusRepository(); - return onGoingTaskStatusRepository != null && !(onGoingTaskStatusRepository instanceof NoOpTargetSystemAuditMarker); + TargetSystemAuditMarker onGoingChangeStatusRepository = getOnGoingChangeStatusRepository(); + return onGoingChangeStatusRepository != null && !(onGoingChangeStatusRepository instanceof NoOpTargetSystemAuditMarker); } /** @@ -87,7 +87,7 @@ public final T applyChangeTransactional(Function change * * @return the audit marker instance */ - public TargetSystemAuditMarker getOnGoingTaskStatusRepository() { + public TargetSystemAuditMarker getOnGoingChangeStatusRepository() { return markerRepository; } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/NoOpTargetSystemAuditMarker.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/NoOpTargetSystemAuditMarker.java index bead4772b..81e3bc7e6 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/NoOpTargetSystemAuditMarker.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/NoOpTargetSystemAuditMarker.java @@ -38,12 +38,12 @@ public Set listAll() { @Override public void clearMark(String changeId) { - logger.debug("Ignoring 'clean' operation for task '{}': no-op repository for target system '{}'", changeId, targetSystemId); + logger.debug("Ignoring 'clean' operation for change '{}': no-op repository for target system '{}'", changeId, targetSystemId); } @Override public void mark(TargetSystemAuditMark auditMark) { - logger.debug("Ignoring 'register' operation for task '{}': no-op repository for target system '{}'", auditMark.getTaskId(), targetSystemId); + logger.debug("Ignoring 'register' operation for change '{}': no-op repository for target system '{}'", auditMark.getChangeId(), targetSystemId); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMark.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMark.java index 3ba4c14aa..734ab54fa 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMark.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMark.java @@ -20,17 +20,17 @@ public class TargetSystemAuditMark { - private final String taskId; + private final String changeId; private final TargetSystemAuditMarkType operation; - public TargetSystemAuditMark(String taskId, TargetSystemAuditMarkType operation) { - this.taskId = taskId; + public TargetSystemAuditMark(String changeId, TargetSystemAuditMarkType operation) { + this.changeId = changeId; this.operation = operation; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } public TargetSystemAuditMarkType getOperation() { @@ -44,11 +44,11 @@ public boolean equals(Object o) { TargetSystemAuditMark that = (TargetSystemAuditMark) o; - return taskId.equals(that.taskId); + return changeId.equals(that.changeId); } @Override public int hashCode() { - return taskId.hashCode(); + return changeId.hashCode(); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMarker.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMarker.java index 62b99696e..9b857d4ec 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMarker.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/mark/TargetSystemAuditMarker.java @@ -17,7 +17,7 @@ import io.flamingock.internal.common.core.targets.TargetSystemAuditMarkType; import io.flamingock.internal.common.core.error.FlamingockException; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; import java.util.Set; /** @@ -85,7 +85,7 @@ public interface TargetSystemAuditMarker { * @param change the applied change to be marked locally. * @throws FlamingockException if the operation fails (e.g., storage unavailable). */ - default void markApplied(ExecutableTask change) { + default void markApplied(ExecutableChange change) { mark(new TargetSystemAuditMark(change.getId(), TargetSystemAuditMarkType.APPLIED)); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/operations/TransactionalTargetSystemOpsImpl.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/operations/TransactionalTargetSystemOpsImpl.java index ea6516428..6b239518f 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/operations/TransactionalTargetSystemOpsImpl.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/external/targets/operations/TransactionalTargetSystemOpsImpl.java @@ -65,17 +65,17 @@ public String getId() { @Override public Set listAll() { - return targetSystem.getOnGoingTaskStatusRepository().listAll(); + return targetSystem.getOnGoingChangeStatusRepository().listAll(); } @Override public void clearMark(String changeId) { - targetSystem.getOnGoingTaskStatusRepository().clearMark(changeId); + targetSystem.getOnGoingChangeStatusRepository().clearMark(changeId); } @Override public void mark(TargetSystemAuditMark auditMark) { - targetSystem.getOnGoingTaskStatusRepository().mark(auditMark); + targetSystem.getOnGoingChangeStatusRepository().mark(auditMark); } private OperationType internalGetOperationType(AbstractTargetSystem auditStoreTargetSystem) { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/AbstractPipelineTraverseOperation.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/AbstractPipelineTraverseOperation.java index 2903a1a39..8db9f3847 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/AbstractPipelineTraverseOperation.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/AbstractPipelineTraverseOperation.java @@ -116,7 +116,7 @@ private ExecuteResponseData execute(LoadedPipeline pipeline) throws FlamingockEx List allStages = validateAndGetExecutableStages(pipeline); int stageCount = allStages.size(); long changeCount = allStages.stream() - .mapToLong(stage -> stage.getTasks().size()) + .mapToLong(stage -> stage.getChanges().size()) .sum(); logger.info("Flamingock execution started [stages={} changes={}]", stageCount, changeCount); diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditFixOperation.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditFixOperation.java index 2b3924b68..76cf60e1e 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditFixOperation.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditFixOperation.java @@ -46,7 +46,7 @@ public AuditFixResult execute(AuditFixArgs args) { AuditEntry fixedAuditEntry = new AuditEntry( ExecutionId.getNewExecutionId(), currentEntry.getStageId(), - currentEntry.getTaskId(), + currentEntry.getChangeId(), "flamingock-cli", LocalDateTime.now(), getState(args.getResolution()), diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditListResult.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditListResult.java index f94531388..51292ac15 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditListResult.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/audit/AuditListResult.java @@ -55,7 +55,7 @@ public Object toResponseData() { private AuditEntryDto toDto(AuditEntry entry) { if (extended) { return new AuditEntryDto( - entry.getTaskId(), + entry.getChangeId(), entry.getAuthor(), entry.getState() != null ? entry.getState().name() : null, entry.getStageId(), @@ -69,7 +69,7 @@ private AuditEntryDto toDto(AuditEntry entry) { ); } else { return new AuditEntryDto( - entry.getTaskId(), + entry.getChangeId(), entry.getAuthor(), entry.getState() != null ? entry.getState().name() : null, entry.getStageId(), diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/result/ChangeResultBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/result/ChangeResultBuilder.java index 682b11235..7faedb7f2 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/result/ChangeResultBuilder.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/operation/result/ChangeResultBuilder.java @@ -17,14 +17,14 @@ import io.flamingock.internal.common.core.response.data.ChangeResult; import io.flamingock.internal.common.core.response.data.ChangeStatus; -import io.flamingock.internal.common.core.task.TaskDescriptor; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.common.core.change.ChangeDescriptor; +import io.flamingock.internal.core.change.executable.ExecutableChange; import java.time.Duration; import java.time.LocalDateTime; /** - * Builder for creating ChangeResult instances from task execution data. + * Builder for creating ChangeResult instances from change execution data. */ public class ChangeResultBuilder { @@ -39,8 +39,8 @@ public class ChangeResultBuilder { public ChangeResultBuilder() { } - public ChangeResultBuilder fromTask(ExecutableTask task) { - TaskDescriptor descriptor = task.getLoadedChange(); + public ChangeResultBuilder fromChange(ExecutableChange change) { + ChangeDescriptor descriptor = change.getLoadedChange(); this.changeId = descriptor.getId(); this.author = descriptor.getAuthor(); if (descriptor.getTargetSystem() != null) { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/ExecutableStage.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/ExecutableStage.java index de6f18d3e..dd3060640 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/ExecutableStage.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/ExecutableStage.java @@ -16,8 +16,8 @@ package io.flamingock.internal.core.pipeline.execution; import io.flamingock.internal.common.core.pipeline.StageDescriptor; -import io.flamingock.internal.common.core.task.TaskDescriptor; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.common.core.change.ChangeDescriptor; +import io.flamingock.internal.core.change.executable.ExecutableChange; import java.util.Collection; import java.util.List; @@ -26,12 +26,12 @@ public class ExecutableStage implements StageDescriptor { - protected final List tasks; + protected final List changes; private final String name; - public ExecutableStage(String name, List tasks) { + public ExecutableStage(String name, List changes) { this.name = name; - this.tasks = tasks; + this.changes = changes; } public String getName() { @@ -39,19 +39,19 @@ public String getName() { } @Override - public Collection getLoadedTasks() { - return tasks.stream().map(ExecutableTask::getLoadedChange).collect(Collectors.toList()); + public Collection getLoadedChanges() { + return changes.stream().map(ExecutableChange::getLoadedChange).collect(Collectors.toList()); } - public List getTasks() { - return tasks; + public List getChanges() { + return changes; } public boolean isExecutionRequired() { - return tasks.stream() + return changes.stream() .filter(Objects::nonNull) - .anyMatch(executableTask -> !executableTask.isAlreadyApplied()); + .anyMatch(executableChange -> !executableChange.isAlreadyApplied()); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/StageExecutor.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/StageExecutor.java index 41d777631..7abc100f7 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/StageExecutor.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/execution/StageExecutor.java @@ -24,11 +24,11 @@ import io.flamingock.internal.core.external.store.lock.Lock; import io.flamingock.internal.core.external.targets.TargetSystemManager; import io.flamingock.internal.core.operation.result.StageResultBuilder; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.navigation.FailedChangeProcessResult; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessResult; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessStrategy; -import io.flamingock.internal.core.task.navigation.navigator.ChangeProcessStrategyFactory; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.navigation.FailedChangeProcessResult; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessResult; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessStrategy; +import io.flamingock.internal.core.change.navigation.navigator.ChangeProcessStrategyFactory; import io.flamingock.internal.core.transaction.TransactionWrapper; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -68,11 +68,11 @@ public Output executeStage(ExecutableStage executableStage, Lock lock) throws StageExecutionException { LocalDateTime stageStart = LocalDateTime.now(); String stageName = executableStage.getName(); - long taskCount = getTasksStream(executableStage).count(); + long changeCount = getChangesStream(executableStage).count(); logger.info("Stage started [stage={}]", stageName); - logger.debug("Stage execution context [stage={} tasks={} execution_id={}]", - stageName, taskCount, executionContext.getExecutionId()); + logger.debug("Stage execution context [stage={} changes={} execution_id={}]", + stageName, changeCount, executionContext.getExecutionId()); StageResultBuilder resultBuilder = new StageResultBuilder() .stageId(stageName) @@ -86,7 +86,7 @@ public Output executeStage(ExecutableStage executableStage, try { logger.debug("Processing changes [stage={} context={}]", stageName, executionContext.getExecutionId()); - getTasksStream(executableStage) + getChangesStream(executableStage) .map(changeProcessFactory::setChange) .map(ChangeProcessStrategyFactory::build) .map(ChangeProcessStrategy::applyChange) @@ -142,8 +142,8 @@ private ChangeProcessStrategyFactory getStepNavigatorBuilder(ExecutionContext ex .setNonGuardedTypes(nonGuardedTypes); } - protected Stream getTasksStream(ExecutableStage executableStage) { - return executableStage.getTasks().stream(); + protected Stream getChangesStream(ExecutableStage executableStage) { + return executableStage.getChanges().stream(); } public static class Output { diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/LoadedPipeline.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/LoadedPipeline.java index ef85ea3cc..7e879e0a0 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/LoadedPipeline.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/LoadedPipeline.java @@ -23,10 +23,10 @@ import io.flamingock.internal.common.core.pipeline.PipelineDescriptor; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import io.flamingock.internal.core.pipeline.loaded.stage.AbstractLoadedStage; -import io.flamingock.internal.core.task.filter.TaskFilter; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.filter.ChangeFilter; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -44,7 +44,7 @@ public class LoadedPipeline implements PipelineDescriptor { private static final PipelineValidationContext DEFAULT_CONTEXT = new PipelineValidationContext(); - private final Collection taskFilters; + private final Collection changeFilters; private final AbstractLoadedStage systemStage; private final List loadedStages; @@ -54,16 +54,16 @@ public static LoadedPipelineBuilder builder() { } private LoadedPipeline(List loadedStages, - Collection taskFilters) { - this(null, loadedStages, taskFilters); + Collection changeFilters) { + this(null, loadedStages, changeFilters); } private LoadedPipeline(AbstractLoadedStage systemStage, List loadedStages, - Collection taskFilters) { + Collection changeFilters) { this.systemStage = systemStage; this.loadedStages = loadedStages; - this.taskFilters = taskFilters; + this.changeFilters = changeFilters; } @@ -73,7 +73,7 @@ private LoadedPipeline(AbstractLoadedStage systemStage, *

    *
  • Ensures the pipeline contains at least one stage
  • *
  • Validates each individual stage within the pipeline
  • - *
  • Checks for duplicate task IDs across all stages
  • + *
  • Checks for duplicate change IDs across all stages
  • *
* * @throws FlamingockException if any validation errors are found, containing a formatted @@ -109,19 +109,19 @@ public List getStages() { } @Override - public Optional getLoadedTask(String taskId) { + public Optional getLoadedChange(String changeId) { return loadedStages.stream() - .map(AbstractLoadedStage::getTasks) + .map(AbstractLoadedStage::getChanges) .flatMap(Collection::stream) - .filter(loadedTask -> loadedTask.getId().equals(taskId)) + .filter(loadedChange -> loadedChange.getId().equals(changeId)) .findFirst(); } @Override - public Optional getStageByTask(String taskId) { + public Optional getStageByChange(String changeId) { for (AbstractLoadedStage loadedStage : loadedStages) { - for (TaskDescriptor loadedTask : loadedStage.getTasks()) { - if (loadedTask.getId().equals(taskId)) { + for (ChangeDescriptor loadedChange : loadedStage.getChanges()) { + if (loadedChange.getId().equals(changeId)) { return Optional.of(loadedStage.getName()); } } @@ -141,7 +141,7 @@ private Optional getStagesIdDuplicationError() { Set duplicateIds = new HashSet<>(); for (AbstractLoadedStage stage : loadedStages) { - for (String id : stage.getTaskIds()) { + for (String id : stage.getChangeIds()) { if (!seenIds.add(id)) { duplicateIds.add(id); } @@ -167,7 +167,7 @@ public static class LoadedPipelineBuilder { private Collection beforeUserStages = new LinkedHashSet<>(); private PreviewPipeline previewPipeline; private Collection afterUserStages = new LinkedHashSet<>(); - private Collection taskFilters = new LinkedHashSet<>(); + private Collection changeFilters = new LinkedHashSet<>(); private LoadedPipelineBuilder() { } @@ -187,8 +187,8 @@ public LoadedPipelineBuilder addAfterUserStages(Collection stages) return this; } - public LoadedPipelineBuilder addFilters(Collection taskFilters) { - this.taskFilters.addAll(taskFilters); + public LoadedPipelineBuilder addFilters(Collection changeFilters) { + this.changeFilters.addAll(changeFilters); return this; } @@ -202,8 +202,8 @@ public LoadedPipeline build() { .map(abstractLoadedStage -> new LoadedPipeline( abstractLoadedStage, allSortedStages, - taskFilters - )).orElseGet(() -> new LoadedPipeline(allSortedStages, taskFilters)); + changeFilters + )).orElseGet(() -> new LoadedPipeline(allSortedStages, changeFilters)); } @NotNull diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/AbstractLoadedStage.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/AbstractLoadedStage.java index 67397295d..8c05e54b4 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/AbstractLoadedStage.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/AbstractLoadedStage.java @@ -25,10 +25,10 @@ import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.common.core.recovery.action.ChangeActionMap; import io.flamingock.internal.core.pipeline.loaded.PipelineValidationContext; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.executable.builder.ExecutableTaskBuilder; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.LoadedTaskBuilder; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.executable.builder.ExecutableChangeBuilder; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.LoadedChangeBuilder; import java.util.ArrayList; import java.util.Collection; @@ -41,7 +41,7 @@ import java.util.stream.Collectors; /** - * It's the result of adding the loaded task to the ProcessDefinition + * It's the result of adding the loaded change to the ProcessDefinition */ public abstract class AbstractLoadedStage implements Validatable { @@ -56,15 +56,15 @@ public static Builder builder() { private final StageType type; - private final Collection tasks; + private final Collection changes; public AbstractLoadedStage(String name, StageType type, - Collection tasks, + Collection changes, StageValidationContext validationContext) { this.name = name; this.type = type; - this.tasks = tasks; + this.changes = changes; this.validationContext = validationContext; } @@ -72,7 +72,7 @@ public AbstractLoadedStage(String name, /** * Applies the specified action plan to this stage, creating an ExecutableStage - * with tasks configured according to their assigned actions. + * with changes configured according to their assigned actions. * This method provides a unified interface for both community (audit-based) * and cloud (orchestrator-based) execution planning. * @@ -80,15 +80,15 @@ public AbstractLoadedStage(String name, * @return an ExecutableStage ready for execution */ public ExecutableStage applyActions(ChangeActionMap actionPlan) { - List tasks = this.tasks + List changes = this.changes .stream() - .map(loadedTask -> { - ChangeAction action = actionPlan.getActionFor(loadedTask.getId()); - return ExecutableTaskBuilder.build(loadedTask, name, action); + .map(loadedChange -> { + ChangeAction action = actionPlan.getActionFor(loadedChange.getId()); + return ExecutableChangeBuilder.build(loadedChange, name, action); }) .collect(Collectors.toCollection(LinkedList::new)); - return new ExecutableStage(name, tasks); + return new ExecutableStage(name, changes); } public String getName() { @@ -99,24 +99,24 @@ public StageType getType() { return type; } - public Collection getTasks() { - return tasks; + public Collection getChanges() { + return changes; } /** - * Returns a set of all task IDs defined within this stage. + * Returns a set of all change IDs defined within this stage. *

- * It is assumed that task IDs within a stage are unique, + * It is assumed that change IDs within a stage are unique, * so the returned {@code Set} will not contain duplicates. *

* - * @return a set of task IDs in this stage + * @return a set of change IDs in this stage */ - public Set getTaskIds() { - return getTasks().stream() - .map(AbstractLoadedTask::getId) + public Set getChangeIds() { + return getChanges().stream() + .map(AbstractLoadedChange::getId) .collect(Collectors.toSet()); } @@ -124,8 +124,8 @@ public Set getTaskIds() { * Validates the stage and returns a list of validation errors * Validations: * 1. has name - * 2. no duplicate task IDs within stage - * 3. all tasks in the stage are valid + * 2. no duplicate change IDs within stage + * 3. all changes in the stage are valid * * @return list of validation errors, or empty list if the stage is valid */ @@ -140,28 +140,28 @@ public List getValidationErrors(PipelineValidationContext conte } // Check if stage is empty - if (tasks == null || tasks.isEmpty()) { - String message = String.format("Stage[%s] must contain at least one task", name); + if (changes == null || changes.isEmpty()) { + String message = String.format("Stage[%s] must contain at least one change", name); return Collections.singletonList(new ValidationError(message, name, "stage")); } - getTaskIdDuplicationError().ifPresent(errors::add); - getTasks().stream().map(task -> task.getValidationErrors(validationContext)).forEach(errors::addAll); + getChangeIdDuplicationError().ifPresent(errors::add); + getChanges().stream().map(change -> change.getValidationErrors(validationContext)).forEach(errors::addAll); return errors; } @Override public String toString() { return "LoadedStage{" + "name='" + name + '\'' + - ", loadedTasks=" + tasks + + ", loadedChanges=" + changes + '}'; } - protected Optional getTaskIdDuplicationError() { + protected Optional getChangeIdDuplicationError() { Set seen = new HashSet<>(); Set duplicates = new HashSet<>(); - for (AbstractLoadedTask task : getTasks()) { - String id = task.getId(); + for (AbstractLoadedChange change : getChanges()) { + String id = change.getId(); if (!seen.add(id)) { duplicates.add(id); } @@ -189,19 +189,19 @@ public Builder setPreviewStage(PreviewStage previewStage) { } public AbstractLoadedStage build() { - List loadedTasks = previewStage.getTasks() + List loadedChanges = previewStage.getChanges() .stream() - .map(LoadedTaskBuilder::build) + .map(LoadedChangeBuilder::build) .sorted() .collect(Collectors.toList()); switch(previewStage.getType()) { case LEGACY: - return new LegacyLoadedStage(previewStage.getName(), previewStage.getType(), loadedTasks); + return new LegacyLoadedStage(previewStage.getName(), previewStage.getType(), loadedChanges); case SYSTEM: - return new SystemLoadedStage(previewStage.getName(), previewStage.getType(), loadedTasks); + return new SystemLoadedStage(previewStage.getName(), previewStage.getType(), loadedChanges); case DEFAULT: default: - return new DefaultLoadedStage(previewStage.getName(), previewStage.getType(), loadedTasks); + return new DefaultLoadedStage(previewStage.getName(), previewStage.getType(), loadedChanges); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/DefaultLoadedStage.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/DefaultLoadedStage.java index 6bdbdfd97..9960d13db 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/DefaultLoadedStage.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/DefaultLoadedStage.java @@ -19,8 +19,7 @@ import io.flamingock.api.StageType; import io.flamingock.internal.common.core.error.validation.ValidationError; import io.flamingock.internal.core.pipeline.loaded.PipelineValidationContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedChange; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import java.util.Collection; import java.util.List; @@ -28,7 +27,7 @@ import static io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext.SortType.SEQUENTIAL_FORMATTED; /** - * It's the result of adding the loaded task to the ProcessDefinition + * It's the result of adding the loaded change to the ProcessDefinition */ public class DefaultLoadedStage extends AbstractLoadedStage { @@ -40,22 +39,21 @@ public class DefaultLoadedStage extends AbstractLoadedStage { public DefaultLoadedStage(String name, StageType type, - Collection loadedTasks) { - super(name, type, loadedTasks, validationContext); + Collection loadedChanges) { + super(name, type, loadedChanges, validationContext); } @Override public List getValidationErrors(PipelineValidationContext context) { List errors = super.getValidationErrors(context); - for (AbstractLoadedTask task : getTasks()) { - if (task instanceof AbstractLoadedChange) { - AbstractLoadedChange change = (AbstractLoadedChange) task; + for (AbstractLoadedChange change : getChanges()) { + if (change != null) { if (!change.isStandard()) { - errors.add(new ValidationError(INVALID_CHANGE_TYPE_MSG, task.getId(), "change")); + errors.add(new ValidationError(INVALID_CHANGE_TYPE_MSG, change.getId(), "change")); } } else { - errors.add(new ValidationError("Task in default stage must be a Change", task.getId(), "change")); + errors.add(new ValidationError("Null changes are not allowed in default stage", "unknown", "change")); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/LegacyLoadedStage.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/LegacyLoadedStage.java index 8b6e51630..3896e81be 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/LegacyLoadedStage.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/LegacyLoadedStage.java @@ -19,8 +19,7 @@ import io.flamingock.api.StageType; import io.flamingock.internal.common.core.error.validation.ValidationError; import io.flamingock.internal.core.pipeline.loaded.PipelineValidationContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedChange; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import java.util.Collection; import java.util.List; @@ -28,7 +27,7 @@ import static io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext.SortType.SEQUENTIAL_SIMPLE; /** - * It's the result of adding the loaded task to the ProcessDefinition + * It's the result of adding the loaded change to the ProcessDefinition */ public class LegacyLoadedStage extends AbstractLoadedStage { @@ -40,8 +39,8 @@ public class LegacyLoadedStage extends AbstractLoadedStage { public LegacyLoadedStage(String name, StageType type, - Collection loadedTasks) { - super(name, type, loadedTasks, validationContext); + Collection loadedChanges) { + super(name, type, loadedChanges, validationContext); } @@ -49,14 +48,13 @@ public LegacyLoadedStage(String name, public List getValidationErrors(PipelineValidationContext context) { List errors = super.getValidationErrors(context); - for (AbstractLoadedTask task : getTasks()) { - if (task instanceof AbstractLoadedChange) { - AbstractLoadedChange change = (AbstractLoadedChange) task; + for (AbstractLoadedChange change : getChanges()) { + if (change != null) { if (!change.isLegacy()) { - errors.add(new ValidationError(INVALID_CHANGE_TYPE_MSG, task.getId(), "change")); + errors.add(new ValidationError(INVALID_CHANGE_TYPE_MSG, change.getId(), "change")); } } else { - errors.add(new ValidationError("Task in legacy stage must be a ChangeUnit", task.getId(), "change")); + errors.add(new ValidationError("Null changes are not allowed in default stage", "unknown", "change")); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/SystemLoadedStage.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/SystemLoadedStage.java index 8eb531f29..1418fa530 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/SystemLoadedStage.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/pipeline/loaded/stage/SystemLoadedStage.java @@ -19,8 +19,7 @@ import io.flamingock.api.StageType; import io.flamingock.internal.common.core.error.validation.ValidationError; import io.flamingock.internal.core.pipeline.loaded.PipelineValidationContext; -import io.flamingock.internal.core.task.loaded.AbstractLoadedChange; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import java.util.Collection; import java.util.List; @@ -28,7 +27,7 @@ import static io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext.SortType.SEQUENTIAL_FORMATTED; /** - * It's the result of adding the loaded task to the ProcessDefinition + * It's the result of adding the loaded change to the ProcessDefinition */ public class SystemLoadedStage extends AbstractLoadedStage { @@ -41,8 +40,8 @@ public class SystemLoadedStage extends AbstractLoadedStage { public SystemLoadedStage(String name, StageType type, - Collection loadedTasks) { - super(name, type, loadedTasks, validationContext); + Collection loadedChanges) { + super(name, type, loadedChanges, validationContext); } @@ -51,14 +50,13 @@ public SystemLoadedStage(String name, public List getValidationErrors(PipelineValidationContext context) { List errors = super.getValidationErrors(context); - for (AbstractLoadedTask task : getTasks()) { - if (task instanceof AbstractLoadedChange) { - AbstractLoadedChange change = (AbstractLoadedChange) task; + for (AbstractLoadedChange change : getChanges()) { + if (change != null) { if (!change.isSystem()) { - errors.add(new ValidationError(INVALID_CHANGE_TYPE_MSG, task.getId(), "change")); + errors.add(new ValidationError(INVALID_CHANGE_TYPE_MSG, change.getId(), "change")); } } else { - errors.add(new ValidationError("Task in a system stage must of type Change", task.getId(), "change")); + errors.add(new ValidationError("Null changes are not allowed in default stage", "unknown", "change")); } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/ExecutionPlan.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/ExecutionPlan.java index 854d626e2..ec3a99894 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/ExecutionPlan.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/ExecutionPlan.java @@ -19,7 +19,7 @@ import io.flamingock.internal.core.external.store.lock.Lock; import io.flamingock.internal.core.pipeline.execution.ExecutablePipeline; import io.flamingock.internal.core.pipeline.execution.ExecutableStage; -import io.flamingock.internal.core.task.executable.ExecutableTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.common.core.recovery.ManualInterventionRequiredException; import io.flamingock.internal.common.core.recovery.RecoveryIssue; @@ -73,14 +73,14 @@ public void applyOnEach(TriConsumer consumer) { /** * Validates the execution plan for manual intervention requirements. - * This method analyzes all executable stages and their tasks to identify + * This method analyzes all executable stages and their changes to identify * any that require manual intervention, throwing an exception if found. *

* This centralized validation follows DDD principles by keeping validation * logic at the appropriate architectural layer (ExecutionPlan domain). *

* - * @throws ManualInterventionRequiredException if any tasks require manual intervention + * @throws ManualInterventionRequiredException if any changes require manual intervention */ public void validate() { List recoveryIssues = new ArrayList<>(); @@ -93,9 +93,9 @@ public void validate() { hasStages = true; } - for (ExecutableTask task : stage.getTasks()) { - if (task.getAction() == ChangeAction.MANUAL_INTERVENTION) { - recoveryIssues.add(new RecoveryIssue(task.getId())); + for (ExecutableChange change : stage.getChanges()) { + if (change.getAction() == ChangeAction.MANUAL_INTERVENTION) { + recoveryIssues.add(new RecoveryIssue(change.getId())); } } } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityChangeActionBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityChangeActionBuilder.java index cdf35c516..af60136e0 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityChangeActionBuilder.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityChangeActionBuilder.java @@ -16,13 +16,12 @@ package io.flamingock.internal.core.plan.community; import io.flamingock.internal.common.core.audit.AuditEntry; -import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.common.core.recovery.ManualInterventionRequiredException; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.common.core.recovery.action.ChangeActionMap; import io.flamingock.internal.common.core.recovery.action.ChangeActionResolver; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; @@ -51,9 +50,9 @@ public class CommunityChangeActionBuilder { * @throws ManualInterventionRequiredException * if any changes require manual intervention */ - public static ChangeActionMap build(Collection changes, Map auditSnapshot) { + public static ChangeActionMap build(Collection changes, Map auditSnapshot) { Map actionMap = new HashMap<>(); - for(AbstractLoadedTask change: changes) { + for(AbstractLoadedChange change: changes) { AuditEntry auditEntry = auditSnapshot.get(change.getId()); if (auditEntry == null || auditEntry.getState() == null) { // No audit entry found - first execution diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityExecutionPlanner.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityExecutionPlanner.java index 333bd2434..8fe1aa240 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityExecutionPlanner.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plan/community/CommunityExecutionPlanner.java @@ -192,7 +192,7 @@ private List buildExecutableStages( return loadedStages.stream() .map(loadedStage -> { ChangeActionMap changeActionMap = CommunityChangeActionBuilder.build( - loadedStage.getTasks(), + loadedStage.getChanges(), auditSnapshot ); return loadedStage.applyActions(changeActionMap); @@ -229,32 +229,32 @@ private Optional getFirstExecutableStage(List * @param validatedStages the validated stages after lock acquisition */ private void logPlanChanges(List initialStages, List validatedStages) { - long initialCount = countExecutableTasks(initialStages); - long validatedCount = countExecutableTasks(validatedStages); + long initialCount = countExecutableChanges(initialStages); + long validatedCount = countExecutableChanges(validatedStages); if (initialCount != validatedCount) { logger.warn( - "Execution plan changed during lock acquisition: {} -> {} executable tasks. " + - "This indicates concurrent execution - {} tasks were executed by another instance.", + "Execution plan changed during lock acquisition: {} -> {} executable changes. " + + "This indicates concurrent execution - {} changes were executed by another instance.", initialCount, validatedCount, initialCount - validatedCount ); } else { - logger.debug("Execution plan validated after lock acquisition: {} executable tasks", validatedCount); + logger.debug("Execution plan validated after lock acquisition: {} executable changes", validatedCount); } } /** - * Counts the number of executable tasks across all stages. + * Counts the number of executable changes across all stages. * * @param stages the list of stages - * @return total count of executable tasks + * @return total count of executable changes */ - private long countExecutableTasks(List stages) { + private long countExecutableChanges(List stages) { return stages.stream() .filter(ExecutableStage::isExecutionRequired) - .mapToLong(stage -> stage.getTasks().size()) + .mapToLong(stage -> stage.getChanges().size()) .sum(); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plugin/Plugin.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plugin/Plugin.java index 98c9e081e..3a019b667 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/plugin/Plugin.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/plugin/Plugin.java @@ -18,7 +18,7 @@ import io.flamingock.internal.common.core.context.ContextInitializable; import io.flamingock.internal.core.event.EventPublisher; import io.flamingock.internal.common.core.context.ContextResolver; -import io.flamingock.internal.core.task.filter.TaskFilter; +import io.flamingock.internal.core.change.filter.ChangeFilter; import java.util.Collections; import java.util.List; @@ -34,7 +34,7 @@ default Optional getDependencyContext() { return Optional.empty(); } - default List getTaskFilters() { + default List getChangeFilters() { return Collections.emptyList(); } diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/CodeExecutableTaskBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/CodeExecutableTaskBuilder.java deleted file mode 100644 index 72bb32440..000000000 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/CodeExecutableTaskBuilder.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2023 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.internal.core.task.executable.builder; - -import io.flamingock.internal.common.core.recovery.action.ChangeAction; -import io.flamingock.internal.core.task.executable.CodeExecutableTask; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.executable.ReflectionExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractReflectionLoadedTask; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; - -import java.lang.reflect.Method; -import java.util.Optional; - - -/** - * Factory for Change classes - */ -public class CodeExecutableTaskBuilder implements ExecutableTaskBuilder { - private static final CodeExecutableTaskBuilder instance = new CodeExecutableTaskBuilder(); - - private String stageName; - private ChangeAction changeAction; - private CodeLoadedChange loadedTask; - - static CodeExecutableTaskBuilder getInstance() { - return instance; - } - - public static boolean supports(AbstractLoadedTask loadedTask) { - return CodeLoadedChange.class.isAssignableFrom(loadedTask.getClass()); - } - - - @Override - public CodeLoadedChange cast(AbstractLoadedTask loadedTask) { - return (CodeLoadedChange) loadedTask; - } - - @Override - public CodeExecutableTaskBuilder setLoadedTask(CodeLoadedChange loadedTask) { - this.loadedTask = loadedTask; - return this; - } - - @Override - public CodeExecutableTaskBuilder setStageName(String stageName) { - this.stageName = stageName; - return this; - } - - @Override - public CodeExecutableTaskBuilder setChangeAction(ChangeAction action) { - this.changeAction = action; - return this; - } - - @Override - public ExecutableTask build() { - return getTasksFromReflection(stageName, loadedTask, changeAction); - } - - /** - * New ChangeAction-based method for building tasks. - */ - private ReflectionExecutableTask getTasksFromReflection(String stageName, - CodeLoadedChange loadedTask, - ChangeAction action) { - return buildTasksInternal(stageName, loadedTask, action); - } - - private ReflectionExecutableTask buildTasksInternal(String stageName, - CodeLoadedChange loadedTask, - ChangeAction action) { - Method executionMethod = loadedTask.getApplyMethod(); - Optional rollbackMethodOpt = loadedTask.getRollbackMethod(); - - return new CodeExecutableTask<>( - stageName, - loadedTask, - action, - executionMethod, - rollbackMethodOpt.orElse(null)); - } -} \ No newline at end of file diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/ExecutableTaskBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/ExecutableTaskBuilder.java deleted file mode 100644 index bc156115f..000000000 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/executable/builder/ExecutableTaskBuilder.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2023 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.internal.core.task.executable.builder; - -import io.flamingock.internal.common.core.recovery.action.ChangeAction; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractTemplateLoadedChange; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; - -public interface ExecutableTaskBuilder { - - /** - * Builds executable tasks based on a ChangeAction - the new action-based approach. - * - * @param loadedTask the loaded task to build executable tasks from - * @param stageName the name of the stage containing the task - * @param action the change action to apply to the task - * @return executable task - */ - static ExecutableTask build(AbstractLoadedTask loadedTask, String stageName, ChangeAction action) { - return getInstance(loadedTask) - .setStageName(stageName) - .setChangeAction(action) - .build(); - } - - - static ExecutableTaskBuilder getInstance(AbstractLoadedTask loadedTask) { - - if(TemplateExecutableTaskBuilder.supports(loadedTask)) { - TemplateExecutableTaskBuilder templateBuilder = TemplateExecutableTaskBuilder.getInstance(); - AbstractTemplateLoadedChange castedTask = templateBuilder.cast(loadedTask); - return templateBuilder.setLoadedTask(castedTask); - - } else if(CodeExecutableTaskBuilder.supports(loadedTask)) { - CodeExecutableTaskBuilder codeBuilder = CodeExecutableTaskBuilder.getInstance(); - CodeLoadedChange castedTask = codeBuilder.cast(loadedTask); - return codeBuilder.setLoadedTask(castedTask); - - } else { - throw new IllegalArgumentException(String.format("ExecutableTask type not recognised[%s]", loadedTask.getClass().getName())); - - } - } - - - LOADED_TASK cast(AbstractLoadedTask loadedTask); - - ExecutableTaskBuilder setLoadedTask(LOADED_TASK task); - - ExecutableTaskBuilder setStageName(String stageName); - - /** - * Sets the change action that determines how the task should be handled. - * This is the new action-based approach. - * - * @param action the change action to set - * @return this builder instance for method chaining - */ - ExecutableTaskBuilder setChangeAction(ChangeAction action); - - ExecutableTask build(); -} diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractLoadedChange.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractLoadedChange.java deleted file mode 100644 index f7ba54a9d..000000000 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/AbstractLoadedChange.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright 2023 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.internal.core.task.loaded; - -import io.flamingock.internal.common.core.error.validation.ValidationError; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.pipeline.loaded.stage.StageValidationContext; -import io.flamingock.internal.util.log.FlamingockLoggerFactory; -import org.jetbrains.annotations.NotNull; -import org.slf4j.Logger; - -import java.lang.reflect.Constructor; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.regex.Pattern; - -public abstract class AbstractLoadedChange extends AbstractReflectionLoadedTask { - - private static final Logger logger = FlamingockLoggerFactory.getLogger("Change"); - /** - * Regex pattern for validating the order field in Changes. - * The pattern requires at least 3 alphanumeric characters (a-z, A-Z, 0-9) anywhere in the string. - * Can contain any other characters (underscores, dots, hyphens, etc.) along with the alphanumeric chars. - * Examples: "abc", "123", "V1_2_3", "001abc", "release_1_2_beta", "20250925_01_migrationWithUnderscores" - * Empty is not allowed - */ - private final static String ORDER_REG_EXP = "^(?=(?:[^a-zA-Z0-9]*[a-zA-Z0-9]){3}).+$"; - private final static Pattern ORDER_PATTERN = Pattern.compile(ORDER_REG_EXP); - private final Constructor constructor; - - - protected AbstractLoadedChange(String fileName, - String id, - String order, - String author, - Class implementationClass, - Constructor constructor, - boolean runAlways, - Boolean transactionalFlag, - boolean transactional, - boolean system, - TargetSystemDescriptor targetSystem, - RecoveryDescriptor recovery, - boolean legacy) { - super(fileName, id, order, author, implementationClass, runAlways, transactionalFlag, transactional, system, targetSystem, recovery, legacy); - - this.constructor = constructor; - } - - @Override - public Constructor getConstructor() { - return constructor; - } - - @Override - public List getValidationErrors(StageValidationContext context) { - List errors = new ArrayList<>(); - final String entityType = "task"; - - // Validate ID is not null or empty - if (id == null || id.trim().isEmpty()) { - errors.add(new ValidationError("ID cannot be null or empty", "unknown", entityType)); - } - - getOrderError(context).ifPresent(errors::add); - - - // Validate source is not null or empty - if (source == null || source.trim().isEmpty()) { - errors.add(new ValidationError("Source cannot be null or empty", id, entityType)); - } - - return errors; - } - - - @NotNull - private Optional getOrderError(StageValidationContext context) { - String order = getOrder().orElse(null); - if (context.getSortType().isSorted()) { - if (order == null || order.isEmpty()) { - return Optional.of(new ValidationError("Change in a sorted stage but no order value was provided", id, "change")); - } - - if (context.getSortType() == StageValidationContext.SortType.SEQUENTIAL_FORMATTED) { - if (!ORDER_PATTERN.matcher(order).matches()) { - String message = String.format("Invalid order field format in change[%s]. Order must match pattern: %s", id, ORDER_REG_EXP); - return Optional.of(new ValidationError(message, id, "task")); - } - } - - } else if (order != null) { - logger.warn("Change[{}] is in an auto-sorted stage but order value was provided - order will be ignored and managed automatically by Flamingock", id); - - } - return Optional.empty(); - } -} diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/LoadedTaskBuilder.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/LoadedTaskBuilder.java deleted file mode 100644 index 9f4bcaee1..000000000 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/task/loaded/LoadedTaskBuilder.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2023 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.internal.core.task.loaded; - -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; -import io.flamingock.internal.common.core.preview.CodePreviewChange; -import io.flamingock.internal.common.core.preview.TemplatePreviewChange; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; - -public interface LoadedTaskBuilder { - - static AbstractLoadedTask build(AbstractPreviewTask previewTask) { - return getInstance(previewTask).build(); - } - - static LoadedTaskBuilder getInstance(AbstractPreviewTask previewTask) { - if (TemplateLoadedTaskBuilder.supportsPreview(previewTask)) { - return TemplateLoadedTaskBuilder.getInstanceFromPreview((TemplatePreviewChange) previewTask); - - } else if (CodeLoadedTaskBuilder.supportsPreview(previewTask)) { - return CodeLoadedTaskBuilder.getInstanceFromPreview((CodePreviewChange) previewTask); - - } - throw new RuntimeException("Not implemented build from preview to loaded"); - } - - static CodeLoadedTaskBuilder getCodeBuilderInstance(Class sourceClass) { - if (CodeLoadedTaskBuilder.supportsSourceClass(sourceClass)) { - return CodeLoadedTaskBuilder.getInstanceFromClass(sourceClass); - - } - throw new RuntimeException("Not implemented build from preview to loaded"); - } - - - LoadedTaskBuilder setId(String id); - - LoadedTaskBuilder setTargetSystem(TargetSystemDescriptor targetSystem); - - LoadedTaskBuilder setRecovery(RecoveryDescriptor recovery); - - LoadedTaskBuilder setRunAlways(boolean runAlways); - - LoadedTaskBuilder setTransactionalFlag(Boolean transactionalFlag); - - LoadedTaskBuilder setSystem(boolean system); - - LOADED_TASK build(); - -} diff --git a/core/flamingock-core/src/main/java/io/flamingock/internal/core/transaction/TransactionManager.java b/core/flamingock-core/src/main/java/io/flamingock/internal/core/transaction/TransactionManager.java index 13b4ebb08..293954665 100644 --- a/core/flamingock-core/src/main/java/io/flamingock/internal/core/transaction/TransactionManager.java +++ b/core/flamingock-core/src/main/java/io/flamingock/internal/core/transaction/TransactionManager.java @@ -35,7 +35,7 @@ public TransactionManager(Supplier clientSessionSupplier) { /** * Starts a session, if not already created or is closed. Otherwise, it returns the existing one. * - * @param sessionId ClientSession identifier. Will be the taskId most of the time(if not always) + * @param sessionId ClientSession identifier. Will be the changeId most of the time(if not always) * @return ClientSession */ public CLIENT_SESSION startSession(String sessionId) { @@ -47,7 +47,7 @@ public CLIENT_SESSION startSession(String sessionId) { /** * Starts a session, if not already created or is closed. Otherwise, it returns the existing one. * - * @param sessionId ClientSession identifier. Will be the taskId most of the time(if not always) + * @param sessionId ClientSession identifier. Will be the changeId most of the time(if not always) * @param clientSession ClientSession instance * @return ClientSession */ diff --git a/core/flamingock-core/src/test/java/io/flamingock/core/pipeline/PipelineTest.java b/core/flamingock-core/src/test/java/io/flamingock/core/pipeline/PipelineTest.java index 209522811..9242707c3 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/core/pipeline/PipelineTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/core/pipeline/PipelineTest.java @@ -25,7 +25,7 @@ import io.flamingock.internal.common.core.preview.PreviewMethod; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import io.flamingock.api.StageType; import io.flamingock.internal.core.pipeline.loaded.LoadedPipeline; import org.junit.jupiter.api.Assertions; @@ -83,7 +83,7 @@ void shouldThrowExceptionWhenTheOnlyStageEmpty() { FlamingockException exception = Assertions.assertThrows(FlamingockException.class, pipeline::validate); - Assertions.assertTrue(exception.getMessage().contains("Stage[failing-stage-1] must contain at least one task")); + Assertions.assertTrue(exception.getMessage().contains("Stage[failing-stage-1] must contain at least one change")); } @@ -102,8 +102,8 @@ void shouldThrowExceptionWhenAllStagesEmpty() { FlamingockException exception = Assertions.assertThrows(FlamingockException.class, pipeline::validate); - Assertions.assertTrue(exception.getMessage().contains("Stage[failing-stage-1] must contain at least one task")); - Assertions.assertTrue(exception.getMessage().contains("Stage[failing-stage-2] must contain at least one task")); + Assertions.assertTrue(exception.getMessage().contains("Stage[failing-stage-1] must contain at least one change")); + Assertions.assertTrue(exception.getMessage().contains("Stage[failing-stage-2] must contain at least one change")); } @@ -112,8 +112,8 @@ void shouldThrowExceptionWhenAllStagesEmpty() { void shouldThrowExceptionOnlyForEmptyStageWhenMixedWithNonEmptyStages() { PreviewMethod executionMethod = new PreviewMethod("apply", Collections.emptyList()); - CodePreviewChange validTask = new CodePreviewChange( - "valid-task", + CodePreviewChange validChange = new CodePreviewChange( + "valid-change", "001", "test-author", PipelineTestChange.class.getName(), @@ -128,13 +128,13 @@ void shouldThrowExceptionOnlyForEmptyStageWhenMixedWithNonEmptyStages() { RecoveryDescriptor.getDefault(), false); - // Stage with a valid task + // Stage with a valid change PreviewStage stageWithChanges = Mockito.mock(PreviewStage.class); Mockito.when(stageWithChanges.getType()).thenReturn(StageType.DEFAULT); Mockito.when(stageWithChanges.getName()).thenReturn("stage-with-changes"); - Mockito.when(stageWithChanges.getTasks()).thenReturn((Collection) Collections.singletonList(validTask)); + Mockito.when(stageWithChanges.getChanges()).thenReturn((Collection) Collections.singletonList(validChange)); - // Stage without any tasks (empty) + // Stage without any changes (empty) PreviewStage emptyStage = getPreviewStage("empty-stage"); PreviewPipeline previewPipeline = new PreviewPipeline(); @@ -147,7 +147,7 @@ void shouldThrowExceptionOnlyForEmptyStageWhenMixedWithNonEmptyStages() { FlamingockException exception = Assertions.assertThrows(FlamingockException.class, pipeline::validate); // Should only fail for the empty stage - Assertions.assertTrue(exception.getMessage().contains("Stage[empty-stage] must contain at least one task"), + Assertions.assertTrue(exception.getMessage().contains("Stage[empty-stage] must contain at least one change"), "Error message should mention the empty stage"); Assertions.assertFalse(exception.getMessage().contains("stage-with-changes"), "Error message should NOT mention the stage with changes"); @@ -158,17 +158,17 @@ private static PreviewStage getPreviewStage(String name) { PreviewStage stage = Mockito.mock(PreviewStage.class); Mockito.when(stage.getType()).thenReturn(StageType.DEFAULT); Mockito.when(stage.getName()).thenReturn(name); - Mockito.when(stage.getTasks()).thenReturn(Collections.emptyList()); + Mockito.when(stage.getChanges()).thenReturn(Collections.emptyList()); return stage; } @Test - @DisplayName("Should throw an exception when a task has an invalid order format") - void shouldThrowExceptionWhenTaskHasInvalidOrderFormat() { + @DisplayName("Should throw an exception when a change has an invalid order format") + void shouldThrowExceptionWhenChangeHasInvalidOrderFormat() { PreviewMethod executionMethod = new PreviewMethod("apply", Collections.emptyList()); - CodePreviewChange taskWithInvalidOrder1 = new CodePreviewChange( - "task-with-invalid-order-1", + CodePreviewChange changeWithInvalidOrder1 = new CodePreviewChange( + "change-with-invalid-order-1", "12", // Too short (only 2 alphanumeric characters) "test-author", PipelineTestChange.class.getName(), @@ -183,8 +183,8 @@ void shouldThrowExceptionWhenTaskHasInvalidOrderFormat() { RecoveryDescriptor.getDefault(), false); - CodePreviewChange taskWithInvalidOrder2 = new CodePreviewChange( - "task-with-invalid-order-2", + CodePreviewChange changeWithInvalidOrder2 = new CodePreviewChange( + "change-with-invalid-order-2", "a_", // Only 1 alphanumeric character "test-author", PipelineTestChange.class.getName(), @@ -201,8 +201,8 @@ void shouldThrowExceptionWhenTaskHasInvalidOrderFormat() { PreviewStage stage = Mockito.mock(PreviewStage.class); Mockito.when(stage.getType()).thenReturn(StageType.DEFAULT); - Mockito.when(stage.getName()).thenReturn("stage-with-invalid-order-tasks"); - Mockito.when(stage.getTasks()).thenReturn((Collection) Arrays.asList(taskWithInvalidOrder1, taskWithInvalidOrder2)); + Mockito.when(stage.getName()).thenReturn("stage-with-invalid-order-changes"); + Mockito.when(stage.getChanges()).thenReturn((Collection) Arrays.asList(changeWithInvalidOrder1, changeWithInvalidOrder2)); PreviewPipeline previewPipeline = new PreviewPipeline(); previewPipeline.setStages(Collections.singletonList(stage)); @@ -214,17 +214,17 @@ void shouldThrowExceptionWhenTaskHasInvalidOrderFormat() { FlamingockException exception = Assertions.assertThrows(FlamingockException.class, pipeline::validate); Assertions.assertTrue(exception.getMessage().contains("Invalid order field format"), "Error message should mention invalid order field format"); - Assertions.assertTrue(exception.getMessage().contains("task-with-invalid-order-1"), - "Error message should mention the task with invalid order"); + Assertions.assertTrue(exception.getMessage().contains("change-with-invalid-order-1"), + "Error message should mention the change with invalid order"); } @Test - @DisplayName("Should validate successfully when tasks have valid order formats") - void shouldValidateSuccessfullyWhenTasksHaveValidOrderFormats() { + @DisplayName("Should validate successfully when changes have valid order formats") + void shouldValidateSuccessfullyWhenChangesHaveValidOrderFormats() { PreviewMethod executionMethod = new PreviewMethod("apply", Collections.emptyList()); - CodePreviewChange taskWithValidOrder1 = new CodePreviewChange( - "task-with-valid-order-1", + CodePreviewChange changeWithValidOrder1 = new CodePreviewChange( + "change-with-valid-order-1", "001", // Valid 3 alphanumeric characters "test-author", PipelineTestChange.class.getName(), @@ -239,8 +239,8 @@ void shouldValidateSuccessfullyWhenTasksHaveValidOrderFormats() { RecoveryDescriptor.getDefault(), false); - CodePreviewChange taskWithValidOrder2 = new CodePreviewChange( - "task-with-valid-order-2", + CodePreviewChange changeWithValidOrder2 = new CodePreviewChange( + "change-with-valid-order-2", "abc", // Valid 3 alphanumeric characters "test-author", PipelineTestChange.class.getName(), @@ -255,8 +255,8 @@ void shouldValidateSuccessfullyWhenTasksHaveValidOrderFormats() { RecoveryDescriptor.getDefault(), false); - CodePreviewChange taskWithValidOrder3 = new CodePreviewChange( - "task-with-valid-order-3", + CodePreviewChange changeWithValidOrder3 = new CodePreviewChange( + "change-with-valid-order-3", "V1_2_3", // Valid with underscores and alphanumeric chars "test-author", PipelineTestChange.class.getName(), @@ -271,8 +271,8 @@ void shouldValidateSuccessfullyWhenTasksHaveValidOrderFormats() { RecoveryDescriptor.getDefault(), false); - CodePreviewChange taskWithValidOrder4 = new CodePreviewChange( - "task-with-valid-order-4", + CodePreviewChange changeWithValidOrder4 = new CodePreviewChange( + "change-with-valid-order-4", "20250925_01_migration", // Valid complex format "test-author", PipelineTestChange.class.getName(), @@ -289,9 +289,9 @@ void shouldValidateSuccessfullyWhenTasksHaveValidOrderFormats() { PreviewStage stage = Mockito.mock(PreviewStage.class); Mockito.when(stage.getType()).thenReturn(StageType.DEFAULT); - Mockito.when(stage.getName()).thenReturn("stage-with-valid-order-tasks"); - Mockito.when(stage.getTasks()).thenReturn((Collection) Arrays.asList( - taskWithValidOrder1, taskWithValidOrder2, taskWithValidOrder3, taskWithValidOrder4)); + Mockito.when(stage.getName()).thenReturn("stage-with-valid-order-changes"); + Mockito.when(stage.getChanges()).thenReturn((Collection) Arrays.asList( + changeWithValidOrder1, changeWithValidOrder2, changeWithValidOrder3, changeWithValidOrder4)); PreviewPipeline previewPipeline = new PreviewPipeline(); previewPipeline.setStages(Collections.singletonList(stage)); @@ -309,7 +309,7 @@ void shouldThrowExceptionWhenDuplicateChangeIds() { // Create a preview method for execution PreviewMethod executionMethod = new PreviewMethod("apply", Collections.emptyList()); - CodePreviewChange task1 = new CodePreviewChange( + CodePreviewChange change1 = new CodePreviewChange( "duplicate-id", "001", // Valid: 3 alphanumeric characters "test-author", @@ -325,7 +325,7 @@ void shouldThrowExceptionWhenDuplicateChangeIds() { RecoveryDescriptor.getDefault(), false); - CodePreviewChange task2 = new CodePreviewChange( + CodePreviewChange change2 = new CodePreviewChange( "unique-id", "002", // Valid: 3 alphanumeric characters "test-author", @@ -341,7 +341,7 @@ void shouldThrowExceptionWhenDuplicateChangeIds() { RecoveryDescriptor.getDefault(), false); - CodePreviewChange task3 = new CodePreviewChange( + CodePreviewChange change3 = new CodePreviewChange( "duplicate-id", "003", // Valid: 3 alphanumeric characters "test-author", @@ -360,12 +360,12 @@ void shouldThrowExceptionWhenDuplicateChangeIds() { PreviewStage stage1 = Mockito.mock(PreviewStage.class); Mockito.when(stage1.getType()).thenReturn(StageType.DEFAULT); Mockito.when(stage1.getName()).thenReturn("stage1"); - Mockito.when(stage1.getTasks()).thenReturn((Collection) Arrays.asList(task1, task2)); + Mockito.when(stage1.getChanges()).thenReturn((Collection) Arrays.asList(change1, change2)); PreviewStage stage2 = Mockito.mock(PreviewStage.class); Mockito.when(stage2.getType()).thenReturn(StageType.DEFAULT); Mockito.when(stage2.getName()).thenReturn("stage2"); - Mockito.when(stage2.getTasks()).thenReturn((Collection) Collections.singletonList(task3)); + Mockito.when(stage2.getChanges()).thenReturn((Collection) Collections.singletonList(change3)); PreviewPipeline previewPipeline = new PreviewPipeline(); previewPipeline.setStages(Arrays.asList(stage1, stage2)); diff --git a/core/flamingock-core/src/test/java/io/flamingock/core/utils/EmptyTransactionWrapper.java b/core/flamingock-core/src/test/java/io/flamingock/core/utils/EmptyTransactionWrapper.java deleted file mode 100644 index f4616e986..000000000 --- a/core/flamingock-core/src/test/java/io/flamingock/core/utils/EmptyTransactionWrapper.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2025 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.core.utils; - -import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.transaction.TransactionWrapper; - -import java.util.function.Function; - -public class EmptyTransactionWrapper implements TransactionWrapper { - - private boolean called = false; - - - @Override - public T wrapInTransaction(ExecutionRuntime executionRuntime, Function operation) { - called = true; - return operation.apply(executionRuntime); - } - - public boolean isCalled() { - return called; - } - - -} diff --git a/core/flamingock-core/src/test/java/io/flamingock/core/utils/TaskExecutionChecker.java b/core/flamingock-core/src/test/java/io/flamingock/core/utils/TaskExecutionChecker.java deleted file mode 100644 index 21101f77b..000000000 --- a/core/flamingock-core/src/test/java/io/flamingock/core/utils/TaskExecutionChecker.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2025 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.core.utils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -public class TaskExecutionChecker { - - private final List history = new ArrayList<>(); - - public TaskExecutionChecker() { - } - - public void reset() { - history.clear(); - } - - public boolean isApplied() { - return history.contains(TestTaskExecution.EXECUTION); - } - - public void markExecution() { - history.add(TestTaskExecution.EXECUTION); - } - - public boolean isRolledBack() { - return history.contains(TestTaskExecution.ROLLBACK_EXECUTION); - } - - public void markRollBackExecution() { - history.add(TestTaskExecution.ROLLBACK_EXECUTION); - } - - public void checkOrderStrict(TestTaskExecution execution, TestTaskExecution... otherExecutions) { - List allExecutions = new ArrayList<>(); - allExecutions.add(execution); - allExecutions.addAll(Arrays.asList(otherExecutions)); - checkOrderStrict(allExecutions); - } - - public void checkOrderStrict(List executions) { - if(executions.size() != history.size()) { - throw new RuntimeException(String.format("(strict)Expected executions[%d] doesn't match actual executions[%d]" + - "\nexpected:\n\t%s" + - "\nactual:\n\t%s\n", - executions.size(), - history.size(), - executions.stream().map(TestTaskExecution::name).collect(Collectors.joining(",\n\t")), - history.stream().map(TestTaskExecution::name).collect(Collectors.joining(",\n\t")) - )); - } - checkExecutions(executions); - } - - - public void checkOrder(TestTaskExecution execution, TestTaskExecution... otherExecutions) { - - List allExecutions = new ArrayList<>(); - allExecutions.add(execution); - allExecutions.addAll(Arrays.asList(otherExecutions)); - - checkExecutions(allExecutions); - } - - private void checkExecutions(List allExecutions) { - for (int index = 0; index < allExecutions.size(); index++) { - if (history.size() <= index) { - throw new RuntimeException(String.format("history[%d executions] shorter than expected history", - history.size())); - } - - if (allExecutions.get(index) != history.get(index)) { - throw new RuntimeException(String.format("Execution not matched at index[%d]. Expected[%s] actual[%s]", - index, allExecutions.get(index), history.get(index))); - } - } - } - -} diff --git a/core/flamingock-core/src/test/java/io/flamingock/core/utils/TestTaskExecution.java b/core/flamingock-core/src/test/java/io/flamingock/core/utils/TestTaskExecution.java deleted file mode 100644 index 8cdf23e81..000000000 --- a/core/flamingock-core/src/test/java/io/flamingock/core/utils/TestTaskExecution.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2025 Flamingock (https://www.flamingock.io) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.flamingock.core.utils; - -public enum TestTaskExecution { - - EXECUTION, ROLLBACK_EXECUTION -} diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/executable/SteppableTemplateExecutableTaskTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChangeTest.java similarity index 87% rename from core/flamingock-core/src/test/java/io/flamingock/internal/core/task/executable/SteppableTemplateExecutableTaskTest.java rename to core/flamingock-core/src/test/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChangeTest.java index 83a487a04..91ed02224 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/executable/SteppableTemplateExecutableTaskTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChangeTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.executable; +package io.flamingock.internal.core.change.executable; import io.flamingock.api.annotations.ApplyTemplate; import io.flamingock.api.annotations.ChangeTemplate; @@ -26,7 +26,7 @@ import io.flamingock.internal.common.core.error.FlamingockException; import io.flamingock.internal.common.core.recovery.action.ChangeAction; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.loaded.MultiStepTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.MultiStepTemplateLoadedChange; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -43,7 +43,7 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; -class SteppableTemplateExecutableTaskTest { +class SteppableTemplateExecutableChangeTest { private ExecutionRuntime mockRuntime; private MultiStepTemplateLoadedChange mockDescriptor; @@ -164,7 +164,7 @@ void shouldApplyAllStepsInOrder() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -173,7 +173,7 @@ void shouldApplyAllStepsInOrder() { ); // When - task.apply(mockRuntime); + change.apply(mockRuntime); // Then assertEquals(3, appliedPayloads.size()); @@ -196,7 +196,7 @@ void shouldRollbackFromFailedStepInReverseOrder() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -205,7 +205,7 @@ void shouldRollbackFromFailedStepInReverseOrder() { ); // When - apply fails at step 2 - assertThrows(ChangeExecutionException.class, () -> task.apply(mockRuntime)); + assertThrows(ChangeExecutionException.class, () -> change.apply(mockRuntime)); // Then - verify steps 0 and 1 were applied (step 2 failed before completing) assertEquals(2, appliedPayloads.size()); @@ -213,7 +213,7 @@ void shouldRollbackFromFailedStepInReverseOrder() { assertEquals("apply-1", appliedPayloads.get(1)); // When - rollback from stepIndex=2 (the failed step) down to 0 - task.rollback(mockRuntime); + change.rollback(mockRuntime); // Then - should rollback in reverse order (2, 1, 0) // Note: step 2's rollback is attempted even though apply failed, because stepIndex was incremented before apply @@ -233,7 +233,7 @@ void shouldSetCorrectPayloadDuringApply() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -242,7 +242,7 @@ void shouldSetCorrectPayloadDuringApply() { ); // When - task.apply(mockRuntime); + change.apply(mockRuntime); // Then - payloads should be set correctly for each step assertEquals(2, appliedPayloads.size()); @@ -264,7 +264,7 @@ void shouldSetCorrectPayloadDuringRollback() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -273,8 +273,8 @@ void shouldSetCorrectPayloadDuringRollback() { ); // When - apply fails at step 2 - assertThrows(ChangeExecutionException.class, () -> task.apply(mockRuntime)); - task.rollback(mockRuntime); + assertThrows(ChangeExecutionException.class, () -> change.apply(mockRuntime)); + change.rollback(mockRuntime); // Then - rollback payloads should be set correctly (reverse order: 2, 1, 0) // stepIndex is 2 when failure occurs, so rollback starts from step 2 @@ -299,7 +299,7 @@ void shouldSkipStepsWithoutRollbackPayload() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -308,12 +308,12 @@ void shouldSkipStepsWithoutRollbackPayload() { ); // When - apply fails at step 3 (after steps 0, 1, 2 succeed) - assertThrows(ChangeExecutionException.class, () -> task.apply(mockRuntime)); + assertThrows(ChangeExecutionException.class, () -> change.apply(mockRuntime)); // Verify 3 steps were applied assertEquals(3, appliedPayloads.size()); - task.rollback(mockRuntime); + change.rollback(mockRuntime); // Then - should rollback steps 3, 2, 0 (step 1 skipped due to null rollback payload) // stepIndex=3 when failure occurs, rollback: 3, 2, 1(skipped), 0 @@ -330,7 +330,7 @@ void shouldHandleEmptyStepsList() { List> emptySteps = Collections.emptyList(); when(mockDescriptor.getSteps()).thenReturn(emptySteps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -339,11 +339,11 @@ void shouldHandleEmptyStepsList() { ); // When & Then - should not throw - assertDoesNotThrow(() -> task.apply(mockRuntime)); + assertDoesNotThrow(() -> change.apply(mockRuntime)); assertEquals(0, appliedPayloads.size()); // Rollback should also work with empty list - assertDoesNotThrow(() -> task.rollback(mockRuntime)); + assertDoesNotThrow(() -> change.rollback(mockRuntime)); assertEquals(0, rolledBackPayloads.size()); } @@ -367,7 +367,7 @@ void shouldNotRollbackWhenRollbackMethodIsNull() throws Exception { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -376,8 +376,8 @@ void shouldNotRollbackWhenRollbackMethodIsNull() throws Exception { ); // When - assertThrows(ChangeExecutionException.class, () -> task.apply(mockRuntime)); - task.rollback(mockRuntime); + assertThrows(ChangeExecutionException.class, () -> change.apply(mockRuntime)); + change.rollback(mockRuntime); // Then - no rollback should have happened assertEquals(0, rolledBackPayloads.size()); @@ -396,7 +396,7 @@ void shouldThrowChangeExecutionExceptionOnApplyFailure() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -407,7 +407,7 @@ void shouldThrowChangeExecutionExceptionOnApplyFailure() { // When & Then ChangeExecutionException exception = assertThrows( ChangeExecutionException.class, - () -> task.apply(mockRuntime) + () -> change.apply(mockRuntime) ); assertEquals("test-change-id", exception.getChangeId()); @@ -428,7 +428,7 @@ void shouldThrowChangeExecutionExceptionOnRollbackFailure() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -437,12 +437,12 @@ void shouldThrowChangeExecutionExceptionOnRollbackFailure() { ); // When - apply fails - assertThrows(ChangeExecutionException.class, () -> task.apply(mockRuntime)); + assertThrows(ChangeExecutionException.class, () -> change.apply(mockRuntime)); // When & Then - rollback also fails ChangeExecutionException exception = assertThrows( ChangeExecutionException.class, - () -> task.rollback(mockRuntime) + () -> change.rollback(mockRuntime) ); assertEquals("test-change-id", exception.getChangeId()); @@ -464,7 +464,7 @@ void shouldMaintainStepIndexAcrossApplyAndRollback() { ); when(mockDescriptor.getSteps()).thenReturn(steps); - SteppableTemplateExecutableTask task = new SteppableTemplateExecutableTask<>( + SteppableTemplateExecutableChange change = new SteppableTemplateExecutableChange<>( "test-stage", mockDescriptor, ChangeAction.APPLY, @@ -473,13 +473,13 @@ void shouldMaintainStepIndexAcrossApplyAndRollback() { ); // When - apply fails at step 2 - assertThrows(ChangeExecutionException.class, () -> task.apply(mockRuntime)); + assertThrows(ChangeExecutionException.class, () -> change.apply(mockRuntime)); // Verify - only steps 0 and 1 were applied (step 2 failed before completion) assertEquals(2, appliedPayloads.size()); // When - rollback - task.rollback(mockRuntime); + change.rollback(mockRuntime); // Then - steps 2, 1, 0 should be rolled back // stepIndex=2 when failure occurs (incremented before execute), so rollback starts from 2 diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/CodeLoadedTaskBuilderTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/CodeLoadedChangeBuilderTest.java similarity index 93% rename from core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/CodeLoadedTaskBuilderTest.java rename to core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/CodeLoadedChangeBuilderTest.java index 3096538ae..a87907d55 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/CodeLoadedTaskBuilderTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/CodeLoadedChangeBuilderTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.annotations.Apply; import io.flamingock.internal.common.core.error.FlamingockException; @@ -24,16 +24,16 @@ import static org.junit.jupiter.api.Assertions.*; -class CodeLoadedTaskBuilderTest { +class CodeLoadedChangeBuilderTest { private class WithoutOrderTestClass {} private class _002__MyClass {} - private CodeLoadedTaskBuilder builder; + private CodeLoadedChangeBuilder builder; @BeforeEach void setUp() { - builder = CodeLoadedTaskBuilder.getInstance(); + builder = CodeLoadedChangeBuilder.getInstance(); } @Test @@ -186,7 +186,7 @@ public void apply() { @DisplayName("Should build from annotated class correctly") void shouldBuildFromAnnotatedClassCorrectly() { // Given - CodeLoadedTaskBuilder builderFromClass = CodeLoadedTaskBuilder.getInstanceFromClass(_100__TestChangeClass.class); + CodeLoadedChangeBuilder builderFromClass = CodeLoadedChangeBuilder.getInstanceFromClass(_100__TestChangeClass.class); // When CodeLoadedChange result = builderFromClass.build(); @@ -205,8 +205,8 @@ void shouldBuildFromAnnotatedClassCorrectly() { @DisplayName("Should support annotated class check") void shouldSupportAnnotatedClassCheck() { // When & Then - assertTrue(CodeLoadedTaskBuilder.supportsSourceClass(_100__TestChangeClass.class)); - assertFalse(CodeLoadedTaskBuilder.supportsSourceClass(String.class)); + assertTrue(CodeLoadedChangeBuilder.supportsSourceClass(_100__TestChangeClass.class)); + assertFalse(CodeLoadedChangeBuilder.supportsSourceClass(String.class)); } @Change(id = "no-order-in_annotation", author = "aperezdieppa") @@ -221,7 +221,7 @@ public void apply() { @DisplayName("Should build from annotated class correctly") void shouldBuildFromAnnotatedClassCorrectlyWhenOrderInAnnotationNull() { // Given - CodeLoadedTaskBuilder builderFromClass = CodeLoadedTaskBuilder.getInstanceFromClass(_0001__anotherChange.class); + CodeLoadedChangeBuilder builderFromClass = CodeLoadedChangeBuilder.getInstanceFromClass(_0001__anotherChange.class); // When CodeLoadedChange result = builderFromClass.build(); diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/LoadedChangeUtilTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/LoadedChangeUtilTest.java similarity index 97% rename from core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/LoadedChangeUtilTest.java rename to core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/LoadedChangeUtilTest.java index d7b8ef171..5f74b0619 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/LoadedChangeUtilTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/LoadedChangeUtilTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.internal.common.core.error.FlamingockException; import org.junit.jupiter.api.DisplayName; @@ -219,7 +219,7 @@ void shouldExtractOrderFromInnerClassNames() { String changeId = "test-id"; // Inner class format - String result1 = ChangeOrderUtil.getMatchedOrderFromClassName(changeId, null, "io.flamingock.internal.core.task.loaded.CodeLoadedTaskBuilderTest$_100__noOrderInAnnotation"); + String result1 = ChangeOrderUtil.getMatchedOrderFromClassName(changeId, null, "io.flamingock.internal.core.change.loaded.CodeLoadedChangeBuilderTest$_100__noOrderInAnnotation"); assertEquals("100", result1); // Inner class with deeper nesting @@ -241,7 +241,7 @@ void shouldHandleInnerClassOrderInAnnotationMatching() { // Test when annotation order matches inner class name order String changeId = "test-id"; String orderInAnnotation = "100"; - String className = "io.flamingock.internal.core.task.loaded.CodeLoadedTaskBuilderTest$_100__noOrderInAnnotation"; + String className = "io.flamingock.internal.core.change.loaded.CodeLoadedChangeBuilderTest$_100__noOrderInAnnotation"; String result = ChangeOrderUtil.getMatchedOrderFromClassName(changeId, orderInAnnotation, className); assertEquals("100", result); @@ -253,7 +253,7 @@ void shouldThrowExceptionWhenInnerClassOrderDoesNotMatchAnnotation() { // Test when annotation order does not match inner class name order String changeId = "test-id"; String orderInAnnotation = "200"; - String className = "io.flamingock.internal.core.task.loaded.CodeLoadedTaskBuilderTest$_100__noOrderInAnnotation"; + String className = "io.flamingock.internal.core.change.loaded.CodeLoadedChangeBuilderTest$_100__noOrderInAnnotation"; FlamingockException exception = assertThrows(FlamingockException.class, () -> ChangeOrderUtil.getMatchedOrderFromClassName(changeId, orderInAnnotation, className) diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/PayloadTransactionSupportValidationTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/PayloadTransactionSupportValidationTest.java similarity index 99% rename from core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/PayloadTransactionSupportValidationTest.java rename to core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/PayloadTransactionSupportValidationTest.java index 4d236a40b..96547e6d6 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/PayloadTransactionSupportValidationTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/PayloadTransactionSupportValidationTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.annotations.ApplyTemplate; import io.flamingock.api.annotations.RollbackTemplate; diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/SimpleTemplateLoadedTaskBuilderTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChangeBuilderTest.java similarity index 99% rename from core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/SimpleTemplateLoadedTaskBuilderTest.java rename to core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChangeBuilderTest.java index f02f33902..aa65d2922 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/SimpleTemplateLoadedTaskBuilderTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChangeBuilderTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.internal.common.core.error.FlamingockException; import io.flamingock.internal.common.core.error.validation.ValidationError; @@ -44,9 +44,9 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; -class SimpleTemplateLoadedTaskBuilderTest { +class SimpleTemplateLoadedChangeBuilderTest { - private TemplateLoadedTaskBuilder builder; + private TemplateLoadedChangeBuilder builder; // Simple test template implementation using the annotation @ChangeTemplate(name = "test-change-template") @@ -140,7 +140,7 @@ public void rollback() {} @BeforeEach void setUp() { - builder = TemplateLoadedTaskBuilder.getInstance(); + builder = TemplateLoadedChangeBuilder.getInstance(); } @Test diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/SteppableTemplateLoadedTaskBuilderTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/SteppableTemplateLoadedChangeBuilderTest.java similarity index 98% rename from core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/SteppableTemplateLoadedTaskBuilderTest.java rename to core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/SteppableTemplateLoadedChangeBuilderTest.java index dd01313f5..330163fe8 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/task/loaded/SteppableTemplateLoadedTaskBuilderTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/change/loaded/SteppableTemplateLoadedChangeBuilderTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.flamingock.internal.core.task.loaded; +package io.flamingock.internal.core.change.loaded; import io.flamingock.api.annotations.ApplyTemplate; import io.flamingock.api.annotations.ChangeTemplate; @@ -49,9 +49,9 @@ import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; -class SteppableTemplateLoadedTaskBuilderTest { +class SteppableTemplateLoadedChangeBuilderTest { - private TemplateLoadedTaskBuilder builder; + private TemplateLoadedChangeBuilder builder; // Steppable test template implementation using the annotation @ChangeTemplate(name = "test-steppable-template", multiStep = true) @@ -163,7 +163,7 @@ public void rollback() {} @BeforeEach void setUp() { - builder = TemplateLoadedTaskBuilder.getInstance(); + builder = TemplateLoadedChangeBuilder.getInstance(); } @Test @@ -514,7 +514,7 @@ void steppableTemplateWithApplyAtRootShouldThrow() { preview.setFileName("test-file.yml"); preview.setApply("CREATE TABLE users"); // Wrong: root-level apply on steppable - TemplateLoadedTaskBuilder validatingBuilder = TemplateLoadedTaskBuilder.getInstanceFromPreview(preview); + TemplateLoadedChangeBuilder validatingBuilder = TemplateLoadedChangeBuilder.getInstanceFromPreview(preview); FlamingockException exception = assertThrows(FlamingockException.class, validatingBuilder::build); assertTrue(exception.getMessage().contains("Template structure validation failed")); @@ -536,7 +536,7 @@ void simpleTemplateWithStepsShouldThrow() { preview.setApply("CREATE TABLE users"); preview.setSteps(Arrays.asList(createStepMap("step1", null))); // Wrong: steps on simple - TemplateLoadedTaskBuilder validatingBuilder = TemplateLoadedTaskBuilder.getInstanceFromPreview(preview); + TemplateLoadedChangeBuilder validatingBuilder = TemplateLoadedChangeBuilder.getInstanceFromPreview(preview); FlamingockException exception = assertThrows(FlamingockException.class, validatingBuilder::build); assertTrue(exception.getMessage().contains("Template structure validation failed")); @@ -559,7 +559,7 @@ void customValidatorInjectionShouldWork() { preview.setFileName("test-file.yml"); preview.setSteps(Arrays.asList(createStepMap("apply1", "rollback1"))); - TemplateLoadedTaskBuilder validatingBuilder = TemplateLoadedTaskBuilder.getInstanceFromPreview(preview, customValidator); + TemplateLoadedChangeBuilder validatingBuilder = TemplateLoadedChangeBuilder.getInstanceFromPreview(preview, customValidator); AbstractTemplateLoadedChange result = validatingBuilder.build(); assertInstanceOf(MultiStepTemplateLoadedChange.class, result); diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleChangeTypeTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleChangeTypeTest.java index 9c0b8c3a4..b01a7f9e8 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleChangeTypeTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleChangeTypeTest.java @@ -17,13 +17,13 @@ import io.flamingock.internal.common.core.audit.AuditEntry; import io.flamingock.internal.common.core.audit.AuditTxType; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; -import io.flamingock.internal.core.task.loaded.SimpleTemplateLoadedChange; -import io.flamingock.internal.core.task.navigation.step.StartStep; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; +import io.flamingock.internal.core.change.loaded.SimpleTemplateLoadedChange; +import io.flamingock.internal.core.change.navigation.step.StartStep; import org.junit.jupiter.api.Test; import java.time.LocalDateTime; @@ -57,14 +57,14 @@ void toAuditEntry_shouldReturnMongockExecution_whenLegacyChange() { assertEquals(AuditEntry.ChangeType.MONGOCK_EXECUTION, entry.getType()); } - private AuditEntry buildAuditEntry(AbstractLoadedTask loadedChange) { + private AuditEntry buildAuditEntry(AbstractLoadedChange loadedChange) { ExecutionContext executionContext = new ExecutionContext("exec-1", "localhost", Collections.emptyMap()); - ExecutableTask executableTask = mock(ExecutableTask.class); - when(executableTask.getApplyMethodName()).thenReturn("apply"); - when(executableTask.getStageName()).thenReturn("stage-1"); + ExecutableChange executableChange = mock(ExecutableChange.class); + when(executableChange.getApplyMethodName()).thenReturn("apply"); + when(executableChange.getStageName()).thenReturn("stage-1"); - StartStep startStep = new StartStep(executableTask); + StartStep startStep = new StartStep(executableChange); RuntimeContext runtimeContext = RuntimeContext.builder() .setStartStep(startStep) .setAppliedAt(LocalDateTime.now()) diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleTest.java index 54158315a..f913169b5 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/external/store/audit/domain/AuditContextBundleTest.java @@ -20,14 +20,14 @@ import io.flamingock.internal.common.core.audit.AuditEntry; import io.flamingock.internal.common.core.audit.AuditTxType; import io.flamingock.internal.common.core.recovery.action.ChangeAction; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import io.flamingock.internal.core.pipeline.execution.ExecutionContext; -import io.flamingock.internal.core.task.executable.CodeExecutableTask; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; -import io.flamingock.internal.core.task.loaded.CodeLoadedTaskBuilder; -import io.flamingock.internal.core.task.navigation.step.StartStep; +import io.flamingock.internal.core.change.executable.CodeExecutableChange; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChangeBuilder; +import io.flamingock.internal.core.change.navigation.step.StartStep; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @@ -49,9 +49,9 @@ public void apply() { } @Test - void shouldPopulateAuditEntrySourceFileFromLoadedTask() { + void shouldPopulateAuditEntrySourceFileFromLoadedChange() { CodeLoadedChange loadedChange = buildLoadedChange(_001__AuditSourceFileChange.class); - CodeExecutableTask executableTask = new CodeExecutableTask<>( + CodeExecutableChange executableChange = new CodeExecutableChange<>( "test-stage", loadedChange, ChangeAction.APPLY, @@ -59,7 +59,7 @@ void shouldPopulateAuditEntrySourceFileFromLoadedTask() { loadedChange.getRollbackMethod().orElse(null) ); RuntimeContext runtimeContext = RuntimeContext.builder() - .setStartStep(new StartStep(executableTask)) + .setStartStep(new StartStep(executableChange)) .setAppliedAt(LocalDateTime.now()) .build(); ExecutionContext executionContext = new ExecutionContext("execution-id", "test-host", Collections.emptyMap()); @@ -77,7 +77,7 @@ void shouldPopulateAuditEntrySourceFileFromLoadedTask() { @Test void shouldPopulateAuditEntrySourceFileForTemplateBasedChanges() { - AbstractLoadedTask loadedChange = Mockito.mock(AbstractLoadedTask.class); + AbstractLoadedChange loadedChange = Mockito.mock(AbstractLoadedChange.class); Mockito.when(loadedChange.getId()).thenReturn("template-change"); Mockito.when(loadedChange.getAuthor()).thenReturn("author"); Mockito.when(loadedChange.getSource()).thenReturn("io.flamingock.TemplateChange"); @@ -87,12 +87,12 @@ void shouldPopulateAuditEntrySourceFileForTemplateBasedChanges() { Mockito.when(loadedChange.getRecovery()).thenReturn(RecoveryDescriptor.getDefault()); Mockito.when(loadedChange.isTransactional()).thenReturn(true); - ExecutableTask executableTask = Mockito.mock(ExecutableTask.class); - Mockito.when(executableTask.getApplyMethodName()).thenReturn("apply"); - Mockito.when(executableTask.getStageName()).thenReturn("test-stage"); + ExecutableChange executableChange = Mockito.mock(ExecutableChange.class); + Mockito.when(executableChange.getApplyMethodName()).thenReturn("apply"); + Mockito.when(executableChange.getStageName()).thenReturn("test-stage"); RuntimeContext runtimeContext = RuntimeContext.builder() - .setStartStep(new StartStep(executableTask)) + .setStartStep(new StartStep(executableChange)) .setAppliedAt(LocalDateTime.now()) .build(); ExecutionContext executionContext = new ExecutionContext("execution-id", "test-host", Collections.emptyMap()); @@ -110,10 +110,10 @@ void shouldPopulateAuditEntrySourceFileForTemplateBasedChanges() { private CodeLoadedChange buildLoadedChange(Class changeClass) { try { - Method factoryMethod = CodeLoadedTaskBuilder.class.getDeclaredMethod("getInstanceFromClass", Class.class); + Method factoryMethod = CodeLoadedChangeBuilder.class.getDeclaredMethod("getInstanceFromClass", Class.class); factoryMethod.setAccessible(true); Object builder = factoryMethod.invoke(null, changeClass); - return ((CodeLoadedTaskBuilder) builder).build(); + return ((CodeLoadedChangeBuilder) builder).build(); } catch (Exception ex) { throw new RuntimeException(ex); } diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/AuditListOperationTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/AuditListOperationTest.java index cb99759eb..13e22bbd6 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/AuditListOperationTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/AuditListOperationTest.java @@ -66,8 +66,8 @@ void shouldReturnEmptyListWhenNoAuditEntriesExist() { @DisplayName("Should return audit entries from snapshot when no history flag") void shouldReturnAuditEntriesFromSnapshotWhenNoHistoryFlag() { // Given - AuditEntry entry1 = createAuditEntry("exec-1", "task-1"); - AuditEntry entry2 = createAuditEntry("exec-2", "task-2"); + AuditEntry entry1 = createAuditEntry("exec-1", "change-1"); + AuditEntry entry2 = createAuditEntry("exec-2", "change-2"); List entries = Arrays.asList(entry1, entry2); when(persistence.getAuditSnapshot()).thenReturn(entries); AuditListArgs args = new AuditListArgs(); @@ -119,8 +119,8 @@ void shouldFilterEntriesBySinceDate() { LocalDateTime yesterday = now.minusDays(1); LocalDateTime twoDaysAgo = now.minusDays(2); - AuditEntry oldEntry = createAuditEntryWithTime("exec-1", "task-1", twoDaysAgo); - AuditEntry newEntry = createAuditEntryWithTime("exec-2", "task-2", now); + AuditEntry oldEntry = createAuditEntryWithTime("exec-1", "change-1", twoDaysAgo); + AuditEntry newEntry = createAuditEntryWithTime("exec-2", "change-2", now); List entries = Arrays.asList(oldEntry, newEntry); when(persistence.getAuditSnapshot()).thenReturn(entries); @@ -132,7 +132,7 @@ void shouldFilterEntriesBySinceDate() { // Then assertNotNull(result); assertEquals(1, result.getAuditEntries().size()); - assertEquals("task-2", result.getAuditEntries().get(0).getTaskId()); + assertEquals("change-2", result.getAuditEntries().get(0).getChangeId()); } @Test @@ -149,15 +149,15 @@ void shouldSetExtendedFlagInResult() { assertTrue(result.isExtended()); } - private AuditEntry createAuditEntry(String executionId, String taskId) { - return createAuditEntryWithTime(executionId, taskId, LocalDateTime.now()); + private AuditEntry createAuditEntry(String executionId, String changeId) { + return createAuditEntryWithTime(executionId, changeId, LocalDateTime.now()); } - private AuditEntry createAuditEntryWithTime(String executionId, String taskId, LocalDateTime time) { + private AuditEntry createAuditEntryWithTime(String executionId, String changeId, LocalDateTime time) { return new AuditEntry( executionId, "stage-1", - taskId, + changeId, "test-author", time, AuditEntry.Status.APPLIED, diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ExecuteApplyOperationTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ExecuteApplyOperationTest.java index 869b62d74..0fb2677b3 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ExecuteApplyOperationTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ExecuteApplyOperationTest.java @@ -31,7 +31,7 @@ import io.flamingock.internal.core.pipeline.loaded.stage.AbstractLoadedStage; import io.flamingock.internal.core.plan.ExecutionPlan; import io.flamingock.internal.core.plan.ExecutionPlanner; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import io.flamingock.internal.util.id.RunnerId; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -68,7 +68,7 @@ class ExecuteApplyOperationTest { private AbstractLoadedStage loadedStage; @Mock - private AbstractLoadedTask loadedTask; + private AbstractLoadedChange loadedChange; private ExecuteApplyOperation operation; private RunnerId runnerId; @@ -102,7 +102,7 @@ void shouldReturnSuccessResultWhenAllChangesApply() throws Exception { when(pipeline.getSystemStage()).thenReturn(java.util.Optional.empty()); when(pipeline.getStages()).thenReturn(Collections.singletonList(loadedStage)); - when(loadedStage.getTasks()).thenReturn(Collections.singletonList(loadedTask)); + when(loadedStage.getChanges()).thenReturn(Collections.singletonList(loadedChange)); when(executionPlanner.getNextExecution(any())).thenReturn(executionPlan); ExecuteArgs args = new ExecuteArgs(pipeline); @@ -125,7 +125,7 @@ void shouldReturnResultWithCorrectCounts() throws Exception { when(pipeline.getSystemStage()).thenReturn(java.util.Optional.empty()); when(pipeline.getStages()).thenReturn(Collections.singletonList(loadedStage)); - when(loadedStage.getTasks()).thenReturn(Arrays.asList(loadedTask, loadedTask, loadedTask)); + when(loadedStage.getChanges()).thenReturn(Arrays.asList(loadedChange, loadedChange, loadedChange)); when(executionPlanner.getNextExecution(any())).thenReturn(executionPlan); ExecuteArgs args = new ExecuteArgs(pipeline); @@ -156,7 +156,7 @@ void shouldThrowOperationExceptionOnStageFailure() throws Exception { when(pipeline.getSystemStage()).thenReturn(java.util.Optional.empty()); when(pipeline.getStages()).thenReturn(Collections.singletonList(loadedStage)); - when(loadedStage.getTasks()).thenReturn(Collections.singletonList(loadedTask)); + when(loadedStage.getChanges()).thenReturn(Collections.singletonList(loadedChange)); when(executionPlanner.getNextExecution(any())).thenReturn(executionPlan); ExecuteArgs args = new ExecuteArgs(pipeline); diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/OperationResolverTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/OperationResolverTest.java index a6116d92c..179ae2bf1 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/OperationResolverTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/OperationResolverTest.java @@ -25,7 +25,7 @@ import io.flamingock.internal.core.pipeline.loaded.LoadedPipeline; import io.flamingock.internal.core.pipeline.loaded.stage.AbstractLoadedStage; import io.flamingock.internal.core.plan.ExecutionPlanner; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import io.flamingock.internal.common.core.operation.OperationType; import io.flamingock.internal.util.id.RunnerId; import org.junit.jupiter.api.BeforeEach; @@ -76,7 +76,7 @@ class OperationResolverTest { private AbstractLoadedStage loadedStage; @Mock - private AbstractLoadedTask loadedTask; + private AbstractLoadedChange loadedChange; private RunnerId runnerId; private Runnable noOpFinalizer; @@ -90,7 +90,7 @@ void setUp() { // Default pipeline setup so OperationResolver does not NPE on pipeline access when(pipeline.getSystemStage()).thenReturn(java.util.Optional.empty()); when(pipeline.getStages()).thenReturn(Collections.singletonList(loadedStage)); - when(loadedStage.getTasks()).thenReturn(Collections.singletonList(loadedTask)); + when(loadedStage.getChanges()).thenReturn(Collections.singletonList(loadedChange)); // Default coreConfiguration stubs when(coreConfiguration.getMetadata()).thenReturn(Collections.emptyMap()); diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ValidateApplyOperationTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ValidateApplyOperationTest.java index a9f5b2e55..e69ff32fb 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ValidateApplyOperationTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/operation/ValidateApplyOperationTest.java @@ -29,8 +29,8 @@ import io.flamingock.internal.core.pipeline.loaded.stage.AbstractLoadedStage; import io.flamingock.internal.core.plan.ExecutionPlan; import io.flamingock.internal.core.plan.ExecutionPlanner; -import io.flamingock.internal.core.task.executable.ExecutableTask; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; +import io.flamingock.internal.core.change.executable.ExecutableChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; import io.flamingock.internal.util.id.RunnerId; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -75,7 +75,7 @@ class ValidateApplyOperationTest { private AbstractLoadedStage loadedStage; @Mock - private AbstractLoadedTask loadedTask; + private AbstractLoadedChange loadedChange; private ValidateApplyOperation operation; private RunnerId runnerId; @@ -108,7 +108,7 @@ void shouldReturnSuccessWhenNoPendingChangesExist() throws Exception { when(pipeline.getSystemStage()).thenReturn(java.util.Optional.empty()); when(pipeline.getStages()).thenReturn(Collections.singletonList(loadedStage)); - when(loadedStage.getTasks()).thenReturn(Collections.singletonList(loadedTask)); + when(loadedStage.getChanges()).thenReturn(Collections.singletonList(loadedChange)); when(executionPlanner.getNextExecution(any())).thenReturn(executionPlan); ExecuteArgs args = new ExecuteArgs(pipeline); @@ -127,15 +127,15 @@ void shouldReturnSuccessWhenNoPendingChangesExist() throws Exception { @DisplayName("validationOnly: pending changes exist → execute() throws PendingChangesException with correct count") void shouldThrowPendingChangesExceptionWhenPendingChangesExist() throws Exception { // Given - // Two pending tasks (isAlreadyApplied = false) - ExecutableTask pendingTask1 = mock(ExecutableTask.class); - ExecutableTask pendingTask2 = mock(ExecutableTask.class); - when(pendingTask1.isAlreadyApplied()).thenReturn(false); - when(pendingTask2.isAlreadyApplied()).thenReturn(false); + // Two pending changes (isAlreadyApplied = false) + ExecutableChange pendingChange1 = mock(ExecutableChange.class); + ExecutableChange pendingChange2 = mock(ExecutableChange.class); + when(pendingChange1.isAlreadyApplied()).thenReturn(false); + when(pendingChange2.isAlreadyApplied()).thenReturn(false); - List pendingTasks = Arrays.asList(pendingTask1, pendingTask2); + List pendingChanges = Arrays.asList(pendingChange1, pendingChange2); ExecutableStage executableStage = mock(ExecutableStage.class); - doReturn(pendingTasks).when(executableStage).getTasks(); + doReturn(pendingChanges).when(executableStage).getChanges(); ExecutablePipeline executablePipeline = mock(ExecutablePipeline.class); when(executablePipeline.getExecutableStages()).thenReturn(Collections.singletonList(executableStage)); @@ -144,7 +144,7 @@ void shouldThrowPendingChangesExceptionWhenPendingChangesExist() throws Exceptio when(pipeline.getSystemStage()).thenReturn(java.util.Optional.empty()); when(pipeline.getStages()).thenReturn(Collections.singletonList(loadedStage)); - when(loadedStage.getTasks()).thenReturn(Arrays.asList(loadedTask, loadedTask)); + when(loadedStage.getChanges()).thenReturn(Arrays.asList(loadedChange, loadedChange)); when(executionPlanner.getNextExecution(any())).thenReturn(executionPlan); ExecuteArgs args = new ExecuteArgs(pipeline); diff --git a/core/flamingock-core/src/test/java/io/flamingock/internal/core/store/audit/domain/AuditSnapshotMapBuilderTest.java b/core/flamingock-core/src/test/java/io/flamingock/internal/core/store/audit/domain/AuditSnapshotMapBuilderTest.java index bd7ca84c1..dcb4b9464 100644 --- a/core/flamingock-core/src/test/java/io/flamingock/internal/core/store/audit/domain/AuditSnapshotMapBuilderTest.java +++ b/core/flamingock-core/src/test/java/io/flamingock/internal/core/store/audit/domain/AuditSnapshotMapBuilderTest.java @@ -44,12 +44,12 @@ void shouldBuildMapWithEntryBuilderAndProvideAllMaps() { assertEquals(2, infoMap.size()); AuditEntry info1 = infoMap.get("change-1"); - assertEquals("change-1", info1.getTaskId()); + assertEquals("change-1", info1.getChangeId()); assertEquals(AuditEntry.Status.APPLIED, info1.getState()); assertEquals(AuditTxType.NON_TX, info1.getTxType()); AuditEntry info2 = infoMap.get("change-2"); - assertEquals("change-2", info2.getTaskId()); + assertEquals("change-2", info2.getChangeId()); assertEquals(AuditEntry.Status.STARTED, info2.getState()); assertEquals(AuditTxType.TX_SHARED, info2.getTxType()); } @@ -115,15 +115,15 @@ void shouldMaintainConsistencyBetweenMaps() { } } - private AuditEntry createAuditEntry(String taskId, AuditEntry.Status status, AuditTxType txStrategy) { - return createAuditEntry(taskId, status, txStrategy, LocalDateTime.now()); + private AuditEntry createAuditEntry(String changeId, AuditEntry.Status status, AuditTxType txStrategy) { + return createAuditEntry(changeId, status, txStrategy, LocalDateTime.now()); } - private AuditEntry createAuditEntry(String taskId, AuditEntry.Status status, AuditTxType txStrategy, LocalDateTime timestamp) { + private AuditEntry createAuditEntry(String changeId, AuditEntry.Status status, AuditTxType txStrategy, LocalDateTime timestamp) { return new AuditEntry( "test-execution", "test-stage", - taskId, + changeId, "test-author", timestamp, status, diff --git a/core/flamingock-graalvm/src/main/java/io/flamingock/graalvm/RegistrationFeature.java b/core/flamingock-graalvm/src/main/java/io/flamingock/graalvm/RegistrationFeature.java index d5267b1a0..dc296a693 100644 --- a/core/flamingock-graalvm/src/main/java/io/flamingock/graalvm/RegistrationFeature.java +++ b/core/flamingock-graalvm/src/main/java/io/flamingock/graalvm/RegistrationFeature.java @@ -24,20 +24,19 @@ import io.flamingock.api.template.wrappers.TemplateVoid; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.*; -import io.flamingock.internal.common.core.task.AbstractTaskDescriptor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.AbstractChangeDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import io.flamingock.internal.common.core.template.ChangeTemplateManager; import io.flamingock.internal.core.pipeline.loaded.LoadedPipeline; import io.flamingock.internal.core.pipeline.loaded.stage.AbstractLoadedStage; -import io.flamingock.internal.core.task.loaded.AbstractLoadedChange; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractReflectionLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractTemplateLoadedChange; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; -import io.flamingock.internal.core.task.loaded.SimpleTemplateLoadedChange; -import io.flamingock.internal.core.task.loaded.MultiStepTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractReflectionLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; +import io.flamingock.internal.core.change.loaded.SimpleTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.MultiStepTemplateLoadedChange; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.graalvm.nativeimage.hosted.Feature; import org.graalvm.nativeimage.hosted.RuntimeClassInitialization; @@ -55,8 +54,8 @@ public class RegistrationFeature implements Feature { private static void registerInternalClasses() { logger.startRegistrationProcess("internal classes"); - registerClassForReflection(TaskDescriptor.class.getName()); - registerClassForReflection(AbstractTaskDescriptor.class.getName()); + registerClassForReflection(ChangeDescriptor.class.getName()); + registerClassForReflection(AbstractChangeDescriptor.class.getName()); //preview registerClassForReflection(PreviewPipeline.class.getName()); @@ -73,9 +72,8 @@ private static void registerInternalClasses() { //Loaded registerClassForReflection(LoadedPipeline.class.getName()); registerClassForReflection(AbstractLoadedStage.class.getName()); - registerClassForReflection(AbstractLoadedTask.class.getName()); - registerClassForReflection(AbstractReflectionLoadedTask.class.getName()); registerClassForReflection(AbstractLoadedChange.class.getName()); + registerClassForReflection(AbstractReflectionLoadedChange.class.getName()); registerClassForReflection(CodeLoadedChange.class.getName()); registerClassForReflection(AbstractTemplateLoadedChange.class); registerClassForReflection(SimpleTemplateLoadedChange.class); @@ -91,7 +89,6 @@ private static void registerInternalClasses() { private static void initializeInternalClassesAtBuildTime() { logger.startInitializationProcess("internal classes"); initializeClassAtBuildTime(CodeLoadedChange.class); - initializeClassAtBuildTime(AbstractLoadedChange.class); initializeClassAtBuildTime(AbstractTemplateLoadedChange.class); initializeClassAtBuildTime(SimpleTemplateLoadedChange.class); initializeClassAtBuildTime(MultiStepTemplateLoadedChange.class); diff --git a/core/flamingock-processor/src/main/java/io/flamingock/core/processor/FlamingockAnnotationProcessor.java b/core/flamingock-processor/src/main/java/io/flamingock/core/processor/FlamingockAnnotationProcessor.java index 2a3438feb..d379fab05 100644 --- a/core/flamingock-processor/src/main/java/io/flamingock/core/processor/FlamingockAnnotationProcessor.java +++ b/core/flamingock-processor/src/main/java/io/flamingock/core/processor/FlamingockAnnotationProcessor.java @@ -27,13 +27,13 @@ import io.flamingock.internal.common.core.metadata.BuilderProviderInfo; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.pipeline.PipelineHelper; -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; import io.flamingock.internal.common.core.preview.CodePreviewChange; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; import io.flamingock.internal.common.core.preview.SystemPreviewStage; import io.flamingock.internal.common.core.processor.ConfigurationPropertiesProvider; -import io.flamingock.internal.common.core.task.TaskDescriptor; +import io.flamingock.internal.common.core.change.ChangeDescriptor; import io.flamingock.internal.common.core.util.LoggerPreProcessor; import io.flamingock.internal.common.core.util.Serializer; import org.jetbrains.annotations.NotNull; @@ -226,9 +226,9 @@ public boolean process(Set annotations, RoundEnvironment // Find @FlamingockCliBuilder annotated method Optional builderProvider = annotationFinder.findBuilderProvider(); - List systemChanges = allChanges.stream().filter(TaskDescriptor::isSystem).collect(Collectors.toList()); + List systemChanges = allChanges.stream().filter(ChangeDescriptor::isSystem).collect(Collectors.toList()); List legacyChanges = allChanges.stream().filter(CodePreviewChange::isLegacy).collect(Collectors.toList()); - List standardChanges = allChanges.stream().filter(TaskDescriptor::isStandard).collect(Collectors.toList()); + List standardChanges = allChanges.stream().filter(ChangeDescriptor::isStandard).collect(Collectors.toList()); Map> standardChangesMapByPackage = getCodeChangesMapByPackage(standardChanges); PreviewPipeline pipeline = getPipelineFromProcessChanges( @@ -249,12 +249,12 @@ public boolean process(Set annotations, RoundEnvironment // Generate summary - count all changes from the final pipeline (code-based + template-based) int totalStages = pipeline.getStages().size() + (pipeline.getSystemStage() != null ? 1 : 0); int totalChanges = 0; - if (pipeline.getSystemStage() != null && pipeline.getSystemStage().getTasks() != null) { - totalChanges += pipeline.getSystemStage().getTasks().size(); + if (pipeline.getSystemStage() != null && pipeline.getSystemStage().getChanges() != null) { + totalChanges += pipeline.getSystemStage().getChanges().size(); } for (PreviewStage stage : pipeline.getStages()) { - if (stage.getTasks() != null) { - totalChanges += stage.getTasks().size(); + if (stage.getChanges() != null) { + totalChanges += stage.getChanges().size(); } } logger.info("Generated metadata: " + totalStages + " stages, " + totalChanges + " changes"); @@ -742,11 +742,11 @@ private void validateAllChangesAreMappedToStages(Map findAnnotatedChanges() { } private CodePreviewChange buildCodePreviewChange(TypeElement typeElement) { - return Optional.ofNullable(CodePreviewTaskBuilder.instance(typeElement).build()) + return Optional.ofNullable(CodePreviewChangeBuilder.instance(typeElement).build()) .map(CodePreviewChange.class::cast) .orElse(null); } diff --git a/core/flamingock-processor/src/test/java/io/flamingock/core/processor/PipelinePreProcessorTest.java b/core/flamingock-processor/src/test/java/io/flamingock/core/processor/PipelinePreProcessorTest.java index 1bce4e857..4f10f15a8 100644 --- a/core/flamingock-processor/src/test/java/io/flamingock/core/processor/PipelinePreProcessorTest.java +++ b/core/flamingock-processor/src/test/java/io/flamingock/core/processor/PipelinePreProcessorTest.java @@ -18,10 +18,10 @@ import io.flamingock.api.StageType; import io.flamingock.api.annotations.EnableFlamingock; import io.flamingock.api.annotations.Stage; -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import com.fasterxml.jackson.databind.ObjectMapper; import io.flamingock.internal.common.core.util.LoggerPreProcessor; import org.junit.jupiter.api.BeforeEach; @@ -66,7 +66,7 @@ void setUp() { void shouldCreateCorrectPipelineStructureForAnnotationConfiguration() throws Exception { // Given - create annotation with stages including system stage EnableFlamingock annotation = createMockAnnotationWithStages(); - Map> changes = createMockChangesMap(); + Map> changes = createMockChangesMap(); // When - build pipeline from annotation using processor logic FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); @@ -100,7 +100,7 @@ void shouldCreateCorrectPipelineStructureForFileConfiguration() throws Exception // Given - create pipeline YAML file createPipelineYamlFile(); EnableFlamingock annotation = createMockAnnotationWithFile("pipeline.yaml"); - Map> changes = createMockChangesMap(); + Map> changes = createMockChangesMap(); // When - build pipeline from file using processor logic FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); @@ -138,7 +138,7 @@ void shouldAllowEmptyStagesArrayInAnnotation() throws Exception { EnableFlamingock annotation = new MockFlamingockBuilder() .withStages() // Empty stages array .build(); - Map> changes = new HashMap<>(); + Map> changes = new HashMap<>(); FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); // When & Then - should NOT throw exception (empty stages should be allowed) @@ -154,7 +154,7 @@ void shouldAllowEmptyStagesArrayInAnnotation() throws Exception { void shouldCreatePipelineWithCorrectObjectStructure() throws Exception { // Given - create a pipeline EnableFlamingock annotation = createMockAnnotationWithStages(); - Map> changes = createMockChangesMap(); + Map> changes = createMockChangesMap(); FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); PreviewPipeline pipeline = buildPipelineFromAnnotation(processor, annotation, changes); @@ -186,7 +186,7 @@ void shouldAllowMultipleDefaultStagesInAnnotation() throws Exception { createMockStage("", "com.example.migrations3") ) .build(); - Map> changes = createMockChangesMap(); + Map> changes = createMockChangesMap(); FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); // When - build pipeline (should not throw exception) @@ -215,7 +215,7 @@ void shouldOrderYamlStagesByTypePriorityLegacyBeforeDefault() throws Exception { Files.write(configFile, yamlContent.getBytes()); EnableFlamingock annotation = createMockAnnotationWithFile("pipeline.yaml"); - Map> changes = createMockChangesMap(); + Map> changes = createMockChangesMap(); FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); // When - build pipeline from file @@ -260,7 +260,7 @@ void shouldThrowErrorForMultipleSystemStagesInYaml() throws Exception { Files.write(configFile, yamlContent.getBytes()); EnableFlamingock annotation = createMockAnnotationWithFile("pipeline.yaml"); - Map> changes = createMockChangesMap(); + Map> changes = createMockChangesMap(); FlamingockAnnotationProcessor processor = new FlamingockAnnotationProcessor(); // When & Then - should throw RuntimeException @@ -319,7 +319,7 @@ void shouldThrowErrorForUnmappedChanges() throws Exception { // Helper methods using reflection to test the internal pipeline building logic - private PreviewPipeline buildPipelineFromAnnotation(FlamingockAnnotationProcessor processor, EnableFlamingock annotation, Map> changes) throws Exception { + private PreviewPipeline buildPipelineFromAnnotation(FlamingockAnnotationProcessor processor, EnableFlamingock annotation, Map> changes) throws Exception { // Set up minimal processor state setProcessorField(processor, "resourcesRoot", tempDir.toString()); setProcessorField(processor, "sourceRoots", Collections.singletonList(tempDir.toString())); @@ -334,7 +334,7 @@ private PreviewPipeline buildPipelineFromAnnotation(FlamingockAnnotationProcesso return (PreviewPipeline) method.invoke(processor, annotation, Collections.emptyList(), Collections.emptyList(), changes); } - private PreviewPipeline callGetPipelineFromProcessChanges(FlamingockAnnotationProcessor processor, Map> changes, EnableFlamingock annotation) throws Exception { + private PreviewPipeline callGetPipelineFromProcessChanges(FlamingockAnnotationProcessor processor, Map> changes, EnableFlamingock annotation) throws Exception { // Set up minimal processor state setProcessorField(processor, "resourcesRoot", tempDir.toString()); setProcessorField(processor, "sourceRoots", Collections.singletonList(tempDir.toString())); @@ -349,7 +349,7 @@ private PreviewPipeline callGetPipelineFromProcessChanges(FlamingockAnnotationPr return (PreviewPipeline) method.invoke(processor, Collections.emptyList(), Collections.emptyList(), changes, annotation); } - private PreviewPipeline buildPipelineFromFile(FlamingockAnnotationProcessor processor, EnableFlamingock annotation, Map> changes) throws Exception { + private PreviewPipeline buildPipelineFromFile(FlamingockAnnotationProcessor processor, EnableFlamingock annotation, Map> changes) throws Exception { // Set up minimal processor state setProcessorField(processor, "resourcesRoot", tempDir.toString()); setProcessorField(processor, "sourceRoots", Collections.singletonList(tempDir.toString())); @@ -440,23 +440,23 @@ private void createPipelineYamlFile() throws IOException { Files.write(configFile, yamlContent.getBytes()); } - private Map> createMockChangesMap() { - Map> map = new HashMap<>(); - // Create mock tasks for each package so stages can be built - AbstractPreviewTask mockTask = new AbstractPreviewTask("mock-task", "001", "test-author", "test-source", "test-source-file", false, true, false, null, RecoveryDescriptor.getDefault(), false) {}; + private Map> createMockChangesMap() { + Map> map = new HashMap<>(); + // Create mock changes for each package so stages can be built + AbstractPreviewChange mockChange = new AbstractPreviewChange("mock-change", "001", "test-author", "test-source", "test-source-file", false, true, false, null, RecoveryDescriptor.getDefault(), false) {}; - map.put("com.example.system", Collections.singletonList(mockTask)); - map.put("com.example.system1", Collections.singletonList(mockTask)); - map.put("com.example.system2", Collections.singletonList(mockTask)); - map.put("com.example.init", Collections.singletonList(mockTask)); - map.put("com.example.legacy1", Collections.singletonList(mockTask)); - map.put("com.example.legacy2", Collections.singletonList(mockTask)); - map.put("com.example.migrations", Collections.singletonList(mockTask)); - map.put("com.example.migrations1", Collections.singletonList(mockTask)); - map.put("com.example.migrations2", Collections.singletonList(mockTask)); - map.put("com.example.migrations3", Collections.singletonList(mockTask)); - map.put("com.example.changes", Collections.singletonList(mockTask)); - map.put("com.example.cleanup", Collections.singletonList(mockTask)); + map.put("com.example.system", Collections.singletonList(mockChange)); + map.put("com.example.system1", Collections.singletonList(mockChange)); + map.put("com.example.system2", Collections.singletonList(mockChange)); + map.put("com.example.init", Collections.singletonList(mockChange)); + map.put("com.example.legacy1", Collections.singletonList(mockChange)); + map.put("com.example.legacy2", Collections.singletonList(mockChange)); + map.put("com.example.migrations", Collections.singletonList(mockChange)); + map.put("com.example.migrations1", Collections.singletonList(mockChange)); + map.put("com.example.migrations2", Collections.singletonList(mockChange)); + map.put("com.example.migrations3", Collections.singletonList(mockChange)); + map.put("com.example.changes", Collections.singletonList(mockChange)); + map.put("com.example.cleanup", Collections.singletonList(mockChange)); return map; } diff --git a/core/flamingock-test-support/src/main/java/io/flamingock/support/change/TemplateBasedChangeValidator.java b/core/flamingock-test-support/src/main/java/io/flamingock/support/change/TemplateBasedChangeValidator.java index 9a66c66c8..853af8806 100644 --- a/core/flamingock-test-support/src/main/java/io/flamingock/support/change/TemplateBasedChangeValidator.java +++ b/core/flamingock-test-support/src/main/java/io/flamingock/support/change/TemplateBasedChangeValidator.java @@ -16,7 +16,7 @@ package io.flamingock.support.change; import io.flamingock.api.RecoveryStrategy; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import io.flamingock.internal.common.core.template.ChangeTemplateFileContent; import io.flamingock.internal.util.FileUtil; diff --git a/core/flamingock-test-support/src/main/java/io/flamingock/support/inmemory/InMemoryAuditStorage.java b/core/flamingock-test-support/src/main/java/io/flamingock/support/inmemory/InMemoryAuditStorage.java index 6042d3830..5a86a2e5e 100644 --- a/core/flamingock-test-support/src/main/java/io/flamingock/support/inmemory/InMemoryAuditStorage.java +++ b/core/flamingock-test-support/src/main/java/io/flamingock/support/inmemory/InMemoryAuditStorage.java @@ -60,7 +60,7 @@ public synchronized long countAuditEntriesWithStatus(AuditEntry.Status status) { public synchronized List getAuditEntriesForChange(String changeId) { return auditEntries.stream() - .filter(entry -> changeId.equals(entry.getTaskId())) + .filter(entry -> changeId.equals(entry.getChangeId())) .collect(Collectors.toList()); } diff --git a/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditEntryExpectation.java b/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditEntryExpectation.java index ca33d3742..d6e0761e8 100644 --- a/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditEntryExpectation.java +++ b/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditEntryExpectation.java @@ -53,8 +53,8 @@ public List compareWith(AuditEntry actual) { List errors = new ArrayList<>(); // Required fields - always verified - if (!definition.getChangeId().equals(actual.getTaskId())) { - errors.add(new FieldMismatchError("changeId", definition.getChangeId(), actual.getTaskId())); + if (!definition.getChangeId().equals(actual.getChangeId())) { + errors.add(new FieldMismatchError("changeId", definition.getChangeId(), actual.getChangeId())); } if (definition.getState() != actual.getState()) { diff --git a/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditFinalStateSequenceValidator.java b/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditFinalStateSequenceValidator.java index 9eb6cbb11..49b818417 100644 --- a/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditFinalStateSequenceValidator.java +++ b/core/flamingock-test-support/src/main/java/io/flamingock/support/validation/impl/AuditFinalStateSequenceValidator.java @@ -110,7 +110,7 @@ private static List filterActualEntries(List auditEntrie return auditEntries.stream() .filter(entry -> !EXCLUDED_STATES.contains(entry.getState())) .filter(auditEntry -> !Boolean.TRUE.equals(auditEntry.getSystemChange())) - .filter(auditEntry -> !(auditEntry.isLegacy() && auditEntry.getTaskId().endsWith("_before"))) + .filter(auditEntry -> !(auditEntry.isLegacy() && auditEntry.getChangeId().endsWith("_before"))) .sorted() .collect(Collectors.toList()); } @@ -133,7 +133,7 @@ private static List getValidationErrors(List getExpectedChangeIds() { private List getActualChangeIds() { return actualEntries.stream() - .map(AuditEntry::getTaskId) + .map(AuditEntry::getChangeId) .collect(Collectors.toList()); } diff --git a/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemAuditMarker.java b/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemAuditMarker.java index 95cfc1844..42382bcca 100644 --- a/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemAuditMarker.java +++ b/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemAuditMarker.java @@ -40,9 +40,9 @@ public class CouchbaseTargetSystemAuditMarker implements TargetSystemAuditMarker { private static final String OPERATION = "operation"; - private static final String TASK_ID = "taskId"; + private static final String CHANGE_ID = "changeId"; private final Cluster cluster; - private final Collection onGoingTaskStatusCollection; + private final Collection onGoingChangeStatusCollection; private final TransactionManager txManager; public static Builder builder(Cluster cluster, @@ -51,18 +51,18 @@ public static Builder builder(Cluster cluster, return new Builder(cluster, bucket, txManager); } - public CouchbaseTargetSystemAuditMarker(Cluster cluster, Collection onGoingTaskStatusCollection, TransactionManager txManager) { + public CouchbaseTargetSystemAuditMarker(Cluster cluster, Collection onGoingChangeStatusCollection, TransactionManager txManager) { this.cluster = cluster; - this.onGoingTaskStatusCollection = onGoingTaskStatusCollection; + this.onGoingChangeStatusCollection = onGoingChangeStatusCollection; this.txManager = txManager; } @Override public Set listAll() { List results = CouchbaseCollectionHelper.selectAllDocuments(cluster, - onGoingTaskStatusCollection.bucketName(), - onGoingTaskStatusCollection.scopeName(), - onGoingTaskStatusCollection.name()); + onGoingChangeStatusCollection.bucketName(), + onGoingChangeStatusCollection.scopeName(), + onGoingChangeStatusCollection.name()); return results .stream() .map(CouchbaseTargetSystemAuditMarker::mapToOnGoingStatus) @@ -74,10 +74,10 @@ public void clearMark(String changeId) { cluster.query( String.format( "DELETE FROM `%s`.`%s`.`%s` WHERE `%s`= $p1", - onGoingTaskStatusCollection.bucketName(), - onGoingTaskStatusCollection.scopeName(), - onGoingTaskStatusCollection.name(), - TASK_ID), + onGoingChangeStatusCollection.bucketName(), + onGoingChangeStatusCollection.scopeName(), + onGoingChangeStatusCollection.name(), + CHANGE_ID), QueryOptions.queryOptions() .scanConsistency(QueryScanConsistency.REQUEST_PLUS) .parameters(JsonObject.create().put("p1", changeId))); @@ -86,25 +86,25 @@ public void clearMark(String changeId) { @Override public void mark(TargetSystemAuditMark auditMark) { - String key = auditMark.getTaskId(); + String key = auditMark.getChangeId(); JsonObject document = JsonObject.create() - .put(TASK_ID, auditMark.getTaskId()) + .put(CHANGE_ID, auditMark.getChangeId()) .put(OPERATION, auditMark.getOperation().name()); - TransactionAttemptContext ctx = txManager.getSessionOrThrow(auditMark.getTaskId()); + TransactionAttemptContext ctx = txManager.getSessionOrThrow(auditMark.getChangeId()); try { - TransactionGetResult existing = ctx.get(onGoingTaskStatusCollection, key); + TransactionGetResult existing = ctx.get(onGoingChangeStatusCollection, key); ctx.replace(existing, document); } catch (DocumentNotFoundException e) { - ctx.insert(onGoingTaskStatusCollection, key, document); + ctx.insert(onGoingChangeStatusCollection, key, document); } } public static TargetSystemAuditMark mapToOnGoingStatus(JsonObject jsonObject) { TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.valueOf(jsonObject.getString(OPERATION)); - return new TargetSystemAuditMark(jsonObject.getString(TASK_ID), operation); + return new TargetSystemAuditMark(jsonObject.getString(CHANGE_ID), operation); } @@ -141,8 +141,8 @@ public Builder withAutoCreate(boolean autoCreate) { public CouchbaseTargetSystemAuditMarker build() { CouchbaseCollectionInitializator collectionInitializator = new CouchbaseCollectionInitializator(cluster, bucket, scopeName, collectionName); collectionInitializator.initialize(autoCreate); - Collection onGoingTasksStatusCollection = this.bucket.scope(scopeName).collection(collectionName); - return new CouchbaseTargetSystemAuditMarker(cluster, onGoingTasksStatusCollection, txManager); + Collection onGoingChangesStatusCollection = this.bucket.scope(scopeName).collection(collectionName); + return new CouchbaseTargetSystemAuditMarker(cluster, onGoingChangesStatusCollection, txManager); } } } diff --git a/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTxWrapper.java b/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTxWrapper.java index fa88f8121..18492f9d1 100644 --- a/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTxWrapper.java +++ b/core/target-systems/flamingock-couchbase-targetsystem/src/main/java/io/flamingock/targetsystem/couchbase/CouchbaseTxWrapper.java @@ -21,7 +21,7 @@ import io.flamingock.internal.common.core.context.Dependency; import io.flamingock.internal.core.transaction.TransactionManager; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.FailedStep; import io.flamingock.internal.core.transaction.TransactionWrapper; import java.util.concurrent.atomic.AtomicReference; diff --git a/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemTest.java b/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemTest.java index ee6bbbbe7..ceff45f12 100644 --- a/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemTest.java +++ b/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTargetSystemTest.java @@ -23,7 +23,7 @@ import io.flamingock.common.test.cloud.MockRunnerServer; import io.flamingock.common.test.cloud.execution.ExecutionContinueRequestResponseMock; import io.flamingock.common.test.cloud.execution.ExecutionPlanRequestResponseMock; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.prototype.PrototypeClientSubmission; import io.flamingock.common.test.cloud.prototype.PrototypeStage; import io.flamingock.internal.common.core.util.Deserializer; @@ -57,7 +57,6 @@ import java.time.Duration; import java.util.Collections; -import java.util.UUID; import static io.flamingock.cloud.api.vo.CloudAuditStatus.APPLIED; import static io.flamingock.cloud.api.vo.CloudAuditStatus.FAILED; @@ -147,8 +146,8 @@ void happyPath() { PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -185,21 +184,21 @@ void happyPath() { couchbaseTestHelper.checkCount(bucket.scope(SCOPE_NAME).collection(CLIENTS_COLLECTION), 1); //TODO add when cloud added // check ongoing status -// couchbaseTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); +// couchbaseTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should rollback the ongoing deletion when a task fails") - void failedTasks() { + @DisplayName("Should rollback the ongoing deletion when a change fails") + void failedChanges() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__UnhappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__UnhappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -247,15 +246,15 @@ void failedTasks() { //TODO verify the server is called with the right parameters. among other, it sends the ongoing status @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should send ongoing task in execution when is present in local database") - void shouldSendOngoingTaskInExecutionPlan() { + @DisplayName("Should send ongoing change in execution when is present in local database") + void shouldSendOngoingChangeInExecutionPlan() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -266,7 +265,7 @@ void shouldSendOngoingTaskInExecutionPlan() { mockRunnerServer .withClientSubmissionBase(prototypeClientSubmission) .withExecutionPlanRequestsExpectation( - new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseTask("insert-clients", TargetSystemAuditMarkType.APPLIED)), + new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseChange("insert-clients", TargetSystemAuditMarkType.APPLIED)), new ExecutionContinueRequestResponseMock() ).withAuditRequestsExpectation( new AuditRequestExpectation(executionId, "create-clients-collection", APPLIED), @@ -294,7 +293,7 @@ void shouldSendOngoingTaskInExecutionPlan() { // check clients changes couchbaseTestHelper.checkCount(bucket.scope(SCOPE_NAME).collection(CLIENTS_COLLECTION), 1); // check ongoing status - couchbaseTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + couchbaseTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } } diff --git a/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTestHelper.java b/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTestHelper.java index 48570fca2..e1d0a80da 100644 --- a/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTestHelper.java +++ b/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/CouchbaseTestHelper.java @@ -45,7 +45,7 @@ public CouchbaseTestHelper(Cluster cluster, Bucket bucket, String scopeName, Str this.collectionName = collectionName; } - public void insertOngoingExecution(String taskId) { + public void insertOngoingExecution(String changeId) { CouchbaseCollectionInitializator collectionInitializator = new CouchbaseCollectionInitializator(cluster, bucket, scopeName, collectionName); @@ -53,10 +53,10 @@ public void insertOngoingExecution(String taskId) { Collection collection = this.getOnGoingStatusCollection(); - String key = taskId; + String key = changeId; JsonObject document = JsonObject.create() - .put("taskId", taskId) + .put("changeId", changeId) .put("operation", AuditContextBundle.Operation.EXECUTION.toString()); try { @@ -77,10 +77,10 @@ public void checkCount(Collection collection, int count) { } public void checkEmptyTargetSystemAuditMarker() { - checkOngoingTask(result -> result == 0); + checkOngoingChange(result -> result == 0); } - public void checkOngoingTask(Predicate predicate) { + public void checkOngoingChange(Predicate predicate) { Collection collection = this.getOnGoingStatusCollection(); long result = CouchbaseCollectionHelper.selectAllDocuments(cluster, collection.bucketName(), @@ -91,7 +91,7 @@ public void checkOngoingTask(Predicate predicate) { public static TargetSystemAuditMark mapToOnGoingStatus(JsonObject document) { TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.valueOf(document.getString("operation")); - return new TargetSystemAuditMark(document.getString("taskId"), operation); + return new TargetSystemAuditMark(document.getString("changeId"), operation); } private Collection getOnGoingStatusCollection() { diff --git a/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/PipelineTestHelper.java b/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/PipelineTestHelper.java index 1be4949b8..0b2931ff6 100644 --- a/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/PipelineTestHelper.java +++ b/core/target-systems/flamingock-couchbase-targetsystem/src/test/java/io/flamingock/targetsystem/couchbase/PipelineTestHelper.java @@ -24,9 +24,9 @@ import io.flamingock.internal.common.core.preview.PreviewMethod; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import org.jetbrains.annotations.NotNull; @@ -74,7 +74,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { Function, ChangeInfo> extractor = infoExtractor; ChangeInfo changeInfo = extractor.apply(trio.getFirst()); @@ -83,8 +83,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -100,7 +100,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio txManager; - protected DynamoDbTable onGoingTaskStatusTable; + protected DynamoDbTable onGoingChangeStatusTable; public static Builder builder(DynamoDbClient dynamoDBClient, TransactionManager txManager) { return new Builder(dynamoDBClient, txManager); } - public DynamoDBTargetSystemAuditMarker(DynamoDbTable onGoingTaskStatusTable, + public DynamoDBTargetSystemAuditMarker(DynamoDbTable onGoingChangeStatusTable, TransactionManager txManager) { - this.onGoingTaskStatusTable = onGoingTaskStatusTable; + this.onGoingChangeStatusTable = onGoingChangeStatusTable; this.txManager = txManager; } @Override public Set listAll() { - return onGoingTaskStatusTable + return onGoingChangeStatusTable .scan(ScanEnhancedRequest.builder() .consistentRead(true) .build() ) .items() .stream() - .map(OngoingTaskEntity::toOngoingStatus) + .map(OngoingChangeEntity::toOngoingStatus) .collect(Collectors.toSet()); } @Override public void clearMark(String changeId) { - onGoingTaskStatusTable.deleteItem( + onGoingChangeStatusTable.deleteItem( DeleteItemEnhancedRequest.builder() .key(Key.builder().partitionValue(changeId).build()) .build() ); - logger.trace("removed ongoing task[{}]", changeId); + logger.trace("removed ongoing change[{}]", changeId); } @Override public void mark(TargetSystemAuditMark auditMark) { TransactWriteItemsEnhancedRequest.Builder tx = - txManager.getSessionOrThrow(auditMark.getTaskId()); + txManager.getSessionOrThrow(auditMark.getChangeId()); - OngoingTaskEntity entity = - new OngoingTaskEntity(auditMark.getTaskId(), auditMark.getOperation().toString()); + OngoingChangeEntity entity = + new OngoingChangeEntity(auditMark.getChangeId(), auditMark.getOperation().toString()); - tx.addPutItem(onGoingTaskStatusTable, entity); + tx.addPutItem(onGoingChangeStatusTable, entity); - logger.debug("queued local audit mark [{}] into transaction session", auditMark.getTaskId()); + logger.debug("queued local audit mark [{}] into transaction session", auditMark.getChangeId()); } @@ -98,7 +98,7 @@ public static class Builder { private final TransactionManager txManager; private String tableName = CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME; private boolean autoCreate = true; - protected DynamoDbTable onGoingTaskStatusTable; + protected DynamoDbTable onGoingChangeStatusTable; public Builder(DynamoDbClient dynamoDBClient, TransactionManager txManager) { dynamoDBUtil = new DynamoDBUtil(dynamoDBClient); @@ -118,20 +118,20 @@ public Builder withAutoCreate(boolean autoCreate) { public DynamoDBTargetSystemAuditMarker build() { if (autoCreate) { dynamoDBUtil.createTable( - dynamoDBUtil.getAttributeDefinitions("taskId", null), - dynamoDBUtil.getKeySchemas("taskId", null), + dynamoDBUtil.getAttributeDefinitions("changeId", null), + dynamoDBUtil.getKeySchemas("changeId", null), dynamoDBUtil.getProvisionedThroughput(5L, 5L), this.tableName, emptyList(), emptyList() ); - this.onGoingTaskStatusTable = dynamoDBUtil.getEnhancedClient().table(this.tableName, TableSchema.fromBean(OngoingTaskEntity.class)); - logger.info("table {} created successfully", this.onGoingTaskStatusTable.tableName()); + this.onGoingChangeStatusTable = dynamoDBUtil.getEnhancedClient().table(this.tableName, TableSchema.fromBean(OngoingChangeEntity.class)); + logger.info("table {} created successfully", this.onGoingChangeStatusTable.tableName()); } else { - this.onGoingTaskStatusTable = dynamoDBUtil.getEnhancedClient().table(this.tableName, TableSchema.fromBean(OngoingTaskEntity.class)); + this.onGoingChangeStatusTable = dynamoDBUtil.getEnhancedClient().table(this.tableName, TableSchema.fromBean(OngoingChangeEntity.class)); } - return new DynamoDBTargetSystemAuditMarker(this.onGoingTaskStatusTable, txManager); + return new DynamoDBTargetSystemAuditMarker(this.onGoingChangeStatusTable, txManager); } } } diff --git a/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/DynamoDBTxWrapper.java b/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/DynamoDBTxWrapper.java index 716ad8814..6c14dcb8b 100644 --- a/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/DynamoDBTxWrapper.java +++ b/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/DynamoDBTxWrapper.java @@ -19,7 +19,7 @@ import io.flamingock.internal.common.core.error.DatabaseTransactionException; import io.flamingock.internal.core.transaction.TransactionManager; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.FailedStep; import io.flamingock.internal.core.transaction.TransactionWrapper; import io.flamingock.internal.util.dynamodb.DynamoDBUtil; import io.flamingock.internal.util.log.FlamingockLoggerFactory; diff --git a/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/OngoingTaskEntity.java b/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/OngoingChangeEntity.java similarity index 75% rename from core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/OngoingTaskEntity.java rename to core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/OngoingChangeEntity.java index e0030c9b9..fbdf0303c 100644 --- a/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/OngoingTaskEntity.java +++ b/core/target-systems/flamingock-dynamodb-targetsystem/src/main/java/io/flamingock/targetsystem/dynamodb/OngoingChangeEntity.java @@ -23,27 +23,27 @@ @DynamoDbBean -public class OngoingTaskEntity { +public class OngoingChangeEntity { - private String taskId; + private String changeId; private String operation; - public OngoingTaskEntity(String taskId, String operation) { - this.taskId = taskId; + public OngoingChangeEntity(String changeId, String operation) { + this.changeId = changeId; this.operation = operation; } - public OngoingTaskEntity() { + public OngoingChangeEntity() { } @DynamoDbPartitionKey - @DynamoDbAttribute("taskId") - public String getTaskId() { - return taskId; + @DynamoDbAttribute("changeId") + public String getChangeId() { + return changeId; } - public void setTaskId(String taskId) { - this.taskId = taskId; + public void setChangeId(String changeId) { + this.changeId = changeId; } @DynamoDbAttribute("operation") @@ -56,7 +56,7 @@ public void setOperation(String operation) { } public TargetSystemAuditMark toOngoingStatus() { - return new TargetSystemAuditMark(this.taskId, TargetSystemAuditMarkType.valueOf(this.operation)); + return new TargetSystemAuditMark(this.changeId, TargetSystemAuditMarkType.valueOf(this.operation)); } } diff --git a/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBCloudTargetSystemTest.java b/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBCloudTargetSystemTest.java index 0e6d98f8f..222af1a24 100644 --- a/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBCloudTargetSystemTest.java +++ b/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBCloudTargetSystemTest.java @@ -25,7 +25,7 @@ import io.flamingock.common.test.cloud.MockRunnerServer; import io.flamingock.common.test.cloud.execution.ExecutionContinueRequestResponseMock; import io.flamingock.common.test.cloud.execution.ExecutionPlanRequestResponseMock; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.prototype.PrototypeClientSubmission; import io.flamingock.common.test.cloud.prototype.PrototypeStage; import io.flamingock.internal.util.Trio; @@ -48,7 +48,6 @@ import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import java.util.Collections; -import java.util.UUID; import static io.flamingock.cloud.api.vo.CloudAuditStatus.APPLIED; import static io.flamingock.cloud.api.vo.CloudAuditStatus.FAILED; @@ -126,8 +125,8 @@ void happyPath() { PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-table-clients", _001__HappyCreateTableClientsChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-table-clients", _001__HappyCreateTableClientsChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -171,21 +170,21 @@ void happyPath() { //TODO when cloud enabled // check ongoing status -// dynamoDBTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); +// dynamoDBTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should rollback the ongoing deletion when a task fails") - void failedTasks() { + @DisplayName("Should rollback the ongoing deletion when a change fails") + void failedChanges() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("unhappy-create-table-clients", _001__UnhappyCreateTableClientsChange.class.getName(), "apply", false) - .addTask("unhappy-insert-clients", _002__UnhappyInsertionClientsChange.class.getName(), "apply", true) + .addChange("unhappy-create-table-clients", _001__UnhappyCreateTableClientsChange.class.getName(), "apply", false) + .addChange("unhappy-insert-clients", _002__UnhappyInsertionClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -237,15 +236,15 @@ void failedTasks() { //TODO verify the server is called with the right parameters. among other, it sends the ongoing status @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should send ongoing task in execution when is present in local database") - void shouldSendOngoingTaskInExecutionPlan() { + @DisplayName("Should send ongoing change in execution when is present in local database") + void shouldSendOngoingChangeInExecutionPlan() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-table-clients", _001__HappyCreateTableClientsChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-table-clients", _001__HappyCreateTableClientsChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -257,7 +256,7 @@ void shouldSendOngoingTaskInExecutionPlan() { mockRunnerServer .withClientSubmissionBase(prototypeClientSubmission) .withExecutionPlanRequestsExpectation( - new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseTask("insert-clients", TargetSystemAuditMarkType.APPLIED)), + new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseChange("insert-clients", TargetSystemAuditMarkType.APPLIED)), new ExecutionContinueRequestResponseMock() ).withAuditRequestsExpectation( new AuditRequestExpectation(executionId, "create-table-clients", APPLIED), @@ -289,7 +288,7 @@ void shouldSendOngoingTaskInExecutionPlan() { .table(UserEntity.tableName, TableSchema.fromBean(UserEntity.class)), 1); // check ongoing status - dynamoDBTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + dynamoDBTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } diff --git a/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBTestHelper.java b/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBTestHelper.java index e891109c5..390f4c0b7 100644 --- a/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBTestHelper.java +++ b/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/DynamoDBTestHelper.java @@ -46,20 +46,20 @@ public DynamoDbClient getDynamoDBClient() { return dynamoDBUtil.getDynamoDBClient(); } - public void insertOngoingExecution(String taskId) { + public void insertOngoingExecution(String changeId) { dynamoDBUtil.createTable( - dynamoDBUtil.getAttributeDefinitions("taskId", null), - dynamoDBUtil.getKeySchemas("taskId", null), + dynamoDBUtil.getAttributeDefinitions("changeId", null), + dynamoDBUtil.getKeySchemas("changeId", null), dynamoDBUtil.getProvisionedThroughput(5L, 5L), tableName, emptyList(), emptyList() ); - DynamoDbTable table = dynamoDBUtil.getEnhancedClient().table(tableName, TableSchema.fromBean(OngoingTaskEntity.class)); + DynamoDbTable table = dynamoDBUtil.getEnhancedClient().table(tableName, TableSchema.fromBean(OngoingChangeEntity.class)); table.putItem( - PutItemEnhancedRequest.builder(OngoingTaskEntity.class) - .item(new OngoingTaskEntity(taskId, AuditContextBundle.Operation.EXECUTION.toString())) + PutItemEnhancedRequest.builder(OngoingChangeEntity.class) + .item(new OngoingChangeEntity(changeId, AuditContextBundle.Operation.EXECUTION.toString())) .build() ); checkEmptyTargetSystemAudiMarker(); @@ -78,11 +78,11 @@ public void checkCount(DynamoDbTable table, int count) { } public void checkEmptyTargetSystemAudiMarker() { - checkOngoingTask(result -> result == 0); + checkOngoingChange(result -> result == 0); } - public void checkOngoingTask(Predicate predicate) { - DynamoDbTable table = dynamoDBUtil.getEnhancedClient().table(tableName, TableSchema.fromBean(OngoingTaskEntity.class)); + public void checkOngoingChange(Predicate predicate) { + DynamoDbTable table = dynamoDBUtil.getEnhancedClient().table(tableName, TableSchema.fromBean(OngoingChangeEntity.class)); long result = table .scan(ScanEnhancedRequest.builder() .consistentRead(true) diff --git a/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/PipelineTestHelper.java b/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/PipelineTestHelper.java index e6a2aee23..67abf7ce5 100644 --- a/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/PipelineTestHelper.java +++ b/core/target-systems/flamingock-dynamodb-targetsystem/src/test/java/io/flamingock/targetsystem/dynamodb/PipelineTestHelper.java @@ -19,9 +19,9 @@ import io.flamingock.api.annotations.TargetSystem; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.PreviewConstructor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import io.flamingock.api.annotations.Change; @@ -74,7 +74,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { Function, ChangeInfo> extractor = infoExtractor; ChangeInfo changeInfo = extractor.apply(trio.getFirst()); @@ -83,8 +83,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -100,7 +100,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio ongoingCount == 0); + mongoDBTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should rollback the ongoing deletion when a task fails") - void failedTasks() { + @DisplayName("Should rollback the ongoing deletion when a change fails") + void failedChanges() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__UnhappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__UnhappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -239,15 +238,15 @@ void failedTasks() { //TODO verify the server is called with the right parameters. among other, it sends the ongoing status @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should send ongoing task in execution when is present in local database") - void shouldSendOngoingTaskInExecutionPlan() { + @DisplayName("Should send ongoing change in execution when is present in local database") + void shouldSendOngoingChangeInExecutionPlan() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -261,7 +260,7 @@ void shouldSendOngoingTaskInExecutionPlan() { mockRunnerServer .withClientSubmissionBase(prototypeClientSubmission) .withExecutionPlanRequestsExpectation( - new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseTask("insert-clients", TargetSystemAuditMarkType.APPLIED)), + new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseChange("insert-clients", TargetSystemAuditMarkType.APPLIED)), new ExecutionContinueRequestResponseMock() ).withAuditRequestsExpectation( new AuditRequestExpectation(executionId, "create-clients-collection", APPLIED), @@ -288,7 +287,7 @@ void shouldSendOngoingTaskInExecutionPlan() { // check clients changes mongoDBTestHelper.checkCount(testDatabase.getCollection(CLIENTS_COLLECTION), 1); // check ongoing status - mongoDBTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + mongoDBTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } } diff --git a/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/MongoDBTestHelper.java b/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/MongoDBTestHelper.java index 8b6c774c8..422e69a99 100644 --- a/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/MongoDBTestHelper.java +++ b/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/MongoDBTestHelper.java @@ -43,24 +43,24 @@ public MongoDBTestHelper(MongoDatabase mongoDatabase) { this.mongoDatabase = mongoDatabase; } - public void insertOngoingExecution(String taskId) { + public void insertOngoingExecution(String changeId) { - MongoCollection onGoingTasksCollection = mongoDatabase.getCollection(CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME); + MongoCollection onGoingChangesCollection = mongoDatabase.getCollection(CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME); CollectionInitializator initializer = new CollectionInitializator<>( - new MongoDBSyncCollectionHelper(onGoingTasksCollection), + new MongoDBSyncCollectionHelper(onGoingChangesCollection), () -> new MongoDBSyncDocumentHelper(new Document()), - new String[]{"taskId"} + new String[]{"changeId"} ); initializer.initialize(); - Document filter = new Document("taskId", taskId); + Document filter = new Document("changeId", changeId); - Document newDocument = new Document("taskId", taskId) + Document newDocument = new Document("changeId", changeId) .append("operation", AuditContextBundle.Operation.EXECUTION.toString()); - onGoingTasksCollection.updateOne( + onGoingChangesCollection.updateOne( filter, new Document("$set", newDocument), new com.mongodb.client.model.UpdateOptions().upsert(true)); @@ -77,13 +77,13 @@ public void checkCount(MongoCollection collection, int count) { } public void checkEmptyTargetSystemAudiMarker() { - checkOngoingTask(result -> result == 0); + checkOngoingChange(result -> result == 0); } - public void checkOngoingTask(Predicate predicate) { - MongoCollection onGoingTasksCollection = mongoDatabase.getCollection("flamingockOnGoingTasks"); + public void checkOngoingChange(Predicate predicate) { + MongoCollection onGoingChangesCollection = mongoDatabase.getCollection("flamingockOnGoingChanges"); - long result = onGoingTasksCollection.find() + long result = onGoingChangesCollection.find() .map(MongoDBTestHelper::mapToOnGoingStatus) .into(new HashSet<>()) .size(); @@ -93,7 +93,7 @@ public void checkOngoingTask(Predicate predicate) { public static TargetSystemAuditMark mapToOnGoingStatus(Document document) { TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.valueOf(document.getString("operation")); - return new TargetSystemAuditMark(document.getString("taskId"), operation); + return new TargetSystemAuditMark(document.getString("changeId"), operation); } diff --git a/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/PipelineTestHelper.java b/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/PipelineTestHelper.java index e29a62d17..36842249a 100644 --- a/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/PipelineTestHelper.java +++ b/core/target-systems/flamingock-mongodb-springdata-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/springdata/PipelineTestHelper.java @@ -19,9 +19,9 @@ import io.flamingock.api.annotations.TargetSystem; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.PreviewConstructor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import io.flamingock.api.annotations.Change; @@ -74,7 +74,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { Function, ChangeInfo> extractor = infoExtractor; ChangeInfo changeInfo = extractor.apply(trio.getFirst()); @@ -83,8 +83,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -100,7 +100,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio onGoingTaskStatusCollection; + private static final String CHANGE_ID = "changeId"; + private final MongoCollection onGoingChangeStatusCollection; private final TransactionManager txManager; public static Builder builder(MongoDatabase mongoDatabase, TransactionManager txManager) { return new Builder(mongoDatabase, txManager); } - public MongoDBSyncTargetSystemAuditMarker(MongoCollection onGoingTaskStatusCollection, + public MongoDBSyncTargetSystemAuditMarker(MongoCollection onGoingChangeStatusCollection, TransactionManager txManager) { - this.onGoingTaskStatusCollection = onGoingTaskStatusCollection; + this.onGoingChangeStatusCollection = onGoingChangeStatusCollection; this.txManager = txManager; } @Override public Set listAll() { - return onGoingTaskStatusCollection.find() + return onGoingChangeStatusCollection.find() .map(MongoDBSyncTargetSystemAuditMarker::mapToOnGoingStatus) .into(new HashSet<>()); } @Override public void clearMark(String changeId) { - onGoingTaskStatusCollection.deleteMany(Filters.eq(TASK_ID, changeId)); + onGoingChangeStatusCollection.deleteMany(Filters.eq(CHANGE_ID, changeId)); } @Override public void mark(TargetSystemAuditMark auditMark) { - Document filter = new Document(TASK_ID, auditMark.getTaskId()); + Document filter = new Document(CHANGE_ID, auditMark.getChangeId()); // Define the new document to replace or insert - Document newDocument = new Document(TASK_ID, auditMark.getTaskId()) + Document newDocument = new Document(CHANGE_ID, auditMark.getChangeId()) .append(OPERATION, auditMark.getOperation().name()); - ClientSession clientSession = txManager.getSessionOrThrow(auditMark.getTaskId()); - onGoingTaskStatusCollection.updateOne( + ClientSession clientSession = txManager.getSessionOrThrow(auditMark.getChangeId()); + onGoingChangeStatusCollection.updateOne( clientSession, filter, new Document("$set", newDocument), @@ -83,7 +83,7 @@ public void mark(TargetSystemAuditMark auditMark) { public static TargetSystemAuditMark mapToOnGoingStatus(Document document) { TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.valueOf(document.getString(OPERATION)); - return new TargetSystemAuditMark(document.getString(TASK_ID), operation); + return new TargetSystemAuditMark(document.getString(CHANGE_ID), operation); } @@ -137,7 +137,7 @@ public MongoDBSyncTargetSystemAuditMarker build() { CollectionInitializator initializer = new CollectionInitializator<>( new MongoDBSyncCollectionHelper(collection), () -> new MongoDBSyncDocumentHelper(new Document()), - new String[]{TASK_ID} + new String[]{CHANGE_ID} ); if (autoCreate) { initializer.initialize(); diff --git a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/main/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTxWrapper.java b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/main/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTxWrapper.java index 81ec54008..43bc9f370 100644 --- a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/main/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTxWrapper.java +++ b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/main/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTxWrapper.java @@ -20,7 +20,7 @@ import io.flamingock.internal.common.core.context.Dependency; import io.flamingock.internal.common.core.error.DatabaseTransactionException; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.FailedStep; import io.flamingock.internal.core.transaction.TransactionWrapper; import io.flamingock.internal.core.transaction.TransactionManager; import io.flamingock.internal.util.log.FlamingockLoggerFactory; diff --git a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTargetSystemTest.java b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTargetSystemTest.java index e5fc87ad5..a6ed84f66 100644 --- a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTargetSystemTest.java +++ b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBSyncTargetSystemTest.java @@ -29,7 +29,7 @@ import io.flamingock.common.test.cloud.MockRunnerServer; import io.flamingock.common.test.cloud.execution.ExecutionContinueRequestResponseMock; import io.flamingock.common.test.cloud.execution.ExecutionPlanRequestResponseMock; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.prototype.PrototypeClientSubmission; import io.flamingock.common.test.cloud.prototype.PrototypeStage; import io.flamingock.internal.util.Trio; @@ -50,7 +50,6 @@ import org.testcontainers.utility.DockerImageName; import java.util.Collections; -import java.util.UUID; import static io.flamingock.cloud.api.vo.CloudAuditStatus.APPLIED; import static io.flamingock.cloud.api.vo.CloudAuditStatus.FAILED; @@ -136,8 +135,8 @@ void happyPath() { PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -174,21 +173,21 @@ void happyPath() { // check clients changes mongoDBTestHelper.checkCount(testDatabase.getCollection(CLIENTS_COLLECTION), 1); // check ongoing status - mongoDBTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + mongoDBTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should rollback the ongoing deletion when a task fails") - void failedTasks() { + @DisplayName("Should rollback the ongoing deletion when a change fails") + void failedChanges() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__UnhappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__UnhappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -241,15 +240,15 @@ void failedTasks() { //TODO verify the server is called with the right parameters. among other, it sends the ongoing status @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should send ongoing task in execution when is present in local database") - void shouldSendOngoingTaskInExecutionPlan() { + @DisplayName("Should send ongoing change in execution when is present in local database") + void shouldSendOngoingChangeInExecutionPlan() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-collection", _001__HappyCreateClientsCollectionChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -263,7 +262,7 @@ void shouldSendOngoingTaskInExecutionPlan() { mockRunnerServer .withClientSubmissionBase(prototypeClientSubmission) .withExecutionPlanRequestsExpectation( - new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseTask("insert-clients", TargetSystemAuditMarkType.APPLIED)), + new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseChange("insert-clients", TargetSystemAuditMarkType.APPLIED)), new ExecutionContinueRequestResponseMock() ).withAuditRequestsExpectation( new AuditRequestExpectation(executionId, "create-clients-collection", APPLIED), @@ -290,7 +289,7 @@ void shouldSendOngoingTaskInExecutionPlan() { // check clients changes mongoDBTestHelper.checkCount(testDatabase.getCollection(CLIENTS_COLLECTION), 1); // check ongoing status - mongoDBTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + mongoDBTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } } diff --git a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBTestHelper.java b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBTestHelper.java index a067c88ad..0cc38f536 100644 --- a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBTestHelper.java +++ b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/MongoDBTestHelper.java @@ -43,24 +43,24 @@ public MongoDBTestHelper(MongoDatabase mongoDatabase) { this.mongoDatabase = mongoDatabase; } - public void insertOngoingExecution(String taskId) { + public void insertOngoingExecution(String changeId) { - MongoCollection onGoingTasksCollection = mongoDatabase.getCollection(CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME); + MongoCollection onGoingChangesCollection = mongoDatabase.getCollection(CommunityPersistenceConstants.DEFAULT_MARKER_STORE_NAME); CollectionInitializator initializer = new CollectionInitializator<>( - new MongoDBSyncCollectionHelper(onGoingTasksCollection), + new MongoDBSyncCollectionHelper(onGoingChangesCollection), () -> new MongoDBSyncDocumentHelper(new Document()), - new String[]{"taskId"} + new String[]{"changeId"} ); initializer.initialize(); - Document filter = new Document("taskId", taskId); + Document filter = new Document("changeId", changeId); - Document newDocument = new Document("taskId", taskId) + Document newDocument = new Document("changeId", changeId) .append("operation", AuditContextBundle.Operation.EXECUTION.toString()); - onGoingTasksCollection.updateOne( + onGoingChangesCollection.updateOne( filter, new Document("$set", newDocument), new com.mongodb.client.model.UpdateOptions().upsert(true)); @@ -77,13 +77,13 @@ public void checkCount(MongoCollection collection, int count) { } public void checkEmptyTargetSystemAudiMarker() { - checkOngoingTask(result -> result == 0); + checkOngoingChange(result -> result == 0); } - public void checkOngoingTask(Predicate predicate) { - MongoCollection onGoingTasksCollection = mongoDatabase.getCollection("flamingockOnGoingTasks"); + public void checkOngoingChange(Predicate predicate) { + MongoCollection onGoingChangesCollection = mongoDatabase.getCollection("flamingockOnGoingChanges"); - long result = onGoingTasksCollection.find() + long result = onGoingChangesCollection.find() .map(MongoDBTestHelper::mapToOnGoingStatus) .into(new HashSet<>()) .size(); @@ -93,7 +93,7 @@ public void checkOngoingTask(Predicate predicate) { public static TargetSystemAuditMark mapToOnGoingStatus(Document document) { TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.valueOf(document.getString("operation")); - return new TargetSystemAuditMark(document.getString("taskId"), operation); + return new TargetSystemAuditMark(document.getString("changeId"), operation); } diff --git a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/PipelineTestHelper.java b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/PipelineTestHelper.java index 1cca0700c..3698512f8 100644 --- a/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/PipelineTestHelper.java +++ b/core/target-systems/flamingock-mongodb-sync-targetsystem/src/test/java/io/flamingock/targetsystem/mongodb/sync/PipelineTestHelper.java @@ -19,9 +19,9 @@ import io.flamingock.api.annotations.TargetSystem; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.PreviewConstructor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import io.flamingock.api.annotations.Change; @@ -74,7 +74,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { Function, ChangeInfo> extractor = infoExtractor; ChangeInfo changeInfo = extractor.apply(trio.getFirst()); @@ -83,8 +83,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -100,7 +100,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio listAll() { Set ongoingStatuses = new HashSet<>(); while (resultSet.next()) { - String taskId = resultSet.getString("change_id"); + String changeId = resultSet.getString("change_id"); AuditContextBundle.Operation operation = AuditContextBundle.Operation.valueOf(resultSet.getString("operation")); - ongoingStatuses.add(new TargetSystemAuditMark(taskId, operation.toOngoingStatusOperation())); + ongoingStatuses.add(new TargetSystemAuditMark(changeId, operation.toOngoingStatusOperation())); } return ongoingStatuses; } catch (SQLException ex) { @@ -90,9 +90,9 @@ public void clearMark(String changeId) { @Override public void mark(TargetSystemAuditMark auditMark) { String sql = dialectHelper.getMarkSqlString(tableName); - Connection connection = txManager.getSessionOrThrow(auditMark.getTaskId()); + Connection connection = txManager.getSessionOrThrow(auditMark.getChangeId()); try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) { - preparedStatement.setString(1, auditMark.getTaskId()); + preparedStatement.setString(1, auditMark.getChangeId()); preparedStatement.setString(2, auditMark.getOperation().toString()); preparedStatement.executeUpdate(); if(!connection.getAutoCommit()) { @@ -107,7 +107,7 @@ public static class Builder { private final DataSource dataSource; private final TransactionManager txManager; private SqlAuditMarkerDialectHelper dialectHelper; - private String tableName = "FLAMINGOCK_ONGOING_TASKS"; + private String tableName = "FLAMINGOCK_ONGOING_CHANGES"; private boolean autoCreate = true; public Builder(DataSource dataSource, TransactionManager txManager) { diff --git a/core/target-systems/flamingock-sql-targetsystem/src/main/java/io/flamingock/targetsystem/sql/SqlTxWrapper.java b/core/target-systems/flamingock-sql-targetsystem/src/main/java/io/flamingock/targetsystem/sql/SqlTxWrapper.java index 75a3bd399..4c5c9fcb6 100644 --- a/core/target-systems/flamingock-sql-targetsystem/src/main/java/io/flamingock/targetsystem/sql/SqlTxWrapper.java +++ b/core/target-systems/flamingock-sql-targetsystem/src/main/java/io/flamingock/targetsystem/sql/SqlTxWrapper.java @@ -19,7 +19,7 @@ import io.flamingock.internal.common.core.error.DatabaseTransactionException; import io.flamingock.internal.core.transaction.TransactionManager; import io.flamingock.internal.core.runtime.ExecutionRuntime; -import io.flamingock.internal.core.task.navigation.step.FailedStep; +import io.flamingock.internal.core.change.navigation.step.FailedStep; import io.flamingock.internal.core.transaction.TransactionWrapper; import io.flamingock.internal.util.log.FlamingockLoggerFactory; import org.slf4j.Logger; diff --git a/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/MySQLTestHelper.java b/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/MySQLTestHelper.java index 5f296b502..df54b249f 100644 --- a/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/MySQLTestHelper.java +++ b/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/MySQLTestHelper.java @@ -24,7 +24,7 @@ public class MySQLTestHelper { private final DataSource dataSource; - private static final String ONGOING_TASKS_TABLE = "FLAMINGOCK_ONGOING_TASKS"; + private static final String ONGOING_CHANGES_TABLE = "FLAMINGOCK_ONGOING_CHANGES"; public MySQLTestHelper(DataSource dataSource) { this.dataSource = dataSource; @@ -58,31 +58,31 @@ public void checkCount(String tableName, int expectedCount) { } } - public void checkOngoingTask(Function predicate) { + public void checkOngoingChange(Function predicate) { try (Connection connection = dataSource.getConnection()) { - String sql = String.format("SELECT COUNT(*) FROM %s", ONGOING_TASKS_TABLE); + String sql = String.format("SELECT COUNT(*) FROM %s", ONGOING_CHANGES_TABLE); try (PreparedStatement stmt = connection.prepareStatement(sql)) { ResultSet rs = stmt.executeQuery(); if (rs.next()) { int count = rs.getInt(1); Assertions.assertTrue(predicate.apply(count), - String.format("Ongoing task count predicate failed for count: %d", count)); + String.format("Ongoing change count predicate failed for count: %d", count)); } } } catch (SQLException e) { Assertions.assertTrue(predicate.apply(0), - "Ongoing task count predicate failed for count: 0 (table doesn't exist)"); + "Ongoing change count predicate failed for count: 0 (table doesn't exist)"); } } - public void insertOngoingExecution(String taskId) { + public void insertOngoingExecution(String changeId) { try (Connection connection = dataSource.getConnection()) { // Create table if it doesn't exist - createOngoingTasksTableIfNotExists(connection); + createOngoingChangesTableIfNotExists(connection); - String sql = String.format("INSERT INTO %s (change_id, operation) VALUES (?, ?)", ONGOING_TASKS_TABLE); + String sql = String.format("INSERT INTO %s (change_id, operation) VALUES (?, ?)", ONGOING_CHANGES_TABLE); try (PreparedStatement stmt = connection.prepareStatement(sql)) { - stmt.setString(1, taskId); + stmt.setString(1, changeId); stmt.setString(2, "EXECUTION"); stmt.executeUpdate(); } @@ -100,18 +100,18 @@ public void dropTable(String tableName) { } public void checkEmptyTargetSystemAudiMarker() { - checkOngoingTask(ongoingCount -> ongoingCount == 0); + checkOngoingChange(ongoingCount -> ongoingCount == 0); } - public void createOngoingTasksTableIfNotExists(Connection connection) throws SQLException { + public void createOngoingChangesTableIfNotExists(Connection connection) throws SQLException { DatabaseMetaData meta = connection.getMetaData(); - ResultSet resultSet = meta.getTables(null, null, ONGOING_TASKS_TABLE, new String[]{"TABLE"}); + ResultSet resultSet = meta.getTables(null, null, ONGOING_CHANGES_TABLE, new String[]{"TABLE"}); if (!resultSet.next()) { String createTableSql = String.format( "CREATE TABLE %s (" + "change_id VARCHAR(255) PRIMARY KEY, " + "operation VARCHAR(50) NOT NULL" + - ")", ONGOING_TASKS_TABLE); + ")", ONGOING_CHANGES_TABLE); try (Statement stmt = connection.createStatement()) { stmt.executeUpdate(createTableSql); } diff --git a/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/PipelineTestHelper.java b/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/PipelineTestHelper.java index ad1c75e9f..43421f4b9 100644 --- a/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/PipelineTestHelper.java +++ b/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/PipelineTestHelper.java @@ -19,9 +19,9 @@ import io.flamingock.api.annotations.TargetSystem; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.preview.PreviewConstructor; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.Pair; import io.flamingock.internal.util.Trio; import io.flamingock.api.annotations.Change; @@ -74,7 +74,7 @@ private static List getParameterTypes(List> second) { @SafeVarargs public static FlamingockMetadata getPreviewPipeline(String stageName, Trio, List>, List>>... changeDefinitions) { - List tasks = Arrays.stream(changeDefinitions) + List changes = Arrays.stream(changeDefinitions) .map(trio -> { Function, ChangeInfo> extractor = infoExtractor; ChangeInfo changeInfo = extractor.apply(trio.getFirst()); @@ -83,8 +83,8 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio changes = new ArrayList<>(); - changes.add(new CodePreviewChange( + List changeList = new ArrayList<>(); + changeList.add(new CodePreviewChange( changeInfo.getChangeId(), changeInfo.getOrder(), changeInfo.getAuthor(), @@ -100,7 +100,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, Trio contain }); sqlTargetSystemAuditMarker = SqlTargetSystemAuditMarker.builder(dataSource, txManager) - .withTableName(ONGOING_TASKS_TABLE) + .withTableName(ONGOING_CHANGES_TABLE) .build(); } private void dropTable() throws SQLException { try (Connection c = dataSource.getConnection(); Statement s = c.createStatement()) { - s.execute("DROP TABLE IF EXISTS " + ONGOING_TASKS_TABLE); + s.execute("DROP TABLE IF EXISTS " + ONGOING_CHANGES_TABLE); } } @@ -163,7 +163,7 @@ static Stream dialectProvider() { @ParameterizedTest(name = "[{index}] dialect={0} - Should add and list two marks successfully") @MethodSource("dialectProvider") - void addOngoingTaskMark(SqlDialect dialect) { + void addOngoingChangeMark(SqlDialect dialect) { JdbcDatabaseContainer container = createContainerForDialect(dialect); Assumptions.assumeTrue(container != null || (dialect != SqlDialect.FIREBIRD && dialect != SqlDialect.INFORMIX), @@ -173,20 +173,20 @@ void addOngoingTaskMark(SqlDialect dialect) { initForDialect(dialect, container); // GIVEN - String taskId1 = "test-task-id1"; - String taskId2 = "test-task-id2"; + String changeId1 = "test-change-id1"; + String changeId2 = "test-change-id2"; TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.ROLLBACK; - TargetSystemAuditMark mark1 = new TargetSystemAuditMark(taskId1, operation); - TargetSystemAuditMark mark2 = new TargetSystemAuditMark(taskId2, operation); + TargetSystemAuditMark mark1 = new TargetSystemAuditMark(changeId1, operation); + TargetSystemAuditMark mark2 = new TargetSystemAuditMark(changeId2, operation); // WHEN - txManager.startSession(taskId1); + txManager.startSession(changeId1); sqlTargetSystemAuditMarker.mark(mark1); - txManager.closeSession(taskId1); - txManager.startSession(taskId2); + txManager.closeSession(changeId1); + txManager.startSession(changeId2); sqlTargetSystemAuditMarker.mark(mark2); - txManager.closeSession(taskId2); + txManager.closeSession(changeId2); Set marks = sqlTargetSystemAuditMarker.listAll(); // THEN @@ -209,7 +209,7 @@ void addOngoingTaskMark(SqlDialect dialect) { @ParameterizedTest(name = "[{index}] dialect={0} - Should remove all marks successfully") @MethodSource("dialectProvider") - void removeOngoingTaskMark(SqlDialect dialect) { + void removeOngoingChangeMark(SqlDialect dialect) { JdbcDatabaseContainer container = createContainerForDialect(dialect); Assumptions.assumeTrue(container != null || (dialect != SqlDialect.FIREBIRD && dialect != SqlDialect.INFORMIX), @@ -219,24 +219,24 @@ void removeOngoingTaskMark(SqlDialect dialect) { initForDialect(dialect, container); // GIVEN - String taskId1 = "test-task-id1"; - String taskId2 = "test-task-id2"; + String changeId1 = "test-change-id1"; + String changeId2 = "test-change-id2"; TargetSystemAuditMarkType operation = TargetSystemAuditMarkType.ROLLBACK; - TargetSystemAuditMark mark1 = new TargetSystemAuditMark(taskId1, operation); - TargetSystemAuditMark mark2 = new TargetSystemAuditMark(taskId2, operation); - txManager.startSession(taskId1); + TargetSystemAuditMark mark1 = new TargetSystemAuditMark(changeId1, operation); + TargetSystemAuditMark mark2 = new TargetSystemAuditMark(changeId2, operation); + txManager.startSession(changeId1); sqlTargetSystemAuditMarker.mark(mark1); - txManager.closeSession(taskId1); - txManager.startSession(taskId2); + txManager.closeSession(changeId1); + txManager.startSession(changeId2); sqlTargetSystemAuditMarker.mark(mark2); - txManager.closeSession(taskId2); + txManager.closeSession(changeId2); Set marks = sqlTargetSystemAuditMarker.listAll(); // WHEN for (TargetSystemAuditMark mark : marks) { - sqlTargetSystemAuditMarker.clearMark(mark.getTaskId()); + sqlTargetSystemAuditMarker.clearMark(mark.getChangeId()); } // THEN diff --git a/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/SqlTargetSystemTest.java b/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/SqlTargetSystemTest.java index 332317640..480236d2c 100644 --- a/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/SqlTargetSystemTest.java +++ b/core/target-systems/flamingock-sql-targetsystem/src/test/java/io/flamingock/targetsystem/sql/SqlTargetSystemTest.java @@ -25,7 +25,7 @@ import io.flamingock.common.test.cloud.MockRunnerServer; import io.flamingock.common.test.cloud.execution.ExecutionContinueRequestResponseMock; import io.flamingock.common.test.cloud.execution.ExecutionPlanRequestResponseMock; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.prototype.PrototypeClientSubmission; import io.flamingock.common.test.cloud.prototype.PrototypeStage; import io.flamingock.internal.util.Trio; @@ -46,7 +46,6 @@ import javax.sql.DataSource; import java.sql.Connection; import java.util.Collections; -import java.util.UUID; import static io.flamingock.cloud.api.vo.CloudAuditStatus.APPLIED; import static io.flamingock.cloud.api.vo.CloudAuditStatus.FAILED; @@ -57,7 +56,7 @@ public class SqlTargetSystemTest { private static final String CLIENTS_TABLE = "client_table"; - private static final String ONGOING_TASKS_TABLE = "flamingock_ongoing_tasks"; + private static final String ONGOING_CHANGES_TABLE = "flamingock_ongoing_changes"; private static DataSource dataSource; private static MySQLTestHelper mysqlTestHelper; @@ -123,7 +122,7 @@ void beforeEach() { void afterEach() throws Exception { mockRunnerServer.stop(); mysqlTestHelper.dropTable(CLIENTS_TABLE); - mysqlTestHelper.dropTable(ONGOING_TASKS_TABLE); + mysqlTestHelper.dropTable(ONGOING_CHANGES_TABLE); } @Test @@ -134,8 +133,8 @@ void happyPath() { PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-table", _001__HappyCreateClientsTableChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-table", _001__HappyCreateClientsTableChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -169,20 +168,20 @@ void happyPath() { mysqlTestHelper.checkTableExists(CLIENTS_TABLE); mysqlTestHelper.checkCount(CLIENTS_TABLE, 1); - mysqlTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + mysqlTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } @Test - @DisplayName("Should keep the ongoing task when task fails") - void failedTasks() { + @DisplayName("Should keep the ongoing change when change fails") + void failedChanges() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-table", _001__UnhappyCreateClientsTableChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-table", _001__UnhappyCreateClientsTableChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__UnhappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -223,15 +222,15 @@ void failedTasks() { @Test @Disabled("adapt when adding cloud support") - @DisplayName("Should send ongoing task in execution when is present in local database") - void shouldSendOngoingTaskInExecutionPlan() { + @DisplayName("Should send ongoing change in execution when is present in local database") + void shouldSendOngoingChangeInExecutionPlan() { String executionId = "execution-1"; String stageName = "stage-1"; PrototypeClientSubmission prototypeClientSubmission = new PrototypeClientSubmission( new PrototypeStage(stageName, 0) - .addTask("create-clients-table", _001__HappyCreateClientsTableChange.class.getName(), "apply", false) - .addTask("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) + .addChange("create-clients-table", _001__HappyCreateClientsTableChange.class.getName(), "apply", false) + .addChange("insert-clients", _002__HappyInsertClientsChange.class.getName(), "apply", true) ); //GIVEN @@ -240,7 +239,7 @@ void shouldSendOngoingTaskInExecutionPlan() { mockRunnerServer .withClientSubmissionBase(prototypeClientSubmission) .withExecutionPlanRequestsExpectation( - new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseTask("insert-clients", TargetSystemAuditMarkType.APPLIED)), + new ExecutionPlanRequestResponseMock(executionId, new MockRequestResponseChange("insert-clients", TargetSystemAuditMarkType.APPLIED)), new ExecutionContinueRequestResponseMock() ).withAuditRequestsExpectation( new AuditRequestExpectation(executionId, "create-clients-table", APPLIED), @@ -265,7 +264,7 @@ void shouldSendOngoingTaskInExecutionPlan() { mysqlTestHelper.checkTableExists(CLIENTS_TABLE); mysqlTestHelper.checkCount(CLIENTS_TABLE, 1); - mysqlTestHelper.checkOngoingTask(ongoingCount -> ongoingCount == 0); + mysqlTestHelper.checkOngoingChange(ongoingCount -> ongoingCount == 0); } } } diff --git a/docs/TASK-STEP-NAVIGATION.md b/docs/CHANGE-STEP-NAVIGATION.md similarity index 87% rename from docs/TASK-STEP-NAVIGATION.md rename to docs/CHANGE-STEP-NAVIGATION.md index 4173b0479..8354c7186 100644 --- a/docs/TASK-STEP-NAVIGATION.md +++ b/docs/CHANGE-STEP-NAVIGATION.md @@ -1,17 +1,17 @@ -# Flamingock Task Step Navigation Flow +# Flamingock Change Step Navigation Flow **Document Version**: 1.0 **Date**: 2025-01-31 **Authors**: Antonio Perez Dieppa **Audience**: New Developers, Architecture Team -## Task Execution Flow Diagram +## Change Execution Flow Diagram -The following Mermaid graph shows how tasks flow through different TaskStep types during execution in the StepNavigator: +The following Mermaid graph shows how changes flow through different ChangeStep types during execution in the StepNavigator: ```mermaid graph TB %% Entry Point - START([Task Execution Request]) --> CHECK_EXECUTED{task.isAlreadyApplied?} + START([Change Execution Request]) --> CHECK_EXECUTED{change.isAlreadyApplied?} %% Already Applied Path CHECK_EXECUTED -->|Yes| ALREADY_APPLIED[CompletedAlreadyAppliedStep] @@ -26,8 +26,8 @@ graph TB EXECUTABLE_STEP --> CHECK_TRANSACTIONAL{isTransactional?} %% Non-Transactional Path - CHECK_TRANSACTIONAL -->|No| EXECUTE_TASK[executeTask] - EXECUTE_TASK --> EXECUTION_OUTCOME{Execution Result} + CHECK_TRANSACTIONAL -->|No| EXECUTE_CHANGE[executeChange] + EXECUTE_CHANGE --> EXECUTION_OUTCOME{Execution Result} %% Transactional Path CHECK_TRANSACTIONAL -->|Yes| CLOUD_CHECK{Cloud Edition?} @@ -35,7 +35,7 @@ graph TB CLOUD_CHECK -->|No| TRANSACTION_WRAPPER[TransactionWrapper] SET_ONGOING --> TRANSACTION_WRAPPER - TRANSACTION_WRAPPER --> EXECUTE_IN_TRANSACTION[executeTask in Transaction] + TRANSACTION_WRAPPER --> EXECUTE_IN_TRANSACTION[executeChange in Transaction] EXECUTE_IN_TRANSACTION --> TRANSACTION_OUTCOME{Transaction Result} %% Execution Outcomes @@ -110,7 +110,7 @@ graph TB class TRANSACTION_OUTCOME,SUCCESS_AUDIT_RESULT,FAILED_AUDIT_RESULT decisionClass class ROLLBACK_CHECK,ROLLBACK_TYPE,ROLLBACK_OUTCOME decisionClass - class AUDIT_START,EXECUTE_TASK,AUDIT_SUCCESS,AUDIT_FAILED processClass + class AUDIT_START,EXECUTE_CHANGE,AUDIT_SUCCESS,AUDIT_FAILED processClass class SET_ONGOING,CLEAN_ONGOING,TRANSACTION_WRAPPER,EXECUTE_IN_TRANSACTION processClass class AUDIT_SUCCESS_TX,MANUAL_ROLLBACK_LOOP,MANUAL_ROLLBACK processClass class AUDIT_MANUAL_ROLLBACK,AUDIT_AUTO_ROLLBACK processClass @@ -121,9 +121,9 @@ graph TB ## Key Components Explanation ### Entry Point Logic -- **All task execution starts** with checking `task.isAlreadyApplied()` -- **No alternative entry points** - failed tasks that continue still go through StartStep -- **Pre-execution filtering** determines which tasks reach the StepNavigator +- **All change execution starts** with checking `change.isAlreadyApplied()` +- **No alternative entry points** - failed changes that continue still go through StartStep +- **Pre-execution filtering** determines which changes reach the StepNavigator ### Step Transitions 1. **StartStep** → **ExecutableStep** (via `start()` method) @@ -131,7 +131,7 @@ graph TB 3. **ExecutionStep** → **AfterExecutionAuditStep** variants (via `applyAuditResult()`) ### Transaction Handling -- **Transactional tasks** go through `TransactionWrapper` +- **Transactional changes** go through `TransactionWrapper` - **Cloud edition** tracks ongoing status during execution - **Auto-rollback** occurs for transactional failures - **Manual rollback** handles non-transactional failures @@ -144,7 +144,7 @@ graph TB ### Completion States - **CompletedSuccessStep**: Successful execution and audit -- **CompletedAlreadyAppliedStep**: Task was already applied +- **CompletedAlreadyAppliedStep**: Change was already applied - **CompletedFailedManualRollback**: Failed with manual rollback - **CompleteAutoRolledBackStep**: Failed with automatic rollback diff --git a/docs/CHANGE_HIERARCHY.md b/docs/CHANGE_HIERARCHY.md new file mode 100644 index 000000000..5a503f34d --- /dev/null +++ b/docs/CHANGE_HIERARCHY.md @@ -0,0 +1,91 @@ +# Change Hierarchy + +Static class hierarchy rooted at `ChangeDescriptor`. Every change in Flamingock — from the parsed YAML/annotation `Preview`, to the validated `Loaded` form, to the runtime `Executable` instance — is a `ChangeDescriptor`. The tree below shows how the three phases and their **Code** vs **Template** branches relate by inheritance. + +## Diagram + +```mermaid +classDiagram + class ChangeDescriptor { + <> + } + class ExecutableChange { + <> + } + class AbstractChangeDescriptor + class AbstractPreviewChange + class CodePreviewChange + class TemplatePreviewChange + class AbstractLoadedChange + class AbstractReflectionLoadedChange + class CodeLoadedChange + class AbstractTemplateLoadedChange + class SimpleTemplateLoadedChange + class MultiStepTemplateLoadedChange + class AbstractExecutableChange + class ReflectionExecutableChange + class CodeExecutableChange + class AbstractTemplateExecutableChange + class SimpleTemplateExecutableChange + class SteppableTemplateExecutableChange + + ChangeDescriptor <|-- AbstractChangeDescriptor + ChangeDescriptor <|-- ExecutableChange + + AbstractChangeDescriptor <|-- AbstractPreviewChange + AbstractChangeDescriptor <|-- AbstractLoadedChange + + AbstractPreviewChange <|-- CodePreviewChange + AbstractPreviewChange <|-- TemplatePreviewChange + + AbstractLoadedChange <|-- AbstractReflectionLoadedChange + AbstractReflectionLoadedChange <|-- CodeLoadedChange + AbstractReflectionLoadedChange <|-- AbstractTemplateLoadedChange + AbstractTemplateLoadedChange <|-- SimpleTemplateLoadedChange + AbstractTemplateLoadedChange <|-- MultiStepTemplateLoadedChange + + ExecutableChange <|.. AbstractExecutableChange + AbstractExecutableChange <|-- ReflectionExecutableChange + ReflectionExecutableChange <|-- CodeExecutableChange + ReflectionExecutableChange <|-- AbstractTemplateExecutableChange + AbstractTemplateExecutableChange <|-- SimpleTemplateExecutableChange + AbstractTemplateExecutableChange <|-- SteppableTemplateExecutableChange +``` + +The **Preview** and **Loaded** branches share `AbstractChangeDescriptor`. The **Executable** branch is a parallel hierarchy: it reaches `ChangeDescriptor` via the `ExecutableChange` interface (not via `AbstractChangeDescriptor`), so it does not share implementation with the other two phases. + +## Class locations + +### Root +| Class | Path | +|-------|------| +| `ChangeDescriptor` | `core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/ChangeDescriptor.java` | +| `AbstractChangeDescriptor` | `core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/change/AbstractChangeDescriptor.java` | + +### Preview phase +| Class | Path | +|-------|------| +| `AbstractPreviewChange` | `core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/AbstractPreviewChange.java` | +| `CodePreviewChange` | `core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/CodePreviewChange.java` | +| `TemplatePreviewChange` | `core/flamingock-core-commons/src/main/java/io/flamingock/internal/common/core/preview/TemplatePreviewChange.java` | + +### Loaded phase +| Class | Path | +|-------|------| +| `AbstractLoadedChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractLoadedChange.java` | +| `AbstractReflectionLoadedChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractReflectionLoadedChange.java` | +| `CodeLoadedChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/CodeLoadedChange.java` | +| `AbstractTemplateLoadedChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/AbstractTemplateLoadedChange.java` | +| `SimpleTemplateLoadedChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/SimpleTemplateLoadedChange.java` | +| `MultiStepTemplateLoadedChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/loaded/MultiStepTemplateLoadedChange.java` | + +### Executable phase +| Class | Path | +|-------|------| +| `ExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ExecutableChange.java` | +| `AbstractExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractExecutableChange.java` | +| `ReflectionExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/ReflectionExecutableChange.java` | +| `CodeExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/CodeExecutableChange.java` | +| `AbstractTemplateExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/AbstractTemplateExecutableChange.java` | +| `SimpleTemplateExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SimpleTemplateExecutableChange.java` | +| `SteppableTemplateExecutableChange` | `core/flamingock-core/src/main/java/io/flamingock/internal/core/change/executable/SteppableTemplateExecutableChange.java` | diff --git a/docs/CLI_EXECUTION_FEATURE_PLAN.md b/docs/CLI_EXECUTION_FEATURE_PLAN.md index 642c25f42..9e40c5a65 100644 --- a/docs/CLI_EXECUTION_FEATURE_PLAN.md +++ b/docs/CLI_EXECUTION_FEATURE_PLAN.md @@ -189,7 +189,7 @@ dependencies { testImplementation("org.mockito:mockito-core:4.11.0") } -tasks.jar { +changes.jar { manifest { attributes( "Main-Class" to "io.flamingock.cli.executor.FlamingockExecutorCli", @@ -199,13 +199,13 @@ tasks.jar { } } -tasks.shadowJar { +changes.shadowJar { archiveBaseName.set("flamingock-cli") archiveClassifier.set("uber") mergeServiceFiles() } -tasks.test { +changes.test { useJUnitPlatform() } ``` @@ -1014,7 +1014,7 @@ import java.lang.annotation.Target; * {@code * @Component * @ExcludeFromCliMode - * public class MyScheduledTasks { + * public class MyScheduledChanges { * @Scheduled(fixedRate = 5000) * public void process() { ... } * } @@ -1057,7 +1057,7 @@ public @interface ExcludeFromCliMode { | Aspect | Description | Recommended Solution | |-------------------------------------|----------------------------------------------------------|------------------------------------------------------| | **Other runners don't execute** | External ApplicationRunner/CommandLineRunner may execute | Dedicated module or `@ExcludeFromCliMode` | -| **Scheduling disabled** | `@Scheduled` tasks may execute | `@Profile("!flamingock-cli")` on `@EnableScheduling` | +| **Scheduling disabled** | `@Scheduled` changes may execute | `@Profile("!flamingock-cli")` on `@EnableScheduling` | | **Listeners disabled** | Kafka/RabbitMQ listeners may connect | `auto-startup: false` in profile | | **`@PostConstruct` / constructors** | Execute if bean is created | Dedicated module or conditional bean | | **Initialization logic** | Code in constructors/InitializingBean | Dedicated module | diff --git a/docs/EXECUTION_FLOW_GUIDE.md b/docs/EXECUTION_FLOW_GUIDE.md index dfdd33d34..8affe08d1 100644 --- a/docs/EXECUTION_FLOW_GUIDE.md +++ b/docs/EXECUTION_FLOW_GUIDE.md @@ -9,7 +9,7 @@ This guide explains Flamingock's complete execution journey from builder initialization through pipeline completion. It focuses on the architectural decisions, component interactions, and execution flow concepts that developers need to understand when working with the system. -For detailed task-level navigation and step transitions, see **[Task Step Navigation Guide](TASK-STEP-NAVIGATION.md)**. +For detailed change-level navigation and step transitions, see **[Change Step Navigation Guide](CHANGE-STEP-NAVIGATION.md)**. For module architecture and dependencies, see **[Architecture Overview](ARCHITECTURE_OVERVIEW.md)**. ## Complete Execution Flow Diagram @@ -39,7 +39,7 @@ graph TB InitPlugins --> BuildHierarchical[4. Build Hierarchical Context
⚠️ CRITICAL: External dependencies
merged before AuditStore init] BuildHierarchical --> InitAuditStore[5. Initialize AuditStore
• Database-specific setup
• Requires full context] InitAuditStore --> GetEngine[6. Get Connection Engine
• Audit writer registration] - GetEngine --> BuildPipeline[7. Build Pipeline
• Load stages and tasks
• Apply filters] + GetEngine --> BuildPipeline[7. Build Pipeline
• Load stages and changes
• Apply filters] BuildPipeline --> CreateRunner[8. Create PipelineRunner
• All components assembled] end @@ -63,11 +63,11 @@ graph TB StageExecution --> StageLoop{For Each Stage
in Execution Plan} StageLoop --> StageStart[Stage Started Event] - StageStart --> TaskProcessing[Task Processing
• Sequential or Parallel
• StepNavigator per task] + StageStart --> ChangeProcessing[Change Processing
• Sequential or Parallel
• StepNavigator per change] - TaskProcessing --> TaskResults{All Tasks
Successful?} - TaskResults -->|No| StageFailure[Stage Failed Event
• Summary with failure details] - TaskResults -->|Yes| StageSuccess[Stage Completed Event
• Summary with execution stats] + ChangeProcessing --> ChangeResults{All Changes
Successful?} + ChangeResults -->|No| StageFailure[Stage Failed Event
• Summary with failure details] + ChangeResults -->|Yes| StageSuccess[Stage Completed Event
• Summary with execution stats] StageSuccess --> MoreStages{More Stages
to Execute?} MoreStages -->|Yes| StageLoop @@ -76,11 +76,11 @@ graph TB StageFailure --> PipelineFailure[Pipeline Failed Event] end - %% TASK EXECUTION DETAIL - subgraph TaskDetail["🎯 Task Execution Detail (per task)"] + %% CHANGE EXECUTION DETAIL + subgraph ChangeDetail["🎯 Change Execution Detail (per change)"] direction TB - TaskStart([Task Execution Request]) --> AlreadyApplied{Already
Applied?} + ChangeStart([Change Execution Request]) --> AlreadyApplied{Already
Applied?} AlreadyApplied -->|Yes| MarkApplied[Mark as Already Applied] AlreadyApplied -->|No| StartStep[Create StartStep] @@ -90,18 +90,18 @@ graph TB TransactionDecision -->|Transactional| TransactionPath[Transactional Execution
• Cloud: Set ongoing status
• Database transaction wrapper
• Auto-rollback on failure] TransactionDecision -->|Non-Transactional| DirectPath[Direct Execution
• No transaction wrapper
• Manual rollback on failure] - TransactionPath --> TaskExecution[Execute Task Logic] - DirectPath --> TaskExecution + TransactionPath --> ChangeExecution[Execute Change Logic] + DirectPath --> ChangeExecution - TaskExecution --> ExecutionResult{Execution
Result} + ChangeExecution --> ExecutionResult{Execution
Result} ExecutionResult -->|Success| AuditSuccess[Audit Successful Execution
• Record completion
• Update audit trail] ExecutionResult -->|Failure| RollbackProcess[Rollback Process
• Auto for transactional
• Manual for non-transactional] - AuditSuccess --> TaskComplete[Task Completed Successfully] + AuditSuccess --> ChangeComplete[Change Completed Successfully] RollbackProcess --> AuditRollback[Audit Rollback Operations] - AuditRollback --> TaskFailed[Task Failed with Rollback] + AuditRollback --> ChangeFailed[Change Failed with Rollback] - MarkApplied --> TaskComplete + MarkApplied --> ChangeComplete end %% COMPLETION PHASE @@ -121,16 +121,16 @@ graph TB %% Apply Styles class Entry,BuilderCreated,ConfigBuilder,BuildCall builderClass class CreateRunner,RunnerRun,PipelineStart,ExecutionLoop,PlannerCheck orchestrationClass - class StageExecution,StageLoop,StageStart,TaskProcessing,TaskStart,TaskExecution executionClass - class CriticalOrder,ExecutionRequired,LockSuccess,TaskResults,MoreStages,AlreadyApplied,TransactionDecision,ExecutionResult decisionClass + class StageExecution,StageLoop,StageStart,ChangeProcessing,ChangeStart,ChangeExecution executionClass + class CriticalOrder,ExecutionRequired,LockSuccess,ChangeResults,MoreStages,AlreadyApplied,TransactionDecision,ExecutionResult decisionClass class AuditStart,AuditSuccess,AuditRollback,AuditAutoRollback auditClass - class PipelineComplete,ExecutionEnd,TaskComplete,TaskFailed terminalClass + class PipelineComplete,ExecutionEnd,ChangeComplete,ChangeFailed terminalClass %% Connect the subgraphs CreateRunner -.-> RunnerRun - TaskProcessing -.-> TaskStart - TaskComplete -.-> TaskResults - TaskFailed -.-> TaskResults + ChangeProcessing -.-> ChangeStart + ChangeComplete -.-> ChangeResults + ChangeFailed -.-> ChangeResults PipelineComplete -.-> PipelineCompleteEvent PipelineFailure -.-> PipelineFailedEvent ``` @@ -151,7 +151,7 @@ The builder pattern follows a **strictly ordered initialization sequence** that 4. **Hierarchical Context Building**: This is the **most critical step** - external dependency sources are merged 5. **AuditStore Initialization**: Database-specific auditStores are initialized with the complete context 6. **Engine Setup**: Connection engines and audit writers are configured -7. **Pipeline Building**: Stages and tasks are loaded with applied filters +7. **Pipeline Building**: Stages and changes are loaded with applied filters 8. **Runner Creation**: The final executable runner is assembled #### Why Order Matters @@ -188,13 +188,13 @@ Throughout execution, Flamingock publishes events at both pipeline and stage lev - **Framework integration** (Spring application events) - **Custom business logic** triggered by execution milestones -### Phase 3: Stage and Task Processing 🎯 +### Phase 3: Stage and Change Processing 🎯 -Each stage in the execution plan is processed by the `StageExecutor`, which handles both sequential and parallel task execution modes. +Each stage in the execution plan is processed by the `StageExecutor`, which handles both sequential and parallel change execution modes. -#### Task Execution Context +#### Change Execution Context -For each task, a complete execution context is assembled: +For each change, a complete execution context is assembled: - **Dependency injection context** with database connections and business objects - **Audit writer** for execution tracking - **Lock reference** for concurrency control @@ -204,12 +204,12 @@ For each task, a complete execution context is assembled: #### Sequential vs. Parallel Processing Stage configuration determines processing mode: -- **Sequential**: Tasks execute one after another, typical for data migrations with dependencies -- **Parallel**: Tasks execute concurrently, suitable for independent operations +- **Sequential**: Changes execute one after another, typical for data migrations with dependencies +- **Parallel**: Changes execute concurrently, suitable for independent operations #### StepNavigator Orchestration -Each task is managed by a `StepNavigator` instance that handles the complete task lifecycle. For detailed information about the step-by-step navigation process, see **[Task Step Navigation Guide](TASK-STEP-NAVIGATION.md)**. +Each change is managed by a `StepNavigator` instance that handles the complete change lifecycle. For detailed information about the step-by-step navigation process, see **[Change Step Navigation Guide](CHANGE-STEP-NAVIGATION.md)**. ### Phase 4: Transaction and Rollback Management 💾 @@ -217,9 +217,9 @@ Flamingock's transaction handling is sophisticated and context-aware. #### Transaction Decision Logic -A task executes within a transaction when **all** conditions are met: +A change executes within a transaction when **all** conditions are met: 1. **TransactionWrapper available** - AuditStore supports transactions -2. **Task configured as transactional** - `@Change(transactional = true)` (default) +2. **Change configured as transactional** - `@Change(transactional = true)` (default) 3. **Database supports transactions** - Not all databases/operations are transactional #### Rollback Strategies @@ -323,7 +323,7 @@ Monitoring systems integrate through the **event publishing system**: ### When Extending Functionality -**Plugin System**: Leverage the plugin system to contribute task filters, event publishers, or dependency contexts. +**Plugin System**: Leverage the plugin system to contribute change filters, event publishers, or dependency contexts. **Template System**: Create custom templates for common patterns in your organization. diff --git a/docs/LOGGING_EXAMPLES.md b/docs/LOGGING_EXAMPLES.md index b72ce19df..0c295b3f6 100644 --- a/docs/LOGGING_EXAMPLES.md +++ b/docs/LOGGING_EXAMPLES.md @@ -11,7 +11,7 @@ This document shows real-world examples of what users will see in their logs dur INFO - Starting Flamingock process successfully DEBUG - Starting lock refresh daemon [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=3 execution_id=exec-001] +INFO - Starting stage execution [stage=system changes=3 execution_id=exec-001] DEBUG - Starting change execution [change=create-user-table] DEBUG - Starting SQL transaction [isolation=READ_COMMITTED connection=user@jdbc:mysql://localhost/db] @@ -34,14 +34,14 @@ DEBUG - Committing successful SQL transaction [duration=80ms] DEBUG - SQL transaction commit completed successfully [duration=80ms] DEBUG - Audit operation completed successfully [change=seed-admin-user operation=execution] -INFO - Stage execution completed successfully [stage=system duration=1.2s tasks=3] +INFO - Stage execution completed successfully [stage=system duration=1.2s changes=3] DEBUG - Lock refresh daemon stopped [lock_key=pipeline-process] INFO - Finished Flamingock process successfully Stage: system -Task: create-user-table -Task: add-user-indexes -Task: seed-admin-user +Change: create-user-table +Change: add-user-indexes +Change: seed-admin-user ``` --- @@ -55,7 +55,7 @@ Task: seed-admin-user INFO - Starting Flamingock process successfully DEBUG - Starting lock refresh daemon [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=3 execution_id=exec-002] +INFO - Starting stage execution [stage=system changes=3 execution_id=exec-002] DEBUG - Starting change execution [change=create-user-table] DEBUG - Starting SQL transaction [isolation=READ_COMMITTED connection=user@jdbc:mysql://localhost/db] @@ -139,7 +139,7 @@ INFO - Finished Flamingock process successfully INFO - Starting Flamingock process successfully DEBUG - Starting lock refresh daemon [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=4 execution_id=exec-003] +INFO - Starting stage execution [stage=system changes=4 execution_id=exec-003] DEBUG - Starting change execution [change=create-schema] DEBUG - Starting SQL transaction [isolation=READ_COMMITTED connection=user@jdbc:mysql://localhost/db] @@ -187,7 +187,7 @@ Caused by: java.io.IOException: Permission denied: /etc/app/config.properties INFO - Starting Flamingock process successfully DEBUG - Starting lock refresh daemon [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=2 execution_id=exec-004] +INFO - Starting stage execution [stage=system changes=2 execution_id=exec-004] DEBUG - Starting change execution [change=create-user-collection] DEBUG - Starting MongoDB transaction [connection=session_507f1f77bcf86cd799439011] @@ -226,7 +226,7 @@ Caused by: com.mongodb.MongoWriteException: Document failed validation INFO - Starting Flamingock process successfully DEBUG - Starting lock refresh daemon [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=2 execution_id=exec-005] +INFO - Starting stage execution [stage=system changes=2 execution_id=exec-005] DEBUG - Starting change execution [change=create-user-table] DEBUG - Starting DynamoDB transaction [connection=DynamoDB Enhanced Client] @@ -284,7 +284,7 @@ io.flamingock.internal.common.core.error.TargetSystemException: Target system 'p INFO - Starting Flamingock process successfully DEBUG - Starting lock refresh daemon [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=1 execution_id=exec-006] +INFO - Starting stage execution [stage=system changes=1 execution_id=exec-006] DEBUG - Starting change execution [change=critical-schema-change] DEBUG - Starting SQL transaction [isolation=SERIALIZABLE connection=admin@jdbc:mysql://prod/db] @@ -322,10 +322,10 @@ TRACE - Lock daemon refreshing lock [lock_key=pipeline-process] TRACE - Lock daemon sleeping [lock_key=pipeline-process expires_at=2024-01-15T10:35:00 sleep_until=2024-01-15T10:30:00 sleep_duration=5.0m] TRACE - Lock daemon refreshing lock [lock_key=pipeline-process] -INFO - Starting stage execution [stage=system tasks=1 execution_id=exec-007] +INFO - Starting stage execution [stage=system changes=1 execution_id=exec-007] DEBUG - Starting change execution [change=simple-change] INFO - Change execution completed successfully [change=simple-change duration=200ms] -INFO - Stage execution completed successfully [stage=system duration=250ms tasks=1] +INFO - Stage execution completed successfully [stage=system duration=250ms changes=1] TRACE - Lock daemon detected expired lock [expires_at=2024-01-15T10:30:00 lock_key=pipeline-process] DEBUG - Lock refresh daemon stopped [lock_key=pipeline-process] diff --git a/docs/WORKFLOW_RELEASE_DOCUMENTATION.md b/docs/WORKFLOW_RELEASE_DOCUMENTATION.md index 256f5c93c..83f9f7f2f 100644 --- a/docs/WORKFLOW_RELEASE_DOCUMENTATION.md +++ b/docs/WORKFLOW_RELEASE_DOCUMENTATION.md @@ -186,7 +186,7 @@ export JRELEASER_GPG_PASSPHRASE="your_passphrase" 2. **Copy artifacts to jReleaser directory:** - The `copyReleaseFiles` task (automatically executed as a dependency of `jreleaserRelease`) copies files from: + The `copyReleaseFiles` change (automatically executed as a dependency of `jreleaserRelease`) copies files from: - **Source:** `cli/flamingock-cli/build/distributions/` - **Destination:** `build/jreleaser/distributions/` @@ -296,7 +296,7 @@ rm -rf */build/staging-deploy/ ./gradlew clean ``` -### 9. Advanced jReleaser Tasks +### 9. Advanced jReleaser Changes ```bash # Assemble all distributions @@ -315,14 +315,14 @@ rm -rf */build/staging-deploy/ ./gradlew jreleaserJsonSchema --stacktrace ``` -### 10. Verify Task Dependencies +### 10. Verify Change Dependencies ```bash -# View dependency tree of a task +# View dependency tree of a change ./gradlew jreleaserRelease --dry-run --stacktrace -# View all available jReleaser tasks -./gradlew tasks --group=jreleaser +# View all available jReleaser changes +./gradlew changes --group=jreleaser ``` ### 11. Diagnostic Commands diff --git a/e2e/core-e2e/src/test/java/io/flamingock/core/e2e/AuditPersistenceE2ETest.java b/e2e/core-e2e/src/test/java/io/flamingock/core/e2e/AuditPersistenceE2ETest.java index a237dfbca..7dd77ba31 100644 --- a/e2e/core-e2e/src/test/java/io/flamingock/core/e2e/AuditPersistenceE2ETest.java +++ b/e2e/core-e2e/src/test/java/io/flamingock/core/e2e/AuditPersistenceE2ETest.java @@ -203,7 +203,7 @@ void testBasicAuditFieldVariations() { // Then - Verify each change has correct audit characteristics using unified approach List auditEntriesSorted = auditHelper.getAuditEntriesSorted(); - auditEntriesSorted.forEach(c-> System.out.println("id: " + c.getTaskId() + ", state: " + c.getState() + ", time: " +c.getCreatedAt())); + auditEntriesSorted.forEach(c-> System.out.println("id: " + c.getChangeId() + ", state: " + c.getState() + ", time: " +c.getCreatedAt())); auditHelper.verifyAuditSequenceStrict( // First change (SimpleNonTransactionalChange) - STARTED & APPLIED diff --git a/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/MongockImportChange.java b/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/MongockImportChange.java index 2cdd278cf..d5c5e4892 100644 --- a/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/MongockImportChange.java +++ b/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/MongockImportChange.java @@ -62,7 +62,7 @@ public void importHistory(@Named("change.targetSystem.id") String targetSystemId legacyHistory.forEach(auditEntryFromOrigin -> { //This is the changeId present in the pipeline. If it's a system change or '..._before' won't appear AuditEntry auditEntryWithStageId = auditEntryFromOrigin.copyWithNewIdAndStageId( - pipelineHelper.getStorableTaskId(auditEntryFromOrigin), + pipelineHelper.getStorableChangeId(auditEntryFromOrigin), pipelineHelper.getStageId(auditEntryFromOrigin)); auditWriter.writeEntry(auditEntryWithStageId); }); diff --git a/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/internal/preview/builder/MongockCodePreviewChangeHelper.java b/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/internal/preview/builder/MongockCodePreviewChangeHelper.java index 7d8eb4f1c..2dcf5c69c 100644 --- a/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/internal/preview/builder/MongockCodePreviewChangeHelper.java +++ b/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/internal/preview/builder/MongockCodePreviewChangeHelper.java @@ -21,8 +21,8 @@ import io.flamingock.internal.common.core.preview.CodePreviewChange; import io.flamingock.internal.common.core.preview.PreviewConstructor; import io.flamingock.internal.common.core.preview.PreviewMethod; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.util.ReflectionUtil; import io.mongock.api.annotations.BeforeExecution; import io.mongock.api.annotations.ChangeUnit; @@ -40,7 +40,6 @@ import javax.lang.model.type.TypeMirror; import java.lang.annotation.Annotation; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; diff --git a/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/processor/MongockAnnotationProcessorPlugin.java b/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/processor/MongockAnnotationProcessorPlugin.java index 1df06f4ff..e2ac55153 100644 --- a/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/processor/MongockAnnotationProcessorPlugin.java +++ b/legacy/mongock-support/src/main/java/io/flamingock/support/mongock/processor/MongockAnnotationProcessorPlugin.java @@ -24,10 +24,10 @@ import io.flamingock.internal.common.core.preview.CodePreviewChange; import io.flamingock.internal.common.core.preview.PreviewConstructor; import io.flamingock.internal.common.core.preview.PreviewMethod; -import io.flamingock.internal.common.core.preview.builder.CodePreviewTaskBuilder; +import io.flamingock.internal.common.core.preview.builder.CodePreviewChangeBuilder; import io.flamingock.internal.common.core.processor.ConfigurationPropertiesProvider; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import io.flamingock.internal.common.core.util.ConfigValueParser; import io.flamingock.internal.common.core.util.LoggerPreProcessor; import io.flamingock.internal.core.external.targets.TargetSystemManager; @@ -104,7 +104,7 @@ public Map getConfigurationProperties() { private CodePreviewChange getImporterChange(String targetSystemId) { - CodePreviewTaskBuilder builder = CodePreviewTaskBuilder.instance(); + CodePreviewChangeBuilder builder = CodePreviewChangeBuilder.instance(); builder.setId("migration-mongock-to-flamingock-community"); builder.setOrder("00100"); builder.setAuthor("flamingock-team"); diff --git a/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootPlugin.java b/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootPlugin.java index 4f4292bc4..9d4a3e9f3 100644 --- a/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootPlugin.java +++ b/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootPlugin.java @@ -27,7 +27,7 @@ import io.flamingock.internal.core.event.model.IStageIgnoredEvent; import io.flamingock.internal.core.event.model.IStageStartedEvent; import io.flamingock.internal.common.core.context.ContextResolver; -import io.flamingock.internal.core.task.filter.TaskFilter; +import io.flamingock.internal.core.change.filter.ChangeFilter; import io.flamingock.springboot.event.SpringPipelineCompletedEvent; import io.flamingock.springboot.event.SpringPipelineFailedEvent; import io.flamingock.springboot.event.SpringPipelineIgnoredEvent; @@ -93,7 +93,7 @@ public Optional getDependencyContext() { } @Override - public List getTaskFilters() { + public List getChangeFilters() { if (applicationContext != null) { String[] activeProfiles = SpringbootUtil.getActiveProfiles(applicationContext); return Collections.singletonList(new SpringbootProfileFilter(activeProfiles)); diff --git a/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootProfileFilter.java b/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootProfileFilter.java index 38394680f..e6843af26 100644 --- a/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootProfileFilter.java +++ b/platform-plugins/flamingock-springboot-integration/src/main/java/io/flamingock/springboot/SpringbootProfileFilter.java @@ -15,18 +15,18 @@ */ package io.flamingock.springboot; -import io.flamingock.internal.core.task.filter.TaskFilter; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractReflectionLoadedTask; -import io.flamingock.internal.core.task.loaded.AbstractTemplateLoadedChange; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; +import io.flamingock.internal.core.change.filter.ChangeFilter; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractReflectionLoadedChange; +import io.flamingock.internal.core.change.loaded.AbstractTemplateLoadedChange; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; import org.springframework.context.annotation.Profile; import java.util.Arrays; import java.util.Collections; import java.util.List; -public class SpringbootProfileFilter implements TaskFilter { +public class SpringbootProfileFilter implements ChangeFilter { private final List activeProfiles; @@ -39,16 +39,16 @@ private static boolean isNegativeProfile(String profile) { } @Override - public boolean filter(AbstractLoadedTask descriptor) { - if (AbstractReflectionLoadedTask.class.isAssignableFrom(descriptor.getClass())) { - return filter((AbstractReflectionLoadedTask) descriptor); + public boolean filter(AbstractLoadedChange descriptor) { + if (AbstractReflectionLoadedChange.class.isAssignableFrom(descriptor.getClass())) { + return filter((AbstractReflectionLoadedChange) descriptor); } else { throw new RuntimeException("Filter cannot be applied to descriptor: " + descriptor.getClass().getSimpleName()); } } - private boolean filter(AbstractReflectionLoadedTask reflectionDescriptor) { + private boolean filter(AbstractReflectionLoadedChange reflectionDescriptor) { if (AbstractTemplateLoadedChange.class.isAssignableFrom(reflectionDescriptor.getClass())) { return filterTemplateChange((AbstractTemplateLoadedChange) reflectionDescriptor); @@ -57,7 +57,7 @@ private boolean filter(AbstractReflectionLoadedTask reflectionDescriptor) { } else { String message = String.format( - "Non-Filterable task[%s]: %s", + "Non-Filterable change[%s]: %s", reflectionDescriptor.getImplementationClass(), reflectionDescriptor.getClass()); throw new RuntimeException(message); @@ -75,13 +75,13 @@ private boolean filterCodeChange(CodeLoadedChange reflectionDescriptor) { if (!sourceClass.isAnnotationPresent(Profile.class)) { return true; // no-profiled changeset always matches } - List taskProfile = Arrays.asList(sourceClass.getAnnotation(Profile.class).value()); - return filterProfiles(taskProfile); + List changeProfile = Arrays.asList(sourceClass.getAnnotation(Profile.class).value()); + return filterProfiles(changeProfile); } - private boolean filterProfiles(List taskProfile) { - boolean taskHasAtLeastOneProfileApplied = false; - for (String profile : taskProfile) { + private boolean filterProfiles(List changeProfile) { + boolean changeHasAtLeastOneProfileApplied = false; + for (String profile : changeProfile) { if ((profile == null || "".equals(profile))) { continue; } @@ -90,13 +90,13 @@ private boolean filterProfiles(List taskProfile) { return false; } } else { - taskHasAtLeastOneProfileApplied = true; + changeHasAtLeastOneProfileApplied = true; if (activeProfiles.contains(profile)) { return true; } } } - return !taskHasAtLeastOneProfileApplied; + return !changeHasAtLeastOneProfileApplied; } private boolean containsNegativeProfile(List activeProfiles, String profile) { diff --git a/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterCodeTaskTest.java b/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterCodeChangeTest.java similarity index 83% rename from platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterCodeTaskTest.java rename to platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterCodeChangeTest.java index fb2c672ee..f26a20745 100644 --- a/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterCodeTaskTest.java +++ b/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterCodeChangeTest.java @@ -17,8 +17,8 @@ import io.flamingock.api.annotations.Apply; import io.flamingock.api.annotations.Change; -import io.flamingock.internal.core.task.loaded.CodeLoadedChange; -import io.flamingock.internal.core.task.loaded.LoadedTaskBuilder; +import io.flamingock.internal.core.change.loaded.CodeLoadedChange; +import io.flamingock.internal.core.change.loaded.LoadedChangeBuilder; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Profile; @@ -26,70 +26,70 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -class SpringProfileFilterCodeTaskTest { +class SpringProfileFilterCodeChangeTest { @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[] and taskProfiles=[]") + @DisplayName("SHOULD return true WHEN activeProfiles=[] and changeProfiles=[]") void trueIfActiveProfilesEmptyAndNotAnnotated() { assertTrue(new SpringbootProfileFilter().filter(getCodeLoadedChange(_000__NotAnnotated.class))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and taskProfiles=[P1]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and changeProfiles=[P1]") void trueIfActiveProfilesAndAnnotatedWhenMatched() { assertTrue(new SpringbootProfileFilter("P1").filter(getCodeLoadedChange(_001__P1.class))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P1,P2] and taskProfiles=[P1]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P1,P2] and changeProfiles=[P1]") void trueIfActiveProfilesContainAnnotatedProfile() { assertTrue(new SpringbootProfileFilter("P1", "P2").filter(getCodeLoadedChange(_001__P1.class))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and taskProfiles=[P1,P2]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and changeProfiles=[P1,P2]") void trueIfAnnotatedProfilesContainActiveProfile() { assertTrue(new SpringbootProfileFilter("P1").filter(getCodeLoadedChange(_003__P1AndP2.class))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P2] and taskProfiles=[!P1]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P2] and changeProfiles=[!P1]") void trueIfAnnotatedProfileIsNegativeP1AndActiveProfileIsP2() { assertTrue(new SpringbootProfileFilter("P2").filter(getCodeLoadedChange(_002__NotP1.class))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[] and taskProfiles=[!P1]") - void trueIfActiveProfileEmptyAndTaskProfileNegativeP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[] and changeProfiles=[!P1]") + void trueIfActiveProfileEmptyAndChangeProfileNegativeP1() { assertTrue(new SpringbootProfileFilter().filter(getCodeLoadedChange(_002__NotP1.class))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[] and taskProfiles=[P1]") - void falseIfActiveProfileEmptyAndTaskProfileP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[] and changeProfiles=[P1]") + void falseIfActiveProfileEmptyAndChangeProfileP1() { assertFalse(new SpringbootProfileFilter().filter(getCodeLoadedChange(_001__P1.class))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[P2] and taskProfiles=[P1]") - void falseIfActiveProfileAndTaskProfileDontMatch() { + @DisplayName("SHOULD return false WHEN activeProfiles=[P2] and changeProfiles=[P1]") + void falseIfActiveProfileAndChangeProfileDontMatch() { assertFalse(new SpringbootProfileFilter("P2").filter(getCodeLoadedChange(_001__P1.class))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[P1] and taskProfiles=[!P1]") - void falseIfActiveProfileIsP1AndTaskProfileNegativeP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[P1] and changeProfiles=[!P1]") + void falseIfActiveProfileIsP1AndChangeProfileNegativeP1() { assertFalse(new SpringbootProfileFilter("P1").filter(getCodeLoadedChange(_002__NotP1.class))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[P1,P2] and taskProfiles=[!P1]") - void falseIfActiveProfileIsP1P2AndTaskProfileNegativeP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[P1,P2] and changeProfiles=[!P1]") + void falseIfActiveProfileIsP1P2AndChangeProfileNegativeP1() { assertFalse(new SpringbootProfileFilter("P1", "P2").filter(getCodeLoadedChange(_002__NotP1.class))); } private CodeLoadedChange getCodeLoadedChange(Class sourceClass) { - return LoadedTaskBuilder.getCodeBuilderInstance(sourceClass).build(); + return LoadedChangeBuilder.getCodeBuilderInstance(sourceClass).build(); } @Change(id="not-annotated", author = "aperezdieppa") diff --git a/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterTemplateTaskTest.java b/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterTemplateChangeTest.java similarity index 80% rename from platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterTemplateTaskTest.java rename to platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterTemplateChangeTest.java index 4d805598c..655cee9d1 100644 --- a/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterTemplateTaskTest.java +++ b/platform-plugins/flamingock-springboot-integration/src/test/java/io/flamingock/springboot/SpringProfileFilterTemplateChangeTest.java @@ -19,15 +19,15 @@ import io.flamingock.api.annotations.ChangeTemplate; import io.flamingock.api.annotations.RollbackTemplate; import io.flamingock.internal.common.core.template.ChangeTemplateFileContent; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; import io.flamingock.api.template.AbstractChangeTemplate; import io.flamingock.api.template.wrappers.TemplateString; import io.flamingock.api.template.wrappers.TemplateVoid; import io.flamingock.internal.common.core.template.ChangeTemplateManager; import io.flamingock.internal.common.core.preview.TemplatePreviewChange; -import io.flamingock.internal.common.core.preview.builder.PreviewTaskBuilder; -import io.flamingock.internal.core.task.loaded.AbstractLoadedTask; -import io.flamingock.internal.core.task.loaded.LoadedTaskBuilder; +import io.flamingock.internal.common.core.preview.builder.PreviewChangeBuilder; +import io.flamingock.internal.core.change.loaded.AbstractLoadedChange; +import io.flamingock.internal.core.change.loaded.LoadedChangeBuilder; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -36,7 +36,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -class SpringProfileFilterTemplateTaskTest { +class SpringProfileFilterTemplateChangeTest { @@ -46,70 +46,70 @@ static void beforeAll() { } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[] and taskProfiles=[]") + @DisplayName("SHOULD return true WHEN activeProfiles=[] and changeProfiles=[]") void trueIfActiveProfilesEmptyAndNotAnnotated() { assertTrue(new SpringbootProfileFilter().filter(getTemplateLoadedChange())); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and taskProfiles=[P1]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and changeProfiles=[P1]") void trueIfActiveProfilesAndAnnotatedWhenMatched() { assertTrue(new SpringbootProfileFilter("P1").filter(getTemplateLoadedChange("P1"))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P1,P2] and taskProfiles=[P1]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P1,P2] and changeProfiles=[P1]") void trueIfActiveProfilesContainAnnotatedProfile() { assertTrue(new SpringbootProfileFilter("P1", "P2").filter(getTemplateLoadedChange("P1"))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and taskProfiles=[P1,P2]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P1] and changeProfiles=[P1,P2]") void trueIfAnnotatedProfilesContainActiveProfile() { assertTrue(new SpringbootProfileFilter("P1").filter(getTemplateLoadedChange("P1,P2"))); } @Test - @DisplayName("SHOULD return true WHEN activeProfiles=[P2] and taskProfiles=[!P1]") + @DisplayName("SHOULD return true WHEN activeProfiles=[P2] and changeProfiles=[!P1]") void trueIfAnnotatedProfileIsNegativeP1AndActiveProfileIsP2() { assertTrue(new SpringbootProfileFilter("P2").filter(getTemplateLoadedChange("!P1"))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[] and taskProfiles=[!P1]") - void trueIfActiveProfileEmptyAndTaskProfileNegativeP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[] and changeProfiles=[!P1]") + void trueIfActiveProfileEmptyAndChangeProfileNegativeP1() { assertTrue(new SpringbootProfileFilter().filter(getTemplateLoadedChange("!P1"))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[] and taskProfiles=[P1]") - void falseIfActiveProfileEmptyAndTaskProfileP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[] and changeProfiles=[P1]") + void falseIfActiveProfileEmptyAndChangeProfileP1() { assertFalse(new SpringbootProfileFilter().filter(getTemplateLoadedChange("P1"))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[P2] and taskProfiles=[P1]") - void falseIfActiveProfileAndTaskProfileDontMatch() { + @DisplayName("SHOULD return false WHEN activeProfiles=[P2] and changeProfiles=[P1]") + void falseIfActiveProfileAndChangeProfileDontMatch() { assertFalse(new SpringbootProfileFilter("P2").filter(getTemplateLoadedChange("P1"))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[P1] and taskProfiles=[!P1]") - void falseIfActiveProfileIsP1AndTaskProfileNegativeP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[P1] and changeProfiles=[!P1]") + void falseIfActiveProfileIsP1AndChangeProfileNegativeP1() { assertFalse(new SpringbootProfileFilter("P1").filter(getTemplateLoadedChange("!P1"))); } @Test - @DisplayName("SHOULD return false WHEN activeProfiles=[P1,P2] and taskProfiles=[!P1]") - void falseIfActiveProfileIsP1P2AndTaskProfileNegativeP1() { + @DisplayName("SHOULD return false WHEN activeProfiles=[P1,P2] and changeProfiles=[!P1]") + void falseIfActiveProfileIsP1P2AndChangeProfileNegativeP1() { assertFalse(new SpringbootProfileFilter("P1", "P2").filter(getTemplateLoadedChange("!P1"))); } - private AbstractLoadedTask getTemplateLoadedChange() { + private AbstractLoadedChange getTemplateLoadedChange() { return getTemplateLoadedChange(null); } - private AbstractLoadedTask getTemplateLoadedChange(String profiles) { + private AbstractLoadedChange getTemplateLoadedChange(String profiles) { ChangeTemplateFileContent changeFileDescriptor = new ChangeTemplateFileContent( "template-base-change-id", @@ -124,9 +124,9 @@ private AbstractLoadedTask getTemplateLoadedChange(String profiles) { RecoveryDescriptor.getDefault() ); - TemplatePreviewChange preview = PreviewTaskBuilder.getTemplateBuilder("_0001__ChangeUsingTemplate.yaml", changeFileDescriptor).build(); + TemplatePreviewChange preview = PreviewChangeBuilder.getTemplateBuilder("_0001__ChangeUsingTemplate.yaml", changeFileDescriptor).build(); - return LoadedTaskBuilder.getInstance(preview).build(); + return LoadedChangeBuilder.getInstance(preview).build(); } diff --git a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-builder.json b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-builder.json index f7264b3b0..3214dc7f9 100644 --- a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-builder.json +++ b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-builder.json @@ -5,7 +5,7 @@ "name": "test-stage", "type": "DEFAULT", "sourcesPackage": "io.flamingock.springboot.test", - "tasks": [], + "changes": [], "parallel": false } ] diff --git a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-default.json b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-default.json index 9b7a1c74d..b4b01a9c2 100644 --- a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-default.json +++ b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-default.json @@ -5,7 +5,7 @@ "name": "test-stage", "type": "DEFAULT", "sourcesPackage": "io.flamingock.springboot.test", - "tasks": [], + "changes": [], "parallel": false } ] diff --git a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-no-setup.json b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-no-setup.json index 94b569fff..6cbdc6e62 100644 --- a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-no-setup.json +++ b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata-no-setup.json @@ -5,7 +5,7 @@ "name": "test-stage", "type": "DEFAULT", "sourcesPackage": "io.flamingock.springboot.test", - "tasks": [], + "changes": [], "parallel": false } ] diff --git a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata.json b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata.json index 98e73ffec..28db22044 100644 --- a/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata.json +++ b/platform-plugins/flamingock-springboot-integration/src/test/resources/META-INF/flamingock/metadata.json @@ -4,7 +4,7 @@ "name" : "test-stage", "type" : "DEFAULT", "sourcesPackage" : "io.flamingock.springboot.test", - "tasks" : [ { + "changes" : [ { "type" : "codePreviewChange", "id" : "validation-only-test-change", "order" : "001", diff --git a/utils/couchbase-test-kit/src/main/java/io/flamingock/couchbase/kit/CouchbaseAuditStorage.java b/utils/couchbase-test-kit/src/main/java/io/flamingock/couchbase/kit/CouchbaseAuditStorage.java index f79337907..cf4b50947 100644 --- a/utils/couchbase-test-kit/src/main/java/io/flamingock/couchbase/kit/CouchbaseAuditStorage.java +++ b/utils/couchbase-test-kit/src/main/java/io/flamingock/couchbase/kit/CouchbaseAuditStorage.java @@ -16,12 +16,9 @@ package io.flamingock.couchbase.kit; import com.couchbase.client.core.error.CouchbaseException; -import com.couchbase.client.core.error.DocumentNotFoundException; import com.couchbase.client.java.Cluster; import com.couchbase.client.java.Collection; import com.couchbase.client.java.json.JsonObject; -import com.couchbase.client.java.json.JsonValue; -import com.couchbase.client.java.kv.GetResult; import com.couchbase.client.java.kv.PersistTo; import com.couchbase.client.java.kv.ReplicateTo; import com.couchbase.client.java.kv.UpsertOptions; @@ -113,7 +110,7 @@ public void clear() { private String toKey(AuditEntry auditEntry) { return auditEntry.getExecutionId() + '#' + - auditEntry.getTaskId() + + auditEntry.getChangeId() + '#' + auditEntry.getState().name(); } diff --git a/utils/couchbase-util/src/main/java/io/flamingock/internal/common/couchbase/CouchbaseAuditMapper.java b/utils/couchbase-util/src/main/java/io/flamingock/internal/common/couchbase/CouchbaseAuditMapper.java index d22c0c776..7cd9e3175 100644 --- a/utils/couchbase-util/src/main/java/io/flamingock/internal/common/couchbase/CouchbaseAuditMapper.java +++ b/utils/couchbase-util/src/main/java/io/flamingock/internal/common/couchbase/CouchbaseAuditMapper.java @@ -48,7 +48,7 @@ public JsonObject toDocument(AuditEntry auditEntry) { JsonObject document = JsonObject.create(); CouchbaseUtils.addFieldToDocument(document, KEY_EXECUTION_ID, auditEntry.getExecutionId()); CouchbaseUtils.addFieldToDocument(document, KEY_STAGE_ID, auditEntry.getStageId()); - CouchbaseUtils.addFieldToDocument(document, KEY_CHANGE_ID, auditEntry.getTaskId()); + CouchbaseUtils.addFieldToDocument(document, KEY_CHANGE_ID, auditEntry.getChangeId()); CouchbaseUtils.addFieldToDocument(document, KEY_AUTHOR, auditEntry.getAuthor()); CouchbaseUtils.addFieldToDocument(document, KEY_CREATED_AT, TimeUtil.toDate(auditEntry.getCreatedAt())); CouchbaseUtils.addFieldToDocument(document, KEY_STATE, auditEntry.getState().name()); diff --git a/utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/AuditEntryEntity.java b/utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/AuditEntryEntity.java index 8d5659a80..172dab756 100644 --- a/utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/AuditEntryEntity.java +++ b/utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/AuditEntryEntity.java @@ -33,7 +33,7 @@ public class AuditEntryEntity implements Comparable { protected Boolean systemChange; private String partitionKey; - private String taskId; + private String changeId; private String stageId; private String executionId; private String author; @@ -58,8 +58,8 @@ public static AuditEntryEntity fromAuditEntry(AuditEntry auditEntry) { } public AuditEntryEntity(AuditEntry auditEntry) { - this.partitionKey = partitionKey(auditEntry.getExecutionId(), auditEntry.getTaskId(), auditEntry.getState()); - this.taskId = auditEntry.getTaskId(); + this.partitionKey = partitionKey(auditEntry.getExecutionId(), auditEntry.getChangeId(), auditEntry.getState()); + this.changeId = auditEntry.getChangeId(); this.stageId = auditEntry.getStageId(); this.executionId = auditEntry.getExecutionId(); this.author = auditEntry.getAuthor(); @@ -84,8 +84,8 @@ public AuditEntryEntity(AuditEntry auditEntry) { public AuditEntryEntity() { } - public static String partitionKey(String executionId, String taskId, AuditEntry.Status state) { - return executionId + '#' + taskId + '#' + state.name(); + public static String partitionKey(String executionId, String changeId, AuditEntry.Status state) { + return executionId + '#' + changeId + '#' + state.name(); } @DynamoDbPartitionKey @@ -99,12 +99,12 @@ public void setPartitionKey(String partitionKey) { } @DynamoDbAttribute(AuditEntryFieldConstants.KEY_CHANGE_ID) - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } - public void setTaskId(String taskId) { - this.taskId = taskId; + public void setChangeId(String changeId) { + this.changeId = changeId; } @DynamoDbAttribute(AuditEntryFieldConstants.KEY_STAGE_ID) @@ -306,7 +306,7 @@ public AuditEntry toAuditEntry() { return new AuditEntry( executionId, stageId, - taskId, + changeId, author, createdAt, state, diff --git a/utils/mongodb-util/src/main/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapper.java b/utils/mongodb-util/src/main/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapper.java index 27514a516..79ae56b7d 100644 --- a/utils/mongodb-util/src/main/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapper.java +++ b/utils/mongodb-util/src/main/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapper.java @@ -55,7 +55,7 @@ public DOCUMENT_WRAPPER toDocument(AuditEntry auditEntry) { DOCUMENT_WRAPPER document = documentckSupplier.get(); document.append(KEY_EXECUTION_ID, auditEntry.getExecutionId()); document.append(KEY_STAGE_ID, auditEntry.getStageId()); - document.append(KEY_CHANGE_ID, auditEntry.getTaskId()); + document.append(KEY_CHANGE_ID, auditEntry.getChangeId()); document.append(KEY_AUTHOR, auditEntry.getAuthor()); document.append(KEY_CREATED_AT, TimeUtil.toDate(auditEntry.getCreatedAt())); document.append(KEY_STATE, auditEntry.getState().name()); diff --git a/utils/mongodb-util/src/test/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapperTest.java b/utils/mongodb-util/src/test/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapperTest.java index 226af1741..0a0a816f1 100644 --- a/utils/mongodb-util/src/test/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapperTest.java +++ b/utils/mongodb-util/src/test/java/io/flamingock/internal/common/mongodb/MongoDBAuditMapperTest.java @@ -87,7 +87,7 @@ void shouldHandleInvalidTxTypeInDocument() { TestDocumentWrapper document = new TestDocumentWrapper(); document.append("executionId", "test-execution"); document.append("stageId", "test-stage"); - document.append("taskId", "test-task"); + document.append("changeId", "test-change"); document.append("author", "test-author"); document.append("state", AuditEntry.Status.APPLIED.name()); document.append("type", AuditEntry.ChangeType.STANDARD_CODE.name()); diff --git a/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlAuditStorage.java b/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlAuditStorage.java index 3c6b896c7..d76074d3c 100644 --- a/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlAuditStorage.java +++ b/utils/sql-test-kit/src/main/java/io/flamingock/sql/kit/SqlAuditStorage.java @@ -63,7 +63,7 @@ public void addAuditEntry(AuditEntry auditEntry) { dialectHelper.getInsertSqlString(auditTableName))) { ps.setString(1, auditEntry.getExecutionId()); ps.setString(2, auditEntry.getStageId()); - ps.setString(3, auditEntry.getTaskId()); + ps.setString(3, auditEntry.getChangeId()); ps.setString(4, auditEntry.getAuthor()); ps.setTimestamp(5, Timestamp.valueOf(auditEntry.getCreatedAt())); ps.setString(6, auditEntry.getState() != null ? auditEntry.getState().name() : null); diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/AuditRequestExpectation.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/AuditRequestExpectation.java index e079db259..2db90e370 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/AuditRequestExpectation.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/AuditRequestExpectation.java @@ -18,18 +18,18 @@ import io.flamingock.cloud.api.vo.CloudAuditStatus; public class AuditRequestExpectation { - private final String taskId; + private final String changeId; private final CloudAuditStatus state; private final String executionId; - public AuditRequestExpectation(String executionId, String taskId, CloudAuditStatus state) { + public AuditRequestExpectation(String executionId, String changeId, CloudAuditStatus state) { this.executionId = executionId; - this.taskId = taskId; + this.changeId = changeId; this.state = state; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } public CloudAuditStatus getState() { diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/MockRunnerServer.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/MockRunnerServer.java index d37863ccc..733333f14 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/MockRunnerServer.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/MockRunnerServer.java @@ -24,7 +24,7 @@ import io.flamingock.common.test.cloud.mock.MockExecutionPlanBuilder; import io.flamingock.common.test.cloud.prototype.PrototypeClientSubmission; import io.flamingock.common.test.cloud.prototype.PrototypeStage; -import io.flamingock.common.test.cloud.prototype.PrototypeTask; +import io.flamingock.common.test.cloud.prototype.PrototypeChange; import io.flamingock.cloud.api.request.TokenExchangeRequest; import io.flamingock.cloud.api.response.TokenExchangeResponse; import io.flamingock.cloud.api.request.StageRequest; @@ -71,8 +71,8 @@ public final class MockRunnerServer { private static StageResponse toStageResponse(StageRequest stageRequest) { StageResponse stage = new StageResponse(); stage.setName(stageRequest.getName()); - stage.setTasks(stageRequest.getTasks().stream() - .map(onGoingTask -> new ChangeResponse(onGoingTask.getId(), APPLY)) + stage.setChanges(stageRequest.getChanges().stream() + .map(onGoingChange -> new ChangeResponse(onGoingChange.getId(), APPLY)) .collect(Collectors.toList())); return stage; } @@ -279,17 +279,17 @@ private void mockAuditWriteEndpoint() { //TODO we need to change the audit's endpoint in the server to have the auditId in the path //TODO should we add the stage to the url too - String auditUrlTemplate = "/api/v1/environment/{environmentId}/service/{serviceId}/execution/{executionId}/task/{taskId}/audit"///{auditId}" + String auditUrlTemplate = "/api/v1/environment/{environmentId}/service/{serviceId}/execution/{executionId}/change/{changeId}/audit"///{auditId}" .replace("{environmentId}", String.valueOf(environmentId)) .replace("{serviceId}", String.valueOf(serviceId)) .replace("{executionId}", auditWrite.getExecutionId()); - PrototypeTask taskPrototype = getTaskPrototype(auditWrite.getTaskId()); - String auditUrl = auditUrlTemplate.replace("{auditId}", taskPrototype.getTaskId()); - String requestJson = toJson(taskPrototype.toAuditExpectation(auditWrite.getState())); + PrototypeChange changePrototype = getChangePrototype(auditWrite.getChangeId()); + String auditUrl = auditUrlTemplate.replace("{auditId}", changePrototype.getChangeId()); + String requestJson = toJson(changePrototype.toAuditExpectation(auditWrite.getState())); if (auditEntryWriteExpectations.size() == 1) { wireMockServer.stubFor( - post(urlPathEqualTo(auditUrl.replace("{taskId}", auditWrite.getTaskId()))) + post(urlPathEqualTo(auditUrl.replace("{changeId}", auditWrite.getChangeId()))) .withRequestBody(equalToJson(requestJson, true, true)) .willReturn(aResponse() .withStatus(201) @@ -305,7 +305,7 @@ private void mockAuditWriteEndpoint() { String scenarioName = "audit-logs"; String scenarioState = i == 0 ? Scenario.STARTED : "audit-log-state-" + i; wireMockServer.stubFor( - post(urlPathEqualTo(auditUrl.replace("{taskId}", auditWrite.getTaskId()))) + post(urlPathEqualTo(auditUrl.replace("{changeId}", auditWrite.getChangeId()))) .withName("audit-stub" + i) .inScenario(scenarioName) .whenScenarioStateIs(scenarioState) @@ -347,15 +347,15 @@ private void mockReleaseLockEndpoint() { .willReturn(responseDefBuilder)); } - private PrototypeTask getTaskPrototype(String taskId) { + private PrototypeChange getChangePrototype(String changeId) { return clientSubmission .getStages() .stream() - .map(PrototypeStage::getTasks) + .map(PrototypeStage::getChanges) .flatMap(List::stream) - .filter(task -> taskId.equals(task.getTaskId())) + .filter(change -> changeId.equals(change.getChangeId())) .findFirst() - .orElseThrow(() -> new RuntimeException("Task not found with id " + taskId)); + .orElseThrow(() -> new RuntimeException("Change not found with id " + changeId)); } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/AuditEntryMatcher.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/AuditEntryMatcher.java index 654d8a240..0b7b107a1 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/AuditEntryMatcher.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/AuditEntryMatcher.java @@ -22,26 +22,26 @@ @Deprecated public class AuditEntryMatcher { - private final String taskId; + private final String changeId; private final CloudAuditStatus state; private final String className; private final String methodName; private final boolean transactional; - public AuditEntryMatcher(String taskId, CloudAuditStatus state, String className, String methodName) { - this(taskId, state, className, methodName, true); + public AuditEntryMatcher(String changeId, CloudAuditStatus state, String className, String methodName) { + this(changeId, state, className, methodName, true); } - public AuditEntryMatcher(String taskId, CloudAuditStatus state, String className, String methodName, boolean transactional) { - this.taskId = taskId; + public AuditEntryMatcher(String changeId, CloudAuditStatus state, String className, String methodName, boolean transactional) { + this.changeId = changeId; this.state = state; this.className = className; this.methodName = methodName; this.transactional = transactional; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } public CloudAuditStatus getState() { diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/MockRunnerServerOld.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/MockRunnerServerOld.java index 206a1bd94..8bfb17e24 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/MockRunnerServerOld.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/deprecated/MockRunnerServerOld.java @@ -158,13 +158,13 @@ public MockRunnerServerOld addExecutionAwaitRequestResponse(String executionId, } - public MockRunnerServerOld addExecutionWithAllTasksRequestResponse(String executionId) { + public MockRunnerServerOld addExecutionWithAllChangesRequestResponse(String executionId) { executionRequestResponses.add(new ExecutePlanRequestResponse(executionId, DEFAULT_ACQUIRED_FOR_MILLIS, DEFAULT_LOCK_ACQUISITION_ID)); return this; } - public MockRunnerServerOld addExecutionWithAllTasksRequestResponse(String executionId, long acquiredForMillis, String acquisitionId) { + public MockRunnerServerOld addExecutionWithAllChangesRequestResponse(String executionId, long acquiredForMillis, String acquisitionId) { executionRequestResponses.add(new ExecutePlanRequestResponse(executionId, acquiredForMillis, acquisitionId)); return this; } @@ -175,23 +175,23 @@ public MockRunnerServerOld addSimpleStageExecutionPlan(String executionId, Strin public MockRunnerServerOld addSimpleStageExecutionPlan(String executionId, String stageName, List auditEntries, List ongoingStatuses) { - Map ongoingOperationByTask = ongoingStatuses.stream() - .collect(Collectors.toMap(TargetSystemAuditMark::getTaskId, TargetSystemAuditMark::getOperation)); + Map ongoingOperationByChange = ongoingStatuses.stream() + .collect(Collectors.toMap(TargetSystemAuditMark::getChangeId, TargetSystemAuditMark::getOperation)); - Set alreadyAddedTasks = new HashSet<>(); - List tasks = auditEntries.stream() - .filter(auditEntryExpectation -> !alreadyAddedTasks.contains(auditEntryExpectation.getTaskId())) + Set alreadyAddedChanges = new HashSet<>(); + List changes = auditEntries.stream() + .filter(auditEntryExpectation -> !alreadyAddedChanges.contains(auditEntryExpectation.getChangeId())) .map(auditEntryExpectation -> { - alreadyAddedTasks.add(auditEntryExpectation.getTaskId()); - TargetSystemAuditMarkType operation = ongoingOperationByTask.get(auditEntryExpectation.getTaskId()); + alreadyAddedChanges.add(auditEntryExpectation.getChangeId()); + TargetSystemAuditMarkType operation = ongoingOperationByChange.get(auditEntryExpectation.getChangeId()); CloudTargetSystemAuditMarkType cloudStatus = operation != null ? CloudTargetSystemAuditMarkType.valueOf(operation.name()) : CloudTargetSystemAuditMarkType.NONE; - return new ChangeRequest(auditEntryExpectation.getTaskId(), cloudStatus, auditEntryExpectation.isTransactional()); + return new ChangeRequest(auditEntryExpectation.getChangeId(), cloudStatus, auditEntryExpectation.isTransactional()); }) .collect(Collectors.toList()); - List stageRequest = Collections.singletonList(new StageRequest(stageName, 0, tasks)); + List stageRequest = Collections.singletonList(new StageRequest(stageName, 0, changes)); executionExpectation = new ExecutionExpectation(executionId, stageRequest, auditEntries, 60000, 0); return this; @@ -203,26 +203,26 @@ public MockRunnerServerOld addMultipleStageExecutionPlan(String executionId, Lis public MockRunnerServerOld addMultipleStageExecutionPlan(String executionId, List stageNames, List auditEntries, List ongoingStatuses) { - Map ongoingOperationByTask = ongoingStatuses.stream() - .collect(Collectors.toMap(TargetSystemAuditMark::getTaskId, TargetSystemAuditMark::getOperation)); + Map ongoingOperationByChange = ongoingStatuses.stream() + .collect(Collectors.toMap(TargetSystemAuditMark::getChangeId, TargetSystemAuditMark::getOperation)); - Set alreadyAddedTasks = new HashSet<>(); - List tasks = auditEntries.stream() - .filter(auditEntryExpectation -> !alreadyAddedTasks.contains(auditEntryExpectation.getTaskId())) + Set alreadyAddedChanges = new HashSet<>(); + List changes = auditEntries.stream() + .filter(auditEntryExpectation -> !alreadyAddedChanges.contains(auditEntryExpectation.getChangeId())) .map(auditEntryExpectation -> { - alreadyAddedTasks.add(auditEntryExpectation.getTaskId()); - TargetSystemAuditMarkType operation = ongoingOperationByTask.get(auditEntryExpectation.getTaskId()); + alreadyAddedChanges.add(auditEntryExpectation.getChangeId()); + TargetSystemAuditMarkType operation = ongoingOperationByChange.get(auditEntryExpectation.getChangeId()); CloudTargetSystemAuditMarkType cloudStatus = operation != null ? CloudTargetSystemAuditMarkType.valueOf(operation.name()) : CloudTargetSystemAuditMarkType.NONE; - return new ChangeRequest(auditEntryExpectation.getTaskId(), cloudStatus, auditEntryExpectation.isTransactional()); + return new ChangeRequest(auditEntryExpectation.getChangeId(), cloudStatus, auditEntryExpectation.isTransactional()); }) .collect(Collectors.toList()); List stageRequest = new ArrayList<>(); int i = 0; for (String stageName : stageNames) { - stageRequest.add(new StageRequest(stageName, i, Collections.singletonList(tasks.get(i)))); + stageRequest.add(new StageRequest(stageName, i, Collections.singletonList(changes.get(i)))); i++; } @@ -341,7 +341,7 @@ private void mockExecutionEndpoint() { private void mockAuditWriteEndpoint() { if(executionExpectation != null) { - String executionUrl = "/api/v1/environment/{environmentId}/service/{serviceId}/execution/{executionId}/task/{taskId}/audit" + String executionUrl = "/api/v1/environment/{environmentId}/service/{serviceId}/execution/{executionId}/change/{changeId}/audit" .replace("{environmentId}", String.valueOf(environmentId)) .replace("{serviceId}", String.valueOf(serviceId)) .replace("{executionId}", executionExpectation.getExecutionId()); @@ -352,7 +352,7 @@ private void mockAuditWriteEndpoint() { AuditEntryMatcher request = auditEntryExpectations.get(0); wireMockServer.stubFor( - post(urlPathEqualTo(executionUrl.replace("{taskId}", request.getTaskId()))) + post(urlPathEqualTo(executionUrl.replace("{changeId}", request.getChangeId()))) .withRequestBody(equalToJson(toJson(request), true, true)) .willReturn(aResponse() .withStatus(201) @@ -367,7 +367,7 @@ private void mockAuditWriteEndpoint() { AuditEntryMatcher request = auditEntryExpectations.get(i); String json = toJson(request); wireMockServer.stubFor( - post(urlPathEqualTo(executionUrl.replace("{taskId}", request.getTaskId()))) + post(urlPathEqualTo(executionUrl.replace("{changeId}", request.getChangeId()))) .withName("audit-stub" + i) .inScenario(scenarioName) .whenScenarioStateIs(scenarioState) @@ -448,8 +448,8 @@ private ExecutionPlanResponse getExecutionPlanResponse(int index) { private static StageResponse toStageResponse(StageRequest stageRequest) { StageResponse stage = new StageResponse(); stage.setName(stageRequest.getName()); - stage.setTasks(stageRequest.getTasks().stream() - .map(onGoingTask -> new ChangeResponse(onGoingTask.getId(), APPLY)) + stage.setChanges(stageRequest.getChanges().stream() + .map(onGoingChange -> new ChangeResponse(onGoingChange.getId(), APPLY)) .collect(Collectors.toList())); return stage; } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionAwaitRequestResponseMock.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionAwaitRequestResponseMock.java index 734518bcd..5e9af7d77 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionAwaitRequestResponseMock.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionAwaitRequestResponseMock.java @@ -16,16 +16,16 @@ package io.flamingock.common.test.cloud.execution; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.MockRunnerServer; public class ExecutionAwaitRequestResponseMock extends ExecutionBaseRequestResponseMock { - public ExecutionAwaitRequestResponseMock(String executionId, MockRequestResponseTask... stages) { + public ExecutionAwaitRequestResponseMock(String executionId, MockRequestResponseChange... stages) { this(executionId, MockRunnerServer.DEFAULT_ACQUIRED_FOR_MILLIS, MockRunnerServer.DEFAULT_LOCK_ACQUISITION_ID, stages); } - public ExecutionAwaitRequestResponseMock(String executionId, long acquiredForMillis, String acquisitionId, MockRequestResponseTask... stages) { + public ExecutionAwaitRequestResponseMock(String executionId, long acquiredForMillis, String acquisitionId, MockRequestResponseChange... stages) { super(executionId, acquiredForMillis, acquisitionId, stages); } } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionBaseRequestResponseMock.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionBaseRequestResponseMock.java index b86d8d079..d7db17825 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionBaseRequestResponseMock.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionBaseRequestResponseMock.java @@ -15,7 +15,7 @@ */ package io.flamingock.common.test.cloud.execution; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import java.util.Arrays; import java.util.List; @@ -27,16 +27,16 @@ public class ExecutionBaseRequestResponseMock { private final String executionId; private final long acquiredForMillis; private final String acquisitionId; - private final List tasks; + private final List changes; public ExecutionBaseRequestResponseMock(String executionId, long acquiredForMillis, String acquisitionId, - MockRequestResponseTask...tasks) { + MockRequestResponseChange...changes) { this.executionId = executionId; this.acquiredForMillis = acquiredForMillis; this.acquisitionId = acquisitionId; - this.tasks = Arrays.asList(tasks); + this.changes = Arrays.asList(changes); } public String getExecutionId() { @@ -51,13 +51,13 @@ public String getAcquisitionId() { return acquisitionId; } - public List getTasks() { - return tasks; + public List getChanges() { + return changes; } - public Optional getTaskById(String taskId) { - return tasks.stream() - .filter(task -> taskId.equals(task.getTaskId())) + public Optional getChangeById(String changeId) { + return changes.stream() + .filter(change -> changeId.equals(change.getChangeId())) .findFirst(); } } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionContinueRequestResponseMock.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionContinueRequestResponseMock.java index 6326b1c17..ed616eb3f 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionContinueRequestResponseMock.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionContinueRequestResponseMock.java @@ -16,16 +16,16 @@ package io.flamingock.common.test.cloud.execution; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.MockRunnerServer; public class ExecutionContinueRequestResponseMock extends ExecutionBaseRequestResponseMock { - public ExecutionContinueRequestResponseMock(long acquiredForMillis, MockRequestResponseTask... stages) { + public ExecutionContinueRequestResponseMock(long acquiredForMillis, MockRequestResponseChange... stages) { super(null, acquiredForMillis, null, stages); } - public ExecutionContinueRequestResponseMock(MockRequestResponseTask... stages) { + public ExecutionContinueRequestResponseMock(MockRequestResponseChange... stages) { super(null, MockRunnerServer.DEFAULT_ACQUIRED_FOR_MILLIS, null, stages); } } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionPlanRequestResponseMock.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionPlanRequestResponseMock.java index fb7657903..d88807fd0 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionPlanRequestResponseMock.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/execution/ExecutionPlanRequestResponseMock.java @@ -16,12 +16,12 @@ package io.flamingock.common.test.cloud.execution; -import io.flamingock.common.test.cloud.mock.MockRequestResponseTask; +import io.flamingock.common.test.cloud.mock.MockRequestResponseChange; import io.flamingock.common.test.cloud.MockRunnerServer; public class ExecutionPlanRequestResponseMock extends ExecutionBaseRequestResponseMock { - public ExecutionPlanRequestResponseMock(String executionId, MockRequestResponseTask... stages) { + public ExecutionPlanRequestResponseMock(String executionId, MockRequestResponseChange... stages) { this(executionId, MockRunnerServer.DEFAULT_ACQUIRED_FOR_MILLIS, MockRunnerServer.DEFAULT_LOCK_ACQUISITION_ID, stages); } @@ -29,7 +29,7 @@ public ExecutionPlanRequestResponseMock(String executionId, MockRequestResponseT public ExecutionPlanRequestResponseMock(String executionId, long acquiredForMillis, String acquisitionId, - MockRequestResponseTask... stages) { + MockRequestResponseChange... stages) { super(executionId, acquiredForMillis, acquisitionId, stages); } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockExecutionPlanBuilder.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockExecutionPlanBuilder.java index 145cca7cb..dd188fbad 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockExecutionPlanBuilder.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockExecutionPlanBuilder.java @@ -16,7 +16,7 @@ package io.flamingock.common.test.cloud.mock; import io.flamingock.common.test.cloud.prototype.PrototypeClientSubmission; -import io.flamingock.common.test.cloud.prototype.PrototypeTask; +import io.flamingock.common.test.cloud.prototype.PrototypeChange; import io.flamingock.common.test.cloud.execution.ExecutionAwaitRequestResponseMock; import io.flamingock.common.test.cloud.execution.ExecutionBaseRequestResponseMock; import io.flamingock.common.test.cloud.execution.ExecutionPlanRequestResponseMock; @@ -58,7 +58,7 @@ public ExecutionPlanRequest getRequest(ExecutionBaseRequestResponseMock requestR .map(stagePrototype -> new StageRequest( stagePrototype.getName(), stagePrototype.getOrder(), - transformChangeRequests(stagePrototype.getTasks(), requestResponse)) + transformChangeRequests(stagePrototype.getChanges(), requestResponse)) ).collect(Collectors.toList()); return new ExecutionPlanRequest(requestResponse.getAcquiredForMillis(), stages); @@ -73,7 +73,7 @@ public ExecutionPlanResponse getResponse(ExecutionBaseRequestResponseMock mockRe .map(stagePrototype -> new StageResponse( stagePrototype.getName(), stagePrototype.getOrder(), - transformChangeResponses(stagePrototype.getTasks(), mockRequestResponse)) + transformChangeResponses(stagePrototype.getChanges(), mockRequestResponse)) ).collect(Collectors.toList()); LockInfoResponse lock = new LockInfoResponse(); @@ -98,24 +98,24 @@ public ExecutionPlanResponse getResponse(ExecutionBaseRequestResponseMock mockRe } - private List transformChangeRequests(List prototypeTasks, + private List transformChangeRequests(List prototypeChanges, ExecutionBaseRequestResponseMock requestResponse) { - return prototypeTasks.stream() - .map(prototypeTask -> { - Optional requestResponseTask = requestResponse.getTaskById(prototypeTask.getTaskId()); - return prototypeTask.toExecutionPlanChangeRequest( - requestResponseTask.map(MockRequestResponseTask::getOngoingStatus).orElse(TargetSystemAuditMarkType.NONE)); + return prototypeChanges.stream() + .map(prototypeChange -> { + Optional requestResponseChange = requestResponse.getChangeById(prototypeChange.getChangeId()); + return prototypeChange.toExecutionPlanChangeRequest( + requestResponseChange.map(MockRequestResponseChange::getOngoingStatus).orElse(TargetSystemAuditMarkType.NONE)); } ).collect(Collectors.toList()); } - private List transformChangeResponses(List prototypeTasks, + private List transformChangeResponses(List prototypeChanges, ExecutionBaseRequestResponseMock responseExecutionPlan) { - return prototypeTasks.stream() - .map(prototypeTask -> { - Optional requestResponseTask = responseExecutionPlan.getTaskById(prototypeTask.getTaskId()); - return prototypeTask.toExecutionPlanChangeResponse( - requestResponseTask.map(MockRequestResponseTask::getRequiredAction).orElse(APPLY)); + return prototypeChanges.stream() + .map(prototypeChange -> { + Optional requestResponseChange = responseExecutionPlan.getChangeById(prototypeChange.getChangeId()); + return prototypeChange.toExecutionPlanChangeResponse( + requestResponseChange.map(MockRequestResponseChange::getRequiredAction).orElse(APPLY)); } ).collect(Collectors.toList()); } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseTask.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseChange.java similarity index 61% rename from utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseTask.java rename to utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseChange.java index 6a6adf5b2..64ba90eb0 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseTask.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseChange.java @@ -18,32 +18,32 @@ import io.flamingock.cloud.api.vo.CloudChangeAction; import io.flamingock.internal.common.core.targets.TargetSystemAuditMarkType; -public class MockRequestResponseTask { - private final String taskId; +public class MockRequestResponseChange { + private final String changeId; private final TargetSystemAuditMarkType ongoingStatus; private final CloudChangeAction requiredAction; - public MockRequestResponseTask(String taskId, - TargetSystemAuditMarkType ongoingStatus) { - this(taskId, ongoingStatus, CloudChangeAction.APPLY); + public MockRequestResponseChange(String changeId, + TargetSystemAuditMarkType ongoingStatus) { + this(changeId, ongoingStatus, CloudChangeAction.APPLY); } - public MockRequestResponseTask(String taskId, - CloudChangeAction requiredAction) { - this(taskId, TargetSystemAuditMarkType.NONE, requiredAction); + public MockRequestResponseChange(String changeId, + CloudChangeAction requiredAction) { + this(changeId, TargetSystemAuditMarkType.NONE, requiredAction); } - public MockRequestResponseTask(String taskId, - TargetSystemAuditMarkType ongoingStatus, - CloudChangeAction requiredAction) { - this.taskId = taskId; + public MockRequestResponseChange(String changeId, + TargetSystemAuditMarkType ongoingStatus, + CloudChangeAction requiredAction) { + this.changeId = changeId; this.ongoingStatus = ongoingStatus; this.requiredAction = requiredAction; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } public TargetSystemAuditMarkType getOngoingStatus() { diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseExecutionStage.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseExecutionStage.java index e27b9055c..11f247052 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseExecutionStage.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/mock/MockRequestResponseExecutionStage.java @@ -21,25 +21,25 @@ public class MockRequestResponseExecutionStage { private final String stageName; - private final List tasks; + private final List changes; - public MockRequestResponseExecutionStage(String stageName, List tasks) { + public MockRequestResponseExecutionStage(String stageName, List changes) { this.stageName = stageName; - this.tasks = tasks; + this.changes = changes; } public String getStageName() { return stageName; } - public List getTasks() { - return tasks; + public List getChanges() { + return changes; } - public MockRequestResponseTask getTaskById(String taskId) { - return tasks.stream() - .filter(task-> taskId.equals(task.getTaskId())) + public MockRequestResponseChange getChangeById(String changeId) { + return changes.stream() + .filter(change-> changeId.equals(change.getChangeId())) .findFirst() - .orElseThrow(()-> new RuntimeException("Task not found with id: " + taskId)); + .orElseThrow(()-> new RuntimeException("Change not found with id: " + changeId)); } } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeTask.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeChange.java similarity index 77% rename from utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeTask.java rename to utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeChange.java index e5d962b76..dbd888019 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeTask.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeChange.java @@ -23,19 +23,19 @@ import io.flamingock.cloud.api.vo.CloudTargetSystemAuditMarkType; import io.flamingock.internal.common.core.targets.TargetSystemAuditMarkType; -public class PrototypeTask { - private final String taskId; +public class PrototypeChange { + private final String changeId; private final String className; private final boolean transactional; - public PrototypeTask(String taskId, String className, String methodName, boolean transactional) { - this.taskId = taskId; + public PrototypeChange(String changeId, String className, String methodName, boolean transactional) { + this.changeId = changeId; this.className = className; this.transactional = transactional; } - public String getTaskId() { - return taskId; + public String getChangeId() { + return changeId; } @@ -52,24 +52,24 @@ public ChangeRequest toExecutionPlanChangeRequest(TargetSystemAuditMarkType ongo CloudTargetSystemAuditMarkType cloudStatus = ongoingStatus != null ? CloudTargetSystemAuditMarkType.valueOf(ongoingStatus.name()) : CloudTargetSystemAuditMarkType.NONE; - return new ChangeRequest(taskId, cloudStatus, transactional); + return new ChangeRequest(changeId, cloudStatus, transactional); } public ChangeRequest toExecutionPlanChangeRequest() { - return new ChangeRequest(taskId, CloudTargetSystemAuditMarkType.NONE, transactional); + return new ChangeRequest(changeId, CloudTargetSystemAuditMarkType.NONE, transactional); } public ChangeResponse toExecutionPlanChangeResponse(CloudChangeAction state) { - return new ChangeResponse(taskId, state != null ? state: CloudChangeAction.APPLY); + return new ChangeResponse(changeId, state != null ? state: CloudChangeAction.APPLY); } public ChangeResponse toResponse() { - return new ChangeResponse(taskId, CloudChangeAction.APPLY); + return new ChangeResponse(changeId, CloudChangeAction.APPLY); } public AuditEntryMatcher toAuditExpectation(CloudAuditStatus status) { return new AuditEntryMatcher( - taskId, + changeId, status, className, null, diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeStage.java b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeStage.java index c327400d3..4e62dfcbf 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeStage.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/cloud/prototype/PrototypeStage.java @@ -25,19 +25,19 @@ public class PrototypeStage { private final int order; - private final List tasks; + private final List changes; public PrototypeStage(String name, int order) { this.name = name; this.order = order; - this.tasks = new LinkedList<>(); + this.changes = new LinkedList<>(); } - public PrototypeStage addTask(String taskId, + public PrototypeStage addChange(String changeId, String className, String methodName, boolean transactional) { - tasks.add(new PrototypeTask(taskId, className, methodName, transactional)); + changes.add(new PrototypeChange(changeId, className, methodName, transactional)); return this; } @@ -49,8 +49,8 @@ public int getOrder() { return order; } - public List getTasks() { - return tasks; + public List getChanges() { + return changes; } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/ChangeTestDefinition.java b/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/ChangeTestDefinition.java index 7ec7464a9..68f9b1c50 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/ChangeTestDefinition.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/ChangeTestDefinition.java @@ -15,7 +15,7 @@ */ package io.flamingock.common.test.pipeline; -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; public abstract class ChangeTestDefinition { @@ -45,5 +45,5 @@ public boolean isTransactional() { return transactional; } - public abstract AbstractPreviewTask toPreview(); + public abstract AbstractPreviewChange toPreview(); } diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/CodeChangeTestDefinition.java b/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/CodeChangeTestDefinition.java index 9ddfd7f19..47e85200e 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/CodeChangeTestDefinition.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/CodeChangeTestDefinition.java @@ -18,14 +18,14 @@ import io.flamingock.api.annotations.Recovery; import io.flamingock.api.annotations.TargetSystem; import io.flamingock.internal.common.core.preview.PreviewConstructor; -import io.flamingock.internal.core.task.loaded.ChangeOrderUtil; +import io.flamingock.internal.core.change.loaded.ChangeOrderUtil; import io.flamingock.internal.util.CollectionUtil; import io.flamingock.api.annotations.Change; -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; import io.flamingock.internal.common.core.preview.CodePreviewChange; import io.flamingock.internal.common.core.preview.PreviewMethod; -import io.flamingock.internal.common.core.task.RecoveryDescriptor; -import io.flamingock.internal.common.core.task.TargetSystemDescriptor; +import io.flamingock.internal.common.core.change.RecoveryDescriptor; +import io.flamingock.internal.common.core.change.TargetSystemDescriptor; import java.util.List; @@ -102,7 +102,7 @@ public CodeChangeTestDefinition(String id, @Override - public AbstractPreviewTask toPreview() { + public AbstractPreviewChange toPreview() { PreviewMethod rollback = null; if (rollbackParameters != null) { List rollbackParameterNames = CollectionUtil.getClassNames(rollbackParameters); diff --git a/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/PipelineTestHelper.java b/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/PipelineTestHelper.java index 9e9af6875..015158032 100644 --- a/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/PipelineTestHelper.java +++ b/utils/test-util/src/main/java/io/flamingock/common/test/pipeline/PipelineTestHelper.java @@ -18,7 +18,7 @@ import io.flamingock.api.StageType; import io.flamingock.internal.common.core.metadata.FlamingockMetadata; import io.flamingock.internal.common.core.util.Deserializer; -import io.flamingock.internal.common.core.preview.AbstractPreviewTask; +import io.flamingock.internal.common.core.preview.AbstractPreviewChange; import io.flamingock.internal.common.core.preview.PreviewPipeline; import io.flamingock.internal.common.core.preview.PreviewStage; import org.jetbrains.annotations.NotNull; @@ -54,7 +54,7 @@ public static void testWithMockedPipeline(List changeTestD public static FlamingockMetadata getPreviewPipeline(String stageName, List changeDefinitions) { - List tasks = changeDefinitions.stream() + List changes = changeDefinitions.stream() .map(ChangeTestDefinition::toPreview) .collect(Collectors.toList()); @@ -64,7 +64,7 @@ public static FlamingockMetadata getPreviewPipeline(String stageName, List{@code * // Complete audit entry verification * AuditEntryExpectation expected = auditEntry() - * .withTaskId("test-change") + * .withChangeId("test-change") * .withState(EXECUTED) * .withTxType(TX_SHARED); * @@ -70,9 +70,9 @@ public static void assertAuditEntry(AuditEntry actual, AuditEntryExpectation exp "StageId mismatch"); } - if (expected.getExpectedTaskId() != null) { - assertEquals(expected.getExpectedTaskId(), actual.getTaskId(), - "TaskId mismatch"); + if (expected.getExpectedChangeId() != null) { + assertEquals(expected.getExpectedChangeId(), actual.getChangeId(), + "ChangeId mismatch"); } // Metadata fields @@ -164,15 +164,15 @@ public static void assertAuditEntry(AuditEntry actual, AuditEntryExpectation exp * Quick verification of basic audit entry identity fields. * * @param entry the audit entry to verify - * @param expectedTaskId expected task ID + * @param expectedChangeId expected change ID * @param expectedAuthor expected author * @param expectedState expected audit entry state */ //TODO add author check, when CodeChangeTestDefinition adds it - public static void assertBasicFields(AuditEntry entry, String expectedTaskId, String expectedAuthor, + public static void assertBasicFields(AuditEntry entry, String expectedChangeId, String expectedAuthor, AuditEntry.Status expectedState) { assertNotNull(entry, "Audit entry should not be null"); - assertEquals(expectedTaskId, entry.getTaskId(), "TaskId mismatch"); + assertEquals(expectedChangeId, entry.getChangeId(), "ChangeId mismatch"); // assertEquals(expectedAuthor, entry.getAuthor(), "Author mismatch"); assertEquals(expectedState, entry.getState(), "State mismatch"); } @@ -281,15 +281,15 @@ public static void assertSameExecution(List entries) { String expectedExecutionId = entries.get(0).getExecutionId(); String expectedStageId = entries.get(0).getStageId(); - String expectedTaskId = entries.get(0).getTaskId(); + String expectedChangeId = entries.get(0).getChangeId(); for (AuditEntry entry : entries) { assertEquals(expectedExecutionId, entry.getExecutionId(), "All entries should have same executionId"); assertEquals(expectedStageId, entry.getStageId(), "All entries should have same stageId"); - assertEquals(expectedTaskId, entry.getTaskId(), - "All entries should have same taskId"); + assertEquals(expectedChangeId, entry.getChangeId(), + "All entries should have same changeId"); } } @@ -309,8 +309,8 @@ public static void assertAuditEntryCompleteness(AuditEntry entry) { assertNotNull(entry.getStageId(), "StageId should not be null"); assertFalse(entry.getStageId().trim().isEmpty(), "StageId should not be empty"); - assertNotNull(entry.getTaskId(), "TaskId should not be null"); - assertFalse(entry.getTaskId().trim().isEmpty(), "TaskId should not be empty"); + assertNotNull(entry.getChangeId(), "ChangeId should not be null"); + assertFalse(entry.getChangeId().trim().isEmpty(), "ChangeId should not be empty"); assertNotNull(entry.getAuthor(), "Author should not be null"); assertFalse(entry.getAuthor().trim().isEmpty(), "Author should not be empty"); diff --git a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryExpectation.java b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryExpectation.java index c9988c9f8..9ffe8db24 100644 --- a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryExpectation.java +++ b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryExpectation.java @@ -29,7 +29,7 @@ *

Usage Example:

*
{@code
  * AuditEntryExpectation expected = auditEntry()
- *     .withTaskId("test-change-id")
+ *     .withChangeId("test-change-id")
  *     .withState(APPLIED)
  *     .withTxType(TX_SHARED)
  *     .withTargetSystemId("custom-target")
@@ -43,7 +43,7 @@ public class AuditEntryExpectation {
     
     private String expectedExecutionId;
     private String expectedStageId;
-    private String expectedTaskId;
+    private String expectedChangeId;
     private String expectedAuthor;
     private LocalDateTime expectedCreatedAt;
     private AuditEntry.Status expectedState;
@@ -83,51 +83,51 @@ public static AuditEntryExpectation auditEntry() {
     /**
      * Creates an expectation for a STARTED audit entry.
      * 
-     * @param taskId the task ID
+     * @param changeId the change ID
      * @return audit expectation for STARTED state
      */
-    public static AuditEntryExpectation STARTED(String taskId) {
-        return new AuditEntryExpectation().withTaskId(taskId).withState(AuditEntry.Status.STARTED);
+    public static AuditEntryExpectation STARTED(String changeId) {
+        return new AuditEntryExpectation().withChangeId(changeId).withState(AuditEntry.Status.STARTED);
     }
     
     /**
      * Creates an expectation for an APPLIED audit entry.
      * 
-     * @param taskId the task ID
+     * @param changeId the change ID
      * @return audit expectation for APPLIED state
      */
-    public static AuditEntryExpectation APPLIED(String taskId) {
-        return new AuditEntryExpectation().withTaskId(taskId).withState(AuditEntry.Status.APPLIED);
+    public static AuditEntryExpectation APPLIED(String changeId) {
+        return new AuditEntryExpectation().withChangeId(changeId).withState(AuditEntry.Status.APPLIED);
     }
     
     /**
      * Creates an expectation for an EXECUTION_FAILED audit entry.
      * 
-     * @param taskId the task ID
+     * @param changeId the change ID
      * @return audit expectation for EXECUTION_FAILED state
      */
-    public static AuditEntryExpectation FAILED(String taskId) {
-        return new AuditEntryExpectation().withTaskId(taskId).withState(AuditEntry.Status.FAILED);
+    public static AuditEntryExpectation FAILED(String changeId) {
+        return new AuditEntryExpectation().withChangeId(changeId).withState(AuditEntry.Status.FAILED);
     }
     
     /**
      * Creates an expectation for a ROLLED_BACK audit entry.
      * 
-     * @param taskId the task ID
+     * @param changeId the change ID
      * @return audit expectation for ROLLED_BACK state
      */
-    public static AuditEntryExpectation ROLLED_BACK(String taskId) {
-        return new AuditEntryExpectation().withTaskId(taskId).withState(AuditEntry.Status.ROLLED_BACK);
+    public static AuditEntryExpectation ROLLED_BACK(String changeId) {
+        return new AuditEntryExpectation().withChangeId(changeId).withState(AuditEntry.Status.ROLLED_BACK);
     }
 
     /**
      * Creates an expectation for a ROLLBACK_FAILED audit entry.
      *
-     * @param taskId the task ID
+     * @param changeId the change ID
      * @return audit expectation for ROLLBACK_FAILED state
      */
-    public static AuditEntryExpectation ROLLBACK_FAILED(String taskId) {
-        return new AuditEntryExpectation().withTaskId(taskId).withState(AuditEntry.Status.ROLLBACK_FAILED);
+    public static AuditEntryExpectation ROLLBACK_FAILED(String changeId) {
+        return new AuditEntryExpectation().withChangeId(changeId).withState(AuditEntry.Status.ROLLBACK_FAILED);
     }
     
     // Backward compatibility methods matching old AuditExpectation class
@@ -173,12 +173,12 @@ public static AuditEntryExpectation rolledBack(String changeId) {
     }
     
     /**
-     * Gets the expected change ID (alias for task ID for backward compatibility).
+     * Gets the expected change ID (alias for change ID for backward compatibility).
      * 
-     * @return the task ID
+     * @return the change ID
      */
     public String getChangeId() {
-        return expectedTaskId;
+        return expectedChangeId;
     }
     
     // Identity fields
@@ -194,8 +194,8 @@ public AuditEntryExpectation withStageId(String stageId) {
         return this;
     }
     
-    public AuditEntryExpectation withTaskId(String taskId) {
-        this.expectedTaskId = taskId;
+    public AuditEntryExpectation withChangeId(String changeId) {
+        this.expectedChangeId = changeId;
         return this;
     }
     
@@ -311,7 +311,7 @@ public AuditEntryExpectation withTargetSystemId(String targetSystemId) {
     // Getters for AuditEntryAssertions
     public String getExpectedExecutionId() { return expectedExecutionId; }
     public String getExpectedStageId() { return expectedStageId; }
-    public String getExpectedTaskId() { return expectedTaskId; }
+    public String getExpectedChangeId() { return expectedChangeId; }
     public String getExpectedAuthor() { return expectedAuthor; }
     public LocalDateTime getExpectedCreatedAt() { return expectedCreatedAt; }
     public AuditEntry.Status getExpectedState() { return expectedState; }
diff --git a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryTestFactory.java b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryTestFactory.java
index b79ac87a2..fd7c6b041 100644
--- a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryTestFactory.java
+++ b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditEntryTestFactory.java
@@ -78,7 +78,7 @@ public static AuditEntry createTestAuditEntry(String changeId, AuditEntry.Status
         return new AuditEntry(
                 UUID.randomUUID().toString(),  // executionId
                 "test-stage",                  // stageId
-                changeId,                      // taskId
+                changeId,                      // changeId
                 "test-author",                 // author
                 LocalDateTime.now(),           // timestamp
                 status,                        // state
@@ -108,7 +108,7 @@ public static AuditEntry createTestAuditEntry(String changeId, AuditEntry.Status
         return new AuditEntry(
                 UUID.randomUUID().toString(),  // executionId
                 "test-stage",                  // stageId
-                changeId,                      // taskId
+                changeId,                      // changeId
                 "test-author",                 // author
                 LocalDateTime.now(),           // timestamp
                 status,                        // state
@@ -217,7 +217,7 @@ public static AuditEntry createTestAuditEntry(String changeId, AuditEntry.Status
         return new AuditEntry(
                 UUID.randomUUID().toString(),  // executionId
                 "test-stage",                  // stageId
-                changeId,                      // taskId
+                changeId,                      // changeId
                 "test-author",                 // author
                 LocalDateTime.now(),           // timestamp
                 status,                        // state
@@ -246,7 +246,7 @@ public static AuditEntry createTestAuditEntry(String changeId, AuditEntry.Status
         return new AuditEntry(
                 UUID.randomUUID().toString(),  // executionId
                 "test-stage",                  // stageId
-                changeId,                      // taskId
+                changeId,                      // changeId
                 "test-author",                 // author
                 LocalDateTime.now(),           // timestamp
                 status,                        // state
@@ -280,7 +280,7 @@ public static AuditEntry createTestAuditEntryWithRecoveryStrategy(String changeI
         return new AuditEntry(
                 UUID.randomUUID().toString(),  // executionId
                 "test-stage",                  // stageId
-                changeId,                      // taskId
+                changeId,                      // changeId
                 "test-author",                 // author
                 LocalDateTime.now(),           // timestamp
                 status,                        // state
diff --git a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditExpectation.java b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditExpectation.java
index f9e772c5a..afa667751 100644
--- a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditExpectation.java
+++ b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditExpectation.java
@@ -45,7 +45,7 @@ public class AuditExpectation {
      */
     public static AuditEntryExpectation STARTED(String changeId) {
         return AuditEntryExpectation.auditEntry()
-            .withTaskId(changeId)
+            .withChangeId(changeId)
             .withState(AuditEntry.Status.STARTED);
     }
     
@@ -57,7 +57,7 @@ public static AuditEntryExpectation STARTED(String changeId) {
      */
     public static AuditEntryExpectation APPLIED(String changeId) {
         return AuditEntryExpectation.auditEntry()
-            .withTaskId(changeId)
+            .withChangeId(changeId)
             .withState(AuditEntry.Status.APPLIED);
     }
     
@@ -69,7 +69,7 @@ public static AuditEntryExpectation APPLIED(String changeId) {
      */
     public static AuditEntryExpectation EXECUTION_FAILED(String changeId) {
         return AuditEntryExpectation.auditEntry()
-            .withTaskId(changeId)
+            .withChangeId(changeId)
             .withState(AuditEntry.Status.FAILED);
     }
     
@@ -81,7 +81,7 @@ public static AuditEntryExpectation EXECUTION_FAILED(String changeId) {
      */
     public static AuditEntryExpectation ROLLED_BACK(String changeId) {
         return AuditEntryExpectation.auditEntry()
-            .withTaskId(changeId)
+            .withChangeId(changeId)
             .withState(AuditEntry.Status.ROLLED_BACK);
     }
     
@@ -93,7 +93,7 @@ public static AuditEntryExpectation ROLLED_BACK(String changeId) {
      */
     public static AuditEntryExpectation ROLLBACK_FAILED(String changeId) {
         return AuditEntryExpectation.auditEntry()
-            .withTaskId(changeId)
+            .withChangeId(changeId)
             .withState(AuditEntry.Status.ROLLBACK_FAILED);
     }
     
@@ -109,7 +109,7 @@ public static AuditEntryExpectation ROLLBACK_FAILED(String changeId) {
      */
     public static AuditEntryExpectation withState(String changeId, AuditEntry.Status expectedState) {
         return AuditEntryExpectation.auditEntry()
-            .withTaskId(changeId)
+            .withChangeId(changeId)
             .withState(expectedState);
     }
 }
\ No newline at end of file
diff --git a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditTestHelper.java b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditTestHelper.java
index 349ba7f91..7ab6114ae 100644
--- a/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditTestHelper.java
+++ b/utils/test-util/src/main/java/io/flamingock/core/kit/audit/AuditTestHelper.java
@@ -208,7 +208,7 @@ private String formatActualSequence(List actualEntries) {
         for (int i = 0; i < actualEntries.size(); i++) {
             if (i > 0) sb.append(", ");
             AuditEntry entry = actualEntries.get(i);
-            sb.append(String.format("(%s, %s)", entry.getTaskId(), entry.getState()));
+            sb.append(String.format("(%s, %s)", entry.getChangeId(), entry.getState()));
         }
         sb.append("]");
         return sb.toString();
diff --git a/utils/test-util/src/main/java/io/flamingock/core/kit/inmemory/InternalInMemoryAuditStorage.java b/utils/test-util/src/main/java/io/flamingock/core/kit/inmemory/InternalInMemoryAuditStorage.java
index 411e98c4d..83ab0c28e 100644
--- a/utils/test-util/src/main/java/io/flamingock/core/kit/inmemory/InternalInMemoryAuditStorage.java
+++ b/utils/test-util/src/main/java/io/flamingock/core/kit/inmemory/InternalInMemoryAuditStorage.java
@@ -63,7 +63,7 @@ public synchronized long countAuditEntriesWithStatus(AuditEntry.Status status) {
 
     public synchronized List getAuditEntriesForChange(String changeId) {
         return auditEntries.stream()
-                .filter(entry -> changeId.equals(entry.getTaskId()))
+                .filter(entry -> changeId.equals(entry.getChangeId()))
                 .collect(Collectors.toList());
     }