From 7aa87d3166d760a2e35444160757fb26a47b0fc5 Mon Sep 17 00:00:00 2001 From: dieppa Date: Mon, 18 Oct 2021 12:11:18 +0100 Subject: [PATCH] change type --- .../sync/v4/changelogs/LegacyService.java | 2 ++ .../mongodb/v3/changelogs/LegacyService.java | 2 ++ .../mongock/driver/api/entry/ChangeEntry.java | 19 +++++++++++++++++-- .../mongock/driver/api/entry/ChangeType.java | 5 +++++ .../driver/api/entry/ChangeEntryTest.java | 1 + .../change/MigrationExecutorBase.java | 16 +++++++++++----- .../runner/core/internal/ChangeSetItem.java | 3 +++ 7 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeType.java diff --git a/drivers/mongock-driver-mongodb/mongodb-sync-v4-driver/src/main/java/io/mongock/driver/mongodb/sync/v4/changelogs/LegacyService.java b/drivers/mongock-driver-mongodb/mongodb-sync-v4-driver/src/main/java/io/mongock/driver/mongodb/sync/v4/changelogs/LegacyService.java index b6d95143a..83d0dd69a 100644 --- a/drivers/mongock-driver-mongodb/mongodb-sync-v4-driver/src/main/java/io/mongock/driver/mongodb/sync/v4/changelogs/LegacyService.java +++ b/drivers/mongock-driver-mongodb/mongodb-sync-v4-driver/src/main/java/io/mongock/driver/mongodb/sync/v4/changelogs/LegacyService.java @@ -11,6 +11,7 @@ import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; +import io.mongock.driver.api.entry.ChangeType; import org.bson.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -86,6 +87,7 @@ private List getOriginalMigrationAsChangeEntryList(MongoCollection< getDocumentStringValue(changeDocument, mappingFields.getAuthor()), getDocumentDateValue(changeDocument, mappingFields.getTimestamp()), ChangeState.EXECUTED, + ChangeType.EXECUTION, getDocumentStringValue(changeDocument, mappingFields.getChangeLogClass()), getDocumentStringValue(changeDocument, mappingFields.getChangeSetMethod()), -1L, diff --git a/drivers/mongock-driver-mongodb/mongodb-v3-driver/src/main/java/io/mongock/driver/mongodb/v3/changelogs/LegacyService.java b/drivers/mongock-driver-mongodb/mongodb-v3-driver/src/main/java/io/mongock/driver/mongodb/v3/changelogs/LegacyService.java index 7bf64f4ed..4dc409f98 100644 --- a/drivers/mongock-driver-mongodb/mongodb-v3-driver/src/main/java/io/mongock/driver/mongodb/v3/changelogs/LegacyService.java +++ b/drivers/mongock-driver-mongodb/mongodb-v3-driver/src/main/java/io/mongock/driver/mongodb/v3/changelogs/LegacyService.java @@ -11,6 +11,7 @@ import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; +import io.mongock.driver.api.entry.ChangeType; import org.bson.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -85,6 +86,7 @@ private List getOriginalMigrationAsChangeEntryList(MongoCollection< getDocumentStringValue(changeDocument, mappingFields.getAuthor()), getDocumentDateValue(changeDocument, mappingFields.getTimestamp()), ChangeState.EXECUTED, + ChangeType.EXECUTION, getDocumentStringValue(changeDocument, mappingFields.getChangeLogClass()), getDocumentStringValue(changeDocument, mappingFields.getChangeSetMethod()), -1L, diff --git a/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeEntry.java b/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeEntry.java index e19baa8a9..e7485767a 100644 --- a/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeEntry.java +++ b/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeEntry.java @@ -28,6 +28,9 @@ public class ChangeEntry { @Field("state") private final ChangeState state; + @Field("type") + private final ChangeType type; + @Field("changeLogClass") private final String changeLogClass; @@ -48,6 +51,7 @@ public ChangeEntry(String executionId, String author, Date timestamp, ChangeState state, + ChangeType type, String changeLogClass, String changeSetMethod, long executionMillis, @@ -58,6 +62,7 @@ public ChangeEntry(String executionId, this.author = author; this.timestamp = new Date(timestamp.getTime()); this.state = state; + this.type = type; this.changeLogClass = changeLogClass; this.changeSetMethod = changeSetMethod; this.executionMillis = executionMillis; @@ -68,6 +73,7 @@ public ChangeEntry(String executionId, public static ChangeEntry createInstance(String executionId, String author, ChangeState state, + ChangeType type, String changeSetId, String changeSetClassName, String changeSetName, @@ -80,6 +86,7 @@ public static ChangeEntry createInstance(String executionId, author, new Date(), state, + type, changeSetClassName, changeSetName, executionMillis, @@ -87,6 +94,8 @@ public static ChangeEntry createInstance(String executionId, metadata); } + + public String getExecutionId() { return executionId; } @@ -127,19 +136,25 @@ public Object getMetadata() { return metadata; } + public ChangeType getType() { + return type; + } + @Override public String toString() { - return "ChangeEntry{" + - "executionId='" + executionId + '\'' + + String sb = "ChangeEntry{" + "executionId='" + executionId + '\'' + ", changeId='" + changeId + '\'' + ", author='" + author + '\'' + ", timestamp=" + timestamp + ", state=" + state + + ", type=" + type + ", changeLogClass='" + changeLogClass + '\'' + ", changeSetMethod='" + changeSetMethod + '\'' + ", metadata=" + metadata + ", executionMillis=" + executionMillis + + ", executionHostname='" + executionHostname + '\'' + '}'; + return sb; } public String toPrettyString() { diff --git a/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeType.java b/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeType.java new file mode 100644 index 000000000..ee1d3a489 --- /dev/null +++ b/mongock-core/mongock-driver/mongock-driver-api/src/main/java/io/mongock/driver/api/entry/ChangeType.java @@ -0,0 +1,5 @@ +package io.mongock.driver.api.entry; + +public enum ChangeType { + EXECUTION, BEFORE_EXECUTION +} diff --git a/mongock-core/mongock-driver/mongock-driver-api/src/test/java/io/mongock/driver/api/entry/ChangeEntryTest.java b/mongock-core/mongock-driver/mongock-driver-api/src/test/java/io/mongock/driver/api/entry/ChangeEntryTest.java index 90e6540af..62e52efab 100644 --- a/mongock-core/mongock-driver/mongock-driver-api/src/test/java/io/mongock/driver/api/entry/ChangeEntryTest.java +++ b/mongock-core/mongock-driver/mongock-driver-api/src/test/java/io/mongock/driver/api/entry/ChangeEntryTest.java @@ -41,6 +41,7 @@ private ChangeEntry getChangeEntry() throws NoSuchMethodException { "migrationExecutionId", "changeAuthor", ChangeState.EXECUTED, + ChangeType.EXECUTION, "changeId", ChangeEntryTest.class.getName(), "changeSetMethod", diff --git a/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/executor/operation/change/MigrationExecutorBase.java b/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/executor/operation/change/MigrationExecutorBase.java index 57be0b21b..34a20b923 100644 --- a/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/executor/operation/change/MigrationExecutorBase.java +++ b/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/executor/operation/change/MigrationExecutorBase.java @@ -1,5 +1,6 @@ package io.mongock.runner.core.executor.operation.change; +import io.mongock.driver.api.entry.ChangeType; import io.mongock.runner.core.internal.ChangeLogItem; import io.mongock.runner.core.internal.ChangeSetItem; import io.mongock.api.config.TransactionStrategy; @@ -33,6 +34,8 @@ import static io.mongock.driver.api.entry.ChangeState.IGNORED; import static io.mongock.driver.api.entry.ChangeState.ROLLBACK_FAILED; import static io.mongock.driver.api.entry.ChangeState.ROLLED_BACK; +import static io.mongock.driver.api.entry.ChangeType.BEFORE_EXECUTION; +import static io.mongock.driver.api.entry.ChangeType.EXECUTION; @NotThreadSafe public abstract class MigrationExecutorBase implements Executor { @@ -221,20 +224,21 @@ protected boolean isAlreadyExecuted(ChangeSetItem changeSetItem) { protected void executeAndLogChangeSet(String executionId, String executionHostname, Object changelogInstance, ChangeSetItem changeSetItem) throws IllegalAccessException, InvocationTargetException { ChangeEntry changeEntry = null; boolean alreadyExecuted = false; + ChangeType type = changeSetItem.isBeforeChangeSets() ? BEFORE_EXECUTION : EXECUTION; try { if (!(alreadyExecuted = isAlreadyExecuted(changeSetItem)) || changeSetItem.isRunAlways()) { logger.debug("executing changeSet[{}]", changeSetItem.getId()); final long executionTimeMillis = executeChangeSetMethod(changeSetItem.getMethod(), changelogInstance); - changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, executionTimeMillis, EXECUTED); + changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, executionTimeMillis, EXECUTED, type); logger.debug("successfully executed changeSet[{}]", changeSetItem.getId()); } else { - changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, -1L, IGNORED); + changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, -1L, IGNORED, type); } } catch (Exception ex) { logger.debug("failure when executing changeSet[{}]", changeSetItem.getId()); - changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, -1L, FAILED); + changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, -1L, FAILED, type); throw ex; } finally { if (changeEntry != null) { @@ -267,7 +271,8 @@ protected void rollbackIfPresentAndTrackChangeEntry(String executionId, String e rollbackExecutionState = ROLLBACK_FAILED; throw rollbackException; } finally { - ChangeEntry changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, -1L, rollbackExecutionState); + ChangeType type = changeSetItem.isBeforeChangeSets() ? BEFORE_EXECUTION : EXECUTION; + ChangeEntry changeEntry = createChangeEntryInstance(executionId, executionHostname, changeSetItem, -1L, rollbackExecutionState, type); logChangeEntry(changeEntry, changeSetItem, false); trackChangeEntry(changeSetItem, changeEntry, false); } @@ -297,11 +302,12 @@ private void logChangeEntry(ChangeEntry changeEntry, ChangeSetItem changeSetItem } } - protected ChangeEntry createChangeEntryInstance(String executionId, String executionHostname, ChangeSetItem changeSetItem, long executionTimeMillis, ChangeState state) { + protected ChangeEntry createChangeEntryInstance(String executionId, String executionHostname, ChangeSetItem changeSetItem, long executionTimeMillis, ChangeState state, ChangeType type) { return ChangeEntry.createInstance( executionId, StringUtils.isNotEmpty(changeSetItem.getAuthor()) ? changeSetItem.getAuthor() : defaultAuthor, state, + type, changeSetItem.getId(), changeSetItem.getMethod().getDeclaringClass().getName(), changeSetItem.getMethod().getName(), diff --git a/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/internal/ChangeSetItem.java b/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/internal/ChangeSetItem.java index faed3f614..1b201fe95 100644 --- a/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/internal/ChangeSetItem.java +++ b/mongock-core/mongock-runner/mongock-runner-core/src/main/java/io/mongock/runner/core/internal/ChangeSetItem.java @@ -1,6 +1,8 @@ package io.mongock.runner.core.internal; import io.mongock.api.exception.MongockException; +import io.mongock.driver.api.entry.ChangeType; + import java.lang.reflect.Method; import java.util.Objects; import java.util.Optional; @@ -89,6 +91,7 @@ public boolean isBeforeChangeSets() { return beforeChangeSets; } + @Override public boolean equals(Object o) { if (this == o) return true;