From bf21d504cfdef2932d223ce2b55958de4d43f029 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 12 Dec 2020 17:16:46 +0100 Subject: [PATCH 001/306] Initial commit --- .gitignore | 23 +++++++++++++++++++++++ README.md | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 .gitignore create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a1c2a238 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* diff --git a/README.md b/README.md new file mode 100644 index 00000000..492105d6 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# micro-migration +Migration Lib for MicroStream From 8c05d379ae3abca7ec4bb43d881eabb793e04891 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 12 Dec 2020 17:25:51 +0100 Subject: [PATCH 002/306] Raw structure implemented --- .classpath | 38 ++++ .gitignore | 1 + .project | 23 +++ .settings/org.eclipse.jdt.core.prefs | 16 ++ .settings/org.eclipse.m2e.core.prefs | 4 + pom.xml | 44 +++++ .../micromigration/MicroMigrationScript.java | 33 ++++ .../MigrationEmbeddedStorageManager.java | 178 ++++++++++++++++++ .../migrater/ExplicitMigrater.java | 23 +++ .../migrater/MicroMigrater.java | 34 ++++ .../version/MicroMigrationVersion.java | 72 +++++++ .../version/MicroStreamVersionedRoot.java | 33 ++++ 12 files changed, 499 insertions(+) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 pom.xml create mode 100644 src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java diff --git a/.classpath b/.classpath new file mode 100644 index 00000000..271ce0c5 --- /dev/null +++ b/.classpath @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index a1c2a238..c836fce5 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* +/target/ diff --git a/.project b/.project new file mode 100644 index 00000000..28a7634a --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + micro-migration + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..8b5c4dca --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,16 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 00000000..f897a7f1 --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..1a4bc4e9 --- /dev/null +++ b/pom.xml @@ -0,0 +1,44 @@ + + 4.0.0 + de.johannes_rabauer + micro-migration + 0.0.1-SNAPSHOT + MicroMigration + Migration Lib for MicroStream + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + + + + + microstream-releases + https://repo.microstream.one/repository/maven-public/ + + + + + one.microstream + storage.embedded + 04.00.00-MS-GA + + + one.microstream + storage.embedded.configuration + 04.00.00-MS-GA + + + \ No newline at end of file diff --git a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java new file mode 100644 index 00000000..2b33a329 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java @@ -0,0 +1,33 @@ +package de.johannes_rabauer.micromigration; + +import java.util.Comparator; + +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +public interface MicroMigrationScript +{ + public final static char VERSION_SEPERATOR = '_'; + final static String WRONG_FORMAT_ERROR_MESSAGE = "Script has invalid class name. Either rename the class to a valid script class name, or implement method getTargetVersion()."; + + public default MicroMigrationVersion getTargetVersion() + { + final String implementationClassName = this.getClass().getSimpleName(); + int indexOfFirstVersionSeperator = implementationClassName.indexOf(VERSION_SEPERATOR); + if(indexOfFirstVersionSeperator < 0) + { + throw new Error(WRONG_FORMAT_ERROR_MESSAGE); + } + int majorVersion = Integer.parseInt(implementationClassName.substring(0, indexOfFirstVersionSeperator)); + return new MicroMigrationVersion(majorVersion); + } + + public void execute(); + + public static Comparator COMPARATOR = new Comparator() + { + @Override + public int compare(MicroMigrationScript o1, MicroMigrationScript o2) { + return MicroMigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); + } + }; +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..6c4d5ef6 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -0,0 +1,178 @@ +package de.johannes_rabauer.micromigration; + +import java.util.function.Predicate; + +import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; +import one.microstream.afs.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.reference.Reference; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; + +public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager +{ + private final EmbeddedStorageManager nativeManager; + + public MigrationEmbeddedStorageManager(EmbeddedStorageManager nativeManager) + { + this.nativeManager = nativeManager; + } + + public EmbeddedStorageManager start() + { + this.nativeManager.start(); + if(!(this.nativeManager.root() instanceof MicroStreamVersionedRoot)) + { + //Build VersionedRoot around actual root, set by user. + MicroStreamVersionedRoot versionRoot = new MicroStreamVersionedRoot(this.nativeManager.root()); + nativeManager.setRoot(versionRoot); + } + return this; + } + + public Object root() { + // TODO Auto-generated method stub + return null; + } + + public Object setRoot(Object newRoot) { + // TODO Auto-generated method stub + return null; + } + // Simply forward all the other methods + + public StorageConfiguration configuration() { + // TODO Auto-generated method stub + return null; + } + + public StorageTypeDictionary typeDictionary() { + // TODO Auto-generated method stub + return null; + } + + public boolean shutdown() { + // TODO Auto-generated method stub + return false; + } + + public long storeRoot() { + // TODO Auto-generated method stub + return 0; + } + + public StorageConnection createConnection() { + // TODO Auto-generated method stub + return null; + } + + + public PersistenceRootsView viewRoots() { + // TODO Auto-generated method stub + return null; + } + + public Reference defaultRoot() { + // TODO Auto-generated method stub + return null; + } + + public Database database() { + // TODO Auto-generated method stub + return null; + } + + public boolean isAcceptingTasks() { + // TODO Auto-generated method stub + return false; + } + + public boolean isRunning() { + // TODO Auto-generated method stub + return false; + } + + public boolean isStartingUp() { + // TODO Auto-generated method stub + return false; + } + + public boolean isShuttingDown() { + // TODO Auto-generated method stub + return false; + } + + public void checkAcceptingTasks() { + // TODO Auto-generated method stub + + } + + public long initializationTime() { + // TODO Auto-generated method stub + return 0; + } + + public long operationModeTime() { + // TODO Auto-generated method stub + return 0; + } + + public boolean isActive() { + // TODO Auto-generated method stub + return false; + } + + public boolean issueGarbageCollection(long nanoTimeBudget) { + // TODO Auto-generated method stub + return false; + } + + public boolean issueFileCheck(long nanoTimeBudget) { + // TODO Auto-generated method stub + return false; + } + + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { + // TODO Auto-generated method stub + return false; + } + + public StorageRawFileStatistics createStorageStatistics() { + // TODO Auto-generated method stub + return null; + } + + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { + // TODO Auto-generated method stub + + } + + public StorageEntityTypeExportStatistics exportTypes(StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) { + // TODO Auto-generated method stub + return null; + } + + public void importFiles(XGettingEnum importFiles) { + // TODO Auto-generated method stub + + } + + public PersistenceManager persistenceManager() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java new file mode 100644 index 00000000..03ca94f9 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -0,0 +1,23 @@ +package de.johannes_rabauer.micromigration.migrater; + +import java.util.TreeSet; + +import de.johannes_rabauer.micromigration.MicroMigrationScript; + +public class ExplicitMigrater implements MicroMigrater +{ + private final TreeSet sortedScripts = new TreeSet<>(MicroMigrationScript.COMPARATOR); + + public ExplicitMigrater(MicroMigrationScript ...scripts) + { + for (MicroMigrationScript script : scripts) + { + this.sortedScripts.add(script); + } + } + + @Override + public TreeSet getSortedScripts() { + return this.sortedScripts; + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java new file mode 100644 index 00000000..fa7c0c5a --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -0,0 +1,34 @@ +package de.johannes_rabauer.micromigration.migrater; + +import java.util.TreeSet; + +import de.johannes_rabauer.micromigration.MicroMigrationScript; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +public interface MicroMigrater +{ + public TreeSet getSortedScripts(); + + public default void migrateToNewest(MicroMigrationVersion fromVersion) + { + migrateToVersion(fromVersion, getSortedScripts().last().getTargetVersion()); + } + + public default void migrateToVersion + ( + MicroMigrationVersion fromVersion, + MicroMigrationVersion targetVersion + ) + { + for (MicroMigrationScript script : this.getSortedScripts()) + { + if(MicroMigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) <= 0) + { + if(MicroMigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) + { + script.execute(); + } + } + } + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java new file mode 100644 index 00000000..4180416a --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java @@ -0,0 +1,72 @@ +package de.johannes_rabauer.micromigration.version; + +import java.util.Comparator; + +import de.johannes_rabauer.micromigration.MicroMigrationScript; + +public class MicroMigrationVersion +{ + private final int majorVersion; + private final int minorVersion; + private final int patchVersion; + + public MicroMigrationVersion + ( + int majorVersion + ) + { + this(majorVersion, 0); + } + + public MicroMigrationVersion + ( + int majorVersion, + int minorVersion + ) + { + this(majorVersion, minorVersion, 0); + } + + public MicroMigrationVersion + ( + int majorVersion, + int minorVersion, + int patchVersion + ) + { + this.majorVersion = majorVersion; + this.minorVersion = minorVersion; + this.patchVersion = patchVersion; + } + + public int getMajorVersion() { + return majorVersion; + } + + public int getMinorVersion() { + return minorVersion; + } + + public int getPatchVersion() { + return patchVersion; + } + + public static Comparator COMPARATOR = new Comparator() + { + @Override + public int compare(MicroMigrationVersion o1, MicroMigrationVersion o2) + { + int majorVersionCompare = Integer.compare(o1.majorVersion, o2.majorVersion); + if(majorVersionCompare != 0) + { + return majorVersionCompare; + } + int minorVersionCompare = Integer.compare(o1.minorVersion, o2.minorVersion); + if(minorVersionCompare != 0) + { + return minorVersionCompare; + } + return Integer.compare(o1.patchVersion, o2.patchVersion); + } + }; +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java new file mode 100644 index 00000000..62c0a4e1 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java @@ -0,0 +1,33 @@ +package de.johannes_rabauer.micromigration.version; + +public class MicroStreamVersionedRoot +{ + private MicroMigrationVersion currentVersion; + private Object actualRoot ; + + public MicroStreamVersionedRoot(Object actualRoot) + { + setRoot(actualRoot); + setVersion(new MicroMigrationVersion(0,1,0)); + } + + public void setVersion(MicroMigrationVersion version) + { + this.currentVersion = version; + } + + public MicroMigrationVersion getVersion() + { + return this.currentVersion; + } + + public void setRoot(Object actualRoot) + { + this.actualRoot = actualRoot; + } + + public Object getRoot() + { + return this.actualRoot; + } +} From c418624c952f1dbaa0c2f2f2324e26396ff26f4d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 12 Dec 2020 20:30:44 +0100 Subject: [PATCH 003/306] Update for the first working prototype --- pom.xml | 5 + .../MigrationEmbeddedStorage.java | 17 ++++ .../MigrationEmbeddedStorageManager.java | 98 ++++++++----------- 3 files changed, 63 insertions(+), 57 deletions(-) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java diff --git a/pom.xml b/pom.xml index 1a4bc4e9..67b6b093 100644 --- a/pom.xml +++ b/pom.xml @@ -40,5 +40,10 @@ storage.embedded.configuration 04.00.00-MS-GA + + one.microstream + storage.embedded.configuration + 04.00.00-MS-GA + \ No newline at end of file diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java new file mode 100644 index 00000000..57ee421f --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -0,0 +1,17 @@ +package de.johannes_rabauer.micromigration; + +import one.microstream.storage.configuration.Configuration; +import one.microstream.storage.types.EmbeddedStorage; +import one.microstream.storage.types.EmbeddedStorageManager; + +public class MigrationEmbeddedStorage +{ + public static final MigrationEmbeddedStorageManager start() + { + return new MigrationEmbeddedStorageManager( + Configuration.Default() + .createEmbeddedStorageFoundation() + .createEmbeddedStorageManager() + ).start(); + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 6c4d5ef6..6f636908 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -23,156 +23,140 @@ public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager { - private final EmbeddedStorageManager nativeManager; + private final EmbeddedStorageManager nativeManager; + private MicroStreamVersionedRoot versionRoot ; public MigrationEmbeddedStorageManager(EmbeddedStorageManager nativeManager) { this.nativeManager = nativeManager; } - public EmbeddedStorageManager start() + public MigrationEmbeddedStorageManager start() { this.nativeManager.start(); - if(!(this.nativeManager.root() instanceof MicroStreamVersionedRoot)) + if(this.nativeManager.root() instanceof MicroStreamVersionedRoot) + { + this.versionRoot = (MicroStreamVersionedRoot)this.nativeManager.root(); + } + else { //Build VersionedRoot around actual root, set by user. - MicroStreamVersionedRoot versionRoot = new MicroStreamVersionedRoot(this.nativeManager.root()); + this.versionRoot = new MicroStreamVersionedRoot(this.nativeManager.root()); nativeManager.setRoot(versionRoot); } return this; } public Object root() { - // TODO Auto-generated method stub - return null; + return this.versionRoot.getRoot(); } public Object setRoot(Object newRoot) { - // TODO Auto-generated method stub - return null; + this.versionRoot.setRoot(newRoot); + return newRoot; } + + //////////////////////////////////////////////////////////////// // Simply forward all the other methods + //////////////////////////////////////////////////////////////// public StorageConfiguration configuration() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.configuration(); } public StorageTypeDictionary typeDictionary() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.typeDictionary(); } - public boolean shutdown() { - // TODO Auto-generated method stub - return false; + public boolean shutdown() + { + return this.nativeManager.shutdown(); } public long storeRoot() { - // TODO Auto-generated method stub - return 0; + return this.nativeManager.storeRoot(); } public StorageConnection createConnection() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.createConnection(); } public PersistenceRootsView viewRoots() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.viewRoots(); } public Reference defaultRoot() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.defaultRoot(); } public Database database() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.database(); } public boolean isAcceptingTasks() { - // TODO Auto-generated method stub - return false; + return this.nativeManager.isAcceptingTasks(); } public boolean isRunning() { - // TODO Auto-generated method stub - return false; + return this.nativeManager.isRunning(); } public boolean isStartingUp() { - // TODO Auto-generated method stub - return false; + return this.nativeManager.isStartingUp(); } public boolean isShuttingDown() { - // TODO Auto-generated method stub - return false; + return this.nativeManager.isShuttingDown(); } public void checkAcceptingTasks() { - // TODO Auto-generated method stub - + this.nativeManager.checkAcceptingTasks(); } public long initializationTime() { - // TODO Auto-generated method stub - return 0; + return this.nativeManager.initializationTime(); } public long operationModeTime() { - // TODO Auto-generated method stub - return 0; + return this.nativeManager.operationModeTime(); } public boolean isActive() { - // TODO Auto-generated method stub - return false; + return this.nativeManager.isActive(); } public boolean issueGarbageCollection(long nanoTimeBudget) { - // TODO Auto-generated method stub - return false; + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } public boolean issueFileCheck(long nanoTimeBudget) { - // TODO Auto-generated method stub - return false; + return this.nativeManager.issueFileCheck(nanoTimeBudget); } public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { - // TODO Auto-generated method stub - return false; + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); } public StorageRawFileStatistics createStorageStatistics() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.createStorageStatistics(); } public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { - // TODO Auto-generated method stub - + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } public StorageEntityTypeExportStatistics exportTypes(StorageEntityTypeExportFileProvider exportFileProvider, Predicate isExportType) { - // TODO Auto-generated method stub - return null; + return this.nativeManager.exportTypes(exportFileProvider, isExportType); } public void importFiles(XGettingEnum importFiles) { - // TODO Auto-generated method stub - + this.nativeManager.importFiles(importFiles); } public PersistenceManager persistenceManager() { - // TODO Auto-generated method stub - return null; + return this.nativeManager.persistenceManager(); } } From 951b2130e8802a3429588a1e71bdb2881a619bce Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 13 Dec 2020 18:54:39 +0100 Subject: [PATCH 004/306] Further updates for first stage to functionality --- .../micromigration/MicroMigrationScript.java | 5 ++- .../MigrationEmbeddedStorage.java | 14 ++++++-- .../MigrationEmbeddedStorageManager.java | 24 +++++++++++-- .../migrater/MicroMigrater.java | 34 +++++++++++++++---- .../version/MicroMigrationVersion.java | 7 ++-- 5 files changed, 69 insertions(+), 15 deletions(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java index 2b33a329..e9dbce53 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java @@ -21,7 +21,10 @@ public default MicroMigrationVersion getTargetVersion() return new MicroMigrationVersion(majorVersion); } - public void execute(); + public void execute( + Object root , + MigrationEmbeddedStorageManager storageManager + ); public static Comparator COMPARATOR = new Comparator() { diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index 57ee421f..631520ce 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -1,17 +1,25 @@ package de.johannes_rabauer.micromigration; +import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import one.microstream.storage.configuration.Configuration; import one.microstream.storage.types.EmbeddedStorage; import one.microstream.storage.types.EmbeddedStorageManager; -public class MigrationEmbeddedStorage +public class MigrationEmbeddedStorage { - public static final MigrationEmbeddedStorageManager start() + /** + * Warning "resource" is suppressed because it is used and closed in the @link {@link MigrationEmbeddedStorageManager}. + * @param migrater + * @return + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) { return new MigrationEmbeddedStorageManager( Configuration.Default() .createEmbeddedStorageFoundation() - .createEmbeddedStorageManager() + .createEmbeddedStorageManager(), + migrater ).start(); } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 6f636908..db91a18d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -2,6 +2,8 @@ import java.util.function.Predicate; +import de.johannes_rabauer.micromigration.migrater.MicroMigrater; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; import one.microstream.afs.AFile; import one.microstream.collections.types.XGettingEnum; @@ -23,12 +25,17 @@ public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager { - private final EmbeddedStorageManager nativeManager; + private final EmbeddedStorageManager nativeManager; + private final MicroMigrater migrater ; private MicroStreamVersionedRoot versionRoot ; - public MigrationEmbeddedStorageManager(EmbeddedStorageManager nativeManager) + public MigrationEmbeddedStorageManager( + EmbeddedStorageManager nativeManager, + MicroMigrater migrater + ) { this.nativeManager = nativeManager; + this.migrater = migrater ; } public MigrationEmbeddedStorageManager start() @@ -44,6 +51,18 @@ public MigrationEmbeddedStorageManager start() this.versionRoot = new MicroStreamVersionedRoot(this.nativeManager.root()); nativeManager.setRoot(versionRoot); } + // Execute Updates + final MicroMigrationVersion versionAfterUpdate = migrater.migrateToNewest( + this.versionRoot.getVersion(), + this , + this.versionRoot.getRoot() + ); + //Update stored version, if needed + if(versionAfterUpdate != this.versionRoot.getVersion()) + { + this.versionRoot.setVersion(versionAfterUpdate); + nativeManager.storeRoot(); + } return this; } @@ -86,6 +105,7 @@ public PersistenceRootsView viewRoots() { return this.nativeManager.viewRoots(); } + @Deprecated public Reference defaultRoot() { return this.nativeManager.defaultRoot(); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index fa7c0c5a..ecccce72 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -3,32 +3,52 @@ import java.util.TreeSet; import de.johannes_rabauer.micromigration.MicroMigrationScript; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; public interface MicroMigrater { public TreeSet getSortedScripts(); - public default void migrateToNewest(MicroMigrationVersion fromVersion) + public default MicroMigrationVersion migrateToNewest( + MicroMigrationVersion fromVersion , + MigrationEmbeddedStorageManager storageManager, + Object root + ) { - migrateToVersion(fromVersion, getSortedScripts().last().getTargetVersion()); + TreeSet sortedScripts = getSortedScripts(); + if(sortedScripts.size() > 0) + { + return migrateToVersion( + fromVersion , + getSortedScripts().last().getTargetVersion(), + storageManager , + root + ); + } + return fromVersion; } - public default void migrateToVersion + public default MicroMigrationVersion migrateToVersion ( - MicroMigrationVersion fromVersion, - MicroMigrationVersion targetVersion + MicroMigrationVersion fromVersion , + MicroMigrationVersion targetVersion , + MigrationEmbeddedStorageManager storageManager, + Object root ) { + MicroMigrationVersion updateVersionWhichWasExecuted = fromVersion; for (MicroMigrationScript script : this.getSortedScripts()) { - if(MicroMigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) <= 0) + if(MicroMigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) { if(MicroMigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) { - script.execute(); + script.execute(root, storageManager); + updateVersionWhichWasExecuted = script.getTargetVersion(); } } } + return updateVersionWhichWasExecuted; } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java index 4180416a..d6e69da1 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java @@ -2,8 +2,6 @@ import java.util.Comparator; -import de.johannes_rabauer.micromigration.MicroMigrationScript; - public class MicroMigrationVersion { private final int majorVersion; @@ -51,6 +49,11 @@ public int getPatchVersion() { return patchVersion; } + @Override + public String toString() { + return "v" + this.majorVersion + "." + this.minorVersion + "." + this.patchVersion; + } + public static Comparator COMPARATOR = new Comparator() { @Override From f246ca4e2f9c74cb42580de72c4dc90c0080aea6 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 13 Dec 2020 21:55:36 +0100 Subject: [PATCH 005/306] Provided some documentation --- README.md | 44 ++++++++++++++++++- .../micromigration/MicroMigrationScript.java | 10 +++++ .../MigrationEmbeddedStorage.java | 7 +++ .../MigrationEmbeddedStorageManager.java | 10 +++++ .../migrater/ExplicitMigrater.java | 10 +++++ .../migrater/MicroMigrater.java | 12 ++++- .../version/MicroMigrationVersion.java | 6 +++ .../version/MicroStreamVersionedRoot.java | 7 +++ 8 files changed, 103 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 492105d6..ac6bccd4 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,44 @@ # micro-migration -Migration Lib for MicroStream +Migration Lib for MicroStream. + +This library deliveres an easy concept to keep your MicroStream datastore versioned +with migration scripts written in plain java. + +## Usage example +A simple example where scripts need to be registered in the `ExplicitMigrater`: +```java +public static void main(String[] args) +{ + final ExplicitMigrater migrater = new ExplicitMigrater( + new UpdateToV1_0(), + new UpdateToV1_1() + ); + final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); + System.out.println(storageManager.root()); + if(storageManager.root() == null) + { + storageManager.setRoot("Hello World! @ " + new Date()); + } + storageManager.storeRoot(); + storageManager.shutdown(); +} +``` +The update scripts can look like this: +```java +public class UpdateToV1_0 implements MicroMigrationScript +{ + public MicroMigrationVersion getTargetVersion() + { + return new MicroMigrationVersion(1,0); + } + + public void execute( + Object root , + MigrationEmbeddedStorageManager storageManager + ) + { + System.out.println("Update " + getTargetVersion().toString() + " executed."); + storageManager.setRoot("Hello World! @ " + new Date() + " Update 1.0"); + } +} +``` \ No newline at end of file diff --git a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java index e9dbce53..a05163ee 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java @@ -4,6 +4,16 @@ import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +/** + * Interface for scripts to migrate / update datastores. + *

+ * One script is supposed to bring a datastore from a lower version to the target version. + * After the {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} method is called, + * the target version is reached. + * + * @author Johannes Rabauer + * + */ public interface MicroMigrationScript { public final static char VERSION_SEPERATOR = '_'; diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index 631520ce..36009f9f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -5,6 +5,13 @@ import one.microstream.storage.types.EmbeddedStorage; import one.microstream.storage.types.EmbeddedStorageManager; +/** + * Wrapper class for the MicroStream {@link EmbeddedStorage} utility class. + * Produces {@link MigrationEmbeddedStorageManager} for updateable datastores. + * + * @author Johannes Rabauer + * + */ public class MigrationEmbeddedStorage { /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index db91a18d..af30e00c 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -12,6 +12,7 @@ import one.microstream.persistence.types.PersistenceRootsView; import one.microstream.reference.Reference; import one.microstream.storage.types.Database; +import one.microstream.storage.types.EmbeddedStorage; import one.microstream.storage.types.EmbeddedStorageManager; import one.microstream.storage.types.StorageConfiguration; import one.microstream.storage.types.StorageConnection; @@ -23,6 +24,15 @@ import one.microstream.storage.types.StorageRawFileStatistics; import one.microstream.storage.types.StorageTypeDictionary; +/** + * Wrapper class for the MicroStream {@link EmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link MicroStreamVersionedRoot} + * in front of it. This means the datastore is then versioned. + * + * @author Johannes Rabauer + * + */ public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager { private final EmbeddedStorageManager nativeManager; diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 03ca94f9..cb150156 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -3,7 +3,17 @@ import java.util.TreeSet; import de.johannes_rabauer.micromigration.MicroMigrationScript; +import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; +import one.microstream.storage.types.EmbeddedStorageManager; +/** + * Executes all the available scripts to migrate the datastore to a certain version. + *

+ * This class needs explicit scripts which are then included in the migration process. + * + * @author Johannes Rabauer + * + */ public class ExplicitMigrater implements MicroMigrater { private final TreeSet sortedScripts = new TreeSet<>(MicroMigrationScript.COMPARATOR); diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index ecccce72..aa25406a 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -5,10 +5,18 @@ import de.johannes_rabauer.micromigration.MicroMigrationScript; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; +import one.microstream.storage.types.EmbeddedStorageManager; +/** + * Executes all the available scripts to migrate the datastore to a certain version. + * + * @author Johannes Rabauer + * + */ public interface MicroMigrater { - public TreeSet getSortedScripts(); + public TreeSet getSortedScripts(); public default MicroMigrationVersion migrateToNewest( MicroMigrationVersion fromVersion , @@ -16,7 +24,7 @@ public default MicroMigrationVersion migrateToNewest( Object root ) { - TreeSet sortedScripts = getSortedScripts(); + TreeSet sortedScripts = getSortedScripts(); if(sortedScripts.size() > 0) { return migrateToVersion( diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java index d6e69da1..f734297f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java @@ -2,6 +2,12 @@ import java.util.Comparator; +/** + * Defines one version of the MicroStream datastore. + * + * @author Johannes Rabauer + * + */ public class MicroMigrationVersion { private final int majorVersion; diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java index 62c0a4e1..13da04d8 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java @@ -1,5 +1,12 @@ package de.johannes_rabauer.micromigration.version; +/** + * This class is inserted as the root of the MicroStream datastore and contains only the + * current version and the actual root object. + * + * @author Johannes Rabauer + * + */ public class MicroStreamVersionedRoot { private MicroMigrationVersion currentVersion; From 11f9aaa329bf061a9cd17708006535ead99a5f80 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 14 Dec 2020 20:08:20 +0100 Subject: [PATCH 006/306] Fixed warnings and tried implementing AutoRegisteringMigrater --- .../AutoRegisteringMigrationScript.java | 20 +++++++++++ .../MigrationEmbeddedStorage.java | 1 - .../MigrationEmbeddedStorageManager.java | 1 - .../migrater/AutoRegisteringMigrater.java | 35 +++++++++++++++++++ .../migrater/ExplicitMigrater.java | 2 -- .../migrater/MicroMigrater.java | 2 -- 6 files changed, 55 insertions(+), 6 deletions(-) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java new file mode 100644 index 00000000..88d9507e --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java @@ -0,0 +1,20 @@ +package de.johannes_rabauer.micromigration; + +import de.johannes_rabauer.micromigration.migrater.AutoRegisteringMigrater; + +/** + * Extending classes can easily auto register at the {@link AutoRegisteringMigrater}.
+ * Is not usable yet! + * + * @author Johannes Rabauer + * + */ +@Deprecated +public abstract class AutoRegisteringMigrationScript implements MicroMigrationScript +{ + protected static AutoRegisteringMigrationScript registerSelf(AutoRegisteringMigrationScript script) + { + AutoRegisteringMigrater.registerScript(script); + return script; + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index 36009f9f..37ce7ab2 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -3,7 +3,6 @@ import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import one.microstream.storage.configuration.Configuration; import one.microstream.storage.types.EmbeddedStorage; -import one.microstream.storage.types.EmbeddedStorageManager; /** * Wrapper class for the MicroStream {@link EmbeddedStorage} utility class. diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index af30e00c..c9347d82 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -12,7 +12,6 @@ import one.microstream.persistence.types.PersistenceRootsView; import one.microstream.reference.Reference; import one.microstream.storage.types.Database; -import one.microstream.storage.types.EmbeddedStorage; import one.microstream.storage.types.EmbeddedStorageManager; import one.microstream.storage.types.StorageConfiguration; import one.microstream.storage.types.StorageConnection; diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java new file mode 100644 index 00000000..61bc8a6d --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java @@ -0,0 +1,35 @@ +package de.johannes_rabauer.micromigration.migrater; + +import java.util.TreeSet; + +import de.johannes_rabauer.micromigration.AutoRegisteringMigrationScript; +import de.johannes_rabauer.micromigration.MicroMigrationScript; + +/** + * Executes all the scripts which can register themselves.
+ * Is not usable yet! + * @author Johannes Rabauer + * + */ +@Deprecated +public class AutoRegisteringMigrater implements MicroMigrater +{ + private final static TreeSet SORTED_SCRIPTS = new TreeSet<>(MicroMigrationScript.COMPARATOR); + + public final static AutoRegisteringMigrater INSTANCE = new AutoRegisteringMigrater(); + + private AutoRegisteringMigrater() + { + + } + + public static final void registerScript(AutoRegisteringMigrationScript script) + { + SORTED_SCRIPTS.add(script); + } + + @Override + public TreeSet getSortedScripts() { + return SORTED_SCRIPTS; + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index cb150156..1f3e956a 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -3,8 +3,6 @@ import java.util.TreeSet; import de.johannes_rabauer.micromigration.MicroMigrationScript; -import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; -import one.microstream.storage.types.EmbeddedStorageManager; /** * Executes all the available scripts to migrate the datastore to a certain version. diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index aa25406a..0478f285 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -5,8 +5,6 @@ import de.johannes_rabauer.micromigration.MicroMigrationScript; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; -import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; -import one.microstream.storage.types.EmbeddedStorageManager; /** * Executes all the available scripts to migrate the datastore to a certain version. From 2128ffd529411caba8398b93b7bbb46351b538e4 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 14 Dec 2020 21:02:16 +0100 Subject: [PATCH 007/306] Implemented some tests --- .classpath | 1 + .../MigrationEmbeddedStorage.java | 22 +++++++++- .../MigrationEmbeddedStorageManager.java | 32 ++++++++++++++ ...IntroduceMigrationOnExistingDatastore.java | 42 +++++++++++++++++++ .../migrater/ExplicitMigraterTest.java | 39 +++++++++++++++++ .../testUtil/MicroMigrationScriptDummy.java | 27 ++++++++++++ 6 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java create mode 100644 src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java create mode 100644 src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java diff --git a/.classpath b/.classpath index 271ce0c5..6bc00bc8 100644 --- a/.classpath +++ b/.classpath @@ -34,5 +34,6 @@ + diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index 37ce7ab2..612e7970 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -1,5 +1,7 @@ package de.johannes_rabauer.micromigration; +import java.nio.file.Path; + import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import one.microstream.storage.configuration.Configuration; import one.microstream.storage.types.EmbeddedStorage; @@ -15,8 +17,6 @@ public class MigrationEmbeddedStorage { /** * Warning "resource" is suppressed because it is used and closed in the @link {@link MigrationEmbeddedStorageManager}. - * @param migrater - * @return */ @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) @@ -28,4 +28,22 @@ public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater migrater ).start(); } + + /** + * Warning "resource" is suppressed because it is used and closed in the @link {@link MigrationEmbeddedStorageManager}. + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start( + Path storageDirectory, + MicroMigrater migrater + ) + { + return new MigrationEmbeddedStorageManager( + Configuration.Default() + .setBaseDirectory(storageDirectory.toAbsolutePath().toString()) + .createEmbeddedStorageFoundation() + .createEmbeddedStorageManager(), + migrater + ).start(); + } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index c9347d82..724896f3 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -47,6 +47,7 @@ public MigrationEmbeddedStorageManager( this.migrater = migrater ; } + @Override public MigrationEmbeddedStorageManager start() { this.nativeManager.start(); @@ -74,11 +75,18 @@ public MigrationEmbeddedStorageManager start() } return this; } + + public MicroMigrationVersion getCurrentVersion() + { + return this.versionRoot.getVersion(); + } + @Override public Object root() { return this.versionRoot.getRoot(); } + @Override public Object setRoot(Object newRoot) { this.versionRoot.setRoot(newRoot); return newRoot; @@ -88,102 +96,126 @@ public Object setRoot(Object newRoot) { // Simply forward all the other methods //////////////////////////////////////////////////////////////// + @Override public StorageConfiguration configuration() { return this.nativeManager.configuration(); } + @Override public StorageTypeDictionary typeDictionary() { return this.nativeManager.typeDictionary(); } + @Override public boolean shutdown() { return this.nativeManager.shutdown(); } + @Override public long storeRoot() { return this.nativeManager.storeRoot(); } + @Override public StorageConnection createConnection() { return this.nativeManager.createConnection(); } + @Override public PersistenceRootsView viewRoots() { return this.nativeManager.viewRoots(); } + @Override @Deprecated public Reference defaultRoot() { return this.nativeManager.defaultRoot(); } + @Override public Database database() { return this.nativeManager.database(); } + @Override public boolean isAcceptingTasks() { return this.nativeManager.isAcceptingTasks(); } + @Override public boolean isRunning() { return this.nativeManager.isRunning(); } + @Override public boolean isStartingUp() { return this.nativeManager.isStartingUp(); } + @Override public boolean isShuttingDown() { return this.nativeManager.isShuttingDown(); } + @Override public void checkAcceptingTasks() { this.nativeManager.checkAcceptingTasks(); } + @Override public long initializationTime() { return this.nativeManager.initializationTime(); } + @Override public long operationModeTime() { return this.nativeManager.operationModeTime(); } + @Override public boolean isActive() { return this.nativeManager.isActive(); } + @Override public boolean issueGarbageCollection(long nanoTimeBudget) { return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } + @Override public boolean issueFileCheck(long nanoTimeBudget) { return this.nativeManager.issueFileCheck(nanoTimeBudget); } + @Override public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); } + @Override public StorageRawFileStatistics createStorageStatistics() { return this.nativeManager.createStorageStatistics(); } + @Override public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } + @Override public StorageEntityTypeExportStatistics exportTypes(StorageEntityTypeExportFileProvider exportFileProvider, Predicate isExportType) { return this.nativeManager.exportTypes(exportFileProvider, isExportType); } + @Override public void importFiles(XGettingEnum importFiles) { this.nativeManager.importFiles(importFiles); } + @Override public PersistenceManager persistenceManager() { return this.nativeManager.persistenceManager(); } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java new file mode 100644 index 00000000..e712e241 --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java @@ -0,0 +1,42 @@ +package de.johannes_rabauer.micromigration.integration; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; +import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorage; +import one.microstream.storage.types.EmbeddedStorageManager; + +class IntroduceMigrationOnExistingDatastore +{ + final static String ROOT = "OriginalRoot"; + + @Test + public void testMigration(@TempDir Path storageFolder) throws IOException + { + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) + { + storageManager.setRoot(ROOT); + storageManager.storeRoot(); + } + + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MicroMigrationVersion(1)) + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(ROOT, migrationStorageManager.root()); + assertEquals(1, migrationStorageManager.getCurrentVersion().getMajorVersion()); + } + } + +} diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java new file mode 100644 index 00000000..5433abba --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -0,0 +1,39 @@ +package de.johannes_rabauer.micromigration.migrater; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +class ExplicitMigraterTest +{ + + @Test + void testGetSortedScripts_empty() { + final ExplicitMigrater migrater = new ExplicitMigrater(); + assertEquals(0,migrater.getSortedScripts().size()); + } + + @Test + void testGetSortedScripts_sorted() { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MicroMigrationVersion(1)), + new MicroMigrationScriptDummy(new MicroMigrationVersion(2)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getMajorVersion()); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getMajorVersion()); + } + + @Test + void testGetSortedScripts_unsorted() { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MicroMigrationVersion(2)), + new MicroMigrationScriptDummy(new MicroMigrationVersion(1)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getMajorVersion()); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getMajorVersion()); + } + +} diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java new file mode 100644 index 00000000..839ea88e --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -0,0 +1,27 @@ +package de.johannes_rabauer.micromigration.testUtil; + +import de.johannes_rabauer.micromigration.MicroMigrationScript; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +public class MicroMigrationScriptDummy implements MicroMigrationScript +{ + private final MicroMigrationVersion version; + + public MicroMigrationScriptDummy(MicroMigrationVersion version) + { + this.version = version; + } + + @Override + public MicroMigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void execute(Object root, MigrationEmbeddedStorageManager storageManager) { + // Don't do anything. + } + +} From f3ff7fd2d998217b667da1b0113765da43a7bafc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 15 Dec 2020 21:06:05 +0100 Subject: [PATCH 008/306] Small refactorings --- .../migrater/AutoRegisteringMigrater.java | 4 +- .../migrater/ExplicitMigrater.java | 2 +- .../migrater/MicroMigrater.java | 2 +- .../AutoRegisteringMigrationScript.java | 2 +- .../{ => scripts}/MicroMigrationScript.java | 3 +- .../scripts/SimpleMigrationScript.java | 34 +++++++++++ .../version/MicroMigrationVersion.java | 30 ++++++++++ .../version/MicroStreamVersionedRoot.java | 2 +- ...IntroduceMigrationOnExistingDatastore.java | 2 +- .../MigrationScriptAfterScript.java | 57 +++++++++++++++++++ .../testUtil/MicroMigrationScriptDummy.java | 2 +- 11 files changed, 131 insertions(+), 9 deletions(-) rename src/main/java/de/johannes_rabauer/micromigration/{ => scripts}/AutoRegisteringMigrationScript.java (90%) rename src/main/java/de/johannes_rabauer/micromigration/{ => scripts}/MicroMigrationScript.java (92%) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java create mode 100644 src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java index 61bc8a6d..2e7aa176 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java @@ -2,8 +2,8 @@ import java.util.TreeSet; -import de.johannes_rabauer.micromigration.AutoRegisteringMigrationScript; -import de.johannes_rabauer.micromigration.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.AutoRegisteringMigrationScript; +import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; /** * Executes all the scripts which can register themselves.
diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 1f3e956a..55b47291 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -2,7 +2,7 @@ import java.util.TreeSet; -import de.johannes_rabauer.micromigration.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; /** * Executes all the available scripts to migrate the datastore to a certain version. diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 0478f285..18ac8932 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -2,8 +2,8 @@ import java.util.TreeSet; -import de.johannes_rabauer.micromigration.MicroMigrationScript; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java similarity index 90% rename from src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java rename to src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java index 88d9507e..5d167d8d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/AutoRegisteringMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration; +package de.johannes_rabauer.micromigration.scripts; import de.johannes_rabauer.micromigration.migrater.AutoRegisteringMigrater; diff --git a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java similarity index 92% rename from src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java rename to src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java index a05163ee..cafa75a8 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java @@ -1,7 +1,8 @@ -package de.johannes_rabauer.micromigration; +package de.johannes_rabauer.micromigration.scripts; import java.util.Comparator; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java new file mode 100644 index 00000000..d2575c38 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -0,0 +1,34 @@ +package de.johannes_rabauer.micromigration.scripts; + +import java.util.function.BiConsumer; + +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +public class SimpleMigrationScript implements MicroMigrationScript +{ + private final MicroMigrationVersion version; + private final BiConsumer consumer; + + public SimpleMigrationScript( + final MicroMigrationVersion version, + final BiConsumer consumer + ) + { + this.version = version ; + this.consumer = consumer; + } + + @Override + public MicroMigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void execute(Object root, MigrationEmbeddedStorageManager storageManager) + { + this.consumer.accept(root, storageManager); + } + +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java index f734297f..9e576c61 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java @@ -78,4 +78,34 @@ public int compare(MicroMigrationVersion o1, MicroMigrationVersion o2) return Integer.compare(o1.patchVersion, o2.patchVersion); } }; + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + majorVersion; + result = prime * result + minorVersion; + result = prime * result + patchVersion; + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + MicroMigrationVersion other = (MicroMigrationVersion) obj; + if (majorVersion != other.majorVersion) + return false; + if (minorVersion != other.minorVersion) + return false; + if (patchVersion != other.patchVersion) + return false; + return true; + } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java index 13da04d8..21b23010 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java @@ -15,7 +15,7 @@ public class MicroStreamVersionedRoot public MicroStreamVersionedRoot(Object actualRoot) { setRoot(actualRoot); - setVersion(new MicroMigrationVersion(0,1,0)); + setVersion(new MicroMigrationVersion(0,0,0)); } public void setVersion(MicroMigrationVersion version) diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java index e712e241..024af9be 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java @@ -21,7 +21,7 @@ class IntroduceMigrationOnExistingDatastore final static String ROOT = "OriginalRoot"; @Test - public void testMigration(@TempDir Path storageFolder) throws IOException + public void testIntroducingMigrationOnExistingDatastore(@TempDir Path storageFolder) throws IOException { try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) { diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java new file mode 100644 index 00000000..5ebdc04d --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java @@ -0,0 +1,57 @@ +package de.johannes_rabauer.micromigration.integration; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; +import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +class MigrationScriptAfterScript +{ + @Test + public void testMigrationWithThreeDifferenMigrater(@TempDir Path storageFolder) throws IOException + { + //First run without any migration script + final ExplicitMigrater firstMigrater = new ExplicitMigrater(); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) + { + migrationStorageManager.setRoot(0); + assertEquals(0, migrationStorageManager.root()); + assertEquals(new MicroMigrationVersion(0,0,0), migrationStorageManager.getCurrentVersion()); + } + + //Run with one migration script + final MicroMigrationScript firstScript = new SimpleMigrationScript( + new MicroMigrationVersion(1), + (root, storage) -> storage.setRoot(1) + ); + final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + assertEquals(1, migrationStorageManager.root()); + assertEquals(new MicroMigrationVersion(1,0,0), migrationStorageManager.getCurrentVersion()); + } + + //Run with two migration scripts + final MicroMigrationScript secondScript = new SimpleMigrationScript( + new MicroMigrationVersion(2), + (root, storage) -> storage.setRoot(2) + ); + final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) + { + assertEquals(2, migrationStorageManager.root()); + assertEquals(new MicroMigrationVersion(2,0,0), migrationStorageManager.getCurrentVersion()); + } + } + +} diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java index 839ea88e..7c944035 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,7 +1,7 @@ package de.johannes_rabauer.micromigration.testUtil; -import de.johannes_rabauer.micromigration.MicroMigrationScript; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; public class MicroMigrationScriptDummy implements MicroMigrationScript From 0911ba0b7ca2046d76b0c048dba36313504880ba Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 15 Dec 2020 21:33:37 +0100 Subject: [PATCH 009/306] Extended README.md --- README.md | 58 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index ac6bccd4..ed3eb531 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,22 @@ # micro-migration Migration Lib for MicroStream. -This library deliveres an easy concept to keep your MicroStream datastore versioned +This library delivers an easy concept to keep your MicroStream datastore versioned with migration scripts written in plain java. +It can be used on a brand new datastore or introduced later, after a MicroStream datastore is already in use. +Only the storage manager (`MigrationEmbeddedStorageManager`) knows about the versioning. +The rest of application does not know about the version and can have no regards about it. + ## Usage example +Extensive examples can be found in its [own repository](https://github.com/JohannesRabauer/micro-migration-examples). A simple example where scripts need to be registered in the `ExplicitMigrater`: ```java public static void main(String[] args) { - final ExplicitMigrater migrater = new ExplicitMigrater( - new UpdateToV1_0(), - new UpdateToV1_1() - ); + final ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); - System.out.println(storageManager.root()); - if(storageManager.root() == null) - { - storageManager.setRoot("Hello World! @ " + new Date()); - } - storageManager.storeRoot(); + //Do some business logic storageManager.shutdown(); } ``` @@ -27,18 +24,37 @@ The update scripts can look like this: ```java public class UpdateToV1_0 implements MicroMigrationScript { - public MicroMigrationVersion getTargetVersion() - { + public MicroMigrationVersion getTargetVersion(){ return new MicroMigrationVersion(1,0); } - public void execute( - Object root , - MigrationEmbeddedStorageManager storageManager - ) - { - System.out.println("Update " + getTargetVersion().toString() + " executed."); - storageManager.setRoot("Hello World! @ " + new Date() + " Update 1.0"); + public void execute(Object root, MigrationEmbeddedStorageManager storageManager){ + //Logic of the update + storageManager.setRoot("Update 1.0"); } } -``` \ No newline at end of file +``` + +## Migrater +### `ExplicitMigrater` +Scripts for the migrations must be registered in a `MicroMigrater`. +The simplest way for this is to use the `ExplicitMigrater` and just put the scripts in the constructor. +A downside of this method is that you need to register all scripts (new or old) manually in the constructor. + +```java +final ExplicitMigrater migrater = new ExplicitMigrater( + new UpdateToV1_0(), + new UpdateToV1_1() +); +``` + +### `ReflectiveMigrater` +For a more convenient usage the `ReflectiveMigrater` was built. +You simply instanciate a object of this class with the package name of your `MicroMigrationScript`s. +The `ReflectiveMigrater` will search for any implementations of `MicroMigrationScript` in the given package. +This way scripts can simply be placed in the same package and on startup of the application all scripts are loaded in. + +```java +final ReflectiveMigrater migrater = new ReflectiveMigrater("de.johannes_rabauer.micromigration.examples.reflective.scripts"); +``` +Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own repository](https://github.com/JohannesRabauer/micro-migration-reflection). \ No newline at end of file From e27b9c5a3442e25946cbc91313233f07496ec73b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 16 Dec 2020 21:40:47 +0100 Subject: [PATCH 010/306] Added some JavaDoc, NonNull-Checks and JUnit Tests --- .../MigrationEmbeddedStorage.java | 28 +++- .../MigrationEmbeddedStorageManager.java | 20 +++ .../migrater/ExplicitMigrater.java | 3 + .../migrater/MicroMigrater.java | 46 ++++++ .../scripts/MicroMigrationScript.java | 17 +-- .../ReflectiveVersionMigrationScript.java | 81 +++++++++++ .../scripts/SimpleMigrationScript.java | 3 + .../version/MicroMigrationVersion.java | 38 ++--- .../version/MicroStreamVersionedRoot.java | 3 + .../ReflectiveVersionMigrationScriptTest.java | 136 ++++++++++++++++++ 10 files changed, 336 insertions(+), 39 deletions(-) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java create mode 100644 src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index 612e7970..29242c27 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -1,14 +1,16 @@ package de.johannes_rabauer.micromigration; import java.nio.file.Path; +import java.util.Objects; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import one.microstream.storage.configuration.Configuration; import one.microstream.storage.types.EmbeddedStorage; +import one.microstream.storage.types.EmbeddedStorageManager; /** - * Wrapper class for the MicroStream {@link EmbeddedStorage} utility class. - * Produces {@link MigrationEmbeddedStorageManager} for updateable datastores. + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. * * @author Johannes Rabauer * @@ -16,11 +18,18 @@ public class MigrationEmbeddedStorage { /** - * Warning "resource" is suppressed because it is used and closed in the @link {@link MigrationEmbeddedStorageManager}. + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link Configuration#Default()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater */ @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) { + Objects.requireNonNull(migrater); return new MigrationEmbeddedStorageManager( Configuration.Default() .createEmbeddedStorageFoundation() @@ -30,14 +39,23 @@ public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater } /** - * Warning "resource" is suppressed because it is used and closed in the @link {@link MigrationEmbeddedStorageManager}. + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link Configuration#Default()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param storageDirectory is used as the base directory for the datastore {@link Configuration#setBaseDirectory(String)} + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater */ @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start( - Path storageDirectory, + Path storageDirectory, MicroMigrater migrater ) { + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageDirectory); return new MigrationEmbeddedStorageManager( Configuration.Default() .setBaseDirectory(storageDirectory.toAbsolutePath().toString()) diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 724896f3..5ea24a59 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -1,5 +1,6 @@ package de.johannes_rabauer.micromigration; +import java.util.Objects; import java.util.function.Predicate; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; @@ -38,15 +39,34 @@ public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager private final MicroMigrater migrater ; private MicroStreamVersionedRoot versionRoot ; + /** + * @param nativeManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link MicroStreamVersionedRoot} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ public MigrationEmbeddedStorageManager( EmbeddedStorageManager nativeManager, MicroMigrater migrater ) { + Objects.requireNonNull(nativeManager); + Objects.requireNonNull(migrater); this.nativeManager = nativeManager; this.migrater = migrater ; } + /** + * {@inheritDoc} + *

+ * Checks if the root object is of the instance of {@link MicroStreamVersionedRoot}. + * If it is not, the root will be replaced with the versioned root and the actual root object + * will be put inside the versioned root. + *

+ * After starting the storage manager, all the available update scripts are executed in order + * until the newest version of the datastore is reached. + */ @Override public MigrationEmbeddedStorageManager start() { diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 55b47291..1dce6bc7 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -16,6 +16,9 @@ public class ExplicitMigrater implements MicroMigrater { private final TreeSet sortedScripts = new TreeSet<>(MicroMigrationScript.COMPARATOR); + /** + * @param scripts are all the scripts that are executed, if the current version is lower than this of the script + */ public ExplicitMigrater(MicroMigrationScript ...scripts) { for (MicroMigrationScript script : scripts) diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 18ac8932..5367b8ae 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -5,6 +5,7 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; /** * Executes all the available scripts to migrate the datastore to a certain version. @@ -16,6 +17,27 @@ public interface MicroMigrater { public TreeSet getSortedScripts(); + /** + * Executes all the scripts that are available to the migrater. + * Only scripts with a higher target version than the given fromVersion are executed.
+ * Scripts are executed one after another from the lowest to the highest version. + *

+ * Example:
+ * Current version is 1.0.0
+ * Scripts for v1.1.0, v2.0.0 and v1.2.1 are available
+ * Scripts are chain executed like v1.1.0 then v1.2.1 then v2.0.0 + * + * @param fromVersion is the current version of the datastore. + * Scripts for lower versions then the fromVersion are not executed. + * + * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. + * + * @param root is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * method. This way the script can change something within the root object. + * + * @return the target version of the last executed script + */ public default MicroMigrationVersion migrateToNewest( MicroMigrationVersion fromVersion , MigrationEmbeddedStorageManager storageManager, @@ -35,6 +57,30 @@ public default MicroMigrationVersion migrateToNewest( return fromVersion; } + /** + * Executes all the scripts that are available to the migrater until the given targetVersion is reached. + * Only scripts with a higher target version than the given fromVersion are executed.
+ * Scripts are executed one after another from the lowest to the highest version. + *

+ * Example:
+ * Current version is 1.0.0
+ * Scripts for v1.1.0, v2.0.0 and v1.2.1 are available
+ * Scripts are chain executed like v1.1.0 then v1.2.1 then v2.0.0 + * + * @param fromVersion is the current version of the datastore. + * Scripts for lower versions then the fromVersion are not executed. + * + * @param targetVersion is the highest allowed script version. + * Scripts which have a higher version won't be exectued. + * + * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. + * + * @param root is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * method. This way the script can change something within the root object. + * + * @return the target version of the last executed script + */ public default MicroMigrationVersion migrateToVersion ( MicroMigrationVersion fromVersion , diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java index cafa75a8..60541f96 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java @@ -16,21 +16,8 @@ * */ public interface MicroMigrationScript -{ - public final static char VERSION_SEPERATOR = '_'; - final static String WRONG_FORMAT_ERROR_MESSAGE = "Script has invalid class name. Either rename the class to a valid script class name, or implement method getTargetVersion()."; - - public default MicroMigrationVersion getTargetVersion() - { - final String implementationClassName = this.getClass().getSimpleName(); - int indexOfFirstVersionSeperator = implementationClassName.indexOf(VERSION_SEPERATOR); - if(indexOfFirstVersionSeperator < 0) - { - throw new Error(WRONG_FORMAT_ERROR_MESSAGE); - } - int majorVersion = Integer.parseInt(implementationClassName.substring(0, indexOfFirstVersionSeperator)); - return new MicroMigrationVersion(majorVersion); - } +{ + public MicroMigrationVersion getTargetVersion(); public void execute( Object root , diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java new file mode 100644 index 00000000..a2d3611d --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -0,0 +1,81 @@ +package de.johannes_rabauer.micromigration.scripts; + +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +/** + * Script which creates the target version of the script through the class name. + *

+ * Class name has to be in the scheme:
+ * + * vM_Classname
+ * vM_m_Classname
+ * vM_m_p_Classname
+ *
+ * Where v is short for version and is a constant (just a char),
+ * M is a integer for the major version,
+ * m is a integer for the minor version,
+ * p is a integer for the patch version and
+ * Classname is a custom String that the user can choose. + *

+ * If the class name has the wrong format, an {@link Error} is thrown. + * + * @author Johannes Rabauer + * + */ +public abstract class ReflectiveVersionMigrationScript implements MicroMigrationScript +{ + private final static char PREFIX = 'v'; + private final static String VERSION_SEPERATOR = "_"; + private final static String WRONG_FORMAT_ERROR_MESSAGE = "Script has invalid class name. Either rename the class to a valid script class name, or implement method getTargetVersion()."; + + private final MicroMigrationVersion version; + + /** + * @throws Error if the class name has the wrong format + */ + public ReflectiveVersionMigrationScript() + { + this.version = createTargetVersionFromClassName(); + } + + private MicroMigrationVersion createTargetVersionFromClassName() + { + final String implementationClassName = this.getClass().getSimpleName(); + if(PREFIX != implementationClassName.charAt(0)) + { + throw new Error(WRONG_FORMAT_ERROR_MESSAGE); + } + final String implementationClassNameWithoutPrefix = implementationClassName.substring(1); + final String[] classNameParts = implementationClassNameWithoutPrefix.split(VERSION_SEPERATOR); + if(classNameParts.length < 2) + { + throw new Error(WRONG_FORMAT_ERROR_MESSAGE); + } + try + { + int majorVersion = Integer.parseInt(classNameParts[0]); + if(classNameParts.length == 2) + { + return new MicroMigrationVersion(majorVersion); + } + int minorVersion = Integer.parseInt(classNameParts[1]); + if(classNameParts.length == 3) + { + return new MicroMigrationVersion(majorVersion, minorVersion); + } + int patchVersion = Integer.parseInt(classNameParts[2]); + return new MicroMigrationVersion(majorVersion, minorVersion, patchVersion); + } + catch (NumberFormatException e) + { + throw new Error(WRONG_FORMAT_ERROR_MESSAGE); + } + } + + @Override + public MicroMigrationVersion getTargetVersion() + { + return this.version; + } + +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index d2575c38..4754341b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -1,5 +1,6 @@ package de.johannes_rabauer.micromigration.scripts; +import java.util.Objects; import java.util.function.BiConsumer; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; @@ -15,6 +16,8 @@ public SimpleMigrationScript( final BiConsumer consumer ) { + Objects.requireNonNull(version); + Objects.requireNonNull(consumer); this.version = version ; this.consumer = consumer; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java index 9e576c61..c1fdcfe0 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java @@ -59,25 +59,6 @@ public int getPatchVersion() { public String toString() { return "v" + this.majorVersion + "." + this.minorVersion + "." + this.patchVersion; } - - public static Comparator COMPARATOR = new Comparator() - { - @Override - public int compare(MicroMigrationVersion o1, MicroMigrationVersion o2) - { - int majorVersionCompare = Integer.compare(o1.majorVersion, o2.majorVersion); - if(majorVersionCompare != 0) - { - return majorVersionCompare; - } - int minorVersionCompare = Integer.compare(o1.minorVersion, o2.minorVersion); - if(minorVersionCompare != 0) - { - return minorVersionCompare; - } - return Integer.compare(o1.patchVersion, o2.patchVersion); - } - }; @Override public int hashCode() @@ -108,4 +89,23 @@ public boolean equals(Object obj) return false; return true; } + + public static Comparator COMPARATOR = new Comparator() + { + @Override + public int compare(MicroMigrationVersion o1, MicroMigrationVersion o2) + { + int majorVersionCompare = Integer.compare(o1.majorVersion, o2.majorVersion); + if(majorVersionCompare != 0) + { + return majorVersionCompare; + } + int minorVersionCompare = Integer.compare(o1.minorVersion, o2.minorVersion); + if(minorVersionCompare != 0) + { + return minorVersionCompare; + } + return Integer.compare(o1.patchVersion, o2.patchVersion); + } + }; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java index 21b23010..976c988f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java @@ -1,5 +1,7 @@ package de.johannes_rabauer.micromigration.version; +import java.util.Objects; + /** * This class is inserted as the root of the MicroStream datastore and contains only the * current version and the actual root object. @@ -20,6 +22,7 @@ public MicroStreamVersionedRoot(Object actualRoot) public void setVersion(MicroMigrationVersion version) { + Objects.requireNonNull(version); this.currentVersion = version; } diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java new file mode 100644 index 00000000..1ea2b76c --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -0,0 +1,136 @@ +package de.johannes_rabauer.micromigration.scripts; + +import static org.junit.Assert.assertEquals; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +class ReflectiveVersionMigrationScriptTest +{ + + public static class v1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} + @Test + void testCorrectName_v1_CorrectClassName() + { + assertEquals(new MicroMigrationVersion(1, 0, 0), new v1_CorrectClassName().getTargetVersion()); + } + + public static class v1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} + @Test + void testCorrectName_v1_1_CorrectClassName() + { + assertEquals(new MicroMigrationVersion(1, 1, 0), new v1_1_CorrectClassName().getTargetVersion()); + } + + public static class v1_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} + @Test + void testCorrectName_v1_1_1_CorrectClassName() + { + assertEquals(new MicroMigrationVersion(1, 1, 1), new v1_1_1_CorrectClassName().getTargetVersion()); + } + + public static class v10_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} + @Test + void testCorrectName_v10_1_1_CorrectClassName() + { + assertEquals(new MicroMigrationVersion(10, 1, 1), new v10_1_1_CorrectClassName().getTargetVersion()); + } + + public static class v10_10_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} + @Test + void testCorrectName_v10_10_1_CorrectClassName() + { + assertEquals(new MicroMigrationVersion(10, 10, 1), new v10_10_1_CorrectClassName().getTargetVersion()); + } + + public static class v10_10_10_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} + @Test + void testCorrectName_v10_10_10_CorrectClassName() + { + assertEquals(new MicroMigrationVersion(10, 10, 10), new v10_10_10_CorrectClassName().getTargetVersion()); + } + + public static class a1_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_a1_InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new a1_InvalidClassName(); + }); + } + + public static class foo1_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_foo1_InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new foo1_InvalidClassName(); + }); + } + + public static class InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new InvalidClassName(); + }); + } + + public static class InvalidClassName_v1 extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_InvalidClassName_v1() + { + Assertions.assertThrows(Error.class, () -> { + new InvalidClassName_v1(); + }); + } + + public static class v1_k_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_v1_k_InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new v1_k_InvalidClassName(); + }); + } + + public static class v1_k_2_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_v1_k_2_InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new v1_k_2_InvalidClassName(); + }); + } + + public static class v2147483648_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_v2147483648_InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new v2147483648_InvalidClassName(); + }); + } + + public static class v___InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } + @Test + void testInvalildName_v___InvalidClassName() + { + Assertions.assertThrows(Error.class, () -> { + new v___InvalidClassName(); + }); + } + + + public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript + { + @Override + public void execute(Object root, MigrationEmbeddedStorageManager storageManager) { + //Dummy + } + } +} From c1d12a5458cdd2f7cee449c6607bc3cebf11a6dc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 17 Dec 2020 21:18:12 +0100 Subject: [PATCH 011/306] Added one more integration tests; Added more JavaDoc. --- .../scripts/MicroMigrationScript.java | 10 ++++ .../scripts/SimpleMigrationScript.java | 11 ++++ .../StoreStuffInMigrationStorageManager.java | 59 +++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java index 60541f96..fe8ed83d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java @@ -17,8 +17,18 @@ */ public interface MicroMigrationScript { + /** + * @return the version of the datastore after this script is executed. + */ public MicroMigrationVersion getTargetVersion(); + /** + * Execute logic to migrate the given datastore to a newer version of the store. + * After executing the {@link #getTargetVersion()} is reached. + * + * @param root which is the current root object. Must be cast to the desired class. + * @param storageManager for storing-calls or other usage + */ public void execute( Object root , MigrationEmbeddedStorageManager storageManager diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index 4754341b..d9614275 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -6,11 +6,22 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +/** + * Provides a simple way to create a migration script with the necessary version + * and {@link BiConsumer}. + * + * @author Johannes Rabauer + * + */ public class SimpleMigrationScript implements MicroMigrationScript { private final MicroMigrationVersion version; private final BiConsumer consumer; + /** + * @param version of the datastore after this script is executed + * @param consumer which is executed to reach the given datastore version + */ public SimpleMigrationScript( final MicroMigrationVersion version, final BiConsumer consumer diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java new file mode 100644 index 00000000..66f60193 --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java @@ -0,0 +1,59 @@ +package de.johannes_rabauer.micromigration.integration; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; +import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; + +public class StoreStuffInMigrationStorageManager +{ + private static class RootClass + { + private ChildClass child = new ChildClass(); + } + + private static class ChildClass + { + private int i = 0; + } + + @Test + public void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException + { + final MicroMigrationScript script = new SimpleMigrationScript( + new MicroMigrationVersion(1), + (root, storage) -> {} + ); + final ExplicitMigrater secondMigrater = new ExplicitMigrater(script); + //Create new store and change stored object + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + migrationStorageManager.setRoot(new RootClass()); + migrationStorageManager.storeRoot(); + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertEquals(0, storedRoot.child.i); + ((RootClass)migrationStorageManager.root()).child.i = 1; + migrationStorageManager.store(storedRoot.child); + assertEquals(1, storedRoot.child.i); + } + //Check if stored object is correct + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertNotNull(storedRoot); + assertEquals(1, storedRoot.child.i); + } + } + +} From f45dde5f71be6c753afe3ee094bfc486658d276c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 19 Dec 2020 18:46:57 +0100 Subject: [PATCH 012/306] Bugfix for AutoClosable#close not working on MigrationEmbeddedStorageManager --- .../micromigration/MigrationEmbeddedStorageManager.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 5ea24a59..2738c07a 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -12,6 +12,7 @@ import one.microstream.persistence.types.PersistenceManager; import one.microstream.persistence.types.PersistenceRootsView; import one.microstream.reference.Reference; +import one.microstream.storage.exceptions.StorageException; import one.microstream.storage.types.Database; import one.microstream.storage.types.EmbeddedStorageManager; import one.microstream.storage.types.StorageConfiguration; @@ -132,6 +133,12 @@ public boolean shutdown() return this.nativeManager.shutdown(); } + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + @Override public long storeRoot() { return this.nativeManager.storeRoot(); From 4d2074be5fcfe5fa45eb38583c9ef7b9edde3a50 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 19 Dec 2020 18:53:34 +0100 Subject: [PATCH 013/306] Added Apache License --- LICENSE.txt | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..6d8d58fb --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2013-2018 Docker, Inc. + + 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 + + https://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. From 6ee2b21f71f22841c8b83c15550511cbfdf0e7dd Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 19 Dec 2020 21:25:25 +0100 Subject: [PATCH 014/306] Introduced StandaloneMicroMigrationManager for less intrusive versioning --- .../StandaloneMicroMigrationManager.java | 50 +++++++++++++++++++ .../migrater/MicroMigrater.java | 18 +++---- .../scripts/MicroMigrationScript.java | 5 +- .../scripts/SimpleMigrationScript.java | 12 ++--- ...IntroduceMigrationOnExistingDatastore.java | 25 +++++++++- .../ReflectiveVersionMigrationScriptTest.java | 4 +- .../testUtil/MicroMigrationScriptDummy.java | 4 +- 7 files changed, 95 insertions(+), 23 deletions(-) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java b/src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java new file mode 100644 index 00000000..36b51af5 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java @@ -0,0 +1,50 @@ +package de.johannes_rabauer.micromigration; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +import de.johannes_rabauer.micromigration.migrater.MicroMigrater; +import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; + +public class StandaloneMicroMigrationManager +{ + private final Supplier currentVersionGetter; + private final Consumer currentVersionSetter; + private final Consumer currentVersionStorer; + private final MicroMigrater migrater ; + private final EmbeddedStorageManager storageManager ; + + public StandaloneMicroMigrationManager + ( + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + this.currentVersionGetter = currentVersionGetter; + this.currentVersionSetter = currentVersionSetter; + this.currentVersionStorer = currentVersionStorer; + this.migrater = migrater; + this.storageManager = storageManager; + } + + public void migrate(Object root) + { + final MicroMigrationVersion versionBeforeUpdate = currentVersionGetter.get(); + // Execute Updates + final MicroMigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( + versionBeforeUpdate, + this.storageManager, + root + ); + //Update stored version, if needed + if(!versionAfterUpdate.equals(versionBeforeUpdate)) + { + currentVersionSetter.accept(versionAfterUpdate); + currentVersionStorer.accept(versionAfterUpdate); + } + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 5367b8ae..9b0a0215 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -30,7 +30,7 @@ public interface MicroMigrater * @param fromVersion is the current version of the datastore. * Scripts for lower versions then the fromVersion are not executed. * - * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, EmbeddedStorageManager)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * * @param root is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} @@ -39,9 +39,9 @@ public interface MicroMigrater * @return the target version of the last executed script */ public default MicroMigrationVersion migrateToNewest( - MicroMigrationVersion fromVersion , - MigrationEmbeddedStorageManager storageManager, - Object root + MicroMigrationVersion fromVersion , + EmbeddedStorageManager storageManager, + Object root ) { TreeSet sortedScripts = getSortedScripts(); @@ -73,7 +73,7 @@ public default MicroMigrationVersion migrateToNewest( * @param targetVersion is the highest allowed script version. * Scripts which have a higher version won't be exectued. * - * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, EmbeddedStorageManager)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * * @param root is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} @@ -83,10 +83,10 @@ public default MicroMigrationVersion migrateToNewest( */ public default MicroMigrationVersion migrateToVersion ( - MicroMigrationVersion fromVersion , - MicroMigrationVersion targetVersion , - MigrationEmbeddedStorageManager storageManager, - Object root + MicroMigrationVersion fromVersion , + MicroMigrationVersion targetVersion , + EmbeddedStorageManager storageManager, + Object root ) { MicroMigrationVersion updateVersionWhichWasExecuted = fromVersion; diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java index fe8ed83d..4e843de4 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java @@ -4,6 +4,7 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; /** * Interface for scripts to migrate / update datastores. @@ -30,8 +31,8 @@ public interface MicroMigrationScript * @param storageManager for storing-calls or other usage */ public void execute( - Object root , - MigrationEmbeddedStorageManager storageManager + Object root , + EmbeddedStorageManager storageManager ); public static Comparator COMPARATOR = new Comparator() diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index d9614275..7698ae2a 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -3,8 +3,8 @@ import java.util.Objects; import java.util.function.BiConsumer; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; /** * Provides a simple way to create a migration script with the necessary version @@ -15,16 +15,16 @@ */ public class SimpleMigrationScript implements MicroMigrationScript { - private final MicroMigrationVersion version; - private final BiConsumer consumer; + private final MicroMigrationVersion version; + private final BiConsumer consumer; /** * @param version of the datastore after this script is executed * @param consumer which is executed to reach the given datastore version */ public SimpleMigrationScript( - final MicroMigrationVersion version, - final BiConsumer consumer + final MicroMigrationVersion version, + final BiConsumer consumer ) { Objects.requireNonNull(version); @@ -40,7 +40,7 @@ public MicroMigrationVersion getTargetVersion() } @Override - public void execute(Object root, MigrationEmbeddedStorageManager storageManager) + public void execute(Object root, EmbeddedStorageManager storageManager) { this.consumer.accept(root, storageManager); } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java index 024af9be..08bf9701 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java @@ -19,9 +19,9 @@ class IntroduceMigrationOnExistingDatastore { final static String ROOT = "OriginalRoot"; - + @Test - public void testIntroducingMigrationOnExistingDatastore(@TempDir Path storageFolder) throws IOException + public void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException { try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) { @@ -38,5 +38,26 @@ public void testIntroducingMigrationOnExistingDatastore(@TempDir Path storageFol assertEquals(1, migrationStorageManager.getCurrentVersion().getMajorVersion()); } } + + @Test + public void testIntroducingMigrationOnExistingDatastore_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + { + //TODO +// try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) +// { +// storageManager.setRoot(ROOT); +// storageManager.storeRoot(); +// } +// +// final ExplicitMigrater migrater = new ExplicitMigrater( +// new MicroMigrationScriptDummy(new MicroMigrationVersion(1)) +// ); +// final StandaloneMicroMigrationManager standaloneMigrationManager = new StandaloneMicroMigrationManager(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, storageManager) +// try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) +// { +// assertEquals(ROOT, migrationStorageManager.root()); +// assertEquals(1, migrationStorageManager.getCurrentVersion().getMajorVersion()); +// } + } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index 1ea2b76c..50ed110f 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -5,8 +5,8 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; class ReflectiveVersionMigrationScriptTest { @@ -129,7 +129,7 @@ void testInvalildName_v___InvalidClassName() public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript { @Override - public void execute(Object root, MigrationEmbeddedStorageManager storageManager) { + public void execute(Object root, EmbeddedStorageManager storageManager) { //Dummy } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java index 7c944035..a882adc6 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,8 +1,8 @@ package de.johannes_rabauer.micromigration.testUtil; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; public class MicroMigrationScriptDummy implements MicroMigrationScript { @@ -20,7 +20,7 @@ public MicroMigrationVersion getTargetVersion() } @Override - public void execute(Object root, MigrationEmbeddedStorageManager storageManager) { + public void execute(Object root, EmbeddedStorageManager storageManager) { // Don't do anything. } From 5cbc69cc487e51124a964e5232a4b2d6c69a71dc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 20 Dec 2020 11:16:54 +0100 Subject: [PATCH 015/306] Removed useless AutoRegisteringMigrator --- .../migrater/AutoRegisteringMigrater.java | 35 ------------------- .../AutoRegisteringMigrationScript.java | 20 ----------- 2 files changed, 55 deletions(-) delete mode 100644 src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java delete mode 100644 src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java deleted file mode 100644 index 2e7aa176..00000000 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AutoRegisteringMigrater.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.johannes_rabauer.micromigration.migrater; - -import java.util.TreeSet; - -import de.johannes_rabauer.micromigration.scripts.AutoRegisteringMigrationScript; -import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; - -/** - * Executes all the scripts which can register themselves.
- * Is not usable yet! - * @author Johannes Rabauer - * - */ -@Deprecated -public class AutoRegisteringMigrater implements MicroMigrater -{ - private final static TreeSet SORTED_SCRIPTS = new TreeSet<>(MicroMigrationScript.COMPARATOR); - - public final static AutoRegisteringMigrater INSTANCE = new AutoRegisteringMigrater(); - - private AutoRegisteringMigrater() - { - - } - - public static final void registerScript(AutoRegisteringMigrationScript script) - { - SORTED_SCRIPTS.add(script); - } - - @Override - public TreeSet getSortedScripts() { - return SORTED_SCRIPTS; - } -} diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java deleted file mode 100644 index 5d167d8d..00000000 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/AutoRegisteringMigrationScript.java +++ /dev/null @@ -1,20 +0,0 @@ -package de.johannes_rabauer.micromigration.scripts; - -import de.johannes_rabauer.micromigration.migrater.AutoRegisteringMigrater; - -/** - * Extending classes can easily auto register at the {@link AutoRegisteringMigrater}.
- * Is not usable yet! - * - * @author Johannes Rabauer - * - */ -@Deprecated -public abstract class AutoRegisteringMigrationScript implements MicroMigrationScript -{ - protected static AutoRegisteringMigrationScript registerSelf(AutoRegisteringMigrationScript script) - { - AutoRegisteringMigrater.registerScript(script); - return script; - } -} From 1d578c0ed0858f3be5344e98a991185f33ac0654 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 20 Dec 2020 11:25:22 +0100 Subject: [PATCH 016/306] Refactored because of alternative way to migration with MigrationManager; Fixed Unit tests --- .../MigrationEmbeddedStorageManager.java | 48 ++++++------ ...tionManager.java => MigrationManager.java} | 48 +++++++++++- .../migrater/MicroMigrater.java | 6 ++ .../micromigration/version/Versioned.java | 14 ++++ .../version/VersionedObject.java | 51 +++++++++++++ ...mVersionedRoot.java => VersionedRoot.java} | 10 ++- ...IntroduceMigrationOnExistingDatastore.java | 22 ------ .../MigrationScriptAfterScript.java | 74 ++++++++++++++++++- .../StoreStuffInMigrationStorageManager.java | 6 +- 9 files changed, 219 insertions(+), 60 deletions(-) rename src/main/java/de/johannes_rabauer/micromigration/{StandaloneMicroMigrationManager.java => MigrationManager.java} (56%) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java rename src/main/java/de/johannes_rabauer/micromigration/version/{MicroStreamVersionedRoot.java => VersionedRoot.java} (75%) diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 2738c07a..bad3b602 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -5,7 +5,8 @@ import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; -import de.johannes_rabauer.micromigration.version.MicroStreamVersionedRoot; +import de.johannes_rabauer.micromigration.version.Versioned; +import de.johannes_rabauer.micromigration.version.VersionedRoot; import one.microstream.afs.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; @@ -28,7 +29,7 @@ /** * Wrapper class for the MicroStream {@link EmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link MicroStreamVersionedRoot} + * Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the datastore is then versioned. * * @author Johannes Rabauer @@ -36,15 +37,15 @@ */ public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager { - private final EmbeddedStorageManager nativeManager; - private final MicroMigrater migrater ; - private MicroStreamVersionedRoot versionRoot ; + private final EmbeddedStorageManager nativeManager; + private final MicroMigrater migrater ; + private VersionedRoot versionRoot ; /** * @param nativeManager which will be used as the underlying storage manager. * Almost all methods are only rerouted to this native manager. * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted - * and a {@link MicroStreamVersionedRoot} is placed between the requests. + * and a {@link Versioned} is placed between the requests. * @param migrater which is used as source for the migration scripts */ public MigrationEmbeddedStorageManager( @@ -61,7 +62,7 @@ public MigrationEmbeddedStorageManager( /** * {@inheritDoc} *

- * Checks if the root object is of the instance of {@link MicroStreamVersionedRoot}. + * Checks if the root object is of the instance of {@link Versioned}. * If it is not, the root will be replaced with the versioned root and the actual root object * will be put inside the versioned root. *

@@ -72,28 +73,23 @@ public MigrationEmbeddedStorageManager( public MigrationEmbeddedStorageManager start() { this.nativeManager.start(); - if(this.nativeManager.root() instanceof MicroStreamVersionedRoot) + if(this.nativeManager.root() instanceof VersionedRoot) { - this.versionRoot = (MicroStreamVersionedRoot)this.nativeManager.root(); + this.versionRoot = (VersionedRoot)this.nativeManager.root(); } else { //Build VersionedRoot around actual root, set by user. - this.versionRoot = new MicroStreamVersionedRoot(this.nativeManager.root()); + this.versionRoot = new VersionedRoot(this.nativeManager.root()); nativeManager.setRoot(versionRoot); - } - // Execute Updates - final MicroMigrationVersion versionAfterUpdate = migrater.migrateToNewest( - this.versionRoot.getVersion(), - this , - this.versionRoot.getRoot() - ); - //Update stored version, if needed - if(versionAfterUpdate != this.versionRoot.getVersion()) - { - this.versionRoot.setVersion(versionAfterUpdate); nativeManager.storeRoot(); } + new MigrationManager( + this.versionRoot, + migrater, + this + ) + .migrate(this.versionRoot.getRoot()); return this; } @@ -112,6 +108,11 @@ public Object setRoot(Object newRoot) { this.versionRoot.setRoot(newRoot); return newRoot; } + + @Override + public long storeRoot() { + return this.nativeManager.store(this.versionRoot); + } //////////////////////////////////////////////////////////////// // Simply forward all the other methods @@ -139,11 +140,6 @@ public void close() throws StorageException this.nativeManager.close(); } - @Override - public long storeRoot() { - return this.nativeManager.storeRoot(); - } - @Override public StorageConnection createConnection() { return this.nativeManager.createConnection(); diff --git a/src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java similarity index 56% rename from src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java rename to src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java index 36b51af5..ea222cca 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/StandaloneMicroMigrationManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java @@ -1,21 +1,23 @@ package de.johannes_rabauer.micromigration; +import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.Versioned; import one.microstream.storage.types.EmbeddedStorageManager; -public class StandaloneMicroMigrationManager +public class MigrationManager { private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; private final Consumer currentVersionStorer; private final MicroMigrater migrater ; private final EmbeddedStorageManager storageManager ; - - public StandaloneMicroMigrationManager + + public MigrationManager ( final Supplier currentVersionGetter, final Consumer currentVersionSetter, @@ -24,12 +26,52 @@ public class StandaloneMicroMigrationManager final EmbeddedStorageManager storageManager ) { + Objects.requireNonNull(currentVersionGetter); + Objects.requireNonNull(currentVersionSetter); + Objects.requireNonNull(currentVersionStorer); + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageManager); this.currentVersionGetter = currentVersionGetter; this.currentVersionSetter = currentVersionSetter; this.currentVersionStorer = currentVersionStorer; this.migrater = migrater; this.storageManager = storageManager; } + + public MigrationManager + ( + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + this( + () -> versionedObject.getVersion() , + (version) -> versionedObject.setVersion(version) , + (version) -> storageManager.store(versionedObject), + migrater, + storageManager + ); + Objects.requireNonNull(versionedObject); + } + + public MigrationManager + ( + final Versioned versionedObject , + final Consumer currentVersionStorer, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + this( + () -> versionedObject.getVersion() , + (version) -> versionedObject.setVersion(version), + currentVersionStorer, + migrater, + storageManager + ); + Objects.requireNonNull(versionedObject); + } public void migrate(Object root) { diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 9b0a0215..38262569 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -1,5 +1,6 @@ package de.johannes_rabauer.micromigration.migrater; +import java.util.Objects; import java.util.TreeSet; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; @@ -44,6 +45,8 @@ public default MicroMigrationVersion migrateToNewest( Object root ) { + Objects.requireNonNull(fromVersion); + Objects.requireNonNull(storageManager); TreeSet sortedScripts = getSortedScripts(); if(sortedScripts.size() > 0) { @@ -89,6 +92,9 @@ public default MicroMigrationVersion migrateToNewest( Object root ) { + Objects.requireNonNull(fromVersion); + Objects.requireNonNull(targetVersion); + Objects.requireNonNull(storageManager); MicroMigrationVersion updateVersionWhichWasExecuted = fromVersion; for (MicroMigrationScript script : this.getSortedScripts()) { diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java b/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java new file mode 100644 index 00000000..ab7f3ed8 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java @@ -0,0 +1,14 @@ +package de.johannes_rabauer.micromigration.version; + +/** + * This class is inserted as the root of the MicroStream datastore and contains only the + * current version and the actual root object. + * + * @author Johannes Rabauer + * + */ +public interface Versioned +{ + public void setVersion(MicroMigrationVersion version); + public MicroMigrationVersion getVersion(); +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java new file mode 100644 index 00000000..5c1b3ded --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java @@ -0,0 +1,51 @@ +package de.johannes_rabauer.micromigration.version; + +import java.util.Objects; + +/** + * This class is inserted as the root of the MicroStream datastore and contains only the + * current version and the actual root object. + * + * @author Johannes Rabauer + * + */ +public class VersionedObject implements Versioned +{ + private MicroMigrationVersion currentVersion; + private Object actualObject ; + + public VersionedObject(Object actualObject) + { + this.actualObject = actualObject ; + this.currentVersion = new MicroMigrationVersion(0,0,0); + } + + @Override + public void setVersion(MicroMigrationVersion version) + { + Objects.requireNonNull(version); + this.currentVersion = version; + } + + @Override + public MicroMigrationVersion getVersion() + { + return this.currentVersion; + } + + public void setObject(Object actualObject) + { + this.actualObject = actualObject; + } + + public Object getObject() + { + return this.actualObject; + } + + @Override + public String toString() + { + return this.currentVersion.toString() + "\n" + this.actualObject; + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java similarity index 75% rename from src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java rename to src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java index 976c988f..0064987d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroStreamVersionedRoot.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java @@ -9,23 +9,25 @@ * @author Johannes Rabauer * */ -public class MicroStreamVersionedRoot +public class VersionedRoot implements Versioned { private MicroMigrationVersion currentVersion; private Object actualRoot ; - public MicroStreamVersionedRoot(Object actualRoot) + public VersionedRoot(Object actualRoot) { - setRoot(actualRoot); - setVersion(new MicroMigrationVersion(0,0,0)); + this.actualRoot = actualRoot ; + this.currentVersion = new MicroMigrationVersion(0,0,0); } + @Override public void setVersion(MicroMigrationVersion version) { Objects.requireNonNull(version); this.currentVersion = version; } + @Override public MicroMigrationVersion getVersion() { return this.currentVersion; diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java index 08bf9701..77aae0c2 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java @@ -38,26 +38,4 @@ public void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorage assertEquals(1, migrationStorageManager.getCurrentVersion().getMajorVersion()); } } - - @Test - public void testIntroducingMigrationOnExistingDatastore_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException - { - //TODO -// try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) -// { -// storageManager.setRoot(ROOT); -// storageManager.storeRoot(); -// } -// -// final ExplicitMigrater migrater = new ExplicitMigrater( -// new MicroMigrationScriptDummy(new MicroMigrationVersion(1)) -// ); -// final StandaloneMicroMigrationManager standaloneMigrationManager = new StandaloneMicroMigrationManager(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, storageManager) -// try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) -// { -// assertEquals(ROOT, migrationStorageManager.root()); -// assertEquals(1, migrationStorageManager.getCurrentVersion().getMajorVersion()); -// } - } - } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java index 5ebdc04d..fe7351bc 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java @@ -10,29 +10,37 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.MigrationManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.Versioned; +import de.johannes_rabauer.micromigration.version.VersionedObject; +import one.microstream.storage.configuration.Configuration; +import one.microstream.storage.types.EmbeddedStorageManager; class MigrationScriptAfterScript { @Test - public void testMigrationWithThreeDifferenMigrater(@TempDir Path storageFolder) throws IOException + public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException { //First run without any migration script final ExplicitMigrater firstMigrater = new ExplicitMigrater(); try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) { migrationStorageManager.setRoot(0); + migrationStorageManager.storeRoot(); assertEquals(0, migrationStorageManager.root()); assertEquals(new MicroMigrationVersion(0,0,0), migrationStorageManager.getCurrentVersion()); } + //Run with one migration script final MicroMigrationScript firstScript = new SimpleMigrationScript( new MicroMigrationVersion(1), - (root, storage) -> storage.setRoot(1) + (root, storage) -> + storage.setRoot(1) ); final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) @@ -41,6 +49,7 @@ public void testMigrationWithThreeDifferenMigrater(@TempDir Path storageFolder) assertEquals(new MicroMigrationVersion(1,0,0), migrationStorageManager.getCurrentVersion()); } + //Run with two migration scripts final MicroMigrationScript secondScript = new SimpleMigrationScript( new MicroMigrationVersion(2), @@ -53,5 +62,66 @@ public void testMigrationWithThreeDifferenMigrater(@TempDir Path storageFolder) assertEquals(new MicroMigrationVersion(2,0,0), migrationStorageManager.getCurrentVersion()); } } + + @Test + public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + { + //First run without any migration script + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + VersionedObject firstRoot = new VersionedObject(0); + storageManager.setRoot(firstRoot); + storageManager.storeRoot(); + assertEquals(0, firstRoot.getObject()); + assertEquals(new MicroMigrationVersion(0,0,0), firstRoot.getVersion()); + } + + + //Run with one migration script + final MicroMigrationScript firstScript = new SimpleMigrationScript( + new MicroMigrationVersion(1), + (root, storage) -> ((VersionedObject)root).setObject(1) + ); + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManager( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript), + storageManager + ) + .migrate(storageManager.root()); + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(1, currentRoot.getObject()); + assertEquals(new MicroMigrationVersion(1,0,0), currentRoot.getVersion()); + } + + + //Run with two migration scripts + final MicroMigrationScript secondScript = new SimpleMigrationScript( + new MicroMigrationVersion(2), + (root, storage) -> ((VersionedObject)root).setObject(2) + ); + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManager( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript, secondScript), + storageManager + ) + .migrate(storageManager.root()); + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(2, currentRoot.getObject()); + assertEquals(new MicroMigrationVersion(2,0,0), currentRoot.getVersion()); + } + } + + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) + { + return Configuration.Default() + .setBaseDirectory(storageFolder.toAbsolutePath().toString()) + .createEmbeddedStorageFoundation() + .createEmbeddedStorageManager() + .start(); + } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java index 66f60193..946c0694 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java @@ -35,9 +35,9 @@ public void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throw new MicroMigrationVersion(1), (root, storage) -> {} ); - final ExplicitMigrater secondMigrater = new ExplicitMigrater(script); + final ExplicitMigrater migrater = new ExplicitMigrater(script); //Create new store and change stored object - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { migrationStorageManager.setRoot(new RootClass()); migrationStorageManager.storeRoot(); @@ -48,7 +48,7 @@ public void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throw assertEquals(1, storedRoot.child.i); } //Check if stored object is correct - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); assertNotNull(storedRoot); From 72b7cfecab6279a8e8e5f9fd4f6373ed258a5467 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 22 Dec 2020 21:21:37 +0100 Subject: [PATCH 017/306] Refactoring; Updated JavaDoc --- .../MigrationEmbeddedStorageManager.java | 74 +++++++++++------ .../micromigration/MigrationManager.java | 82 +++++++++++-------- .../migrater/ExplicitMigrater.java | 10 +-- .../migrater/MicroMigrater.java | 34 ++++---- ...rationScript.java => MigrationScript.java} | 14 ++-- .../ReflectiveVersionMigrationScript.java | 16 ++-- .../scripts/SimpleMigrationScript.java | 10 +-- ...tionVersion.java => MigrationVersion.java} | 14 ++-- .../micromigration/version/Versioned.java | 9 +- .../version/VersionedObject.java | 25 +++--- .../micromigration/version/VersionedRoot.java | 8 +- ...IntroduceMigrationOnExistingDatastore.java | 4 +- .../MigrationScriptAfterScript.java | 32 ++++---- .../StoreStuffInMigrationStorageManager.java | 8 +- .../migrater/ExplicitMigraterTest.java | 10 +-- .../ReflectiveVersionMigrationScriptTest.java | 14 ++-- .../testUtil/MicroMigrationScriptDummy.java | 12 +-- 17 files changed, 207 insertions(+), 169 deletions(-) rename src/main/java/de/johannes_rabauer/micromigration/scripts/{MicroMigrationScript.java => MigrationScript.java} (64%) rename src/main/java/de/johannes_rabauer/micromigration/version/{MicroMigrationVersion.java => MigrationVersion.java} (84%) diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index bad3b602..67fe408c 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -4,7 +4,7 @@ import java.util.function.Predicate; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import de.johannes_rabauer.micromigration.version.VersionedRoot; import one.microstream.afs.AFile; @@ -30,7 +30,8 @@ * Wrapper class for the MicroStream {@link EmbeddedStorageManager} interface. *

* Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the datastore is then versioned. + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * @@ -93,7 +94,7 @@ public MigrationEmbeddedStorageManager start() return this; } - public MicroMigrationVersion getCurrentVersion() + public MigrationVersion getCurrentVersion() { return this.versionRoot.getVersion(); } @@ -119,12 +120,14 @@ public long storeRoot() { //////////////////////////////////////////////////////////////// @Override - public StorageConfiguration configuration() { + public StorageConfiguration configuration() + { return this.nativeManager.configuration(); } @Override - public StorageTypeDictionary typeDictionary() { + public StorageTypeDictionary typeDictionary() + { return this.nativeManager.typeDictionary(); } @@ -141,106 +144,125 @@ public void close() throws StorageException } @Override - public StorageConnection createConnection() { + public StorageConnection createConnection() + { return this.nativeManager.createConnection(); } @Override - public PersistenceRootsView viewRoots() { + public PersistenceRootsView viewRoots() + { return this.nativeManager.viewRoots(); } @Override @Deprecated - public Reference defaultRoot() { + public Reference defaultRoot() + { return this.nativeManager.defaultRoot(); } @Override - public Database database() { + public Database database() + { return this.nativeManager.database(); } @Override - public boolean isAcceptingTasks() { + public boolean isAcceptingTasks() + { return this.nativeManager.isAcceptingTasks(); } @Override - public boolean isRunning() { + public boolean isRunning() + { return this.nativeManager.isRunning(); } @Override - public boolean isStartingUp() { + public boolean isStartingUp() + { return this.nativeManager.isStartingUp(); } @Override - public boolean isShuttingDown() { + public boolean isShuttingDown() + { return this.nativeManager.isShuttingDown(); } @Override - public void checkAcceptingTasks() { + public void checkAcceptingTasks() + { this.nativeManager.checkAcceptingTasks(); } @Override - public long initializationTime() { + public long initializationTime() + { return this.nativeManager.initializationTime(); } @Override - public long operationModeTime() { + public long operationModeTime() + { return this.nativeManager.operationModeTime(); } @Override - public boolean isActive() { + public boolean isActive() + { return this.nativeManager.isActive(); } @Override - public boolean issueGarbageCollection(long nanoTimeBudget) { + public boolean issueGarbageCollection(long nanoTimeBudget) + { return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } @Override - public boolean issueFileCheck(long nanoTimeBudget) { + public boolean issueFileCheck(long nanoTimeBudget) + { return this.nativeManager.issueFileCheck(nanoTimeBudget); } @Override - public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); } @Override - public StorageRawFileStatistics createStorageStatistics() { + public StorageRawFileStatistics createStorageStatistics() + { return this.nativeManager.createStorageStatistics(); } @Override - public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } @Override public StorageEntityTypeExportStatistics exportTypes(StorageEntityTypeExportFileProvider exportFileProvider, - Predicate isExportType) { + Predicate isExportType) + { return this.nativeManager.exportTypes(exportFileProvider, isExportType); } @Override - public void importFiles(XGettingEnum importFiles) { + public void importFiles(XGettingEnum importFiles) + { this.nativeManager.importFiles(importFiles); } @Override - public PersistenceManager persistenceManager() { + public PersistenceManager persistenceManager() + { return this.nativeManager.persistenceManager(); } - } diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java index ea222cca..ec032638 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java @@ -5,24 +5,44 @@ import java.util.function.Supplier; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import one.microstream.storage.types.EmbeddedStorageManager; +/** + * Manages a given object and keeps the version for it. + *

+ * Can be used to keep the version of the MicroStream-Root-Object to keep the whole + * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * multiple versioned objects can be used in one datastore. + * + * @author Johannes Rabauer + * + */ public class MigrationManager { - private final Supplier currentVersionGetter; - private final Consumer currentVersionSetter; - private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; - private final EmbeddedStorageManager storageManager ; + private final Supplier currentVersionGetter; + private final Consumer currentVersionSetter; + private final Consumer currentVersionStorer; + private final MicroMigrater migrater ; + private final EmbeddedStorageManager storageManager ; + /** + * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager ( - final Supplier currentVersionGetter, - final Consumer currentVersionSetter, - final Consumer currentVersionStorer, - final MicroMigrater migrater , + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater , final EmbeddedStorageManager storageManager ) { @@ -38,6 +58,14 @@ public class MigrationManager this.storageManager = storageManager; } + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link MigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager ( final Versioned versionedObject, @@ -46,41 +74,27 @@ public class MigrationManager ) { this( - () -> versionedObject.getVersion() , + ( ) -> versionedObject.getVersion() , (version) -> versionedObject.setVersion(version) , (version) -> storageManager.store(versionedObject), - migrater, - storageManager - ); - Objects.requireNonNull(versionedObject); - } - - public MigrationManager - ( - final Versioned versionedObject , - final Consumer currentVersionStorer, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) - { - this( - () -> versionedObject.getVersion() , - (version) -> versionedObject.setVersion(version), - currentVersionStorer, - migrater, + migrater , storageManager ); Objects.requireNonNull(versionedObject); } - public void migrate(Object root) + /** + * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. + * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon + */ + public void migrate(Object objectToMigrate) { - final MicroMigrationVersion versionBeforeUpdate = currentVersionGetter.get(); + final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); // Execute Updates - final MicroMigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( + final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( versionBeforeUpdate, this.storageManager, - root + objectToMigrate ); //Update stored version, if needed if(!versionAfterUpdate.equals(versionBeforeUpdate)) diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 1dce6bc7..587a505c 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -2,7 +2,7 @@ import java.util.TreeSet; -import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; /** * Executes all the available scripts to migrate the datastore to a certain version. @@ -14,21 +14,21 @@ */ public class ExplicitMigrater implements MicroMigrater { - private final TreeSet sortedScripts = new TreeSet<>(MicroMigrationScript.COMPARATOR); + private final TreeSet sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); /** * @param scripts are all the scripts that are executed, if the current version is lower than this of the script */ - public ExplicitMigrater(MicroMigrationScript ...scripts) + public ExplicitMigrater(MigrationScript ...scripts) { - for (MicroMigrationScript script : scripts) + for (MigrationScript script : scripts) { this.sortedScripts.add(script); } } @Override - public TreeSet getSortedScripts() { + public TreeSet getSortedScripts() { return this.sortedScripts; } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 38262569..ca67616b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -4,8 +4,8 @@ import java.util.TreeSet; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorageManager; /** @@ -16,7 +16,7 @@ */ public interface MicroMigrater { - public TreeSet getSortedScripts(); + public TreeSet getSortedScripts(); /** * Executes all the scripts that are available to the migrater. @@ -31,23 +31,23 @@ public interface MicroMigrater * @param fromVersion is the current version of the datastore. * Scripts for lower versions then the fromVersion are not executed. * - * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, EmbeddedStorageManager)} + * @param storageManager is relayed to the scripts {@link MigrationScript#execute(Object, EmbeddedStorageManager)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param root is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * @param root is relayed to the scripts {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} * method. This way the script can change something within the root object. * * @return the target version of the last executed script */ - public default MicroMigrationVersion migrateToNewest( - MicroMigrationVersion fromVersion , + public default MigrationVersion migrateToNewest( + MigrationVersion fromVersion , EmbeddedStorageManager storageManager, Object root ) { Objects.requireNonNull(fromVersion); Objects.requireNonNull(storageManager); - TreeSet sortedScripts = getSortedScripts(); + TreeSet sortedScripts = getSortedScripts(); if(sortedScripts.size() > 0) { return migrateToVersion( @@ -76,18 +76,18 @@ public default MicroMigrationVersion migrateToNewest( * @param targetVersion is the highest allowed script version. * Scripts which have a higher version won't be exectued. * - * @param storageManager is relayed to the scripts {@link MicroMigrationScript#execute(Object, EmbeddedStorageManager)} + * @param storageManager is relayed to the scripts {@link MigrationScript#execute(Object, EmbeddedStorageManager)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param root is relayed to the scripts {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * @param root is relayed to the scripts {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} * method. This way the script can change something within the root object. * * @return the target version of the last executed script */ - public default MicroMigrationVersion migrateToVersion + public default MigrationVersion migrateToVersion ( - MicroMigrationVersion fromVersion , - MicroMigrationVersion targetVersion , + MigrationVersion fromVersion , + MigrationVersion targetVersion , EmbeddedStorageManager storageManager, Object root ) @@ -95,12 +95,12 @@ public default MicroMigrationVersion migrateToNewest( Objects.requireNonNull(fromVersion); Objects.requireNonNull(targetVersion); Objects.requireNonNull(storageManager); - MicroMigrationVersion updateVersionWhichWasExecuted = fromVersion; - for (MicroMigrationScript script : this.getSortedScripts()) + MigrationVersion updateVersionWhichWasExecuted = fromVersion; + for (MigrationScript script : this.getSortedScripts()) { - if(MicroMigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) + if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) { - if(MicroMigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) + if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) { script.execute(root, storageManager); updateVersionWhichWasExecuted = script.getTargetVersion(); diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java similarity index 64% rename from src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java rename to src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java index 4e843de4..dfef7252 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MicroMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java @@ -3,25 +3,25 @@ import java.util.Comparator; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorageManager; /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MicroMigrationScript#execute(Object, MigrationEmbeddedStorageManager)} method is called, + * After the {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MicroMigrationScript +public interface MigrationScript { /** * @return the version of the datastore after this script is executed. */ - public MicroMigrationVersion getTargetVersion(); + public MigrationVersion getTargetVersion(); /** * Execute logic to migrate the given datastore to a newer version of the store. @@ -35,11 +35,11 @@ public void execute( EmbeddedStorageManager storageManager ); - public static Comparator COMPARATOR = new Comparator() + public static Comparator COMPARATOR = new Comparator() { @Override - public int compare(MicroMigrationScript o1, MicroMigrationScript o2) { - return MicroMigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); + public int compare(MigrationScript o1, MigrationScript o2) { + return MigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); } }; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java index a2d3611d..49e80963 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.scripts; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; /** * Script which creates the target version of the script through the class name. @@ -22,13 +22,13 @@ * @author Johannes Rabauer * */ -public abstract class ReflectiveVersionMigrationScript implements MicroMigrationScript +public abstract class ReflectiveVersionMigrationScript implements MigrationScript { private final static char PREFIX = 'v'; private final static String VERSION_SEPERATOR = "_"; private final static String WRONG_FORMAT_ERROR_MESSAGE = "Script has invalid class name. Either rename the class to a valid script class name, or implement method getTargetVersion()."; - private final MicroMigrationVersion version; + private final MigrationVersion version; /** * @throws Error if the class name has the wrong format @@ -38,7 +38,7 @@ public ReflectiveVersionMigrationScript() this.version = createTargetVersionFromClassName(); } - private MicroMigrationVersion createTargetVersionFromClassName() + private MigrationVersion createTargetVersionFromClassName() { final String implementationClassName = this.getClass().getSimpleName(); if(PREFIX != implementationClassName.charAt(0)) @@ -56,15 +56,15 @@ private MicroMigrationVersion createTargetVersionFromClassName() int majorVersion = Integer.parseInt(classNameParts[0]); if(classNameParts.length == 2) { - return new MicroMigrationVersion(majorVersion); + return new MigrationVersion(majorVersion); } int minorVersion = Integer.parseInt(classNameParts[1]); if(classNameParts.length == 3) { - return new MicroMigrationVersion(majorVersion, minorVersion); + return new MigrationVersion(majorVersion, minorVersion); } int patchVersion = Integer.parseInt(classNameParts[2]); - return new MicroMigrationVersion(majorVersion, minorVersion, patchVersion); + return new MigrationVersion(majorVersion, minorVersion, patchVersion); } catch (NumberFormatException e) { @@ -73,7 +73,7 @@ private MicroMigrationVersion createTargetVersionFromClassName() } @Override - public MicroMigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { return this.version; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index 7698ae2a..e96b2e2c 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -3,7 +3,7 @@ import java.util.Objects; import java.util.function.BiConsumer; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorageManager; /** @@ -13,9 +13,9 @@ * @author Johannes Rabauer * */ -public class SimpleMigrationScript implements MicroMigrationScript +public class SimpleMigrationScript implements MigrationScript { - private final MicroMigrationVersion version; + private final MigrationVersion version; private final BiConsumer consumer; /** @@ -23,7 +23,7 @@ public class SimpleMigrationScript implements MicroMigrationScript * @param consumer which is executed to reach the given datastore version */ public SimpleMigrationScript( - final MicroMigrationVersion version, + final MigrationVersion version, final BiConsumer consumer ) { @@ -34,7 +34,7 @@ public SimpleMigrationScript( } @Override - public MicroMigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { return this.version; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java similarity index 84% rename from src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java rename to src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java index c1fdcfe0..d77e4836 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MicroMigrationVersion.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java @@ -8,13 +8,13 @@ * @author Johannes Rabauer * */ -public class MicroMigrationVersion +public class MigrationVersion { private final int majorVersion; private final int minorVersion; private final int patchVersion; - public MicroMigrationVersion + public MigrationVersion ( int majorVersion ) @@ -22,7 +22,7 @@ public class MicroMigrationVersion this(majorVersion, 0); } - public MicroMigrationVersion + public MigrationVersion ( int majorVersion, int minorVersion @@ -31,7 +31,7 @@ public class MicroMigrationVersion this(majorVersion, minorVersion, 0); } - public MicroMigrationVersion + public MigrationVersion ( int majorVersion, int minorVersion, @@ -80,7 +80,7 @@ public boolean equals(Object obj) return false; if (getClass() != obj.getClass()) return false; - MicroMigrationVersion other = (MicroMigrationVersion) obj; + MigrationVersion other = (MigrationVersion) obj; if (majorVersion != other.majorVersion) return false; if (minorVersion != other.minorVersion) @@ -90,10 +90,10 @@ public boolean equals(Object obj) return true; } - public static Comparator COMPARATOR = new Comparator() + public static Comparator COMPARATOR = new Comparator() { @Override - public int compare(MicroMigrationVersion o1, MicroMigrationVersion o2) + public int compare(MigrationVersion o1, MigrationVersion o2) { int majorVersionCompare = Integer.compare(o1.majorVersion, o2.majorVersion); if(majorVersionCompare != 0) diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java b/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java index ab7f3ed8..cf4e8d38 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java @@ -1,14 +1,15 @@ package de.johannes_rabauer.micromigration.version; +import de.johannes_rabauer.micromigration.MigrationManager; + /** - * This class is inserted as the root of the MicroStream datastore and contains only the - * current version and the actual root object. + * Interface used by the {@link MigrationManager} for easier versioning of objects. * * @author Johannes Rabauer * */ public interface Versioned { - public void setVersion(MicroMigrationVersion version); - public MicroMigrationVersion getVersion(); + public void setVersion(MigrationVersion version); + public MigrationVersion getVersion(); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java index 5c1b3ded..2eb8bde3 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java @@ -3,42 +3,43 @@ import java.util.Objects; /** - * This class is inserted as the root of the MicroStream datastore and contains only the - * current version and the actual root object. + * Simple container to hold a specific object and a correlating version for it. + * + * @param type of the object that's contained * * @author Johannes Rabauer * */ -public class VersionedObject implements Versioned +public class VersionedObject implements Versioned { - private MicroMigrationVersion currentVersion; - private Object actualObject ; + private MigrationVersion currentVersion; + private T actualObject ; - public VersionedObject(Object actualObject) + public VersionedObject(T actualObject) { - this.actualObject = actualObject ; - this.currentVersion = new MicroMigrationVersion(0,0,0); + this.actualObject = actualObject ; + this.currentVersion = new MigrationVersion(0,0,0); } @Override - public void setVersion(MicroMigrationVersion version) + public void setVersion(MigrationVersion version) { Objects.requireNonNull(version); this.currentVersion = version; } @Override - public MicroMigrationVersion getVersion() + public MigrationVersion getVersion() { return this.currentVersion; } - public void setObject(Object actualObject) + public void setObject(T actualObject) { this.actualObject = actualObject; } - public Object getObject() + public T getObject() { return this.actualObject; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java index 0064987d..b4266819 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java @@ -11,24 +11,24 @@ */ public class VersionedRoot implements Versioned { - private MicroMigrationVersion currentVersion; + private MigrationVersion currentVersion; private Object actualRoot ; public VersionedRoot(Object actualRoot) { this.actualRoot = actualRoot ; - this.currentVersion = new MicroMigrationVersion(0,0,0); + this.currentVersion = new MigrationVersion(0,0,0); } @Override - public void setVersion(MicroMigrationVersion version) + public void setVersion(MigrationVersion version) { Objects.requireNonNull(version); this.currentVersion = version; } @Override - public MicroMigrationVersion getVersion() + public MigrationVersion getVersion() { return this.currentVersion; } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java index 77aae0c2..7f0ff874 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java @@ -12,7 +12,7 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorage; import one.microstream.storage.types.EmbeddedStorageManager; @@ -30,7 +30,7 @@ public void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorage } final ExplicitMigrater migrater = new ExplicitMigrater( - new MicroMigrationScriptDummy(new MicroMigrationVersion(1)) + new MicroMigrationScriptDummy(new MigrationVersion(1)) ); try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java index fe7351bc..d979d1f7 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java @@ -12,9 +12,9 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.MigrationManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; -import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import de.johannes_rabauer.micromigration.version.VersionedObject; import one.microstream.storage.configuration.Configuration; @@ -32,13 +32,13 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag migrationStorageManager.setRoot(0); migrationStorageManager.storeRoot(); assertEquals(0, migrationStorageManager.root()); - assertEquals(new MicroMigrationVersion(0,0,0), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(0,0,0), migrationStorageManager.getCurrentVersion()); } //Run with one migration script - final MicroMigrationScript firstScript = new SimpleMigrationScript( - new MicroMigrationVersion(1), + final MigrationScript firstScript = new SimpleMigrationScript( + new MigrationVersion(1), (root, storage) -> storage.setRoot(1) ); @@ -46,20 +46,20 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) { assertEquals(1, migrationStorageManager.root()); - assertEquals(new MicroMigrationVersion(1,0,0), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(1,0,0), migrationStorageManager.getCurrentVersion()); } //Run with two migration scripts - final MicroMigrationScript secondScript = new SimpleMigrationScript( - new MicroMigrationVersion(2), + final MigrationScript secondScript = new SimpleMigrationScript( + new MigrationVersion(2), (root, storage) -> storage.setRoot(2) ); final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) { assertEquals(2, migrationStorageManager.root()); - assertEquals(new MicroMigrationVersion(2,0,0), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(2,0,0), migrationStorageManager.getCurrentVersion()); } } @@ -73,13 +73,13 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag storageManager.setRoot(firstRoot); storageManager.storeRoot(); assertEquals(0, firstRoot.getObject()); - assertEquals(new MicroMigrationVersion(0,0,0), firstRoot.getVersion()); + assertEquals(new MigrationVersion(0,0,0), firstRoot.getVersion()); } //Run with one migration script - final MicroMigrationScript firstScript = new SimpleMigrationScript( - new MicroMigrationVersion(1), + final MigrationScript firstScript = new SimpleMigrationScript( + new MigrationVersion(1), (root, storage) -> ((VersionedObject)root).setObject(1) ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) @@ -92,13 +92,13 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag .migrate(storageManager.root()); VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(1, currentRoot.getObject()); - assertEquals(new MicroMigrationVersion(1,0,0), currentRoot.getVersion()); + assertEquals(new MigrationVersion(1,0,0), currentRoot.getVersion()); } //Run with two migration scripts - final MicroMigrationScript secondScript = new SimpleMigrationScript( - new MicroMigrationVersion(2), + final MigrationScript secondScript = new SimpleMigrationScript( + new MigrationVersion(2), (root, storage) -> ((VersionedObject)root).setObject(2) ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) @@ -111,7 +111,7 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag .migrate(storageManager.root()); VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(2, currentRoot.getObject()); - assertEquals(new MicroMigrationVersion(2,0,0), currentRoot.getVersion()); + assertEquals(new MigrationVersion(2,0,0), currentRoot.getVersion()); } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java index 946c0694..cf8ac0d0 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java @@ -12,9 +12,9 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; -import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; public class StoreStuffInMigrationStorageManager { @@ -31,8 +31,8 @@ private static class ChildClass @Test public void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final MicroMigrationScript script = new SimpleMigrationScript( - new MicroMigrationVersion(1), + final MigrationScript script = new SimpleMigrationScript( + new MigrationVersion(1), (root, storage) -> {} ); final ExplicitMigrater migrater = new ExplicitMigrater(script); diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java index 5433abba..643b1a60 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Test; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; class ExplicitMigraterTest { @@ -19,8 +19,8 @@ void testGetSortedScripts_empty() { @Test void testGetSortedScripts_sorted() { final ExplicitMigrater migrater = new ExplicitMigrater( - new MicroMigrationScriptDummy(new MicroMigrationVersion(1)), - new MicroMigrationScriptDummy(new MicroMigrationVersion(2)) + new MicroMigrationScriptDummy(new MigrationVersion(1)), + new MicroMigrationScriptDummy(new MigrationVersion(2)) ); assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getMajorVersion()); assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getMajorVersion()); @@ -29,8 +29,8 @@ void testGetSortedScripts_sorted() { @Test void testGetSortedScripts_unsorted() { final ExplicitMigrater migrater = new ExplicitMigrater( - new MicroMigrationScriptDummy(new MicroMigrationVersion(2)), - new MicroMigrationScriptDummy(new MicroMigrationVersion(1)) + new MicroMigrationScriptDummy(new MigrationVersion(2)), + new MicroMigrationScriptDummy(new MigrationVersion(1)) ); assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getMajorVersion()); assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getMajorVersion()); diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index 50ed110f..d4ad5a36 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -5,7 +5,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorageManager; class ReflectiveVersionMigrationScriptTest @@ -15,42 +15,42 @@ public static class v1_CorrectClassName extends ReflectiveVersionMigrationScript @Test void testCorrectName_v1_CorrectClassName() { - assertEquals(new MicroMigrationVersion(1, 0, 0), new v1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(1, 0, 0), new v1_CorrectClassName().getTargetVersion()); } public static class v1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v1_1_CorrectClassName() { - assertEquals(new MicroMigrationVersion(1, 1, 0), new v1_1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(1, 1, 0), new v1_1_CorrectClassName().getTargetVersion()); } public static class v1_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v1_1_1_CorrectClassName() { - assertEquals(new MicroMigrationVersion(1, 1, 1), new v1_1_1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(1, 1, 1), new v1_1_1_CorrectClassName().getTargetVersion()); } public static class v10_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v10_1_1_CorrectClassName() { - assertEquals(new MicroMigrationVersion(10, 1, 1), new v10_1_1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(10, 1, 1), new v10_1_1_CorrectClassName().getTargetVersion()); } public static class v10_10_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v10_10_1_CorrectClassName() { - assertEquals(new MicroMigrationVersion(10, 10, 1), new v10_10_1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(10, 10, 1), new v10_10_1_CorrectClassName().getTargetVersion()); } public static class v10_10_10_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v10_10_10_CorrectClassName() { - assertEquals(new MicroMigrationVersion(10, 10, 10), new v10_10_10_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(10, 10, 10), new v10_10_10_CorrectClassName().getTargetVersion()); } public static class a1_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java index a882adc6..0b1fe8d6 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,20 +1,20 @@ package de.johannes_rabauer.micromigration.testUtil; -import de.johannes_rabauer.micromigration.scripts.MicroMigrationScript; -import de.johannes_rabauer.micromigration.version.MicroMigrationVersion; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorageManager; -public class MicroMigrationScriptDummy implements MicroMigrationScript +public class MicroMigrationScriptDummy implements MigrationScript { - private final MicroMigrationVersion version; + private final MigrationVersion version; - public MicroMigrationScriptDummy(MicroMigrationVersion version) + public MicroMigrationScriptDummy(MigrationVersion version) { this.version = version; } @Override - public MicroMigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { return this.version; } From cf7f9849e5fbcd5724678d99da78f6ad9ef82582 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 25 Dec 2020 10:48:37 +0100 Subject: [PATCH 018/306] Restructured for use of generics --- .../migrater/AbstractMigrater.java | 75 +++++++++++++++++++ .../migrater/ExplicitMigrater.java | 10 +-- .../migrater/MicroMigrater.java | 58 +++----------- .../micromigration/scripts/Context.java | 40 ++++++++++ .../scripts/MigrationScript.java | 15 ++-- .../ReflectiveVersionMigrationScript.java | 2 +- .../scripts/SimpleMigrationScript.java | 39 ++-------- .../scripts/SimpleTypedMigrationScript.java | 46 ++++++++++++ .../MigrationScriptAfterScript.java | 31 ++++---- .../StoreStuffInMigrationStorageManager.java | 6 +- .../ReflectiveVersionMigrationScriptTest.java | 5 +- .../testUtil/MicroMigrationScriptDummy.java | 9 +-- 12 files changed, 215 insertions(+), 121 deletions(-) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java new file mode 100644 index 00000000..2049eba2 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -0,0 +1,75 @@ +package de.johannes_rabauer.micromigration.migrater; + +import java.util.Objects; +import java.util.TreeSet; + +import de.johannes_rabauer.micromigration.scripts.Context; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; +import one.microstream.storage.types.EmbeddedStorageManager; + +public abstract class AbstractMigrater implements MicroMigrater +{ + @Override + public MigrationVersion migrateToNewest( + MigrationVersion fromVersion , + EmbeddedStorageManager storageManager, + Object root + ) + { + Objects.requireNonNull(fromVersion); + Objects.requireNonNull(storageManager); + + TreeSet> sortedScripts = getSortedScripts(); + if(sortedScripts.size() > 0) + { + return migrateToVersion( + fromVersion , + getSortedScripts().last().getTargetVersion(), + storageManager , + root + ); + } + return fromVersion; + } + + @Override + public MigrationVersion migrateToVersion + ( + MigrationVersion fromVersion , + MigrationVersion targetVersion , + EmbeddedStorageManager storageManager , + Object objectToMigrate + ) + { + Objects.requireNonNull(fromVersion); + Objects.requireNonNull(targetVersion); + Objects.requireNonNull(storageManager); + + MigrationVersion updateVersionWhichWasExecuted = fromVersion; + for (MigrationScript script : this.getSortedScripts()) + { + if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) + { + if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) + { + updateVersionWhichWasExecuted = migrateWithScript(script, storageManager, objectToMigrate); + } + } + } + return updateVersionWhichWasExecuted; + } + + @SuppressWarnings("unchecked") + private MigrationVersion migrateWithScript( + MigrationScript script , + EmbeddedStorageManager storageManager , + Object objectToMigrate + ) + { + T castedObjectToMigrate = (T) objectToMigrate; + script.migrate(new Context<>(castedObjectToMigrate, storageManager)); + return script.getTargetVersion(); + } + +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 587a505c..737d103d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -12,23 +12,23 @@ * @author Johannes Rabauer * */ -public class ExplicitMigrater implements MicroMigrater +public class ExplicitMigrater extends AbstractMigrater { - private final TreeSet sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); + private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); /** * @param scripts are all the scripts that are executed, if the current version is lower than this of the script */ - public ExplicitMigrater(MigrationScript ...scripts) + public ExplicitMigrater(MigrationScript ...scripts) { - for (MigrationScript script : scripts) + for (MigrationScript script : scripts) { this.sortedScripts.add(script); } } @Override - public TreeSet getSortedScripts() { + public TreeSet> getSortedScripts() { return this.sortedScripts; } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index ca67616b..0d2f9b6b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -1,6 +1,5 @@ package de.johannes_rabauer.micromigration.migrater; -import java.util.Objects; import java.util.TreeSet; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; @@ -16,7 +15,7 @@ */ public interface MicroMigrater { - public TreeSet getSortedScripts(); + public TreeSet> getSortedScripts(); /** * Executes all the scripts that are available to the migrater. @@ -39,26 +38,11 @@ public interface MicroMigrater * * @return the target version of the last executed script */ - public default MigrationVersion migrateToNewest( - MigrationVersion fromVersion , + public MigrationVersion migrateToNewest( + MigrationVersion fromVersion , EmbeddedStorageManager storageManager, Object root - ) - { - Objects.requireNonNull(fromVersion); - Objects.requireNonNull(storageManager); - TreeSet sortedScripts = getSortedScripts(); - if(sortedScripts.size() > 0) - { - return migrateToVersion( - fromVersion , - getSortedScripts().last().getTargetVersion(), - storageManager , - root - ); - } - return fromVersion; - } + ); /** * Executes all the scripts that are available to the migrater until the given targetVersion is reached. @@ -79,34 +63,16 @@ public default MigrationVersion migrateToNewest( * @param storageManager is relayed to the scripts {@link MigrationScript#execute(Object, EmbeddedStorageManager)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param root is relayed to the scripts {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} - * method. This way the script can change something within the root object. + * @param objectToMigrate is relayed to the scripts {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * method. This way the script can change something within the object to migrate. * * @return the target version of the last executed script */ - public default MigrationVersion migrateToVersion + public MigrationVersion migrateToVersion ( - MigrationVersion fromVersion , - MigrationVersion targetVersion , - EmbeddedStorageManager storageManager, - Object root - ) - { - Objects.requireNonNull(fromVersion); - Objects.requireNonNull(targetVersion); - Objects.requireNonNull(storageManager); - MigrationVersion updateVersionWhichWasExecuted = fromVersion; - for (MigrationScript script : this.getSortedScripts()) - { - if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) - { - if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) - { - script.execute(root, storageManager); - updateVersionWhichWasExecuted = script.getTargetVersion(); - } - } - } - return updateVersionWhichWasExecuted; - } + MigrationVersion fromVersion , + MigrationVersion targetVersion , + EmbeddedStorageManager storageManager , + Object objectToMigrate + ); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java new file mode 100644 index 00000000..8519d8ee --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java @@ -0,0 +1,40 @@ +package de.johannes_rabauer.micromigration.scripts; + +import one.microstream.storage.types.EmbeddedStorageManager; + +/** + * Container that holds necessary information for the execution of an {@link MigrationScript} + * + * @author Johannes Rabauer + */ +public class Context +{ + private final T migratingObject; + private final EmbeddedStorageManager storageManager ; + + public Context( + final T migratingObject, + final EmbeddedStorageManager storageManager + ) + { + super(); + this.migratingObject = migratingObject; + this.storageManager = storageManager ; + } + + /** + * @return the current object where the migration is executed upon + */ + public T getMigratingObject() + { + return migratingObject; + } + + /** + * @return the responsible storage manager for the migrating object + */ + public EmbeddedStorageManager getStorageManager() + { + return storageManager; + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java index dfef7252..b8d45935 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java @@ -4,7 +4,6 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorageManager; /** * Interface for scripts to migrate / update datastores. @@ -16,7 +15,7 @@ * @author Johannes Rabauer * */ -public interface MigrationScript +public interface MigrationScript { /** * @return the version of the datastore after this script is executed. @@ -27,18 +26,14 @@ public interface MigrationScript * Execute logic to migrate the given datastore to a newer version of the store. * After executing the {@link #getTargetVersion()} is reached. * - * @param root which is the current root object. Must be cast to the desired class. - * @param storageManager for storing-calls or other usage + * @param context that holds necessary data for the migration */ - public void execute( - Object root , - EmbeddedStorageManager storageManager - ); + public void migrate(Context context); - public static Comparator COMPARATOR = new Comparator() + public static Comparator> COMPARATOR = new Comparator>() { @Override - public int compare(MigrationScript o1, MigrationScript o2) { + public int compare(MigrationScript o1, MigrationScript o2) { return MigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); } }; diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java index 49e80963..2fbb8b9d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -22,7 +22,7 @@ * @author Johannes Rabauer * */ -public abstract class ReflectiveVersionMigrationScript implements MigrationScript +public abstract class ReflectiveVersionMigrationScript implements MigrationScript { private final static char PREFIX = 'v'; private final static String VERSION_SEPERATOR = "_"; diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index e96b2e2c..2629e915 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -1,48 +1,23 @@ package de.johannes_rabauer.micromigration.scripts; -import java.util.Objects; -import java.util.function.BiConsumer; +import java.util.function.Consumer; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorageManager; /** * Provides a simple way to create a migration script with the necessary version - * and {@link BiConsumer}. + * and {@link Consumer}. * * @author Johannes Rabauer * */ -public class SimpleMigrationScript implements MigrationScript +public class SimpleMigrationScript extends SimpleTypedMigrationScript { - private final MigrationVersion version; - private final BiConsumer consumer; - - /** - * @param version of the datastore after this script is executed - * @param consumer which is executed to reach the given datastore version - */ public SimpleMigrationScript( - final MigrationVersion version, - final BiConsumer consumer - ) + final MigrationVersion version , + final Consumer> consumer + ) { - Objects.requireNonNull(version); - Objects.requireNonNull(consumer); - this.version = version ; - this.consumer = consumer; + super(version, consumer); } - - @Override - public MigrationVersion getTargetVersion() - { - return this.version; - } - - @Override - public void execute(Object root, EmbeddedStorageManager storageManager) - { - this.consumer.accept(root, storageManager); - } - } diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java new file mode 100644 index 00000000..733b7641 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java @@ -0,0 +1,46 @@ +package de.johannes_rabauer.micromigration.scripts; + +import java.util.Objects; +import java.util.function.Consumer; + +import de.johannes_rabauer.micromigration.version.MigrationVersion; + +/** + * Provides a simple way to create a migration script with the necessary version + * and {@link Consumer}. + * + * @author Johannes Rabauer + * + */ +public class SimpleTypedMigrationScript implements MigrationScript +{ + private final MigrationVersion version ; + private final Consumer> consumer; + + /** + * @param version of the datastore after this script is executed + * @param consumer which is executed to reach the given datastore version + */ + public SimpleTypedMigrationScript( + final MigrationVersion version , + final Consumer> consumer + ) + { + Objects.requireNonNull(version ); + Objects.requireNonNull(consumer); + this.version = version ; + this.consumer = consumer; + } + + @Override + public MigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void migrate(Context context) + { + this.consumer.accept(context); + } +} diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java index d979d1f7..ff7511ff 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java @@ -13,7 +13,7 @@ import de.johannes_rabauer.micromigration.MigrationManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; +import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import de.johannes_rabauer.micromigration.version.VersionedObject; @@ -37,10 +37,9 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag //Run with one migration script - final MigrationScript firstScript = new SimpleMigrationScript( + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), - (root, storage) -> - storage.setRoot(1) + (context) -> context.getStorageManager().setRoot(1) ); final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) @@ -51,9 +50,9 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag //Run with two migration scripts - final MigrationScript secondScript = new SimpleMigrationScript( + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), - (root, storage) -> storage.setRoot(2) + (context) -> context.getStorageManager().setRoot(2) ); final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) @@ -69,18 +68,18 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag //First run without any migration script try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - VersionedObject firstRoot = new VersionedObject(0); + VersionedObject firstRoot = new VersionedObject<>(0); storageManager.setRoot(firstRoot); storageManager.storeRoot(); - assertEquals(0, firstRoot.getObject()); + assertEquals(Integer.valueOf(0), firstRoot.getObject()); assertEquals(new MigrationVersion(0,0,0), firstRoot.getVersion()); } //Run with one migration script - final MigrationScript firstScript = new SimpleMigrationScript( + final MigrationScript> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), - (root, storage) -> ((VersionedObject)root).setObject(1) + (context) -> context.getMigratingObject().setObject(1) ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { @@ -90,16 +89,16 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag storageManager ) .migrate(storageManager.root()); - VersionedObject currentRoot = (VersionedObject)storageManager.root(); - assertEquals(1, currentRoot.getObject()); + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(1), currentRoot.getObject()); assertEquals(new MigrationVersion(1,0,0), currentRoot.getVersion()); } //Run with two migration scripts - final MigrationScript secondScript = new SimpleMigrationScript( + final MigrationScript> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), - (root, storage) -> ((VersionedObject)root).setObject(2) + (context) -> context.getMigratingObject().setObject(2) ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { @@ -109,8 +108,8 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag storageManager ) .migrate(storageManager.root()); - VersionedObject currentRoot = (VersionedObject)storageManager.root(); - assertEquals(2, currentRoot.getObject()); + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(2), currentRoot.getObject()); assertEquals(new MigrationVersion(2,0,0), currentRoot.getVersion()); } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java index cf8ac0d0..8f6e1cb3 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java @@ -13,7 +13,7 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.scripts.SimpleMigrationScript; +import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; public class StoreStuffInMigrationStorageManager @@ -31,9 +31,9 @@ private static class ChildClass @Test public void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final MigrationScript script = new SimpleMigrationScript( + final MigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), - (root, storage) -> {} + (context) -> {} ); final ExplicitMigrater migrater = new ExplicitMigrater(script); //Create new store and change stored object diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index d4ad5a36..9b67cb1f 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.Test; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorageManager; class ReflectiveVersionMigrationScriptTest { @@ -126,10 +125,10 @@ void testInvalildName_v___InvalidClassName() } - public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript + public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript { @Override - public void execute(Object root, EmbeddedStorageManager storageManager) { + public void migrate(Context context) { //Dummy } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java index 0b1fe8d6..6805aa80 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,10 +1,10 @@ package de.johannes_rabauer.micromigration.testUtil; +import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorageManager; -public class MicroMigrationScriptDummy implements MigrationScript +public class MicroMigrationScriptDummy implements MigrationScript { private final MigrationVersion version; @@ -18,10 +18,9 @@ public MigrationVersion getTargetVersion() { return this.version; } - + @Override - public void execute(Object root, EmbeddedStorageManager storageManager) { + public void migrate(Context context) { // Don't do anything. } - } From ccdb97b680d4ae5ef799d9b1500e688757a0b586 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sat, 26 Dec 2020 21:01:43 +0100 Subject: [PATCH 019/306] Expanded README.md --- README.md | 73 ++++++++++++++++++++++++++++------ docs/MigrationSequence.drawio | 1 + docs/MigrationSequence_1.png | Bin 0 -> 4372 bytes docs/MigrationSequence_2.png | Bin 0 -> 11729 bytes docs/MigrationSequence_3.png | Bin 0 -> 15863 bytes docs/MigrationSequence_4.png | Bin 0 -> 20410 bytes 6 files changed, 62 insertions(+), 12 deletions(-) create mode 100644 docs/MigrationSequence.drawio create mode 100644 docs/MigrationSequence_1.png create mode 100644 docs/MigrationSequence_2.png create mode 100644 docs/MigrationSequence_3.png create mode 100644 docs/MigrationSequence_4.png diff --git a/README.md b/README.md index ed3eb531..5e4faf52 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,89 @@ -# micro-migration -Migration Lib for MicroStream. +# Micro migration +When you think about default database setup, you probably imagine something like this: + +![Imaginative system layout](./docs/MigrationSequence_1.png "Imaginative system layout") + +Yet in reality most workflows involve different systems like test systems and prodution systems. +In code this workflow is represented with version-control systems and different branches. + +![Code workflow](./docs/MigrationSequence_2.png "Code workflow") + +For this code workflow to behave correctly, for each system a seperate datastore is needed. +To keep these datastores to represent the correspondend data for the code is a hassle. + +![Code workflow with datastore](./docs/MigrationSequence_3.png "Code workflow with datastore") + +That's why migration frameworks like [Flyway](https://flywaydb.org) and [Liquibase](https://www.liquibase.org/) exist. +Unfortunately both these frameworks are designed to support any type of SQL databases but no NoSQL +databases like [MicroStream](https://microstream.one/). This led to the creation of this library. This library delivers an easy concept to keep your MicroStream datastore versioned with migration scripts written in plain java. +It's easy to create code, that automatically brings an datastore with an older version to +the version, suited to the current code. + +![Migrate datastore to new version](./docs/MigrationSequence_4.png "Migrate datastore to new version") + +## Approaches +There are two possible usages with the Micro migration library: +The **first**, easier approach is to use the `MigrationEmbeddedStorageManager`. It can be used on a brand new datastore or introduced later, after a MicroStream datastore is already in use. Only the storage manager (`MigrationEmbeddedStorageManager`) knows about the versioning. The rest of application does not know about the version and can have no regards about it. -## Usage example +### `MigrationEmbeddedStorageManager` Extensive examples can be found in its [own repository](https://github.com/JohannesRabauer/micro-migration-examples). A simple example where scripts need to be registered in the `ExplicitMigrater`: + ```java public static void main(String[] args) { - final ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); - final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); + ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); + MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); //Do some business logic storageManager.shutdown(); } ``` + The update scripts can look like this: + ```java -public class UpdateToV1_0 implements MicroMigrationScript +public class UpdateToV1_0 implements MigrationScript { - public MicroMigrationVersion getTargetVersion(){ - return new MicroMigrationVersion(1,0); + @Override + public MigrationVersion getTargetVersion(){ + return new MigrationVersion(1); } - - public void execute(Object root, MigrationEmbeddedStorageManager storageManager){ - //Logic of the update - storageManager.setRoot("Update 1.0"); + + @Override + public void migrate(Context context) + { + //Logic of the update + context.getStorageManager().setRoot("Update 1.0"); } } ``` +### `MigrationManager` +Although the approach with the `MigrationEmbeddedStorageManager` is pretty easy to handle, it is intrusive +in the way, that it replaces the root entry point of the MicroStream datastore and inserts its own `VersionedRoot` as root. Some users might find this too entrusive. + +That's why a second approach can be used, where the `MigrationManager` is used. This class is also used internally by +the `MigrationEmbeddedStorageManager`. + +```java +public static void main(String[] args) +{ + ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); + EmbeddedStorageManager storageManager = EmbeddedStorage.start(); + VersionedObject versionedRoot =(VersionedObject)storageManager.root(); + new MigrationManager(versionedRoot, migrater, storageManager).migrate(versionedBranch); + //Do some business logic + storageManager.shutdown(); +} +``` + ## Migrater ### `ExplicitMigrater` Scripts for the migrations must be registered in a `MicroMigrater`. diff --git a/docs/MigrationSequence.drawio b/docs/MigrationSequence.drawio new file mode 100644 index 00000000..4d51a09e --- /dev/null +++ b/docs/MigrationSequence.drawio @@ -0,0 +1 @@ +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 \ No newline at end of file diff --git a/docs/MigrationSequence_1.png b/docs/MigrationSequence_1.png new file mode 100644 index 0000000000000000000000000000000000000000..822153dcdbf05977beb2bd4527ebe67b2f9d8f06 GIT binary patch literal 4372 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 JS?83{1OP;}CKLbw literal 0 HcmV?d00001 From 4467b2600c4356cd92e124793b9e9b036356ed4c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 28 Dec 2020 08:10:47 +0100 Subject: [PATCH 020/306] Changed MigrationVersion from major/minor/patch-Version to an array of int versions --- .../ReflectiveVersionMigrationScript.java | 16 ++- .../version/MigrationVersion.java | 102 ++++++++---------- .../version/VersionedObject.java | 2 +- .../micromigration/version/VersionedRoot.java | 6 +- ...IntroduceMigrationOnExistingDatastore.java | 2 +- .../MigrationScriptAfterScript.java | 12 +-- .../migrater/ExplicitMigraterTest.java | 8 +- .../ReflectiveVersionMigrationScriptTest.java | 4 +- .../version/MigrationVersionTest.java | 45 ++++++++ 9 files changed, 111 insertions(+), 86 deletions(-) create mode 100644 src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java index 2fbb8b9d..7a729c3f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,5 +1,7 @@ package de.johannes_rabauer.micromigration.scripts; +import java.util.ArrayList; + import de.johannes_rabauer.micromigration.version.MigrationVersion; /** @@ -53,18 +55,12 @@ private MigrationVersion createTargetVersionFromClassName() } try { - int majorVersion = Integer.parseInt(classNameParts[0]); - if(classNameParts.length == 2) - { - return new MigrationVersion(majorVersion); - } - int minorVersion = Integer.parseInt(classNameParts[1]); - if(classNameParts.length == 3) + final ArrayList versionNumbers = new ArrayList<>(); + for(int i = 0; i < classNameParts.length - 1; i++) { - return new MigrationVersion(majorVersion, minorVersion); + versionNumbers.add(Integer.parseInt(classNameParts[i])); } - int patchVersion = Integer.parseInt(classNameParts[2]); - return new MigrationVersion(majorVersion, minorVersion, patchVersion); + return new MigrationVersion(versionNumbers); } catch (NumberFormatException e) { diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java b/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java index d77e4836..34d51f47 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java @@ -1,6 +1,8 @@ package de.johannes_rabauer.micromigration.version; +import java.util.Arrays; import java.util.Comparator; +import java.util.List; /** * Defines one version of the MicroStream datastore. @@ -10,64 +12,60 @@ */ public class MigrationVersion { - private final int majorVersion; - private final int minorVersion; - private final int patchVersion; + private final int[] versions; - public MigrationVersion - ( - int majorVersion - ) + public MigrationVersion(int... versions) { - this(majorVersion, 0); - } - - public MigrationVersion - ( - int majorVersion, - int minorVersion - ) - { - this(majorVersion, minorVersion, 0); + if(versions == null || versions.length == 0) + { + this.versions = new int[] {0}; + } + else + { + this.versions = versions; + } } - public MigrationVersion - ( - int majorVersion, - int minorVersion, - int patchVersion - ) + public MigrationVersion(List versionsAsList) { - this.majorVersion = majorVersion; - this.minorVersion = minorVersion; - this.patchVersion = patchVersion; - } - - public int getMajorVersion() { - return majorVersion; - } - - public int getMinorVersion() { - return minorVersion; + if(versionsAsList == null || versionsAsList.size() == 0) + { + this.versions = new int[] {0}; + } + else + { + int[] versionsAsArray = new int[versionsAsList.size()]; + for(int i = 0; i < versionsAsArray.length; i++) + { + versionsAsArray[i] = versionsAsList.get(i); + } + this.versions = versionsAsArray; + } } - public int getPatchVersion() { - return patchVersion; + public int[] getVersions() + { + return this.versions; } @Override - public String toString() { - return "v" + this.majorVersion + "." + this.minorVersion + "." + this.patchVersion; + public String toString() + { + final StringBuilder sb = new StringBuilder("v"); + for (int version : versions) + { + sb.append(version).append("."); + } + sb.deleteCharAt(sb.length()-1); + return sb.toString(); } - + @Override public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + majorVersion; - result = prime * result + minorVersion; - result = prime * result + patchVersion; + result = prime * result + Arrays.hashCode(versions); return result; } @@ -81,31 +79,17 @@ public boolean equals(Object obj) if (getClass() != obj.getClass()) return false; MigrationVersion other = (MigrationVersion) obj; - if (majorVersion != other.majorVersion) - return false; - if (minorVersion != other.minorVersion) - return false; - if (patchVersion != other.patchVersion) + if (!Arrays.equals(versions, other.versions)) return false; return true; } - + public static Comparator COMPARATOR = new Comparator() { @Override public int compare(MigrationVersion o1, MigrationVersion o2) { - int majorVersionCompare = Integer.compare(o1.majorVersion, o2.majorVersion); - if(majorVersionCompare != 0) - { - return majorVersionCompare; - } - int minorVersionCompare = Integer.compare(o1.minorVersion, o2.minorVersion); - if(minorVersionCompare != 0) - { - return minorVersionCompare; - } - return Integer.compare(o1.patchVersion, o2.patchVersion); + return Arrays.compare(o1.versions, o2.versions); } }; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java index 2eb8bde3..ef33ece3 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java @@ -18,7 +18,7 @@ public class VersionedObject implements Versioned public VersionedObject(T actualObject) { this.actualObject = actualObject ; - this.currentVersion = new MigrationVersion(0,0,0); + this.currentVersion = new MigrationVersion(0); } @Override diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java index b4266819..7e0ced7b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java @@ -12,12 +12,12 @@ public class VersionedRoot implements Versioned { private MigrationVersion currentVersion; - private Object actualRoot ; + private Object actualRoot ; public VersionedRoot(Object actualRoot) { - this.actualRoot = actualRoot ; - this.currentVersion = new MigrationVersion(0,0,0); + this.actualRoot = actualRoot ; + this.currentVersion = new MigrationVersion(0); } @Override diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java index 7f0ff874..95d7b5df 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java @@ -35,7 +35,7 @@ public void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorage try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(ROOT, migrationStorageManager.root()); - assertEquals(1, migrationStorageManager.getCurrentVersion().getMajorVersion()); + assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); } } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java index ff7511ff..f1a52ef1 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java @@ -32,7 +32,7 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag migrationStorageManager.setRoot(0); migrationStorageManager.storeRoot(); assertEquals(0, migrationStorageManager.root()); - assertEquals(new MigrationVersion(0,0,0), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); } @@ -45,7 +45,7 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) { assertEquals(1, migrationStorageManager.root()); - assertEquals(new MigrationVersion(1,0,0), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); } @@ -58,7 +58,7 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) { assertEquals(2, migrationStorageManager.root()); - assertEquals(new MigrationVersion(2,0,0), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); } } @@ -72,7 +72,7 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag storageManager.setRoot(firstRoot); storageManager.storeRoot(); assertEquals(Integer.valueOf(0), firstRoot.getObject()); - assertEquals(new MigrationVersion(0,0,0), firstRoot.getVersion()); + assertEquals(new MigrationVersion(0), firstRoot.getVersion()); } @@ -91,7 +91,7 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag .migrate(storageManager.root()); VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(1), currentRoot.getObject()); - assertEquals(new MigrationVersion(1,0,0), currentRoot.getVersion()); + assertEquals(new MigrationVersion(1), currentRoot.getVersion()); } @@ -110,7 +110,7 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag .migrate(storageManager.root()); VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(2), currentRoot.getObject()); - assertEquals(new MigrationVersion(2,0,0), currentRoot.getVersion()); + assertEquals(new MigrationVersion(2), currentRoot.getVersion()); } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java index 643b1a60..e12efd4f 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -22,8 +22,8 @@ void testGetSortedScripts_sorted() { new MicroMigrationScriptDummy(new MigrationVersion(1)), new MicroMigrationScriptDummy(new MigrationVersion(2)) ); - assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getMajorVersion()); - assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getMajorVersion()); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); } @Test @@ -32,8 +32,8 @@ void testGetSortedScripts_unsorted() { new MicroMigrationScriptDummy(new MigrationVersion(2)), new MicroMigrationScriptDummy(new MigrationVersion(1)) ); - assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getMajorVersion()); - assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getMajorVersion()); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index 9b67cb1f..51e40d22 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -14,14 +14,14 @@ public static class v1_CorrectClassName extends ReflectiveVersionMigrationScript @Test void testCorrectName_v1_CorrectClassName() { - assertEquals(new MigrationVersion(1, 0, 0), new v1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(1), new v1_CorrectClassName().getTargetVersion()); } public static class v1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v1_1_CorrectClassName() { - assertEquals(new MigrationVersion(1, 1, 0), new v1_1_CorrectClassName().getTargetVersion()); + assertEquals(new MigrationVersion(1, 1), new v1_1_CorrectClassName().getTargetVersion()); } public static class v1_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} diff --git a/src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java b/src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java new file mode 100644 index 00000000..fa37da2b --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java @@ -0,0 +1,45 @@ +package de.johannes_rabauer.micromigration.version; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +class MigrationVersionTest +{ + + @Test + void testToString_v1() + { + MigrationVersion version = new MigrationVersion(1); + assertEquals("v1", version.toString()); + } + + @Test + void testToString_v11() + { + MigrationVersion version = new MigrationVersion(1,1); + assertEquals("v1.1", version.toString()); + } + + @Test + void testToString_v111() + { + MigrationVersion version = new MigrationVersion(1,1,1); + assertEquals("v1.1.1", version.toString()); + } + + @Test + void testToString_v0() + { + MigrationVersion version = new MigrationVersion(0); + assertEquals("v0", version.toString()); + } + + @Test + void testToString_vNull() + { + MigrationVersion version = new MigrationVersion(); + assertEquals("v0", version.toString()); + } + +} From 904d1b3868666cbdfb1e6e54cc2003affce9f4fb Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 28 Dec 2020 10:47:13 +0100 Subject: [PATCH 021/306] Added some JavaDoc --- .../micromigration/migrater/ExplicitMigrater.java | 2 +- .../micromigration/migrater/MicroMigrater.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 737d103d..56562b3f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -5,7 +5,7 @@ import de.johannes_rabauer.micromigration.scripts.MigrationScript; /** - * Executes all the available scripts to migrate the datastore to a certain version. + * Contains all the available scripts to migrate the datastore to a certain version. *

* This class needs explicit scripts which are then included in the migration process. * diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 0d2f9b6b..3fb07e61 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -15,6 +15,9 @@ */ public interface MicroMigrater { + /** + * @return all the contained {@link MigrationScript}s, sorted by their {@link MigrationVersion} ascending. + */ public TreeSet> getSortedScripts(); /** From 19aae97a2f467449aaf8301762660c4d411c70bf Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 28 Dec 2020 14:31:25 +0100 Subject: [PATCH 022/306] Implemented test for wrongly typed migration scripts --- .../migrater/ExplicitMigraterTest.java | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java index e12efd4f..13e80c9e 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -2,8 +2,15 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import java.nio.file.Path; + +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; import de.johannes_rabauer.micromigration.version.MigrationVersion; @@ -11,13 +18,15 @@ class ExplicitMigraterTest { @Test - void testGetSortedScripts_empty() { + void testGetSortedScripts_empty() + { final ExplicitMigrater migrater = new ExplicitMigrater(); assertEquals(0,migrater.getSortedScripts().size()); } @Test - void testGetSortedScripts_sorted() { + void testGetSortedScripts_sorted() + { final ExplicitMigrater migrater = new ExplicitMigrater( new MicroMigrationScriptDummy(new MigrationVersion(1)), new MicroMigrationScriptDummy(new MigrationVersion(2)) @@ -27,13 +36,38 @@ void testGetSortedScripts_sorted() { } @Test - void testGetSortedScripts_unsorted() { + void testGetSortedScripts_unsorted() + { final ExplicitMigrater migrater = new ExplicitMigrater( new MicroMigrationScriptDummy(new MigrationVersion(2)), new MicroMigrationScriptDummy(new MigrationVersion(1)) ); assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testWrongTypedVersionedScript(@TempDir Path storageFolder) + { + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(storageFolder, new ExplicitMigrater())) + { + storageManager.setRoot("SomeString"); + storageManager.storeRoot(); + } + final ExplicitMigrater migrater = new ExplicitMigrater( + new SimpleTypedMigrationScript( + new MigrationVersion(1), + (context) -> { + context.getStorageManager().setRoot(context.getMigratingObject() + 1); + } + ) + ); + Assertions.assertThrows(ClassCastException.class, () -> + { + MigrationEmbeddedStorage.start(storageFolder, migrater); + } + ); + } } From a795bef8243c50b86c04af34c105e41a427881f3 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 14 Feb 2021 17:43:48 +0100 Subject: [PATCH 023/306] Extended gitignore --- .gitignore | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index c836fce5..435d4b6a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,74 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/maven,java,eclipse,windows +# Edit at https://www.toptal.com/developers/gitignore?templates=maven,java,eclipse,windows + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project + +### Eclipse Patch ### +# Spring Boot Tooling +.sts4-cache/ + +### Java ### # Compiled class file *.class @@ -21,4 +92,44 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -/target/ + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/maven,java,eclipse,windows From c49166ffe5bace6435c8403af5cd7e7038465348 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 14 Feb 2021 17:51:35 +0100 Subject: [PATCH 024/306] Duplicated Dependency and Source/JavaDoc-Plugin in pom changed --- pom.xml | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 67b6b093..c850bd97 100644 --- a/pom.xml +++ b/pom.xml @@ -20,6 +20,30 @@ 1.8 + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + @@ -40,10 +64,5 @@ storage.embedded.configuration 04.00.00-MS-GA - - one.microstream - storage.embedded.configuration - 04.00.00-MS-GA - \ No newline at end of file From 80b7208006540be200956528105d66bd6af1f005 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 14 Feb 2021 19:48:54 +0100 Subject: [PATCH 025/306] Fixed some JavaDoc links --- .../micromigration/migrater/MicroMigrater.java | 9 ++++----- .../micromigration/scripts/MigrationScript.java | 3 +-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 3fb07e61..bf8ad980 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -2,7 +2,6 @@ import java.util.TreeSet; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.types.EmbeddedStorageManager; @@ -33,10 +32,10 @@ public interface MicroMigrater * @param fromVersion is the current version of the datastore. * Scripts for lower versions then the fromVersion are not executed. * - * @param storageManager is relayed to the scripts {@link MigrationScript#execute(Object, EmbeddedStorageManager)} + * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param root is relayed to the scripts {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * @param root is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} * method. This way the script can change something within the root object. * * @return the target version of the last executed script @@ -63,10 +62,10 @@ public MigrationVersion migrateToNewest( * @param targetVersion is the highest allowed script version. * Scripts which have a higher version won't be exectued. * - * @param storageManager is relayed to the scripts {@link MigrationScript#execute(Object, EmbeddedStorageManager)} + * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param objectToMigrate is relayed to the scripts {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} + * @param objectToMigrate is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} * method. This way the script can change something within the object to migrate. * * @return the target version of the last executed script diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java index b8d45935..385e1142 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java @@ -2,14 +2,13 @@ import java.util.Comparator; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.version.MigrationVersion; /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScript#execute(Object, MigrationEmbeddedStorageManager)} method is called, + * After the {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} method is called, * the target version is reached. * * @author Johannes Rabauer From e6196c15525981cc9c5acca8abc323c4fa9c7f25 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 14 Feb 2021 19:49:26 +0100 Subject: [PATCH 026/306] Extended pom for utf-8 --- pom.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pom.xml b/pom.xml index c850bd97..67f34b21 100644 --- a/pom.xml +++ b/pom.xml @@ -18,11 +18,13 @@ 1.8 1.8 + UTF-8 org.apache.maven.plugins maven-source-plugin + 3.2.1 attach-sources @@ -35,6 +37,11 @@ org.apache.maven.plugins maven-javadoc-plugin + 3.2.0 + + 8 + UTF-8 + attach-javadocs @@ -44,6 +51,13 @@ + + maven-resources-plugin + 2.6 + + UTF-8 + + From b14e9fe60d586b49eca396bda8649f1ca6f2313a Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 14 Feb 2021 19:52:18 +0100 Subject: [PATCH 027/306] Further adjusted gitignore --- .gitignore | 2 +- .project | 23 ----------------------- .settings/org.eclipse.jdt.core.prefs | 16 ---------------- .settings/org.eclipse.m2e.core.prefs | 4 ---- 4 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 .project delete mode 100644 .settings/org.eclipse.jdt.core.prefs delete mode 100644 .settings/org.eclipse.m2e.core.prefs diff --git a/.gitignore b/.gitignore index 435d4b6a..fba38409 100644 --- a/.gitignore +++ b/.gitignore @@ -62,7 +62,7 @@ local.properties # Uncomment this line if you wish to ignore the project description file. # Typically, this file would be tracked if it contains build/dependency configurations: -#.project +.project ### Eclipse Patch ### # Spring Boot Tooling diff --git a/.project b/.project deleted file mode 100644 index 28a7634a..00000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - micro-migration - - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 8b5c4dca..00000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,16 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f1..00000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 From 22af2d0b6469871564f5b00d2bd28927b20a09f7 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Sun, 14 Feb 2021 20:29:30 +0100 Subject: [PATCH 028/306] Added gitignore for MicroStream default datastore directory --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index fba38409..b3314e0d 100644 --- a/.gitignore +++ b/.gitignore @@ -133,3 +133,6 @@ $RECYCLE.BIN/ *.lnk # End of https://www.toptal.com/developers/gitignore/api/maven,java,eclipse,windows + +#MicroStream Datastore default directory +/storage/ \ No newline at end of file From 20b00c9fbdc9e119bb35c99127747eb6f9ca6199 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 15 Feb 2021 07:04:44 +0100 Subject: [PATCH 029/306] Updated Java Version to 9 --- .classpath | 2 +- pom.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.classpath b/.classpath index 6bc00bc8..473188a2 100644 --- a/.classpath +++ b/.classpath @@ -24,7 +24,7 @@ - + diff --git a/pom.xml b/pom.xml index 67f34b21..d556c67d 100644 --- a/pom.xml +++ b/pom.xml @@ -16,8 +16,8 @@ maven-compiler-plugin 3.8.0 - 1.8 - 1.8 + 9 + 9 UTF-8 @@ -39,7 +39,7 @@ maven-javadoc-plugin 3.2.0 - 8 + 9 UTF-8 From 4698bd195f4959f50f970308da405ceffafc72a4 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 15 Feb 2021 18:39:45 +0100 Subject: [PATCH 030/306] Fixed tests for maven test --- pom.xml | 17 +++++++++++++++++ ...roduceMigrationOnExistingDatastoreTest.java} | 6 +++--- ...java => MigrationScriptAfterScriptTest.java} | 10 ++++++---- ...toreStuffInMigrationStorageManagerTest.java} | 12 ++++++------ .../migrater/ExplicitMigraterTest.java | 3 ++- .../ReflectiveVersionMigrationScriptTest.java | 2 +- 6 files changed, 35 insertions(+), 15 deletions(-) rename src/test/java/de/johannes_rabauer/micromigration/integration/{IntroduceMigrationOnExistingDatastore.java => IntroduceMigrationOnExistingDatastoreTest.java} (84%) rename src/test/java/de/johannes_rabauer/micromigration/integration/{MigrationScriptAfterScript.java => MigrationScriptAfterScriptTest.java} (91%) rename src/test/java/de/johannes_rabauer/micromigration/integration/{StoreStuffInMigrationStorageManager.java => StoreStuffInMigrationStorageManagerTest.java} (85%) diff --git a/pom.xml b/pom.xml index d556c67d..7abd0295 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ 9 UTF-8 + false @@ -58,6 +59,10 @@ UTF-8 + + maven-surefire-plugin + 2.22.2 + @@ -78,5 +83,17 @@ storage.embedded.configuration 04.00.00-MS-GA + + org.junit.jupiter + junit-jupiter-api + 5.6.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.6.2 + test + \ No newline at end of file diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java similarity index 84% rename from src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java rename to src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 95d7b5df..e3160b3b 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastore.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.integration; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import java.nio.file.Path; @@ -16,12 +16,12 @@ import one.microstream.storage.types.EmbeddedStorage; import one.microstream.storage.types.EmbeddedStorageManager; -class IntroduceMigrationOnExistingDatastore +class IntroduceMigrationOnExistingDatastoreTest { final static String ROOT = "OriginalRoot"; @Test - public void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException { try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) { diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java similarity index 91% rename from src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java rename to src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java index f1a52ef1..e232f1a4 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScript.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.integration; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import java.nio.file.Path; @@ -20,10 +20,10 @@ import one.microstream.storage.configuration.Configuration; import one.microstream.storage.types.EmbeddedStorageManager; -class MigrationScriptAfterScript +class MigrationScriptAfterScriptTest { @Test - public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException { //First run without any migration script final ExplicitMigrater firstMigrater = new ExplicitMigrater(); @@ -63,7 +63,7 @@ public void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManag } @Test - public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException { //First run without any migration script try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) @@ -89,6 +89,7 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag storageManager ) .migrate(storageManager.root()); + @SuppressWarnings("unchecked") VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(1), currentRoot.getObject()); assertEquals(new MigrationVersion(1), currentRoot.getVersion()); @@ -108,6 +109,7 @@ public void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManag storageManager ) .migrate(storageManager.root()); + @SuppressWarnings("unchecked") VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(2), currentRoot.getObject()); assertEquals(new MigrationVersion(2), currentRoot.getVersion()); diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java similarity index 85% rename from src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java rename to src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 8f6e1cb3..2f8b6ace 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManager.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,7 +1,7 @@ package de.johannes_rabauer.micromigration.integration; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import java.io.IOException; import java.nio.file.Path; @@ -16,7 +16,7 @@ import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; -public class StoreStuffInMigrationStorageManager +class StoreStuffInMigrationStorageManagerTest { private static class RootClass { @@ -29,11 +29,11 @@ private static class ChildClass } @Test - public void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException + void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { final MigrationScript script = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), - (context) -> {} + new MigrationVersion(1), + (context) -> {} ); final ExplicitMigrater migrater = new ExplicitMigrater(script); //Create new store and change stored object diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java index 13e80c9e..3bbad921 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -1,5 +1,6 @@ package de.johannes_rabauer.micromigration.migrater; + import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.file.Path; @@ -46,7 +47,7 @@ void testGetSortedScripts_unsorted() assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); } - @Test + @Test void testWrongTypedVersionedScript(@TempDir Path storageFolder) { try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(storageFolder, new ExplicitMigrater())) diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index 51e40d22..b4cf2535 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.scripts; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; From 0be8b3f3b785ddb30dab63c11b2d6532dc080aa0 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 17 Feb 2021 06:30:34 +0100 Subject: [PATCH 031/306] ScriptExecutionNotification implemented --- .../migrater/AbstractMigrater.java | 32 ++++++++++ .../ScriptExecutionNotification.java | 63 +++++++++++++++++++ .../MigrationScriptAfterScriptTest.java | 26 ++++++++ 3 files changed, 121 insertions(+) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java index 2049eba2..8e8b90ac 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -1,8 +1,11 @@ package de.johannes_rabauer.micromigration.migrater; +import java.time.LocalDate; import java.util.Objects; import java.util.TreeSet; +import java.util.function.Consumer; +import de.johannes_rabauer.micromigration.notification.ScriptExecutionNotification; import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; @@ -10,6 +13,17 @@ public abstract class AbstractMigrater implements MicroMigrater { + private Consumer notificationConsumer = null; + + /** + * Registers a callback to take action when a script is executed. + * @param notificationConsumer is executed when a script is used from this migrater. + */ + public void setNotificationConsumer(Consumer notificationConsumer) + { + this.notificationConsumer = notificationConsumer; + } + @Override public MigrationVersion migrateToNewest( MigrationVersion fromVersion , @@ -53,7 +67,25 @@ public MigrationVersion migrateToNewest( { if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) { + LocalDate startDate = null; + MigrationVersion versionBeforeUpdate = updateVersionWhichWasExecuted; + if(this.notificationConsumer != null) + { + startDate = LocalDate.now(); + } updateVersionWhichWasExecuted = migrateWithScript(script, storageManager, objectToMigrate); + if(this.notificationConsumer != null) + { + this.notificationConsumer.accept( + new ScriptExecutionNotification( + script , + versionBeforeUpdate , + updateVersionWhichWasExecuted, + startDate , + LocalDate.now() + ) + ); + } } } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java b/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java new file mode 100644 index 00000000..9d7d37c3 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java @@ -0,0 +1,63 @@ +package de.johannes_rabauer.micromigration.notification; + +import java.time.LocalDate; + +import de.johannes_rabauer.micromigration.migrater.MicroMigrater; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; + +/** + * Contains data about the execution of a script by a {@link MicroMigrater}. + * + * @author Johannes Rabauer + * + */ +public class ScriptExecutionNotification +{ + private MigrationScript executedScript; + private MigrationVersion sourceVersion ; + private MigrationVersion targetVersion ; + private LocalDate startDate ; + private LocalDate endDate ; + + public ScriptExecutionNotification( + MigrationScript executedScript, + MigrationVersion sourceVersion , + MigrationVersion targetVersion , + LocalDate startDate , + LocalDate endDate + ) + { + super(); + this.executedScript = executedScript; + this.sourceVersion = sourceVersion ; + this.targetVersion = targetVersion ; + this.startDate = startDate ; + this.endDate = endDate ; + } + + public MigrationScript getExecutedScript() + { + return executedScript; + } + + public MigrationVersion getSourceVersion() + { + return sourceVersion; + } + + public MigrationVersion getTargetVersion() + { + return targetVersion; + } + + public LocalDate getStartDate() + { + return startDate; + } + + public LocalDate getEndDate() + { + return endDate; + } +} diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java index e232f1a4..20b0830d 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,9 +1,11 @@ package de.johannes_rabauer.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -62,6 +64,30 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem } } + @Test + void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + final AtomicBoolean notificationReceived = new AtomicBoolean(false); + migrater.setNotificationConsumer( + notification -> + { + assertEquals(firstScript, notification.getExecutedScript()); + assertEquals(new MigrationVersion(0), notification.getSourceVersion()); + assertEquals(new MigrationVersion(1), notification.getTargetVersion()); + notificationReceived.set(true); + } + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertTrue(notificationReceived.get()); + } + } + @Test void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException { From 1f9be69b347d1bcb746e4f0c03fa0664dc80ca8c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 17 Feb 2021 09:43:26 +0100 Subject: [PATCH 032/306] LocalDateTime for ScriptExecutionNotification implemented --- .../micromigration/migrater/AbstractMigrater.java | 8 ++++---- .../notification/ScriptExecutionNotification.java | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java index 8e8b90ac..62aecdcb 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.migrater; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Objects; import java.util.TreeSet; import java.util.function.Consumer; @@ -67,11 +67,11 @@ public MigrationVersion migrateToNewest( { if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) { - LocalDate startDate = null; + LocalDateTime startDate = null; MigrationVersion versionBeforeUpdate = updateVersionWhichWasExecuted; if(this.notificationConsumer != null) { - startDate = LocalDate.now(); + startDate = LocalDateTime.now(); } updateVersionWhichWasExecuted = migrateWithScript(script, storageManager, objectToMigrate); if(this.notificationConsumer != null) @@ -82,7 +82,7 @@ public MigrationVersion migrateToNewest( versionBeforeUpdate , updateVersionWhichWasExecuted, startDate , - LocalDate.now() + LocalDateTime.now() ) ); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java b/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java index 9d7d37c3..af4947e6 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java +++ b/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.notification; -import java.time.LocalDate; +import java.time.LocalDateTime; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; @@ -17,15 +17,15 @@ public class ScriptExecutionNotification private MigrationScript executedScript; private MigrationVersion sourceVersion ; private MigrationVersion targetVersion ; - private LocalDate startDate ; - private LocalDate endDate ; + private LocalDateTime startDate ; + private LocalDateTime endDate ; public ScriptExecutionNotification( MigrationScript executedScript, MigrationVersion sourceVersion , MigrationVersion targetVersion , - LocalDate startDate , - LocalDate endDate + LocalDateTime startDate , + LocalDateTime endDate ) { super(); @@ -51,12 +51,12 @@ public MigrationVersion getTargetVersion() return targetVersion; } - public LocalDate getStartDate() + public LocalDateTime getStartDate() { return startDate; } - public LocalDate getEndDate() + public LocalDateTime getEndDate() { return endDate; } From 791575adacf29fb27727698727676477417346a1 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 10 Mar 2021 22:33:22 +0100 Subject: [PATCH 033/306] Added better JavaDoc for ReflectiveVersionMigrationScript --- .../scripts/ReflectiveVersionMigrationScript.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java index 7a729c3f..fcb657f8 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -11,13 +11,16 @@ * * vM_Classname
* vM_m_Classname
- * vM_m_p_Classname
+ * vM_m_m_Classname
*
* Where v is short for version and is a constant (just a char),
* M is a integer for the major version,
- * m is a integer for the minor version,
- * p is a integer for the patch version and
- * Classname is a custom String that the user can choose. + * m is a integer for the minor version
+ * Classname is a custom String that the user can choose.
+ * This scheme can basically be extended infinetly. For example: v1_1_2_2_MyUpdateScript + *

+ * Therefore the character _ can only be used as a seperator of versions + * and may not be used for other purposes. *

* If the class name has the wrong format, an {@link Error} is thrown. * From 4c336bae3d2ee8b301019dba4dac5d6ad7ce671b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 10 Mar 2021 22:33:50 +0100 Subject: [PATCH 034/306] New Tests and Checks for same versions registered in one migrater --- .../migrater/ExplicitMigrater.java | 19 ++++- .../VersionAlreadyRegisteredException.java | 42 +++++++++++ .../integration/MultipleScriptsTest.java | 75 +++++++++++++++++++ 3 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java create mode 100644 src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 56562b3f..6afe7078 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -3,6 +3,7 @@ import java.util.TreeSet; import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; /** * Contains all the available scripts to migrate the datastore to a certain version. @@ -17,12 +18,26 @@ public class ExplicitMigrater extends AbstractMigrater private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); /** - * @param scripts are all the scripts that are executed, if the current version is lower than this of the script + * @param scripts are all the scripts that are executed, if the current version is lower than this of the script
+ * Versions of the scripts must be unique. That means that no version is allowed multiple times in the migrater. + * @throws VersionAlreadyRegisteredException */ - public ExplicitMigrater(MigrationScript ...scripts) + public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegisteredException { for (MigrationScript script : scripts) { + for (MigrationScript alreadyRegisteredScript : this.sortedScripts) + { + if(MigrationVersion.COMPARATOR.compare(alreadyRegisteredScript.getTargetVersion(), script.getTargetVersion()) == 0) + { + //Two scripts with the same version are not allowed to get registered. + throw new VersionAlreadyRegisteredException( + alreadyRegisteredScript.getTargetVersion(), + alreadyRegisteredScript, + script + ); + } + } this.sortedScripts.add(script); } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java new file mode 100644 index 00000000..925ccef2 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -0,0 +1,42 @@ +package de.johannes_rabauer.micromigration.migrater; + +import java.util.Objects; + +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; + +public class VersionAlreadyRegisteredException extends Error +{ + private static final long serialVersionUID = 2153008832167067975L; + + private MigrationVersion alreadyRegisteredVersion; + private MigrationScript alreadyRegisteredScript ; + private MigrationScript newScriptToRegister ; + + public VersionAlreadyRegisteredException( + MigrationVersion alreadyRegisteredVersion, + MigrationScript alreadyRegisteredScript , + MigrationScript newScriptToRegister + ) + { + super("Version " + alreadyRegisteredVersion.toString() + " is already registered. Versions must be unique within the migrater."); + this.alreadyRegisteredVersion = Objects.requireNonNull(alreadyRegisteredVersion); + this.alreadyRegisteredScript = Objects.requireNonNull(alreadyRegisteredScript) ; + this.newScriptToRegister = Objects.requireNonNull(newScriptToRegister) ; + } + + public MigrationVersion getAlreadyRegisteredVersion() + { + return alreadyRegisteredVersion; + } + + public MigrationScript getAlreadyRegisteredScript() + { + return alreadyRegisteredScript; + } + + public MigrationScript getNewScriptToRegister() + { + return newScriptToRegister; + } +} diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java new file mode 100644 index 00000000..b9dbd7a0 --- /dev/null +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java @@ -0,0 +1,75 @@ +package de.johannes_rabauer.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; +import de.johannes_rabauer.micromigration.migrater.VersionAlreadyRegisteredException; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; + +class MultipleScriptsTest +{ + @Test + void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(2, migrationStorageManager.root()); + assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(2) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript) + ); + } + + @Test + void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(3) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript, thirdScript) + ); + } +} From 5496c8e9cbf8451ca8e1e611703179b5067128cf Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Thu, 30 Sep 2021 12:54:17 +0200 Subject: [PATCH 035/306] Checking of duplicated entries of scripts for same version put in a method --- .../migrater/AbstractMigrater.java | 23 +++++++++++++++++++ .../migrater/ExplicitMigrater.java | 14 +---------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java index 62aecdcb..2d222acf 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -103,5 +103,28 @@ private MigrationVersion migrateWithScript( script.migrate(new Context<>(castedObjectToMigrate, storageManager)); return script.getTargetVersion(); } + + /** + * Checks if the given {@link MigrationScript} is not already registered in the + * {@link #getSortedScripts()}. + * @throws {@link VersionAlreadyRegisteredException} if script is already registered. + * @param scriptToCheck. It's target version is checked, if it is not already registered. + */ + protected void checkIfVersionIsAlreadyRegistered(MigrationScript scriptToCheck) + { + //Check if same version is not already registered + for (MigrationScript alreadyRegisteredScript : this.getSortedScripts()) + { + if(MigrationVersion.COMPARATOR.compare(alreadyRegisteredScript.getTargetVersion(), scriptToCheck.getTargetVersion()) == 0) + { + //Two scripts with the same version are not allowed to get registered. + throw new VersionAlreadyRegisteredException( + alreadyRegisteredScript.getTargetVersion(), + alreadyRegisteredScript, + scriptToCheck + ); + } + } + } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 6afe7078..38521138 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -3,7 +3,6 @@ import java.util.TreeSet; import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; /** * Contains all the available scripts to migrate the datastore to a certain version. @@ -26,18 +25,7 @@ public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegi { for (MigrationScript script : scripts) { - for (MigrationScript alreadyRegisteredScript : this.sortedScripts) - { - if(MigrationVersion.COMPARATOR.compare(alreadyRegisteredScript.getTargetVersion(), script.getTargetVersion()) == 0) - { - //Two scripts with the same version are not allowed to get registered. - throw new VersionAlreadyRegisteredException( - alreadyRegisteredScript.getTargetVersion(), - alreadyRegisteredScript, - script - ); - } - } + checkIfVersionIsAlreadyRegistered(script); this.sortedScripts.add(script); } } From b84cb2b56c996c27d5b0bbadb3da3d9fae64afd7 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Thu, 30 Sep 2021 15:46:49 +0200 Subject: [PATCH 036/306] Updated to Version 5.0.2 of MicroStream. Updated own version to 0.0.2 --- pom.xml | 20 ++++---- .../MigrationEmbeddedStorage.java | 49 ++++++++++++++----- .../MigrationEmbeddedStorageManager.java | 11 ++++- .../micromigration/MigrationManager.java | 2 +- .../migrater/AbstractMigrater.java | 2 +- .../migrater/MicroMigrater.java | 2 +- .../micromigration/scripts/Context.java | 2 +- ...oduceMigrationOnExistingDatastoreTest.java | 4 +- .../MigrationScriptAfterScriptTest.java | 10 ++-- 9 files changed, 64 insertions(+), 38 deletions(-) diff --git a/pom.xml b/pom.xml index 7abd0295..9504f9ff 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.johannes_rabauer micro-migration - 0.0.1-SNAPSHOT + 0.0.2 MicroMigration Migration Lib for MicroStream @@ -42,6 +42,10 @@ 9 UTF-8 false + + -Xdoclint:none + -Xdoclint:none + -Xdoclint:none @@ -66,22 +70,16 @@ - - - microstream-releases - https://repo.microstream.one/repository/maven-public/ - - one.microstream - storage.embedded - 04.00.00-MS-GA + microstream-storage-embedded + 05.00.02-MS-GA one.microstream - storage.embedded.configuration - 04.00.00-MS-GA + microstream-configuration + 05.00.02-MS-GA org.junit.jupiter diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index 29242c27..f916542c 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -4,9 +4,13 @@ import java.util.Objects; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import one.microstream.storage.configuration.Configuration; -import one.microstream.storage.types.EmbeddedStorage; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.afs.nio.types.NioFileSystem; +import one.microstream.configuration.types.Configuration; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.types.Storage; +import one.microstream.storage.types.StorageConfiguration; /** * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for @@ -19,7 +23,7 @@ public class MigrationEmbeddedStorage { /** * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. - * Uses the MicroStream {@link Configuration#Default()} configuration for the actual + * Uses the MicroStream {@link EmbeddedStorageFoundation.New()} configuration for the actual * {@link EmbeddedStorageManager}. *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. * @@ -31,16 +35,14 @@ public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater { Objects.requireNonNull(migrater); return new MigrationEmbeddedStorageManager( - Configuration.Default() - .createEmbeddedStorageFoundation() - .createEmbeddedStorageManager(), + createStorageManager(), migrater ).start(); } /** * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. - * Uses the MicroStream {@link Configuration#Default()} configuration for the actual + * Uses the MicroStream {@link EmbeddedStorageFoundation.New()} configuration for the actual * {@link EmbeddedStorageManager}. *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. * @@ -56,12 +58,35 @@ public static final MigrationEmbeddedStorageManager start( { Objects.requireNonNull(migrater); Objects.requireNonNull(storageDirectory); + return new MigrationEmbeddedStorageManager( - Configuration.Default() - .setBaseDirectory(storageDirectory.toAbsolutePath().toString()) - .createEmbeddedStorageFoundation() - .createEmbeddedStorageManager(), + createStorageManager(storageDirectory), migrater ).start(); } + + private static EmbeddedStorageManager createStorageManager(Path storageDirectory) + { + NioFileSystem fileSystem = NioFileSystem.New(); + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder() + .setStorageFileProvider( + Storage.FileProviderBuilder(fileSystem) + .setDirectory(fileSystem.ensureDirectoryPath(storageDirectory.toAbsolutePath().toString())) + .createFileProvider() + ) + .createConfiguration() + ) + .createEmbeddedStorageManager(); + } + + private static EmbeddedStorageManager createStorageManager() + { + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder().createConfiguration() + ) + .createEmbeddedStorageManager(); + } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 67fe408c..0eff0162 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -7,15 +7,16 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import de.johannes_rabauer.micromigration.version.VersionedRoot; -import one.microstream.afs.AFile; +import one.microstream.afs.types.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; import one.microstream.persistence.types.PersistenceManager; import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import one.microstream.storage.exceptions.StorageException; import one.microstream.storage.types.Database; -import one.microstream.storage.types.EmbeddedStorageManager; import one.microstream.storage.types.StorageConfiguration; import one.microstream.storage.types.StorageConnection; import one.microstream.storage.types.StorageEntityCacheEvaluator; @@ -265,4 +266,10 @@ public PersistenceManager persistenceManager() { return this.nativeManager.persistenceManager(); } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java index ec032638..978eed7f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java @@ -8,7 +8,7 @@ import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** * Manages a given object and keeps the version for it. diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java index 2d222acf..ed97978d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -9,7 +9,7 @@ import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; public abstract class AbstractMigrater implements MicroMigrater { diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index bf8ad980..8414340b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -4,7 +4,7 @@ import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** * Executes all the available scripts to migrate the datastore to a certain version. diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java index 8519d8ee..6bfb6130 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java @@ -1,6 +1,6 @@ package de.johannes_rabauer.micromigration.scripts; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** * Container that holds necessary information for the execution of an {@link MigrationScript} diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index e3160b3b..90cf2fd5 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -13,8 +13,8 @@ import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.types.EmbeddedStorage; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; class IntroduceMigrationOnExistingDatastoreTest { diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java index 20b0830d..de5c2c26 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -19,8 +19,8 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import de.johannes_rabauer.micromigration.version.VersionedObject; -import one.microstream.storage.configuration.Configuration; -import one.microstream.storage.types.EmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; class MigrationScriptAfterScriptTest { @@ -144,11 +144,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) { - return Configuration.Default() - .setBaseDirectory(storageFolder.toAbsolutePath().toString()) - .createEmbeddedStorageFoundation() - .createEmbeddedStorageManager() - .start(); + return EmbeddedStorage.start(storageFolder); } } From 86adaeb5f4d3166c8b72bc96a5219e82957856d3 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Fri, 23 Sep 2022 15:12:57 +0200 Subject: [PATCH 037/306] Create codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 109 ++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 00000000..91c0a0f5 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,109 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "main" ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "main" ] + schedule: + - cron: '25 6 * * 6' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'java' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + +# - name: Perform CodeQL Analysis +# uses: github/codeql-action/analyze@v2 +# with: +# category: "/language:${{matrix.language}}" + + + - name: Setup Java JDK + uses: actions/setup-java@v3.5.0 + with: + # The Java version to set up. Takes a whole or semver Java version. See examples of supported syntax in README file + java-version: + # Java distribution. See the list of supported distributions in README file + distribution: + # The package type (jdk, jre, jdk+fx, jre+fx) + java-package: # optional, default is jdk + # The architecture of the package + architecture: # optional, default is x64 + # Path to where the compressed JDK is located + jdkFile: # optional + # Set this option if you want the action to check for the latest available version that satisfies the version spec + check-latest: # optional + # ID of the distributionManagement repository in the pom.xml file. Default is `github` + server-id: # optional, default is github + # Environment variable name for the username for authentication to the Apache Maven repository. Default is $GITHUB_ACTOR + server-username: # optional, default is GITHUB_ACTOR + # Environment variable name for password or token for authentication to the Apache Maven repository. Default is $GITHUB_TOKEN + server-password: # optional, default is GITHUB_TOKEN + # Path to where the settings.xml file will be written. Default is ~/.m2. + settings-path: # optional + # Overwrite the settings.xml file if it exists. Default is "true". + overwrite-settings: # optional, default is true + # GPG private key to import. Default is empty string. + gpg-private-key: # optional + # Environment variable name for the GPG private key passphrase. Default is $GPG_PASSPHRASE. + gpg-passphrase: # optional + # Name of the build platform to cache dependencies. It can be "maven", "gradle" or "sbt". + cache: # optional + # Workaround to pass job status to post job step. This variable is not intended for manual setting + job-status: # optional, default is ${{ job.status }} From e05275d20ae635a9d89dc188dfcd0fdd906e450b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Fri, 23 Sep 2022 15:20:13 +0200 Subject: [PATCH 038/306] Update codeql-analysis.yml --- .github/workflows/codeql-analysis.yml | 42 +++------------------------ 1 file changed, 4 insertions(+), 38 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 91c0a0f5..22becb13 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -68,42 +68,8 @@ jobs: # echo "Run, Build Application using script" # ./location_of_script_within_repo/buildscript.sh -# - name: Perform CodeQL Analysis -# uses: github/codeql-action/analyze@v2 -# with: -# category: "/language:${{matrix.language}}" - + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" - - name: Setup Java JDK - uses: actions/setup-java@v3.5.0 - with: - # The Java version to set up. Takes a whole or semver Java version. See examples of supported syntax in README file - java-version: - # Java distribution. See the list of supported distributions in README file - distribution: - # The package type (jdk, jre, jdk+fx, jre+fx) - java-package: # optional, default is jdk - # The architecture of the package - architecture: # optional, default is x64 - # Path to where the compressed JDK is located - jdkFile: # optional - # Set this option if you want the action to check for the latest available version that satisfies the version spec - check-latest: # optional - # ID of the distributionManagement repository in the pom.xml file. Default is `github` - server-id: # optional, default is github - # Environment variable name for the username for authentication to the Apache Maven repository. Default is $GITHUB_ACTOR - server-username: # optional, default is GITHUB_ACTOR - # Environment variable name for password or token for authentication to the Apache Maven repository. Default is $GITHUB_TOKEN - server-password: # optional, default is GITHUB_TOKEN - # Path to where the settings.xml file will be written. Default is ~/.m2. - settings-path: # optional - # Overwrite the settings.xml file if it exists. Default is "true". - overwrite-settings: # optional, default is true - # GPG private key to import. Default is empty string. - gpg-private-key: # optional - # Environment variable name for the GPG private key passphrase. Default is $GPG_PASSPHRASE. - gpg-passphrase: # optional - # Name of the build platform to cache dependencies. It can be "maven", "gradle" or "sbt". - cache: # optional - # Workaround to pass job status to post job step. This variable is not intended for manual setting - job-status: # optional, default is ${{ job.status }} From 47193465d371a54f166cb40189fa5eaa14a65aa5 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Fri, 23 Sep 2022 15:33:27 +0200 Subject: [PATCH 039/306] Create dependency-review.yml --- .github/workflows/dependency-review.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 .github/workflows/dependency-review.yml diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 00000000..fe461b42 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,20 @@ +# Dependency Review Action +# +# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. +# +# Source repository: https://github.com/actions/dependency-review-action +# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement +name: 'Dependency Review' +on: [pull_request] + +permissions: + contents: read + +jobs: + dependency-review: + runs-on: ubuntu-latest + steps: + - name: 'Checkout Repository' + uses: actions/checkout@v3 + - name: 'Dependency Review' + uses: actions/dependency-review-action@v2 From 1017d7ae1d60d7c5efb9f83e46c4f7e48fea4e43 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Fri, 23 Sep 2022 15:33:44 +0200 Subject: [PATCH 040/306] Create codeql.yml --- .github/workflows/codeql.yml | 74 ++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000..781807e6 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,74 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "main" ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "main" ] + schedule: + - cron: '26 21 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'java' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" From d80b481ba33feba7ae0498a65b45233414b84145 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 1 Dec 2022 10:07:13 +0100 Subject: [PATCH 041/306] Updated Classes with CodeFormatter --- .../MigrationEmbeddedStorage.java | 1 + .../MigrationEmbeddedStorageManager.java | 5 +++-- .../micromigration/MigrationManager.java | 3 ++- .../migrater/AbstractMigrater.java | 1 + .../migrater/MicroMigrater.java | 9 ++++---- .../VersionAlreadyRegisteredException.java | 5 +++-- .../scripts/MigrationScript.java | 3 ++- .../ReflectiveVersionMigrationScript.java | 1 + .../scripts/SimpleMigrationScript.java | 3 ++- .../scripts/SimpleTypedMigrationScript.java | 3 ++- ...oduceMigrationOnExistingDatastoreTest.java | 12 ++++++----- .../MigrationScriptAfterScriptTest.java | 21 ++++++++++--------- .../integration/MultipleScriptsTest.java | 16 +++++++------- ...oreStuffInMigrationStorageManagerTest.java | 10 ++++----- .../migrater/ExplicitMigraterTest.java | 5 +++-- 15 files changed, 56 insertions(+), 42 deletions(-) diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java index f916542c..35cb654e 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java @@ -12,6 +12,7 @@ import one.microstream.storage.types.Storage; import one.microstream.storage.types.StorageConfiguration; + /** * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java index 0eff0162..710e211b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java @@ -27,6 +27,7 @@ import one.microstream.storage.types.StorageRawFileStatistics; import one.microstream.storage.types.StorageTypeDictionary; + /** * Wrapper class for the MicroStream {@link EmbeddedStorageManager} interface. *

@@ -40,8 +41,8 @@ public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager { private final EmbeddedStorageManager nativeManager; - private final MicroMigrater migrater ; - private VersionedRoot versionRoot ; + private final MicroMigrater migrater ; + private VersionedRoot versionRoot ; /** * @param nativeManager which will be used as the underlying storage manager. diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java index 978eed7f..b9cec63b 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java @@ -10,6 +10,7 @@ import de.johannes_rabauer.micromigration.version.Versioned; import one.microstream.storage.embedded.types.EmbeddedStorageManager; + /** * Manages a given object and keeps the version for it. *

@@ -25,7 +26,7 @@ public class MigrationManager private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; + private final MicroMigrater migrater ; private final EmbeddedStorageManager storageManager ; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java index ed97978d..abcec787 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -11,6 +11,7 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; + public abstract class AbstractMigrater implements MicroMigrater { private Consumer notificationConsumer = null; diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 8414340b..8fc1f983 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -2,6 +2,7 @@ import java.util.TreeSet; +import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -32,10 +33,10 @@ public interface MicroMigrater * @param fromVersion is the current version of the datastore. * Scripts for lower versions then the fromVersion are not executed. * - * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} + * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(Context)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param root is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} + * @param root is relayed to the scripts {@link MigrationScript#migrate(Context)} * method. This way the script can change something within the root object. * * @return the target version of the last executed script @@ -62,10 +63,10 @@ public MigrationVersion migrateToNewest( * @param targetVersion is the highest allowed script version. * Scripts which have a higher version won't be exectued. * - * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} + * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(Context)} * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param objectToMigrate is relayed to the scripts {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} + * @param objectToMigrate is relayed to the scripts {@link MigrationScript#migrate(Context)} * method. This way the script can change something within the object to migrate. * * @return the target version of the last executed script diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java index 925ccef2..6b2ec11f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -2,14 +2,15 @@ import java.util.Objects; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; + public class VersionAlreadyRegisteredException extends Error { private static final long serialVersionUID = 2153008832167067975L; - private MigrationVersion alreadyRegisteredVersion; + private MigrationVersion alreadyRegisteredVersion; private MigrationScript alreadyRegisteredScript ; private MigrationScript newScriptToRegister ; diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java index 385e1142..32dfa894 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java @@ -4,11 +4,12 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; + /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScript#migrate(de.johannes_rabauer.micromigration.scripts.Context)} method is called, + * After the {@link MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java index fcb657f8..03ab7a24 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -4,6 +4,7 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; + /** * Script which creates the target version of the script through the class name. *

diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index 2629e915..1225039a 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -4,6 +4,7 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; + /** * Provides a simple way to create a migration script with the necessary version * and {@link Consumer}. @@ -14,7 +15,7 @@ public class SimpleMigrationScript extends SimpleTypedMigrationScript { public SimpleMigrationScript( - final MigrationVersion version , + final MigrationVersion version , final Consumer> consumer ) { diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java index 733b7641..649dc781 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java @@ -5,6 +5,7 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; + /** * Provides a simple way to create a migration script with the necessary version * and {@link Consumer}. @@ -14,7 +15,7 @@ */ public class SimpleTypedMigrationScript implements MigrationScript { - private final MigrationVersion version ; + private final MigrationVersion version ; private final Consumer> consumer; /** diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 90cf2fd5..03182745 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -5,18 +5,20 @@ import java.io.IOException; import java.nio.file.Path; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -class IntroduceMigrationOnExistingDatastoreTest + +class IntroduceMigrationOnExistingDatastoreTest { final static String ROOT = "OriginalRoot"; @@ -35,7 +37,7 @@ void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(ROOT, migrationStorageManager.root()); - assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + Assertions.assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); } } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java index de5c2c26..0e786ddf 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -7,9 +7,6 @@ import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.MigrationManager; @@ -19,6 +16,10 @@ import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; import de.johannes_rabauer.micromigration.version.VersionedObject; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -34,7 +35,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem migrationStorageManager.setRoot(0); migrationStorageManager.storeRoot(); assertEquals(0, migrationStorageManager.root()); - assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); + Assertions.assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); } @@ -47,7 +48,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) { assertEquals(1, migrationStorageManager.root()); - assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); + Assertions.assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); } @@ -60,7 +61,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) { assertEquals(2, migrationStorageManager.root()); - assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); } } @@ -76,9 +77,9 @@ void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) t migrater.setNotificationConsumer( notification -> { - assertEquals(firstScript, notification.getExecutedScript()); - assertEquals(new MigrationVersion(0), notification.getSourceVersion()); - assertEquals(new MigrationVersion(1), notification.getTargetVersion()); + Assertions.assertEquals(firstScript, notification.getExecutedScript()); + Assertions.assertEquals(new MigrationVersion(0), notification.getSourceVersion()); + Assertions.assertEquals(new MigrationVersion(1), notification.getTargetVersion()); notificationReceived.set(true); } ); @@ -110,7 +111,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( - (Versioned) storageManager.root(), + (Versioned) storageManager.root(), new ExplicitMigrater(firstScript), storageManager ) diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java index b9dbd7a0..1675b7e8 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java @@ -4,10 +4,6 @@ import java.nio.file.Path; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; @@ -15,14 +11,18 @@ import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + -class MultipleScriptsTest +class MultipleScriptsTest { @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { final MigrationScript firstScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), + new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); final MigrationScript secondScript = new SimpleTypedMigrationScript<>( @@ -33,7 +33,7 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(2, migrationStorageManager.root()); - assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); } } @@ -48,7 +48,7 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); - Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> new ExplicitMigrater(firstScript, secondScript) ); } diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 2f8b6ace..e98bca26 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -6,17 +6,17 @@ import java.io.IOException; import java.nio.file.Path; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; - import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + -class StoreStuffInMigrationStorageManagerTest +class StoreStuffInMigrationStorageManagerTest { private static class RootClass { @@ -32,7 +32,7 @@ private static class ChildClass void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { final MigrationScript script = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), + new MigrationVersion(1), (context) -> {} ); final ExplicitMigrater migrater = new ExplicitMigrater(script); diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java index 3bbad921..b1372918 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -5,6 +5,7 @@ import java.nio.file.Path; +import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -12,10 +13,10 @@ import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; -import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; import de.johannes_rabauer.micromigration.version.MigrationVersion; -class ExplicitMigraterTest + +class ExplicitMigraterTest { @Test From c5bdafbbc65d6240af18517f77cc47d5b6e6cea8 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 1 Dec 2022 13:43:28 +0100 Subject: [PATCH 042/306] Tried to seperate the MicroStream-Dependency --- .../micromigration/MigrationManager.java | 93 +---------- .../v5}/MigrationEmbeddedStorage.java | 8 +- .../v5/MigrationEmbeddedStorageManager.java | 100 +++++++++++ .../microstream/v5/MigrationManagerV5.java | 109 ++++++++++++ .../microstream/v5/MigrationScriptV5.java | 22 +++ .../v5/TunnelingEmbeddedStorageManager.java} | 155 ++++++++---------- ...VersionAgnosticEmbeddedStorageManager.java | 6 + .../migrater/AbstractMigrater.java | 31 ++-- .../migrater/ExplicitMigrater.java | 8 +- .../migrater/MicroMigrater.java | 19 ++- .../VersionAlreadyRegisteredException.java | 12 +- .../ScriptExecutionNotification.java | 22 +-- .../micromigration/scripts/Context.java | 15 +- .../scripts/MigrationScript.java | 8 +- .../ReflectiveVersionMigrationScript.java | 2 +- .../scripts/SimpleMigrationScript.java | 4 +- .../scripts/SimpleTypedMigrationScript.java | 8 +- .../micromigration/version/Versioned.java | 4 +- ...oduceMigrationOnExistingDatastoreTest.java | 4 +- .../MigrationScriptAfterScriptTest.java | 24 +-- .../integration/MultipleScriptsTest.java | 19 ++- ...oreStuffInMigrationStorageManagerTest.java | 7 +- .../migrater/ExplicitMigraterTest.java | 7 +- .../ReflectiveVersionMigrationScriptTest.java | 5 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- 25 files changed, 422 insertions(+), 276 deletions(-) rename src/main/java/de/johannes_rabauer/micromigration/{ => microstream/v5}/MigrationEmbeddedStorage.java (93%) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java create mode 100644 src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java rename src/main/java/de/johannes_rabauer/micromigration/{MigrationEmbeddedStorageManager.java => microstream/v5/TunnelingEmbeddedStorageManager.java} (57%) create mode 100644 src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java index b9cec63b..a00379e1 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java @@ -1,14 +1,15 @@ package de.johannes_rabauer.micromigration; -import java.util.Objects; -import java.util.function.Consumer; -import java.util.function.Supplier; - +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; /** @@ -17,91 +18,15 @@ * Can be used to keep the version of the MicroStream-Root-Object to keep the whole * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} * multiple versioned objects can be used in one datastore. - * + * * @author Johannes Rabauer * */ -public class MigrationManager +public interface MigrationManager { - private final Supplier currentVersionGetter; - private final Consumer currentVersionSetter; - private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; - private final EmbeddedStorageManager storageManager ; - - /** - * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. - * - * @param currentVersionGetter which supplies the current version of the object to update. - * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. - * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. - */ - public MigrationManager - ( - final Supplier currentVersionGetter, - final Consumer currentVersionSetter, - final Consumer currentVersionStorer, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) - { - Objects.requireNonNull(currentVersionGetter); - Objects.requireNonNull(currentVersionSetter); - Objects.requireNonNull(currentVersionStorer); - Objects.requireNonNull(migrater); - Objects.requireNonNull(storageManager); - this.currentVersionGetter = currentVersionGetter; - this.currentVersionSetter = currentVersionSetter; - this.currentVersionStorer = currentVersionStorer; - this.migrater = migrater; - this.storageManager = storageManager; - } - - /** - * Simple Constructor. - * - * @param versionedObject which provides getter and setter for the current version. - * This object will be stored after the {@link MigrationScript}s are executed. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. - */ - public MigrationManager - ( - final Versioned versionedObject, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) - { - this( - ( ) -> versionedObject.getVersion() , - (version) -> versionedObject.setVersion(version) , - (version) -> storageManager.store(versionedObject), - migrater , - storageManager - ); - Objects.requireNonNull(versionedObject); - } - /** * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon */ - public void migrate(Object objectToMigrate) - { - final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); - // Execute Updates - final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( - versionBeforeUpdate, - this.storageManager, - objectToMigrate - ); - //Update stored version, if needed - if(!versionAfterUpdate.equals(versionBeforeUpdate)) - { - currentVersionSetter.accept(versionAfterUpdate); - currentVersionStorer.accept(versionAfterUpdate); - } - } + public void migrate(Object objectToMigrate); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorage.java similarity index 93% rename from src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java rename to src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorage.java index 35cb654e..a6002347 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorage.java +++ b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorage.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration; +package de.johannes_rabauer.micromigration.microstream.v5; import java.nio.file.Path; import java.util.Objects; @@ -24,7 +24,7 @@ public class MigrationEmbeddedStorage { /** * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. - * Uses the MicroStream {@link EmbeddedStorageFoundation.New()} configuration for the actual + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual * {@link EmbeddedStorageManager}. *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. * @@ -43,11 +43,11 @@ public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater /** * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. - * Uses the MicroStream {@link EmbeddedStorageFoundation.New()} configuration for the actual + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual * {@link EmbeddedStorageManager}. *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. * - * @param storageDirectory is used as the base directory for the datastore {@link Configuration#setBaseDirectory(String)} + * @param storageDirectory is used as the base directory for the datastore * @param migrater which is used as source for the migration scripts * @return the created storage manager with the given migrater */ diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..4f271a5a --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java @@ -0,0 +1,100 @@ +package de.johannes_rabauer.micromigration.microstream.v5; + +import java.util.Objects; +import java.util.function.Predicate; + +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.migrater.MicroMigrater; +import de.johannes_rabauer.micromigration.version.MigrationVersion; +import de.johannes_rabauer.micromigration.version.Versioned; +import de.johannes_rabauer.micromigration.version.VersionedRoot; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager +{ + private final MicroMigrater migrater ; + private VersionedRoot versionRoot ; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ + public MigrationEmbeddedStorageManager( + EmbeddedStorageManager nativeManager, + MicroMigrater migrater + ) + { + super(nativeManager); + Objects.requireNonNull(migrater); + this.migrater = migrater; + } + + /** + * {@inheritDoc} + *

+ * Checks if the root object is of the instance of {@link Versioned}. + * If it is not, the root will be replaced with the versioned root and the actual root object + * will be put inside the versioned root. + *

+ * After starting the storage manager, all the available update scripts are executed in order + * until the newest version of the datastore is reached. + */ + @Override + public MigrationEmbeddedStorageManager start() + { + this.nativeManager.start(); + if(this.nativeManager.root() instanceof VersionedRoot) + { + this.versionRoot = (VersionedRoot)this.nativeManager.root(); + } + else + { + //Build VersionedRoot around actual root, set by user. + this.versionRoot = new VersionedRoot(this.nativeManager.root()); + nativeManager.setRoot(versionRoot); + nativeManager.storeRoot(); + } + new MigrationManagerV5( + this.versionRoot, + migrater, + this + ) + .migrate(this.versionRoot.getRoot()); + return this; + } + + public MigrationVersion getCurrentVersion() + { + return this.versionRoot.getVersion(); + } + + @Override + public Object root() { + return this.versionRoot.getRoot(); + } + + @Override + public Object setRoot(Object newRoot) { + this.versionRoot.setRoot(newRoot); + return newRoot; + } + + @Override + public long storeRoot() { + return this.nativeManager.store(this.versionRoot); + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java new file mode 100644 index 00000000..7cf3896f --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java @@ -0,0 +1,109 @@ +package de.johannes_rabauer.micromigration.microstream.v5; + +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import de.johannes_rabauer.micromigration.MigrationManager; +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.migrater.MicroMigrater; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; +import de.johannes_rabauer.micromigration.version.Versioned; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Manages a given object and keeps the version for it. + *

+ * Can be used to keep the version of the MicroStream-Root-Object to keep the whole + * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * multiple versioned objects can be used in one datastore. + * + * @author Johannes Rabauer + * + */ +public class MigrationManagerV5 implements MigrationManager +{ + private final Supplier currentVersionGetter; + private final Consumer currentVersionSetter; + private final Consumer currentVersionStorer; + private final MicroMigrater migrater ; + private final EmbeddedStorageManager storageManager ; + + /** + * Much more complicated constructor than {@link MigrationManagerV5#MigrationManagerV5(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManagerV5 + ( + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + Objects.requireNonNull(currentVersionGetter); + Objects.requireNonNull(currentVersionSetter); + Objects.requireNonNull(currentVersionStorer); + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageManager); + this.currentVersionGetter = currentVersionGetter; + this.currentVersionSetter = currentVersionSetter; + this.currentVersionStorer = currentVersionStorer; + this.migrater = migrater; + this.storageManager = storageManager; + } + + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link MigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManagerV5 + ( + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + this( + ( ) -> versionedObject.getVersion() , + (version) -> versionedObject.setVersion(version) , + (version) -> storageManager.store(versionedObject), + migrater , + storageManager + ); + Objects.requireNonNull(versionedObject); + } + + /** + * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. + * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon + */ + public void migrate(Object objectToMigrate) + { + final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); + // Execute Updates + final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( + versionBeforeUpdate, + new TunnelingEmbeddedStorageManager(this.storageManager), + objectToMigrate + ); + //Update stored version, if needed + if(!versionAfterUpdate.equals(versionBeforeUpdate)) + { + currentVersionSetter.accept(versionAfterUpdate); + currentVersionStorer.accept(versionAfterUpdate); + } + } +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java new file mode 100644 index 00000000..bc4a6520 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java @@ -0,0 +1,22 @@ +package de.johannes_rabauer.micromigration.microstream.v5; + +import de.johannes_rabauer.micromigration.scripts.Context; +import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import de.johannes_rabauer.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Comparator; + + +/** + * Interface for scripts to migrate / update datastores. + *

+ * One script is supposed to bring a datastore from a lower version to the target version. + * After the {@link MigrationScriptV5#migrate(Context)} method is called, + * the target version is reached. + * + * @author Johannes Rabauer + * + */ +public interface MigrationScriptV5 extends MigrationScript +{} diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java similarity index 57% rename from src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java rename to src/main/java/de/johannes_rabauer/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java index 710e211b..76c77cac 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationEmbeddedStorageManager.java +++ b/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java @@ -1,8 +1,6 @@ -package de.johannes_rabauer.micromigration; - -import java.util.Objects; -import java.util.function.Predicate; +package de.johannes_rabauer.micromigration.microstream.v5; +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.MicroMigrater; import de.johannes_rabauer.micromigration.version.MigrationVersion; import de.johannes_rabauer.micromigration.version.Versioned; @@ -27,206 +25,170 @@ import one.microstream.storage.types.StorageRawFileStatistics; import one.microstream.storage.types.StorageTypeDictionary; +import java.util.Objects; +import java.util.function.Predicate; + /** - * Wrapper class for the MicroStream {@link EmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. + * Internally uses the {@link MigrationManagerV5} to do the actual migration. * * @author Johannes Rabauer * */ -public class MigrationEmbeddedStorageManager implements EmbeddedStorageManager +public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager { - private final EmbeddedStorageManager nativeManager; - private final MicroMigrater migrater ; - private VersionedRoot versionRoot ; - + protected final EmbeddedStorageManager nativeManager; + /** - * @param nativeManager which will be used as the underlying storage manager. - * Almost all methods are only rerouted to this native manager. - * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted * and a {@link Versioned} is placed between the requests. - * @param migrater which is used as source for the migration scripts */ - public MigrationEmbeddedStorageManager( - EmbeddedStorageManager nativeManager, - MicroMigrater migrater + public TunnelingEmbeddedStorageManager( + EmbeddedStorageManager nativeManager ) { Objects.requireNonNull(nativeManager); - Objects.requireNonNull(migrater); this.nativeManager = nativeManager; - this.migrater = migrater ; } - /** - * {@inheritDoc} - *

- * Checks if the root object is of the instance of {@link Versioned}. - * If it is not, the root will be replaced with the versioned root and the actual root object - * will be put inside the versioned root. - *

- * After starting the storage manager, all the available update scripts are executed in order - * until the newest version of the datastore is reached. - */ + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + @Override - public MigrationEmbeddedStorageManager start() + public TunnelingEmbeddedStorageManager start() { this.nativeManager.start(); - if(this.nativeManager.root() instanceof VersionedRoot) - { - this.versionRoot = (VersionedRoot)this.nativeManager.root(); - } - else - { - //Build VersionedRoot around actual root, set by user. - this.versionRoot = new VersionedRoot(this.nativeManager.root()); - nativeManager.setRoot(versionRoot); - nativeManager.storeRoot(); - } - new MigrationManager( - this.versionRoot, - migrater, - this - ) - .migrate(this.versionRoot.getRoot()); return this; } - - public MigrationVersion getCurrentVersion() - { - return this.versionRoot.getVersion(); - } @Override public Object root() { - return this.versionRoot.getRoot(); + return this.nativeManager.root(); } @Override public Object setRoot(Object newRoot) { - this.versionRoot.setRoot(newRoot); - return newRoot; + return this.nativeManager.setRoot(newRoot); } @Override public long storeRoot() { - return this.nativeManager.store(this.versionRoot); + return this.nativeManager.storeRoot(); } - - //////////////////////////////////////////////////////////////// - // Simply forward all the other methods - //////////////////////////////////////////////////////////////// - + @Override - public StorageConfiguration configuration() + public StorageConfiguration configuration() { return this.nativeManager.configuration(); } @Override - public StorageTypeDictionary typeDictionary() + public StorageTypeDictionary typeDictionary() { return this.nativeManager.typeDictionary(); } @Override - public boolean shutdown() + public boolean shutdown() { return this.nativeManager.shutdown(); } - @Override - public void close() throws StorageException + @Override + public void close() throws StorageException { this.nativeManager.close(); } @Override - public StorageConnection createConnection() + public StorageConnection createConnection() { return this.nativeManager.createConnection(); } - + @Override - public PersistenceRootsView viewRoots() + public PersistenceRootsView viewRoots() { return this.nativeManager.viewRoots(); } @Override @Deprecated - public Reference defaultRoot() + public Reference defaultRoot() { return this.nativeManager.defaultRoot(); } @Override - public Database database() + public Database database() { return this.nativeManager.database(); } @Override - public boolean isAcceptingTasks() + public boolean isAcceptingTasks() { return this.nativeManager.isAcceptingTasks(); } @Override - public boolean isRunning() + public boolean isRunning() { return this.nativeManager.isRunning(); } @Override - public boolean isStartingUp() + public boolean isStartingUp() { return this.nativeManager.isStartingUp(); } @Override - public boolean isShuttingDown() + public boolean isShuttingDown() { return this.nativeManager.isShuttingDown(); } @Override - public void checkAcceptingTasks() + public void checkAcceptingTasks() { this.nativeManager.checkAcceptingTasks(); } @Override - public long initializationTime() + public long initializationTime() { return this.nativeManager.initializationTime(); } @Override - public long operationModeTime() + public long operationModeTime() { return this.nativeManager.operationModeTime(); } @Override - public boolean isActive() + public boolean isActive() { return this.nativeManager.isActive(); } @Override - public boolean issueGarbageCollection(long nanoTimeBudget) + public boolean issueGarbageCollection(long nanoTimeBudget) { return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } @Override - public boolean issueFileCheck(long nanoTimeBudget) + public boolean issueFileCheck(long nanoTimeBudget) { return this.nativeManager.issueFileCheck(nanoTimeBudget); } @@ -238,39 +200,52 @@ public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator } @Override - public StorageRawFileStatistics createStorageStatistics() + public StorageRawFileStatistics createStorageStatistics() { return this.nativeManager.createStorageStatistics(); } @Override - public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } @Override - public StorageEntityTypeExportStatistics exportTypes(StorageEntityTypeExportFileProvider exportFileProvider, - Predicate isExportType) + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) { return this.nativeManager.exportTypes(exportFileProvider, isExportType); } @Override - public void importFiles(XGettingEnum importFiles) + public void importFiles(XGettingEnum importFiles) { this.nativeManager.importFiles(importFiles); } @Override - public PersistenceManager persistenceManager() + public PersistenceManager persistenceManager() { return this.nativeManager.persistenceManager(); } + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + @Override public void issueFullBackup(StorageLiveFileProvider targetFileProvider, - PersistenceTypeDictionaryExporter typeDictionaryExporter) { + PersistenceTypeDictionaryExporter typeDictionaryExporter) { this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); } -} + + } diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java b/src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java new file mode 100644 index 00000000..c85d4713 --- /dev/null +++ b/src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java @@ -0,0 +1,6 @@ +package de.johannes_rabauer.micromigration.microstream.versionagnostic; + +public interface VersionAgnosticEmbeddedStorageManager { + public long store(final Object instance); + public T getNativeStorageManager(); +} diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java index abcec787..cf007a42 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java @@ -5,6 +5,7 @@ import java.util.TreeSet; import java.util.function.Consumer; +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import de.johannes_rabauer.micromigration.notification.ScriptExecutionNotification; import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; @@ -27,15 +28,15 @@ public void setNotificationConsumer(Consumer notifi @Override public MigrationVersion migrateToNewest( - MigrationVersion fromVersion , - EmbeddedStorageManager storageManager, - Object root + MigrationVersion fromVersion , + VersionAgnosticEmbeddedStorageManager storageManager, + Object root ) { Objects.requireNonNull(fromVersion); Objects.requireNonNull(storageManager); - TreeSet> sortedScripts = getSortedScripts(); + TreeSet> sortedScripts = getSortedScripts(); if(sortedScripts.size() > 0) { return migrateToVersion( @@ -51,10 +52,10 @@ public MigrationVersion migrateToNewest( @Override public MigrationVersion migrateToVersion ( - MigrationVersion fromVersion , - MigrationVersion targetVersion , - EmbeddedStorageManager storageManager , - Object objectToMigrate + MigrationVersion fromVersion , + MigrationVersion targetVersion , + VersionAgnosticEmbeddedStorageManager storageManager , + Object objectToMigrate ) { Objects.requireNonNull(fromVersion); @@ -62,7 +63,7 @@ public MigrationVersion migrateToNewest( Objects.requireNonNull(storageManager); MigrationVersion updateVersionWhichWasExecuted = fromVersion; - for (MigrationScript script : this.getSortedScripts()) + for (MigrationScript script : this.getSortedScripts()) { if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) { @@ -94,10 +95,10 @@ public MigrationVersion migrateToNewest( } @SuppressWarnings("unchecked") - private MigrationVersion migrateWithScript( - MigrationScript script , - EmbeddedStorageManager storageManager , - Object objectToMigrate + private MigrationVersion migrateWithScript( + MigrationScript script , + VersionAgnosticEmbeddedStorageManager storageManager , + Object objectToMigrate ) { T castedObjectToMigrate = (T) objectToMigrate; @@ -111,10 +112,10 @@ private MigrationVersion migrateWithScript( * @throws {@link VersionAlreadyRegisteredException} if script is already registered. * @param scriptToCheck. It's target version is checked, if it is not already registered. */ - protected void checkIfVersionIsAlreadyRegistered(MigrationScript scriptToCheck) + protected void checkIfVersionIsAlreadyRegistered(MigrationScript scriptToCheck) { //Check if same version is not already registered - for (MigrationScript alreadyRegisteredScript : this.getSortedScripts()) + for (MigrationScript alreadyRegisteredScript : this.getSortedScripts()) { if(MigrationVersion.COMPARATOR.compare(alreadyRegisteredScript.getTargetVersion(), scriptToCheck.getTargetVersion()) == 0) { diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java index 38521138..ff4dd39f 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java @@ -14,16 +14,16 @@ */ public class ExplicitMigrater extends AbstractMigrater { - private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); + private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); /** * @param scripts are all the scripts that are executed, if the current version is lower than this of the script
* Versions of the scripts must be unique. That means that no version is allowed multiple times in the migrater. * @throws VersionAlreadyRegisteredException */ - public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegisteredException + public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegisteredException { - for (MigrationScript script : scripts) + for (MigrationScript script : scripts) { checkIfVersionIsAlreadyRegistered(script); this.sortedScripts.add(script); @@ -31,7 +31,7 @@ public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegi } @Override - public TreeSet> getSortedScripts() { + public TreeSet> getSortedScripts() { return this.sortedScripts; } } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java index 8fc1f983..641854a4 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java @@ -2,6 +2,7 @@ import java.util.TreeSet; +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; @@ -18,7 +19,7 @@ public interface MicroMigrater /** * @return all the contained {@link MigrationScript}s, sorted by their {@link MigrationVersion} ascending. */ - public TreeSet> getSortedScripts(); + public TreeSet> getSortedScripts(); /** * Executes all the scripts that are available to the migrater. @@ -34,7 +35,7 @@ public interface MicroMigrater * Scripts for lower versions then the fromVersion are not executed. * * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(Context)} - * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. + * method. This way the script can call {@link VersionAgnosticEmbeddedStorageManager#store(Object)} or another method on the storage manager. * * @param root is relayed to the scripts {@link MigrationScript#migrate(Context)} * method. This way the script can change something within the root object. @@ -42,9 +43,9 @@ public interface MicroMigrater * @return the target version of the last executed script */ public MigrationVersion migrateToNewest( - MigrationVersion fromVersion , - EmbeddedStorageManager storageManager, - Object root + MigrationVersion fromVersion , + VersionAgnosticEmbeddedStorageManager storageManager, + Object root ); /** @@ -73,9 +74,9 @@ public MigrationVersion migrateToNewest( */ public MigrationVersion migrateToVersion ( - MigrationVersion fromVersion , - MigrationVersion targetVersion , - EmbeddedStorageManager storageManager , - Object objectToMigrate + MigrationVersion fromVersion , + MigrationVersion targetVersion , + VersionAgnosticEmbeddedStorageManager storageManager , + Object objectToMigrate ); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java b/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java index 6b2ec11f..f8a5d0e8 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -11,13 +11,13 @@ public class VersionAlreadyRegisteredException extends Error private static final long serialVersionUID = 2153008832167067975L; private MigrationVersion alreadyRegisteredVersion; - private MigrationScript alreadyRegisteredScript ; - private MigrationScript newScriptToRegister ; + private MigrationScript alreadyRegisteredScript ; + private MigrationScript newScriptToRegister ; public VersionAlreadyRegisteredException( MigrationVersion alreadyRegisteredVersion, - MigrationScript alreadyRegisteredScript , - MigrationScript newScriptToRegister + MigrationScript alreadyRegisteredScript , + MigrationScript newScriptToRegister ) { super("Version " + alreadyRegisteredVersion.toString() + " is already registered. Versions must be unique within the migrater."); @@ -31,12 +31,12 @@ public MigrationVersion getAlreadyRegisteredVersion() return alreadyRegisteredVersion; } - public MigrationScript getAlreadyRegisteredScript() + public MigrationScript getAlreadyRegisteredScript() { return alreadyRegisteredScript; } - public MigrationScript getNewScriptToRegister() + public MigrationScript getNewScriptToRegister() { return newScriptToRegister; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java b/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java index af4947e6..4f8059a2 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java +++ b/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java @@ -14,18 +14,18 @@ */ public class ScriptExecutionNotification { - private MigrationScript executedScript; - private MigrationVersion sourceVersion ; - private MigrationVersion targetVersion ; - private LocalDateTime startDate ; - private LocalDateTime endDate ; + private MigrationScript executedScript; + private MigrationVersion sourceVersion ; + private MigrationVersion targetVersion ; + private LocalDateTime startDate ; + private LocalDateTime endDate ; public ScriptExecutionNotification( - MigrationScript executedScript, - MigrationVersion sourceVersion , - MigrationVersion targetVersion , - LocalDateTime startDate , - LocalDateTime endDate + MigrationScript executedScript, + MigrationVersion sourceVersion , + MigrationVersion targetVersion , + LocalDateTime startDate , + LocalDateTime endDate ) { super(); @@ -36,7 +36,7 @@ public ScriptExecutionNotification( this.endDate = endDate ; } - public MigrationScript getExecutedScript() + public MigrationScript getExecutedScript() { return executedScript; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java index 6bfb6130..c27afe21 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java @@ -1,5 +1,6 @@ package de.johannes_rabauer.micromigration.scripts; +import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** @@ -7,19 +8,19 @@ * * @author Johannes Rabauer */ -public class Context +public class Context { - private final T migratingObject; - private final EmbeddedStorageManager storageManager ; + private final T migratingObject; + private final E storageManager ; public Context( - final T migratingObject, - final EmbeddedStorageManager storageManager + final T migratingObject, + final VersionAgnosticEmbeddedStorageManager storageManager ) { super(); this.migratingObject = migratingObject; - this.storageManager = storageManager ; + this.storageManager = storageManager.getNativeStorageManager(); } /** @@ -33,7 +34,7 @@ public T getMigratingObject() /** * @return the responsible storage manager for the migrating object */ - public EmbeddedStorageManager getStorageManager() + public E getStorageManager() { return storageManager; } diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java index 32dfa894..b665a955 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java @@ -15,7 +15,7 @@ * @author Johannes Rabauer * */ -public interface MigrationScript +public interface MigrationScript { /** * @return the version of the datastore after this script is executed. @@ -28,12 +28,12 @@ public interface MigrationScript * * @param context that holds necessary data for the migration */ - public void migrate(Context context); + public void migrate(Context context); - public static Comparator> COMPARATOR = new Comparator>() + public static Comparator> COMPARATOR = new Comparator>() { @Override - public int compare(MigrationScript o1, MigrationScript o2) { + public int compare(MigrationScript o1, MigrationScript o2) { return MigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); } }; diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java index 03ab7a24..9eec6f29 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -28,7 +28,7 @@ * @author Johannes Rabauer * */ -public abstract class ReflectiveVersionMigrationScript implements MigrationScript +public abstract class ReflectiveVersionMigrationScript implements MigrationScript { private final static char PREFIX = 'v'; private final static String VERSION_SEPERATOR = "_"; diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java index 1225039a..dee51386 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java @@ -12,11 +12,11 @@ * @author Johannes Rabauer * */ -public class SimpleMigrationScript extends SimpleTypedMigrationScript +public class SimpleMigrationScript extends SimpleTypedMigrationScript { public SimpleMigrationScript( final MigrationVersion version , - final Consumer> consumer + final Consumer> consumer ) { super(version, consumer); diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java index 649dc781..ea8994df 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java @@ -13,10 +13,10 @@ * @author Johannes Rabauer * */ -public class SimpleTypedMigrationScript implements MigrationScript +public class SimpleTypedMigrationScript implements MigrationScript { private final MigrationVersion version ; - private final Consumer> consumer; + private final Consumer> consumer; /** * @param version of the datastore after this script is executed @@ -24,7 +24,7 @@ public class SimpleTypedMigrationScript implements MigrationScript */ public SimpleTypedMigrationScript( final MigrationVersion version , - final Consumer> consumer + final Consumer> consumer ) { Objects.requireNonNull(version ); @@ -40,7 +40,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { this.consumer.accept(context); } diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java b/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java index cf4e8d38..9399d437 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java +++ b/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java @@ -1,9 +1,9 @@ package de.johannes_rabauer.micromigration.version; -import de.johannes_rabauer.micromigration.MigrationManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationManagerV5; /** - * Interface used by the {@link MigrationManager} for easier versioning of objects. + * Interface used by the {@link MigrationManagerV5} for easier versioning of objects. * * @author Johannes Rabauer * diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 03182745..020a470a 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -5,8 +5,8 @@ import java.io.IOException; import java.nio.file.Path; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; import de.johannes_rabauer.micromigration.version.MigrationVersion; diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java index 0e786ddf..bec6e4a6 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -7,9 +7,9 @@ import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.MigrationManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationManagerV5; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; @@ -40,7 +40,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with one migration script - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -53,7 +53,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -68,7 +68,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem @Test void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -104,15 +104,15 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final MigrationScript> firstScript = new SimpleTypedMigrationScript<>( + final MigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManager( + new MigrationManagerV5( (Versioned) storageManager.root(), - new ExplicitMigrater(firstScript), + new ExplicitMigrater(firstScript), storageManager ) .migrate(storageManager.root()); @@ -124,15 +124,15 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final MigrationScript> secondScript = new SimpleTypedMigrationScript<>( + final MigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManager( + new MigrationManagerV5( (Versioned) storageManager.root(), - new ExplicitMigrater(firstScript, secondScript), + new ExplicitMigrater(firstScript, secondScript), storageManager ) .migrate(storageManager.root()); diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java index 1675b7e8..09bb3897 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java @@ -4,13 +4,14 @@ import java.nio.file.Path; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.migrater.VersionAlreadyRegisteredException; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -21,11 +22,11 @@ class MultipleScriptsTest @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -40,11 +41,11 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -56,15 +57,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index e98bca26..548170b2 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -6,12 +6,13 @@ import java.io.IOException; import java.nio.file.Path; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -31,7 +32,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final MigrationScript script = new SimpleTypedMigrationScript<>( + final MigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java index b1372918..ec175ec3 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java @@ -6,12 +6,13 @@ import java.nio.file.Path; import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.MigrationEmbeddedStorageManager; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; +import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; @@ -57,7 +58,7 @@ void testWrongTypedVersionedScript(@TempDir Path storageFolder) storageManager.storeRoot(); } final ExplicitMigrater migrater = new ExplicitMigrater( - new SimpleTypedMigrationScript( + new SimpleTypedMigrationScript( new MigrationVersion(1), (context) -> { context.getStorageManager().setRoot(context.getMigratingObject() + 1); diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index b4cf2535..e1ce52b5 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -125,10 +126,10 @@ void testInvalildName_v___InvalidClassName() } - public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript + public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript { @Override - public void migrate(Context context) { + public void migrate(Context context) { //Dummy } } diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java index 6805aa80..780419f8 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -3,8 +3,10 @@ import de.johannes_rabauer.micromigration.scripts.Context; import de.johannes_rabauer.micromigration.scripts.MigrationScript; import de.johannes_rabauer.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class MicroMigrationScriptDummy implements MigrationScript + +public class MicroMigrationScriptDummy implements MigrationScript { private final MigrationVersion version; @@ -20,7 +22,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) { + public void migrate(Context context) { // Don't do anything. } } From 3cfbf6c4f29cb14de5abf5da5c07d67d7932c352 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 1 Dec 2022 13:49:49 +0100 Subject: [PATCH 043/306] Migrated to software.xdev --- README.md | 4 ++-- pom.xml | 4 ++-- .../micromigration/MigrationManager.java | 14 +++---------- .../v5/MigrationEmbeddedStorage.java | 5 ++--- .../v5/MigrationEmbeddedStorageManager.java | 13 ++++++------ .../microstream/v5/MigrationManagerV5.java | 15 +++++++------- .../microstream/v5/MigrationScriptV5.java | 9 +++------ .../v5/TunnelingEmbeddedStorageManager.java | 9 +++------ ...VersionAgnosticEmbeddedStorageManager.java | 2 +- .../migrater/AbstractMigrater.java | 13 ++++++------ .../migrater/ExplicitMigrater.java | 4 ++-- .../migrater/MicroMigrater.java | 11 +++++----- .../VersionAlreadyRegisteredException.java | 6 +++--- .../ScriptExecutionNotification.java | 8 ++++---- .../xdev}/micromigration/scripts/Context.java | 6 +++--- .../scripts/MigrationScript.java | 4 ++-- .../ReflectiveVersionMigrationScript.java | 4 ++-- .../scripts/SimpleMigrationScript.java | 4 ++-- .../scripts/SimpleTypedMigrationScript.java | 4 ++-- .../version/MigrationVersion.java | 2 +- .../micromigration/version/Versioned.java | 4 ++-- .../version/VersionedObject.java | 2 +- .../micromigration/version/VersionedRoot.java | 2 +- ...oduceMigrationOnExistingDatastoreTest.java | 12 +++++------ .../MigrationScriptAfterScriptTest.java | 20 +++++++++---------- .../integration/MultipleScriptsTest.java | 16 +++++++-------- ...oreStuffInMigrationStorageManagerTest.java | 14 ++++++------- .../migrater/ExplicitMigraterTest.java | 12 +++++------ .../ReflectiveVersionMigrationScriptTest.java | 4 ++-- .../testUtil/MicroMigrationScriptDummy.java | 8 ++++---- .../version/MigrationVersionTest.java | 2 +- 31 files changed, 110 insertions(+), 127 deletions(-) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/MigrationManager.java (51%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/microstream/v5/MigrationEmbeddedStorage.java (94%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java (84%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/microstream/v5/MigrationManagerV5.java (87%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/microstream/v5/MigrationScriptV5.java (62%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java (93%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java (66%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/migrater/AbstractMigrater.java (88%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/migrater/ExplicitMigrater.java (89%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/migrater/MicroMigrater.java (90%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/migrater/VersionAlreadyRegisteredException.java (86%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/notification/ScriptExecutionNotification.java (82%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/scripts/Context.java (77%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/scripts/MigrationScript.java (89%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/scripts/ReflectiveVersionMigrationScript.java (95%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/scripts/SimpleMigrationScript.java (78%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/scripts/SimpleTypedMigrationScript.java (89%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/version/MigrationVersion.java (97%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/version/Versioned.java (66%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/version/VersionedObject.java (94%) rename src/main/java/{de/johannes_rabauer => software/xdev}/micromigration/version/VersionedRoot.java (94%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java (72%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/integration/MigrationScriptAfterScriptTest.java (88%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/integration/MultipleScriptsTest.java (81%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java (77%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/migrater/ExplicitMigraterTest.java (81%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java (97%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/testUtil/MicroMigrationScriptDummy.java (67%) rename src/test/java/{de/johannes_rabauer => software/xdev}/micromigration/version/MigrationVersionTest.java (94%) diff --git a/README.md b/README.md index 5e4faf52..9130b611 100644 --- a/README.md +++ b/README.md @@ -104,6 +104,6 @@ The `ReflectiveMigrater` will search for any implementations of `MicroMigrationS This way scripts can simply be placed in the same package and on startup of the application all scripts are loaded in. ```java -final ReflectiveMigrater migrater = new ReflectiveMigrater("de.johannes_rabauer.micromigration.examples.reflective.scripts"); +final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.examples.reflective.scripts"); ``` -Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own repository](https://github.com/JohannesRabauer/micro-migration-reflection). \ No newline at end of file +Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own repository](https://github.com/JohannesRabauer/micro-migration-reflection). diff --git a/pom.xml b/pom.xml index 9504f9ff..3d645d3c 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - de.johannes_rabauer + software.xdev micro-migration 0.0.2 MicroMigration @@ -94,4 +94,4 @@ test - \ No newline at end of file + diff --git a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java b/src/main/java/software/xdev/micromigration/MigrationManager.java similarity index 51% rename from src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java rename to src/main/java/software/xdev/micromigration/MigrationManager.java index a00379e1..ec5b4e4e 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/MigrationManager.java +++ b/src/main/java/software/xdev/micromigration/MigrationManager.java @@ -1,15 +1,7 @@ -package de.johannes_rabauer.micromigration; +package software.xdev.micromigration; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import de.johannes_rabauer.micromigration.version.Versioned; - -import java.util.Objects; -import java.util.function.Consumer; -import java.util.function.Supplier; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.MicroMigrater; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java similarity index 94% rename from src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorage.java rename to src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java index a6002347..230fba35 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorage.java +++ b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java @@ -1,11 +1,10 @@ -package de.johannes_rabauer.micromigration.microstream.v5; +package software.xdev.micromigration.microstream.v5; import java.nio.file.Path; import java.util.Objects; -import de.johannes_rabauer.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.migrater.MicroMigrater; import one.microstream.afs.nio.types.NioFileSystem; -import one.microstream.configuration.types.Configuration; import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java similarity index 84% rename from src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java rename to src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java index 4f271a5a..1b0ad43a 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java +++ b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java @@ -1,13 +1,12 @@ -package de.johannes_rabauer.micromigration.microstream.v5; +package software.xdev.micromigration.microstream.v5; import java.util.Objects; -import java.util.function.Predicate; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import de.johannes_rabauer.micromigration.version.Versioned; -import de.johannes_rabauer.micromigration.version.VersionedRoot; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedRoot; import one.microstream.storage.embedded.types.EmbeddedStorageManager; diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java similarity index 87% rename from src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java rename to src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java index 7cf3896f..502b4cff 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationManagerV5.java +++ b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java @@ -1,15 +1,14 @@ -package de.johannes_rabauer.micromigration.microstream.v5; +package software.xdev.micromigration.microstream.v5; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; -import de.johannes_rabauer.micromigration.MigrationManager; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import de.johannes_rabauer.micromigration.version.Versioned; +import software.xdev.micromigration.MigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -28,7 +27,7 @@ public class MigrationManagerV5 implements MigrationManager private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; + private final MicroMigrater migrater ; private final EmbeddedStorageManager storageManager ; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java similarity index 62% rename from src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java rename to src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java index bc4a6520..400e3a88 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/MigrationScriptV5.java +++ b/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java @@ -1,12 +1,9 @@ -package de.johannes_rabauer.micromigration.microstream.v5; +package software.xdev.micromigration.microstream.v5; -import de.johannes_rabauer.micromigration.scripts.Context; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import java.util.Comparator; - /** * Interface for scripts to migrate / update datastores. diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java similarity index 93% rename from src/main/java/de/johannes_rabauer/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java rename to src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java index 76c77cac..4de05400 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java +++ b/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java @@ -1,10 +1,7 @@ -package de.johannes_rabauer.micromigration.microstream.v5; +package software.xdev.micromigration.microstream.v5; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import de.johannes_rabauer.micromigration.version.Versioned; -import de.johannes_rabauer.micromigration.version.VersionedRoot; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; import one.microstream.afs.types.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; diff --git a/src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java b/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java similarity index 66% rename from src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java rename to src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java index c85d4713..4d683f42 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java +++ b/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.microstream.versionagnostic; +package software.xdev.micromigration.microstream.versionagnostic; public interface VersionAgnosticEmbeddedStorageManager { public long store(final Object instance); diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java b/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java similarity index 88% rename from src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java rename to src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index cf007a42..6dfc5d61 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/AbstractMigrater.java +++ b/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -1,16 +1,15 @@ -package de.johannes_rabauer.micromigration.migrater; +package software.xdev.micromigration.migrater; import java.time.LocalDateTime; import java.util.Objects; import java.util.TreeSet; import java.util.function.Consumer; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.notification.ScriptExecutionNotification; -import de.johannes_rabauer.micromigration.scripts.Context; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.notification.ScriptExecutionNotification; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; public abstract class AbstractMigrater implements MicroMigrater diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java b/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java similarity index 89% rename from src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java rename to src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java index ff4dd39f..a2220cf2 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigrater.java +++ b/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java @@ -1,8 +1,8 @@ -package de.johannes_rabauer.micromigration.migrater; +package software.xdev.micromigration.migrater; import java.util.TreeSet; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.MigrationScript; /** * Contains all the available scripts to migrate the datastore to a certain version. diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java b/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java similarity index 90% rename from src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java rename to src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 641854a4..9f2641dd 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/MicroMigrater.java +++ b/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,13 +1,14 @@ -package de.johannes_rabauer.micromigration.migrater; +package software.xdev.micromigration.migrater; import java.util.TreeSet; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.scripts.Context; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; + /** * Executes all the available scripts to migrate the datastore to a certain version. * diff --git a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java b/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java similarity index 86% rename from src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java rename to src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index f8a5d0e8..6ce95ba5 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -1,9 +1,9 @@ -package de.johannes_rabauer.micromigration.migrater; +package software.xdev.micromigration.migrater; import java.util.Objects; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.scripts.MigrationScript; public class VersionAlreadyRegisteredException extends Error diff --git a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java b/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java similarity index 82% rename from src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java rename to src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java index 4f8059a2..6fa1c055 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/notification/ScriptExecutionNotification.java +++ b/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java @@ -1,10 +1,10 @@ -package de.johannes_rabauer.micromigration.notification; +package software.xdev.micromigration.notification; import java.time.LocalDateTime; -import de.johannes_rabauer.micromigration.migrater.MicroMigrater; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; /** * Contains data about the execution of a script by a {@link MicroMigrater}. diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java b/src/main/java/software/xdev/micromigration/scripts/Context.java similarity index 77% rename from src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java rename to src/main/java/software/xdev/micromigration/scripts/Context.java index c27afe21..19ff7324 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/Context.java +++ b/src/main/java/software/xdev/micromigration/scripts/Context.java @@ -1,7 +1,7 @@ -package de.johannes_rabauer.micromigration.scripts; +package software.xdev.micromigration.scripts; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** * Container that holds necessary information for the execution of an {@link MigrationScript} diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java b/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java similarity index 89% rename from src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java rename to src/main/java/software/xdev/micromigration/scripts/MigrationScript.java index b665a955..4f5794b1 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/MigrationScript.java +++ b/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java @@ -1,8 +1,8 @@ -package de.johannes_rabauer.micromigration.scripts; +package software.xdev.micromigration.scripts; import java.util.Comparator; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.MigrationVersion; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java b/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java similarity index 95% rename from src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java rename to src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java index 9eec6f29..05606bf0 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,8 +1,8 @@ -package de.johannes_rabauer.micromigration.scripts; +package software.xdev.micromigration.scripts; import java.util.ArrayList; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.MigrationVersion; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java b/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java similarity index 78% rename from src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java rename to src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java index dee51386..8cccc24d 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleMigrationScript.java +++ b/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java @@ -1,8 +1,8 @@ -package de.johannes_rabauer.micromigration.scripts; +package software.xdev.micromigration.scripts; import java.util.function.Consumer; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.MigrationVersion; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java b/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java similarity index 89% rename from src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java rename to src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java index ea8994df..cbea8000 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java @@ -1,9 +1,9 @@ -package de.johannes_rabauer.micromigration.scripts; +package software.xdev.micromigration.scripts; import java.util.Objects; import java.util.function.Consumer; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.MigrationVersion; /** diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java b/src/main/java/software/xdev/micromigration/version/MigrationVersion.java similarity index 97% rename from src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java rename to src/main/java/software/xdev/micromigration/version/MigrationVersion.java index 34d51f47..397a96af 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/MigrationVersion.java +++ b/src/main/java/software/xdev/micromigration/version/MigrationVersion.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.version; +package software.xdev.micromigration.version; import java.util.Arrays; import java.util.Comparator; diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java b/src/main/java/software/xdev/micromigration/version/Versioned.java similarity index 66% rename from src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java rename to src/main/java/software/xdev/micromigration/version/Versioned.java index 9399d437..e78a27dc 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/Versioned.java +++ b/src/main/java/software/xdev/micromigration/version/Versioned.java @@ -1,6 +1,6 @@ -package de.johannes_rabauer.micromigration.version; +package software.xdev.micromigration.version; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.microstream.v5.MigrationManagerV5; /** * Interface used by the {@link MigrationManagerV5} for easier versioning of objects. diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java b/src/main/java/software/xdev/micromigration/version/VersionedObject.java similarity index 94% rename from src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java rename to src/main/java/software/xdev/micromigration/version/VersionedObject.java index ef33ece3..d2594dcd 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedObject.java +++ b/src/main/java/software/xdev/micromigration/version/VersionedObject.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.version; +package software.xdev.micromigration.version; import java.util.Objects; diff --git a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java b/src/main/java/software/xdev/micromigration/version/VersionedRoot.java similarity index 94% rename from src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java rename to src/main/java/software/xdev/micromigration/version/VersionedRoot.java index 7e0ced7b..01162fe6 100644 --- a/src/main/java/de/johannes_rabauer/micromigration/version/VersionedRoot.java +++ b/src/main/java/software/xdev/micromigration/version/VersionedRoot.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.version; +package software.xdev.micromigration.version; import java.util.Objects; diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java similarity index 72% rename from src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java rename to src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 020a470a..91f41bf0 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,15 +1,15 @@ -package de.johannes_rabauer.micromigration.integration; +package software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import java.nio.file.Path; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; -import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java b/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java similarity index 88% rename from src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java rename to src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index bec6e4a6..f437a065 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.integration; +package software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -7,15 +7,15 @@ import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationManagerV5; -import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; -import de.johannes_rabauer.micromigration.version.Versioned; -import de.johannes_rabauer.micromigration.version.VersionedObject; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedObject; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java b/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java similarity index 81% rename from src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java rename to src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 09bb3897..e08c6d5f 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/MultipleScriptsTest.java +++ b/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,16 +1,16 @@ -package de.johannes_rabauer.micromigration.integration; +package software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.file.Path; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; -import de.johannes_rabauer.micromigration.migrater.VersionAlreadyRegisteredException; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java similarity index 77% rename from src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java rename to src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 548170b2..424b0569 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.integration; +package software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -6,12 +6,12 @@ import java.io.IOException; import java.nio.file.Path; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.migrater.ExplicitMigrater; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; diff --git a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java b/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java similarity index 81% rename from src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java rename to src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index ec175ec3..808fd39d 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/migrater/ExplicitMigraterTest.java +++ b/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,20 +1,20 @@ -package de.johannes_rabauer.micromigration.migrater; +package software.xdev.micromigration.migrater; import static org.junit.jupiter.api.Assertions.assertEquals; import java.nio.file.Path; -import de.johannes_rabauer.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorage; -import de.johannes_rabauer.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import de.johannes_rabauer.micromigration.scripts.SimpleTypedMigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; class ExplicitMigraterTest diff --git a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java similarity index 97% rename from src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java rename to src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index e1ce52b5..0199d562 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.scripts; +package software.xdev.micromigration.scripts; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.MigrationVersion; class ReflectiveVersionMigrationScriptTest { diff --git a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java b/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java similarity index 67% rename from src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java rename to src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 780419f8..cf32f3a8 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,8 +1,8 @@ -package de.johannes_rabauer.micromigration.testUtil; +package software.xdev.micromigration.testUtil; -import de.johannes_rabauer.micromigration.scripts.Context; -import de.johannes_rabauer.micromigration.scripts.MigrationScript; -import de.johannes_rabauer.micromigration.version.MigrationVersion; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; diff --git a/src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java b/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java similarity index 94% rename from src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java rename to src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java index fa37da2b..1326903e 100644 --- a/src/test/java/de/johannes_rabauer/micromigration/version/MigrationVersionTest.java +++ b/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java @@ -1,4 +1,4 @@ -package de.johannes_rabauer.micromigration.version; +package software.xdev.micromigration.version; import static org.junit.jupiter.api.Assertions.assertEquals; From 216a6b85df5626f62d9d1906789c1a94b0e9c893 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 1 Dec 2022 15:31:35 +0100 Subject: [PATCH 044/306] Needed Module-Infos added --- pom.xml | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/pom.xml b/pom.xml index 3d645d3c..051ebae3 100644 --- a/pom.xml +++ b/pom.xml @@ -6,6 +6,34 @@ micro-migration 0.0.2 MicroMigration + + https://github.com/xdev-software/micro-migration + + https://github.com/xdev-software/micro-migration + https://github.com/xdev-software/micro-migration.git + + + + XDEV Software GmbH + https://xdev.software + + + + + XDEV Software GmbH + XDEV Software GmbH + https://xdev.software + + + + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + repo + + + Migration Lib for MicroStream @@ -94,4 +122,66 @@ test + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + From 124a8ed046930c328c5a8c27965f1c473ab158c0 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 09:48:48 +0100 Subject: [PATCH 045/306] Merged the multiple repostiories --- .classpath | 39 ---- .github/workflows/codeql-analysis.yml | 75 ------- .github/workflows/codeql.yml | 74 ------- .github/workflows/dependency-review.yml | 20 -- .gitignore | 4 +- pom.xml => core/pom.xml | 0 .../xdev/micromigration/MigrationManager.java | 0 .../v5/MigrationEmbeddedStorage.java | 0 .../v5/MigrationEmbeddedStorageManager.java | 0 .../microstream/v5/MigrationManagerV5.java | 0 .../microstream/v5/MigrationScriptV5.java | 0 .../v5/TunnelingEmbeddedStorageManager.java | 0 ...VersionAgnosticEmbeddedStorageManager.java | 0 .../migrater/AbstractMigrater.java | 0 .../migrater/ExplicitMigrater.java | 0 .../migrater/MicroMigrater.java | 0 .../VersionAlreadyRegisteredException.java | 0 .../ScriptExecutionNotification.java | 0 .../xdev/micromigration/scripts/Context.java | 0 .../scripts/MigrationScript.java | 0 .../ReflectiveVersionMigrationScript.java | 0 .../scripts/SimpleMigrationScript.java | 0 .../scripts/SimpleTypedMigrationScript.java | 0 .../version/MigrationVersion.java | 0 .../micromigration/version/Versioned.java | 0 .../version/VersionedObject.java | 0 .../micromigration/version/VersionedRoot.java | 0 ...oduceMigrationOnExistingDatastoreTest.java | 0 .../MigrationScriptAfterScriptTest.java | 0 .../integration/MultipleScriptsTest.java | 0 ...oreStuffInMigrationStorageManagerTest.java | 0 .../migrater/ExplicitMigraterTest.java | 0 .../ReflectiveVersionMigrationScriptTest.java | 0 .../testUtil/MicroMigrationScriptDummy.java | 0 .../version/MigrationVersionTest.java | 0 examples/README.md | 23 +++ examples/pom.xml | 167 ++++++++++++++++ .../examples/explicit/MainExplicit.java | 29 +++ .../explicit/scripts/UpdateToV1_0.java | 25 +++ .../explicit/scripts/UpdateToV1_1.java | 25 +++ ...alWithMigrationEmbeddedStorageManager.java | 72 +++++++ .../practical/embedded/UpdateToV1_0.java | 42 ++++ .../practical/embedded/UpdateToV2_0.java | 33 ++++ .../MainPracticalWithMigrationManager.java | 81 ++++++++ .../migrationManager/UpdateToV1_0.java | 45 +++++ .../migrationManager/UpdateToV2_0.java | 35 ++++ .../examples/practical/v0/BusinessBranch.java | 18 ++ .../examples/practical/v0/Customer.java | 11 ++ .../practical/v1AndHigher/Address.java | 8 + .../practical/v1AndHigher/BusinessBranch.java | 19 ++ .../practical/v1AndHigher/Customer.java | 7 + .../examples/reflective/MainReflective.java | 31 +++ .../reflective/scripts/UpdateToV1_0.java | 25 +++ .../reflective/scripts/UpdateToV1_1.java | 25 +++ reflection/README.md | 8 + reflection/pom.xml | 184 ++++++++++++++++++ .../migrater/ReflectiveMigrater.java | 78 ++++++++ .../ScriptInstantiationException.java | 16 ++ .../migrater/ReflectiveMigraterTest.java | 104 ++++++++++ .../AbstractScript.java | 10 + .../v1_ValidScript.java | 14 ++ .../abstractSuperClass/AbstractScript.java | 15 ++ .../abstractSuperClass/ValidScript.java | 14 ++ .../errorThrowing/ErrorThrowingScript.java | 27 +++ .../ExceptionThrowingScript.java | 27 +++ .../includeSubPackages/ValidScript.java | 22 +++ .../subpackage/ValidScriptInSubpackage.java | 22 +++ .../IrrelevantClass.java | 5 + .../ValidScript.java | 22 +++ .../NoCorrectConstructorScript.java | 29 +++ .../reflectiveVersion/v1_ValidScript.java | 15 ++ .../migrater/scripts/valid/ValidScript.java | 22 +++ 72 files changed, 1358 insertions(+), 209 deletions(-) delete mode 100644 .classpath delete mode 100644 .github/workflows/codeql-analysis.yml delete mode 100644 .github/workflows/codeql.yml delete mode 100644 .github/workflows/dependency-review.yml rename pom.xml => core/pom.xml (100%) rename {src => core/src}/main/java/software/xdev/micromigration/MigrationManager.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/migrater/MicroMigrater.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/scripts/Context.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/scripts/MigrationScript.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/version/MigrationVersion.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/version/Versioned.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/version/VersionedObject.java (100%) rename {src => core/src}/main/java/software/xdev/micromigration/version/VersionedRoot.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java (100%) rename {src => core/src}/test/java/software/xdev/micromigration/version/MigrationVersionTest.java (100%) create mode 100644 examples/README.md create mode 100644 examples/pom.xml create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java create mode 100644 reflection/README.md create mode 100644 reflection/pom.xml create mode 100644 reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java create mode 100644 reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java create mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java diff --git a/.classpath b/.classpath deleted file mode 100644 index 473188a2..00000000 --- a/.classpath +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 22becb13..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,75 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "main" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "main" ] - schedule: - - cron: '25 6 * * 6' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'java' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" - diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 781807e6..00000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,74 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "main" ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "main" ] - schedule: - - cron: '26 21 * * 4' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'java' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml deleted file mode 100644 index fe461b42..00000000 --- a/.github/workflows/dependency-review.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Dependency Review Action -# -# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. -# -# Source repository: https://github.com/actions/dependency-review-action -# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement -name: 'Dependency Review' -on: [pull_request] - -permissions: - contents: read - -jobs: - dependency-review: - runs-on: ubuntu-latest - steps: - - name: 'Checkout Repository' - uses: actions/checkout@v3 - - name: 'Dependency Review' - uses: actions/dependency-review-action@v2 diff --git a/.gitignore b/.gitignore index b3314e0d..fbf48d01 100644 --- a/.gitignore +++ b/.gitignore @@ -135,4 +135,6 @@ $RECYCLE.BIN/ # End of https://www.toptal.com/developers/gitignore/api/maven,java,eclipse,windows #MicroStream Datastore default directory -/storage/ \ No newline at end of file +/storage/ + +.idea \ No newline at end of file diff --git a/pom.xml b/core/pom.xml similarity index 100% rename from pom.xml rename to core/pom.xml diff --git a/src/main/java/software/xdev/micromigration/MigrationManager.java b/core/src/main/java/software/xdev/micromigration/MigrationManager.java similarity index 100% rename from src/main/java/software/xdev/micromigration/MigrationManager.java rename to core/src/main/java/software/xdev/micromigration/MigrationManager.java diff --git a/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java similarity index 100% rename from src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java rename to core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java diff --git a/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java similarity index 100% rename from src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java rename to core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java diff --git a/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java similarity index 100% rename from src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java rename to core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java diff --git a/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java similarity index 100% rename from src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java rename to core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java diff --git a/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java similarity index 100% rename from src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java rename to core/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java diff --git a/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java similarity index 100% rename from src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java rename to core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java diff --git a/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java similarity index 100% rename from src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java rename to core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java diff --git a/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java similarity index 100% rename from src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java rename to core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java diff --git a/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java similarity index 100% rename from src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java rename to core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java diff --git a/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java similarity index 100% rename from src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java rename to core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java diff --git a/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java similarity index 100% rename from src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java rename to core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java diff --git a/src/main/java/software/xdev/micromigration/scripts/Context.java b/core/src/main/java/software/xdev/micromigration/scripts/Context.java similarity index 100% rename from src/main/java/software/xdev/micromigration/scripts/Context.java rename to core/src/main/java/software/xdev/micromigration/scripts/Context.java diff --git a/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java similarity index 100% rename from src/main/java/software/xdev/micromigration/scripts/MigrationScript.java rename to core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java diff --git a/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java similarity index 100% rename from src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java rename to core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java diff --git a/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java similarity index 100% rename from src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java rename to core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java diff --git a/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java similarity index 100% rename from src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java rename to core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java diff --git a/src/main/java/software/xdev/micromigration/version/MigrationVersion.java b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java similarity index 100% rename from src/main/java/software/xdev/micromigration/version/MigrationVersion.java rename to core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java diff --git a/src/main/java/software/xdev/micromigration/version/Versioned.java b/core/src/main/java/software/xdev/micromigration/version/Versioned.java similarity index 100% rename from src/main/java/software/xdev/micromigration/version/Versioned.java rename to core/src/main/java/software/xdev/micromigration/version/Versioned.java diff --git a/src/main/java/software/xdev/micromigration/version/VersionedObject.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java similarity index 100% rename from src/main/java/software/xdev/micromigration/version/VersionedObject.java rename to core/src/main/java/software/xdev/micromigration/version/VersionedObject.java diff --git a/src/main/java/software/xdev/micromigration/version/VersionedRoot.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java similarity index 100% rename from src/main/java/software/xdev/micromigration/version/VersionedRoot.java rename to core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java diff --git a/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/core/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java rename to core/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java diff --git a/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/core/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java rename to core/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java diff --git a/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/core/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java rename to core/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java diff --git a/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/core/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java rename to core/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java diff --git a/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/core/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java rename to core/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java diff --git a/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java rename to core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java diff --git a/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/core/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java similarity index 100% rename from src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java rename to core/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java diff --git a/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java similarity index 100% rename from src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java rename to core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..38960b87 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,23 @@ +# micro-migration-examples +Examples for the MicroMigration-Library + +Currently contains four major examples: +## Example with `ExplicitMigrater` +In the package `software.xdev.micromigration.examples.explicit` there is a simple example with explicitly listed upgrade scripts. +This is the most straight forward approach to use migration scripts. + +## Example with `ReflectiveMigrater` +In package `software.xdev.micromigration.examples.reflective` a migrater which finds it's scripts through reflection is used. +So here all `MicroMigrationScript`s in the defined `software.xdev.micromigration.examples.reflective.scripts` package are used. + +Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own repository](https://github.com/JohannesRabauer/micro-migration-reflection). + +## Practical examples +The package `software.xdev.micromigration.examples.practical.embedded` contains examples +that are just a bit more complex than the other examples and should allow an insight about the usage in a +practical environment. + +There is one example implemented with the `MigrationEmbeddedStorageManager` and another with the +plain `MigrationManager`, so it is clear what the difference between these two approaches is. +In both implementations the first update migrates from version 0 to 1 and converts an "old" `BusinessBranch` +to a newer one. The second update only adds more `Customer`s to the existing `BusinessBranch`. diff --git a/examples/pom.xml b/examples/pom.xml new file mode 100644 index 00000000..9327ea2a --- /dev/null +++ b/examples/pom.xml @@ -0,0 +1,167 @@ + + 4.0.0 + software.xdev + micro-migration-examples + 0.0.2 + MicroMigration-Examples + + https://github.com/xdev-software/micro-migration + + https://github.com/xdev-software/micro-migration + https://github.com/xdev-software/micro-migration.git + + + + XDEV Software GmbH + https://xdev.software + + + + + XDEV Software GmbH + XDEV Software GmbH + https://xdev.software + + + + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + repo + + + + Examples for the MicroMigration-Library + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 9 + 9 + UTF-8 + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + 9 + UTF-8 + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + + + + + software.xdev + micro-migration + 0.0.2 + + + software.xdev + micro-migration-reflection + 0.0.2 + + + + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + + diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java new file mode 100644 index 00000000..41320c88 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -0,0 +1,29 @@ +package software.xdev.micromigration.examples.explicit; + +import java.util.Date; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; +import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; +import software.xdev.micromigration.migrater.ExplicitMigrater; + + +public class MainExplicit +{ + public static void main(String[] args) + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new UpdateToV1_0(), + new UpdateToV1_1() + ); + final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); + System.out.println(storageManager.root()); + if(storageManager.root() == null) + { + storageManager.setRoot("Hello World! @ " + new Date()); + } + storageManager.storeRoot(); + storageManager.shutdown(); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java new file mode 100644 index 00000000..39a151d8 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -0,0 +1,25 @@ +package software.xdev.micromigration.examples.explicit.scripts; + +import java.util.Date; + +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV1_0 implements MigrationScriptV5 +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,0); + } + + @Override + public void migrate(Context context) + { + System.out.println("Update " + getTargetVersion().toString() + " executed."); + context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java new file mode 100644 index 00000000..0433b3f1 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -0,0 +1,25 @@ +package software.xdev.micromigration.examples.explicit.scripts; + +import java.util.Date; + +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV1_1 implements MigrationScriptV5 +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,1); + } + + @Override + public void migrate(Context context) + { + System.out.println("Update " + getTargetVersion().toString() + " executed."); + context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..ec0ee9e3 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -0,0 +1,72 @@ +package software.xdev.micromigration.examples.practical.embedded; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.examples.practical.v0.BusinessBranch; +import software.xdev.micromigration.examples.practical.v0.Customer; +import software.xdev.micromigration.migrater.ExplicitMigrater; + + +/** + * A practical example of usage in a few steps: + *
    + *
  • v0.0: Storage is created without any updates. Only stores a new {@link BusinessBranch} + *
  • v1.0: The BusinessBranch has a new implementation {@link BusinessBranch}. + * The old branch is converted to the new implementation through the {@link UpdateToV1_0} script. + *
  • v2.0: A new customer is added through the {@link UpdateToV2_0} script. + *
+ * The storage is restarted after every update to simulate a complete lifecycle of the datastore. + * @author Johannes Rabauer + * + */ +public class MainPracticalWithMigrationEmbeddedStorageManager +{ + public static void main(String[] args) + { + //V0.0 + final ExplicitMigrater emptyMigrater = new ExplicitMigrater(); + try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(emptyMigrater)) + { + storageManager.setRoot(createDummyBranch()); + storageManager.storeRoot(); + System.out.println(storageManager.root().toString()); + } + + + //V1.0 + final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); + try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV1)) + { + System.out.println(storageManager.root().toString()); + } + + + //V2.0 + final ExplicitMigrater migraterWithV2 = new ExplicitMigrater( + new UpdateToV1_0(), + new UpdateToV2_0() + ); + try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV2)) + { + System.out.println(storageManager.root().toString()); + } + } + + private static BusinessBranch createDummyBranch() + { + BusinessBranch branch = new BusinessBranch(); + Customer customer1 = new Customer(); + customer1.name = "Mick Fleetwood"; + customer1.number = 1; + customer1.street = "Fleetwood Street"; + customer1.city = "Redruth"; + branch.customers.add(customer1); + Customer customer2 = new Customer(); + customer2.name = "Lindsey Buckingham"; + customer2.number = 2; + customer2.street = "Mac Street"; + customer2.city = "Palo Alto"; + branch.customers.add(customer2); + return branch; + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java new file mode 100644 index 00000000..a943e5b4 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -0,0 +1,42 @@ +package software.xdev.micromigration.examples.practical.embedded; + +import software.xdev.micromigration.examples.practical.v1AndHigher.Address; +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; +import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV1_0 implements MigrationScriptV5 +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,0); + } + + @Override + public void migrate(Context context) + { + System.out.println("Executing Script for v1.0..."); + software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = context.getMigratingObject(); + BusinessBranch newBranch = + new BusinessBranch(); + for (software.xdev.micromigration.examples.practical.v0.Customer oldCustomer : oldBranch.customers) + { + Customer newCustomer = + new Customer(); + newCustomer.name = oldCustomer.name; + newCustomer.address = new Address(); + newCustomer.address.number = oldCustomer.number; + newCustomer.address.street = oldCustomer.street; + newCustomer.address.city = oldCustomer.city ; + newBranch.customers.add(newCustomer); + } + context.getStorageManager().setRoot(newBranch); + context.getStorageManager().storeRoot(); + System.out.println("Done executing Script for v1.0"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java new file mode 100644 index 00000000..e3dc29e7 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -0,0 +1,33 @@ +package software.xdev.micromigration.examples.practical.embedded; + +import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; +import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV2_0 implements MigrationScriptV5 +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(2,0); + } + + @Override + public void migrate(Context context) + { + System.out.println("Executing Script for v2.0..."); + final BusinessBranch branch = context.getMigratingObject(); + Customer newCustomer = new Customer(); + newCustomer.name = "Stevie Nicks"; + newCustomer.address.number = 5; + newCustomer.address.street = "Fleetwood Street"; + newCustomer.address.city = "Phoenix"; + branch.customers.add(newCustomer); + context.getStorageManager().store(branch.customers); + System.out.println("Done executing Script for v2.0"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java new file mode 100644 index 00000000..7a341395 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -0,0 +1,81 @@ +package software.xdev.micromigration.examples.practical.migrationManager; + +import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.examples.practical.v0.BusinessBranch; +import software.xdev.micromigration.examples.practical.v0.Customer; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.version.VersionedObject; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * A practical example of usage in a few steps: + *
    + *
  • v0.0: Storage is created without any updates. Only stores a new {@link BusinessBranch} + *
  • v1.0: The BusinessBranch has a new implementation {@link software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch}. + * The old branch is converted to the new implementation through the {@link UpdateToV1_0} script. + *
  • v2.0: A new customer is added through the {@link UpdateToV2_0} script. + *
+ * The storage is restarted after every update to simulate a complete lifecycle of the datastore. + * @author Johannes Rabauer + * + */ +public class MainPracticalWithMigrationManager +{ + /** + * Suppressed Warning "unchecked" because it is given, that the correct object is returned. + */ + @SuppressWarnings("unchecked") + public static void main(String[] args) + { + //V0.0 + try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) + { + VersionedObject versionedBranch = new VersionedObject<>(createDummyBranch()); + storageManager.setRoot(versionedBranch); + storageManager.storeRoot(); + System.out.println(storageManager.root().toString()); + } + + + //V1.0 + try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) + { + final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); + VersionedObject versionedBranch = (VersionedObject)storageManager.root(); + new MigrationManagerV5(versionedBranch, migraterWithV1, storageManager) + .migrate(versionedBranch); + System.out.println(storageManager.root().toString()); + } + + + //V2.0 + try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) + { + final ExplicitMigrater migraterWithV2 = new ExplicitMigrater(new UpdateToV1_0(), new UpdateToV2_0()); + VersionedObject versionedBranch = (VersionedObject)storageManager.root(); + new MigrationManagerV5(versionedBranch, migraterWithV2, storageManager) + .migrate(versionedBranch); + System.out.println(storageManager.root().toString()); + } + } + + private static BusinessBranch createDummyBranch() + { + BusinessBranch branch = new BusinessBranch(); + Customer customer1 = new Customer(); + customer1.name = "Mick Fleetwood"; + customer1.number = 1; + customer1.street = "Fleetwood Street"; + customer1.city = "Redruth"; + branch.customers.add(customer1); + Customer customer2 = new Customer(); + customer2.name = "Lindsey Buckingham"; + customer2.number = 2; + customer2.street = "Mac Street"; + customer2.city = "Palo Alto"; + branch.customers.add(customer2); + return branch; + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java new file mode 100644 index 00000000..f0711f1f --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -0,0 +1,45 @@ +package software.xdev.micromigration.examples.practical.migrationManager; + +import software.xdev.micromigration.examples.practical.v0.BusinessBranch; +import software.xdev.micromigration.examples.practical.v0.Customer; +import software.xdev.micromigration.examples.practical.v1AndHigher.Address; +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.VersionedObject; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV1_0 implements MigrationScriptV5> +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,0); + } + + @Override + public void migrate(Context, EmbeddedStorageManager> context) + { + System.out.println("Executing Script for v1.0..."); + VersionedObject versionedBranch = context.getMigratingObject(); + BusinessBranch oldBranch = + (BusinessBranch) versionedBranch.getObject(); + software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch newBranch = + new software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch(); + for (Customer oldCustomer : oldBranch.customers) + { + software.xdev.micromigration.examples.practical.v1AndHigher.Customer newCustomer = + new software.xdev.micromigration.examples.practical.v1AndHigher.Customer(); + newCustomer.name = oldCustomer.name; + newCustomer.address = new Address(); + newCustomer.address.number = oldCustomer.number; + newCustomer.address.street = oldCustomer.street; + newCustomer.address.city = oldCustomer.city ; + newBranch.customers.add(newCustomer); + } + versionedBranch.setObject(newBranch); + context.getStorageManager().store(versionedBranch); + System.out.println("Done executing Script for v1.0"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java new file mode 100644 index 00000000..8a055aec --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -0,0 +1,35 @@ +package software.xdev.micromigration.examples.practical.migrationManager; + +import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; +import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.VersionedObject; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV2_0 implements MigrationScriptV5> +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(2,0); + } + + @Override + public void migrate(Context, EmbeddedStorageManager> context) + { + System.out.println("Executing Script for v2.0..."); + VersionedObject versionedBranch = context.getMigratingObject(); + final BusinessBranch branch = versionedBranch.getObject(); + Customer newCustomer = new Customer(); + newCustomer.name = "Stevie Nicks"; + newCustomer.address.number = 5; + newCustomer.address.street = "Fleetwood Street"; + newCustomer.address.city = "Phoenix"; + branch.customers.add(newCustomer); + context.getStorageManager().store(branch.customers); + System.out.println("Done executing Script for v2.0"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java new file mode 100644 index 00000000..fcc8f7ff --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java @@ -0,0 +1,18 @@ +package software.xdev.micromigration.examples.practical.v0; + +import java.util.ArrayList; +import java.util.List; + +public class BusinessBranch +{ + public final List customers = new ArrayList<>(); + + @Override + public String toString() { + String toString = "Branch v0\nCustomers:"; + for (Customer customer : customers) { + toString += "\n " + customer.name; + } + return toString; + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java new file mode 100644 index 00000000..7aba0cc2 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java @@ -0,0 +1,11 @@ +package software.xdev.micromigration.examples.practical.v0; + +public class Customer +{ + public String name; + + //Oversimplified old address format + public int number; + public String street; + public String city ; +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java new file mode 100644 index 00000000..9494accd --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java @@ -0,0 +1,8 @@ +package software.xdev.micromigration.examples.practical.v1AndHigher; + +public class Address +{ + public int number; + public String street; + public String city ; +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java new file mode 100644 index 00000000..1937d38d --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java @@ -0,0 +1,19 @@ +package software.xdev.micromigration.examples.practical.v1AndHigher; + +import java.util.ArrayList; +import java.util.List; + + +public class BusinessBranch +{ + public final List customers = new ArrayList<>(); + + @Override + public String toString() { + String toString = "Branch v1 and higher\nCustomers:"; + for (Customer customer : customers) { + toString += "\n " + customer.name; + } + return toString; + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java new file mode 100644 index 00000000..b8b7e601 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java @@ -0,0 +1,7 @@ +package software.xdev.micromigration.examples.practical.v1AndHigher; + +public class Customer +{ + public String name ; + public Address address = new Address(); +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java new file mode 100644 index 00000000..031a7570 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -0,0 +1,31 @@ +package software.xdev.micromigration.examples.reflective; + +import java.util.Date; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ReflectiveMigrater; +import software.xdev.micromigration.migrater.ScriptInstantiationException; + + +public class MainReflective +{ + public static void main(String[] args) + { + try { + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.examples.reflective.scripts"); + final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); + System.out.println(storageManager.root()); + if(storageManager.root() == null) + { + storageManager.setRoot("Hello World! @ " + new Date()); + } + storageManager.storeRoot(); + storageManager.shutdown(); + } + catch (IllegalArgumentException | SecurityException | ScriptInstantiationException e) + { + throw new Error("Could not initiate migration script", e); + } + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java new file mode 100644 index 00000000..d22c1bf4 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -0,0 +1,25 @@ +package software.xdev.micromigration.examples.reflective.scripts; + +import java.util.Date; + +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV1_0 implements MigrationScriptV5 +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,0); + } + + @Override + public void migrate(Context context) + { + System.out.println("Update " + getTargetVersion().toString() + " executed."); + context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); + } +} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java new file mode 100644 index 00000000..6313b72d --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -0,0 +1,25 @@ +package software.xdev.micromigration.examples.reflective.scripts; + +import java.util.Date; + +import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class UpdateToV1_1 implements MigrationScriptV5 +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,1); + } + + @Override + public void migrate(Context context) + { + System.out.println("Update " + getTargetVersion().toString() + " executed."); + context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); + } +} diff --git a/reflection/README.md b/reflection/README.md new file mode 100644 index 00000000..f6db8af2 --- /dev/null +++ b/reflection/README.md @@ -0,0 +1,8 @@ +# micro-migration-reflection +Provides a migrater based on reflection + +Currently only holds one class `ReflectiveMigrater` which uses the [Reflections library](https://github.com/ronmamo/reflections) +to find all instances of the `MicroMigrationScript` in a defined package. + +Because it is using the additional dependency, this class is extracted in this own repository and can be added only if needed +to the [core repository](https://github.com/JohannesRabauer/micro-migration). \ No newline at end of file diff --git a/reflection/pom.xml b/reflection/pom.xml new file mode 100644 index 00000000..6ee7229c --- /dev/null +++ b/reflection/pom.xml @@ -0,0 +1,184 @@ + + 4.0.0 + software.xdev + micro-migration-reflection + 0.0.2 + MicroMigration-Reflection + + https://github.com/xdev-software/micro-migration + + https://github.com/xdev-software/micro-migration + https://github.com/xdev-software/micro-migration.git + + + + XDEV Software GmbH + https://xdev.software + + + + + XDEV Software GmbH + XDEV Software GmbH + https://xdev.software + + + + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + repo + + + + Provides a migrater based on reflection + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 9 + 9 + UTF-8 + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + 9 + UTF-8 + false + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + maven-surefire-plugin + 2.22.2 + + + + + + + software.xdev + micro-migration + 0.0.2 + + + org.reflections + reflections + 0.9.11 + + + org.junit.jupiter + junit-jupiter-api + 5.6.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.6.2 + test + + + + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + + diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java new file mode 100644 index 00000000..4d7bb4d6 --- /dev/null +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java @@ -0,0 +1,78 @@ +package software.xdev.micromigration.migrater; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.util.TreeSet; + +import org.reflections.Reflections; +import org.reflections.scanners.SubTypesScanner; +import org.reflections.util.ClasspathHelper; +import org.reflections.util.ConfigurationBuilder; +import org.reflections.util.FilterBuilder; + +import software.xdev.micromigration.scripts.MigrationScript; + +/** + * Contains all the available scripts to migrate the datastore to a certain version. + *

+ * Searches all implementation of {@link MigrationScript} in the specified package + * and it's the sub packages. + * + * @author Johannes Rabauer + * + */ +public class ReflectiveMigrater extends AbstractMigrater +{ + private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); + + /** + * @param packagePath defines the package in which {@link MigrationScript}s will be searched. + * Also searches through all sub packages of packagePath + * @throws ScriptInstantiationException if a class in the given package could not be instantiated + */ + @SuppressWarnings("rawtypes") + public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationException + { + Reflections reflections = new Reflections( + new ConfigurationBuilder() + .setUrls(ClasspathHelper.forPackage(packagePath)) + .setScanners(new SubTypesScanner()) + //I don't get why you have to filter again, but if you don't, super-packages will get included + .filterInputsBy(new FilterBuilder().includePackage(packagePath)) + ); + + for (Class scriptClass : reflections.getSubTypesOf(MigrationScript.class)) + { + //Only instanciate non abstract classes + if(!Modifier.isAbstract(scriptClass.getModifiers())) + { + MigrationScript instanciatedScript = instanciateClass(scriptClass); + checkIfVersionIsAlreadyRegistered(instanciatedScript); + this.sortedScripts.add(instanciatedScript); + } + } + } + + @SuppressWarnings("rawtypes") + private MigrationScript instanciateClass(Class scriptClass) throws ScriptInstantiationException + { + try { + return scriptClass.getDeclaredConstructor().newInstance(); + } catch ( + InstantiationException | + IllegalAccessException | + IllegalArgumentException | + InvocationTargetException | + NoSuchMethodException | + SecurityException e + ) { + throw new ScriptInstantiationException("Could not instanciate class " + scriptClass.getName(), e); + } + } + + @Override + public TreeSet> getSortedScripts() + { + return this.sortedScripts; + } +} diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java new file mode 100644 index 00000000..0e730a61 --- /dev/null +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java @@ -0,0 +1,16 @@ +package software.xdev.micromigration.migrater; + +/** + * Holds information about exceptions if a script class can not be instantiated. + * + * @author Johannes Rabauer + * + */ +public class ScriptInstantiationException extends Exception +{ + private static final long serialVersionUID = 7087560201226697433L; + + public ScriptInstantiationException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java b/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java new file mode 100644 index 00000000..306a1439 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java @@ -0,0 +1,104 @@ +package software.xdev.micromigration.migrater; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass.v1_ValidScript; +import software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage.ValidScriptInSubpackage; +import software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid.ValidScript; + + +class ReflectiveMigraterTest +{ + @Test + void testValidScript() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.valid"); + assertEquals(1, migrater.getSortedScripts().size()); + assertEquals( + software.xdev.micromigration.migrater.scripts.valid.ValidScript.class, + migrater.getSortedScripts().first().getClass() + ); + } + + @Test + void testValidScriptWithIrrelevantClasses() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid"); + assertEquals(1, migrater.getSortedScripts().size()); + assertEquals( + ValidScript.class, + migrater.getSortedScripts().first().getClass() + ); + } + + @Test + void testValidScriptWithSubpackages() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.includeSubPackages"); + assertEquals(2, migrater.getSortedScripts().size()); + assertEquals( + software.xdev.micromigration.migrater.scripts.includeSubPackages.ValidScript.class, + migrater.getSortedScripts().first().getClass() + ); + assertEquals( + ValidScriptInSubpackage.class, + migrater.getSortedScripts().last().getClass() + ); + } + + @Test + void testPackageWithNoScript() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.packageNotExisting"); + assertEquals(0, migrater.getSortedScripts().size()); + } + + @Test + void testExceptionThrowingScript() throws ScriptInstantiationException { + Assertions.assertThrows(ScriptInstantiationException.class, () -> { + new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.exceptionThrowing"); + }); + } + + @Test + void testErrorThrowingScript() throws ScriptInstantiationException { + Assertions.assertThrows(ScriptInstantiationException.class, () -> { + new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.errorThrowing"); + }); + } + + @Test + void testNoCorrectConstructor() throws ScriptInstantiationException { + Assertions.assertThrows(ScriptInstantiationException.class, () -> { + new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.noCorrectConstructor"); + }); + } + + @Test + void testAbstractSuperClass() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.abstractSuperClass"); + assertEquals(1, migrater.getSortedScripts().size()); + assertEquals( + software.xdev.micromigration.migrater.scripts.abstractSuperClass.ValidScript.class, + migrater.getSortedScripts().first().getClass() + ); + } + + @Test + void testReflectiveVersion() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.reflectiveVersion"); + assertEquals(1, migrater.getSortedScripts().size()); + assertEquals( + software.xdev.micromigration.migrater.scripts.reflectiveVersion.v1_ValidScript.class, + migrater.getSortedScripts().first().getClass() + ); + } + + @Test + void testReflectiveSuperClass() throws ScriptInstantiationException { + ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass"); + assertEquals(1, migrater.getSortedScripts().size()); + assertEquals( + v1_ValidScript.class, + migrater.getSortedScripts().first().getClass() + ); + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java new file mode 100644 index 00000000..06f7a1b5 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java @@ -0,0 +1,10 @@ +package software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass; + +import software.xdev.micromigration.scripts.ReflectiveVersionMigrationScript; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public abstract class AbstractScript extends ReflectiveVersionMigrationScript +{ + +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java new file mode 100644 index 00000000..a6075e02 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java @@ -0,0 +1,14 @@ +package software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass; + +import software.xdev.micromigration.scripts.Context; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class v1_ValidScript extends AbstractScript +{ + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java new file mode 100644 index 00000000..70f1eee0 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java @@ -0,0 +1,15 @@ +package software.xdev.micromigration.migrater.scripts.abstractSuperClass; + +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public abstract class AbstractScript implements MigrationScript +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java new file mode 100644 index 00000000..1e0d47cd --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java @@ -0,0 +1,14 @@ +package software.xdev.micromigration.migrater.scripts.abstractSuperClass; + +import software.xdev.micromigration.scripts.Context; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ValidScript extends AbstractScript +{ + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java new file mode 100644 index 00000000..cf4fcf5d --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java @@ -0,0 +1,27 @@ +package software.xdev.micromigration.migrater.scripts.errorThrowing; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ErrorThrowingScript implements MigrationScript +{ + public ErrorThrowingScript() + { + throw new Error(); + } + + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } + + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java new file mode 100644 index 00000000..4c72a3c0 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java @@ -0,0 +1,27 @@ +package software.xdev.micromigration.migrater.scripts.exceptionThrowing; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ExceptionThrowingScript implements MigrationScript +{ + public ExceptionThrowingScript() throws Exception + { + throw new Exception(); + } + + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } + + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java new file mode 100644 index 00000000..33d28f64 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java @@ -0,0 +1,22 @@ +package software.xdev.micromigration.migrater.scripts.includeSubPackages; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ValidScript implements MigrationScript +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } + + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java new file mode 100644 index 00000000..16cf5d1f --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java @@ -0,0 +1,22 @@ +package software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ValidScriptInSubpackage implements MigrationScript +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(2); + } + + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java new file mode 100644 index 00000000..5c49e7f5 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java @@ -0,0 +1,5 @@ +package software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; + +public class IrrelevantClass { + +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java new file mode 100644 index 00000000..72438d97 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java @@ -0,0 +1,22 @@ +package software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ValidScript implements MigrationScript +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } + + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java new file mode 100644 index 00000000..65603e36 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -0,0 +1,29 @@ +package software.xdev.micromigration.migrater.scripts.noCorrectConstructor; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class NoCorrectConstructorScript implements MigrationScript +{ + private final String argument; + + public NoCorrectConstructorScript(String argument) + { + this.argument = argument; + } + + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } + + @Override + public void migrate(Context context) + { + System.out.println(this.argument); + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java new file mode 100644 index 00000000..303d176a --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java @@ -0,0 +1,15 @@ +package software.xdev.micromigration.migrater.scripts.reflectiveVersion; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.ReflectiveVersionMigrationScript; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class v1_ValidScript extends ReflectiveVersionMigrationScript +{ + @Override + public void migrate(Context context) + { + //Do nothing + } +} diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java new file mode 100644 index 00000000..2ea5fe84 --- /dev/null +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java @@ -0,0 +1,22 @@ +package software.xdev.micromigration.migrater.scripts.valid; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class ValidScript implements MigrationScript +{ + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1); + } + + @Override + public void migrate(Context context) + { + //Do nothing + } +} From 70d0964a4761b51745a3dfdb916c8ec21c8e9099 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 10:15:28 +0100 Subject: [PATCH 046/306] Fixed Module-Setup --- .gitignore | 4 +- core/pom.xml | 322 ++++++++++++++++++++------------------------- examples/pom.xml | 247 ++++++++++++---------------------- pom.xml | 74 +++++++++++ reflection/pom.xml | 256 +++++++++++------------------------ 5 files changed, 381 insertions(+), 522 deletions(-) create mode 100644 pom.xml diff --git a/.gitignore b/.gitignore index fbf48d01..71b513cc 100644 --- a/.gitignore +++ b/.gitignore @@ -137,4 +137,6 @@ $RECYCLE.BIN/ #MicroStream Datastore default directory /storage/ -.idea \ No newline at end of file +#IntelliJ +.idea +*.iml \ No newline at end of file diff --git a/core/pom.xml b/core/pom.xml index 051ebae3..8fa755ae 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -1,187 +1,147 @@ - 4.0.0 - software.xdev - micro-migration - 0.0.2 - MicroMigration + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + software.xdev + micro-migration-core + 0.0.2 + MicroMigration-Core + Migration Lib for MicroStream - https://github.com/xdev-software/micro-migration - - https://github.com/xdev-software/micro-migration - https://github.com/xdev-software/micro-migration.git - + + software.xdev + 0.0.2 + micro-migration + - - XDEV Software GmbH - https://xdev.software - + + + one.microstream + microstream-storage-embedded + 05.00.02-MS-GA + + + one.microstream + microstream-configuration + 05.00.02-MS-GA + + - - - XDEV Software GmbH - XDEV Software GmbH - https://xdev.software - - + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 9 + 9 + UTF-8 + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + 9 + UTF-8 + false + + -Xdoclint:none + -Xdoclint:none + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + - - - Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 - repo - - - - Migration Lib for MicroStream - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 9 - 9 - UTF-8 - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - 9 - UTF-8 - false - - -Xdoclint:none - -Xdoclint:none - -Xdoclint:none - - - - attach-javadocs - - jar - - - - - - maven-resources-plugin - 2.6 - - UTF-8 - - - - maven-surefire-plugin - 2.22.2 - - - - - - - one.microstream - microstream-storage-embedded - 05.00.02-MS-GA - - - one.microstream - microstream-configuration - 05.00.02-MS-GA - - - org.junit.jupiter - junit-jupiter-api - 5.6.2 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.6.2 - test - - - - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - - - - - - + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + diff --git a/examples/pom.xml b/examples/pom.xml index 9327ea2a..5ea54ec2 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -1,167 +1,92 @@ - 4.0.0 - software.xdev - micro-migration-examples - 0.0.2 - MicroMigration-Examples + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + software.xdev + micro-migration-examples + 0.0.2 + MicroMigration-Examples + Examples for the MicroMigration-Library - https://github.com/xdev-software/micro-migration - - https://github.com/xdev-software/micro-migration - https://github.com/xdev-software/micro-migration.git - + + software.xdev + 0.0.2 + micro-migration + - - XDEV Software GmbH - https://xdev.software - + + + software.xdev + micro-migration + 0.0.2 + + + software.xdev + micro-migration-reflection + 0.0.2 + + - - - XDEV Software GmbH - XDEV Software GmbH - https://xdev.software - - - - - Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 - repo - - - - Examples for the MicroMigration-Library - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 9 - 9 - UTF-8 - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - 9 - UTF-8 - - - - attach-javadocs - - jar - - - - - - maven-resources-plugin - 2.6 - - UTF-8 - - - - - - - - software.xdev - micro-migration - 0.0.2 - - - software.xdev - micro-migration-reflection - 0.0.2 - - - - - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - - - - - - + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..af0a0892 --- /dev/null +++ b/pom.xml @@ -0,0 +1,74 @@ + + + + 4.0.0 + + 0.0.2 + software.xdev + micro-migration + MicroMigration + pom + + + https://github.com/xdev-software/micro-migration + + https://github.com/xdev-software/micro-migration + https://github.com/xdev-software/micro-migration.git + + + + XDEV Software GmbH + https://xdev.software + + + + + XDEV Software GmbH + XDEV Software GmbH + https://xdev.software + + + + + + Apache License 2.0 + https://www.apache.org/licenses/LICENSE-2.0 + repo + + + + + UTF-8 + + + + core + reflection + examples + + + + + org.junit.jupiter + junit-jupiter-api + 5.6.2 + test + + + org.junit.jupiter + junit-jupiter-engine + 5.6.2 + test + + + + + + + maven-surefire-plugin + 2.22.2 + + + + diff --git a/reflection/pom.xml b/reflection/pom.xml index 6ee7229c..e8d8d97c 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -1,184 +1,82 @@ - 4.0.0 - software.xdev - micro-migration-reflection - 0.0.2 - MicroMigration-Reflection + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + software.xdev + micro-migration-reflection + 0.0.2 + MicroMigration-Reflection + Provides a migrater based on reflection - https://github.com/xdev-software/micro-migration - - https://github.com/xdev-software/micro-migration - https://github.com/xdev-software/micro-migration.git - + + software.xdev + 0.0.2 + micro-migration + - - XDEV Software GmbH - https://xdev.software - + + + software.xdev + micro-migration + 0.0.2 + + + org.reflections + reflections + 0.9.11 + + - - - XDEV Software GmbH - XDEV Software GmbH - https://xdev.software - - - - - - Apache License 2.0 - https://www.apache.org/licenses/LICENSE-2.0 - repo - - - - Provides a migrater based on reflection - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 9 - 9 - UTF-8 - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.2.0 - - 9 - UTF-8 - false - - - - attach-javadocs - - jar - - - - - - maven-resources-plugin - 2.6 - - UTF-8 - - - - maven-surefire-plugin - 2.22.2 - - - - - - - software.xdev - micro-migration - 0.0.2 - - - org.reflections - reflections - 0.9.11 - - - org.junit.jupiter - junit-jupiter-api - 5.6.2 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.6.2 - test - - - - - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - - - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 9 + 9 + UTF-8 + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + 9 + UTF-8 + false + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + From bbc1a1801593e3420ff518e2e9f987d01e5c01ff Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 14:26:27 +0100 Subject: [PATCH 047/306] JReleaser implemented with GitHubAction for Release --- .github/workflows/release.yml | 23 +++++++++++++ examples/pom.xml | 65 +---------------------------------- reflection/pom.xml | 64 +++++++++++++++++++++++++++++++++- 3 files changed, 87 insertions(+), 65 deletions(-) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..5bb5d1de --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,23 @@ +name: Publish package to the Maven Central Repository +on: + push: + tags: + - core-v* + pull_request: + branches: [ main ] +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: '9' + distribution: 'adopt' + - name: Publish package + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + run: ./mvnw -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::file:./target/staging-deploy \ No newline at end of file diff --git a/examples/pom.xml b/examples/pom.xml index 5ea54ec2..f45bb7f3 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -17,7 +17,7 @@ software.xdev - micro-migration + micro-migration-core 0.0.2 @@ -26,67 +26,4 @@ 0.0.2 - - - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - - - - - - diff --git a/reflection/pom.xml b/reflection/pom.xml index e8d8d97c..754aa349 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -17,7 +17,7 @@ software.xdev - micro-migration + micro-migration-core 0.0.2 @@ -79,4 +79,66 @@ + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + From f8d103c627facbbb490db9b67718d85f1985e505 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 14:33:44 +0100 Subject: [PATCH 048/306] Tried to fix release-action --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5bb5d1de..47e30556 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,4 +20,4 @@ jobs: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - run: ./mvnw -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::file:./target/staging-deploy \ No newline at end of file + run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::file:./target/staging-deploy \ No newline at end of file From 6763ddd1cfe600d768ef8ccbbbe02cfbe96b96ee Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 15:26:27 +0100 Subject: [PATCH 049/306] Tried to fix release-action --- .github/workflows/release.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 47e30556..59394b28 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,6 +18,10 @@ jobs: - name: Publish package env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::file:./target/staging-deploy \ No newline at end of file + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + + run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 55aacee621398368d91b5a3c96fcb7c61bbee756 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 15:30:46 +0100 Subject: [PATCH 050/306] Tried to fix release-action --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59394b28..1a767888 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '9' + java-version: '11' distribution: 'adopt' - name: Publish package env: @@ -24,4 +24,4 @@ jobs: JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: ./mvnw -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From d2ec9e1a239e3098a69737975d6238ff50780dc3 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 2 Dec 2022 15:34:33 +0100 Subject: [PATCH 051/306] Tried to fix release-action --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1a767888..59394b28 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '11' + java-version: '9' distribution: 'adopt' - name: Publish package env: @@ -24,4 +24,4 @@ jobs: JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: ./mvnw -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From a53bcdcd368b60c994d8ac54a892014616737ee6 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 08:18:04 +0100 Subject: [PATCH 052/306] Tried to fix release-action --- reflection/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reflection/pom.xml b/reflection/pom.xml index 754aa349..bff2c65c 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -77,6 +77,11 @@ UTF-8 + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + From 7bf2c1bf48b9a765650c72c17f2acd45b4dc29ed Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 08:21:31 +0100 Subject: [PATCH 053/306] Tried to fix release-action --- pom.xml | 5 +++++ reflection/pom.xml | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index af0a0892..f5ae3ed3 100644 --- a/pom.xml +++ b/pom.xml @@ -69,6 +69,11 @@ maven-surefire-plugin 2.22.2 + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + diff --git a/reflection/pom.xml b/reflection/pom.xml index bff2c65c..754aa349 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -77,11 +77,6 @@ UTF-8 - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - From 9ad99fa5b1cd2245edf9e6787f6d0a8c9bfbc675 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 10:57:51 +0100 Subject: [PATCH 054/306] Tried to fix release-action --- .github/workflows/release.yml | 62 +++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 59394b28..85db29bf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,23 +5,59 @@ on: - core-v* pull_request: branches: [ main ] +#jobs: +# publish: +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v3 +# - name: Set up Java +# uses: actions/setup-java@v3 +# with: +# java-version: '9' +# distribution: 'adopt' +# - name: Publish package +# env: +# JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} +# JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} +# JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} +# JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} +# JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} +# JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} +# +# run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy jobs: - publish: + release: + name: Release runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v3 - - name: Set up Java + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # Configure build steps as you'd normally do + + - name: Setup Java uses: actions/setup-java@v3 with: - java-version: '9' + java-version: 9 distribution: 'adopt' - - name: Publish package - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + server-id: central + server-username: MAVEN_USERNAME + server-password: MAVEN_CENTRAL_TOKEN + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + gpg-passphrase: MAVEN_GPG_PASSPHRASE + + # Post JARs to Maven Central - run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + - name: Release to Maven Central + env: + MAVEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + run: | + export GPG_TTY=$(tty) + git config user.name "${{ github.event.head_commit.committer.name }}" + git config user.email "${{ github.event.head_commit.committer.email }}" + mvn -B -pl core release:prepare release:perform \ No newline at end of file From 6739ed8e52d035bdee05c841ce4def8240b9222f Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 10:59:50 +0100 Subject: [PATCH 055/306] Tried to fix release-action --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 85db29bf..3721ceec 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,4 +60,4 @@ jobs: export GPG_TTY=$(tty) git config user.name "${{ github.event.head_commit.committer.name }}" git config user.email "${{ github.event.head_commit.committer.email }}" - mvn -B -pl core release:prepare release:perform \ No newline at end of file + mvn -B -pl core -Prelease release:prepare release:perform \ No newline at end of file From 08a372036f56172a4658f0dd4bc1f22aa72826bd Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 11:29:53 +0100 Subject: [PATCH 056/306] Tried to fix release-action --- .github/workflows/release.yml | 98 +++++++++++++++++------------------ 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3721ceec..5b757349 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,59 +5,59 @@ on: - core-v* pull_request: branches: [ main ] -#jobs: -# publish: -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v3 -# - name: Set up Java -# uses: actions/setup-java@v3 -# with: -# java-version: '9' -# distribution: 'adopt' -# - name: Publish package -# env: -# JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} -# JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} -# JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} -# JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} -# JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} -# JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} -# -# run: mvn -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy jobs: - release: - name: Release + publish: runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - # Configure build steps as you'd normally do - - - name: Setup Java + - uses: actions/checkout@v3 + - name: Set up Java uses: actions/setup-java@v3 with: - java-version: 9 + java-version: '9' distribution: 'adopt' - server-id: central - server-username: MAVEN_USERNAME - server-password: MAVEN_CENTRAL_TOKEN - gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - gpg-passphrase: MAVEN_GPG_PASSPHRASE - - # Post JARs to Maven Central - - - name: Release to Maven Central + - name: Publish package env: - MAVEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - run: | - export GPG_TTY=$(tty) - git config user.name "${{ github.event.head_commit.committer.name }}" - git config user.email "${{ github.event.head_commit.committer.email }}" - mvn -B -pl core -Prelease release:prepare release:perform \ No newline at end of file + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + run: mvn -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + working-directory: core +#jobs: +# release: +# name: Release +# runs-on: ubuntu-latest +# +# steps: +# - name: Checkout +# uses: actions/checkout@v3 +# with: +# fetch-depth: 0 +# +# # Configure build steps as you'd normally do +# +# - name: Setup Java +# uses: actions/setup-java@v3 +# with: +# java-version: 9 +# distribution: 'adopt' +# server-id: central +# server-username: MAVEN_USERNAME +# server-password: MAVEN_CENTRAL_TOKEN +# gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} +# gpg-passphrase: MAVEN_GPG_PASSPHRASE +# +# # Post JARs to Maven Central +# +# - name: Release to Maven Central +# env: +# MAVEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} +# MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} +# MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} +# run: | +# export GPG_TTY=$(tty) +# git config user.name "${{ github.event.head_commit.committer.name }}" +# git config user.email "${{ github.event.head_commit.committer.email }}" +# mvn -B -pl core -Prelease release:prepare release:perform \ No newline at end of file From 190df97fa8abf8e4860e42989af9bd01484a2f52 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 11:36:03 +0100 Subject: [PATCH 057/306] Tried to fix release-action --- .github/workflows/release.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5b757349..4e85dda9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,10 @@ jobs: publish: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Set up Java uses: actions/setup-java@v3 with: @@ -23,8 +26,7 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy - working-directory: core + run: mvn -B -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy #jobs: # release: # name: Release From 32f0a19171fa0413ae31506eb5f7daea96db7f46 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 11:57:49 +0100 Subject: [PATCH 058/306] Tried to fix release-action --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4e85dda9..b5040118 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl core -Prelease deploy jreleaser:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy #jobs: # release: # name: Release From 471d9bcbdaa926005afec539cb48a7fe382528ff Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 12:02:04 +0100 Subject: [PATCH 059/306] Tried to fix release-action --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b5040118..cb6eb9b5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,8 +16,8 @@ jobs: - name: Set up Java uses: actions/setup-java@v3 with: - java-version: '9' - distribution: 'adopt' + java-version: '11' + distribution: 'temurin' - name: Publish package env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} From e38d06149a8a53d1c8f9ba0d671ff27bfe07fd60 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 12:07:24 +0100 Subject: [PATCH 060/306] Tried to fix release-action --- .github/workflows/release.yml | 40 +---------------------------------- 1 file changed, 1 insertion(+), 39 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cb6eb9b5..9cd3532d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,8 +3,6 @@ on: push: tags: - core-v* - pull_request: - branches: [ main ] jobs: publish: runs-on: ubuntu-latest @@ -26,40 +24,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy -#jobs: -# release: -# name: Release -# runs-on: ubuntu-latest -# -# steps: -# - name: Checkout -# uses: actions/checkout@v3 -# with: -# fetch-depth: 0 -# -# # Configure build steps as you'd normally do -# -# - name: Setup Java -# uses: actions/setup-java@v3 -# with: -# java-version: 9 -# distribution: 'adopt' -# server-id: central -# server-username: MAVEN_USERNAME -# server-password: MAVEN_CENTRAL_TOKEN -# gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} -# gpg-passphrase: MAVEN_GPG_PASSPHRASE -# -# # Post JARs to Maven Central -# -# - name: Release to Maven Central -# env: -# MAVEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} -# MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} -# MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} -# run: | -# export GPG_TTY=$(tty) -# git config user.name "${{ github.event.head_commit.committer.name }}" -# git config user.email "${{ github.event.head_commit.committer.email }}" -# mvn -B -pl core -Prelease release:prepare release:perform \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 8a4d616eee133cc09a2b9a9a9bc657f2afc55ab0 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 13:13:31 +0100 Subject: [PATCH 061/306] Tried to fix release-action --- pom.xml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/pom.xml b/pom.xml index f5ae3ed3..d610d40d 100644 --- a/pom.xml +++ b/pom.xml @@ -76,4 +76,40 @@ + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + + + From 1e270e5698eaad4c9147840d596f176f0d4f0698 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 9 Dec 2022 13:20:40 +0100 Subject: [PATCH 062/306] Tried to fix release-action --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d610d40d..fcbb8f2e 100644 --- a/pom.xml +++ b/pom.xml @@ -90,7 +90,7 @@ attach-javadoc - jar + aggregate @@ -103,7 +103,7 @@ attach-source - jar + aggregate From df2159f4d69d9bcf4d9da681a2a799cfcd9b8f9b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 07:44:37 +0100 Subject: [PATCH 063/306] Tried to fix release-action --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9cd3532d..4fcc9866 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,6 +16,8 @@ jobs: with: java-version: '11' distribution: 'temurin' + - name: Build project + run: mvn -B -Prelease clean install - name: Publish package env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} @@ -24,4 +26,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 55fbc6c8c47594d9677d7ee863c6dc87c44a38a2 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 08:20:48 +0100 Subject: [PATCH 064/306] Brought java version to parent pom --- core/pom.xml | 10 ---------- pom.xml | 10 ++++++++++ reflection/pom.xml | 10 ---------- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8fa755ae..e9d78eb4 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -29,16 +29,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 9 - 9 - UTF-8 - - org.apache.maven.plugins maven-source-plugin diff --git a/pom.xml b/pom.xml index fcbb8f2e..2471dfbc 100644 --- a/pom.xml +++ b/pom.xml @@ -65,6 +65,16 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 9 + 9 + UTF-8 + + maven-surefire-plugin 2.22.2 diff --git a/reflection/pom.xml b/reflection/pom.xml index 754aa349..6929efcc 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -29,16 +29,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - 9 - 9 - UTF-8 - - org.apache.maven.plugins maven-source-plugin From 027834963d3f46910ba906e9ed6aa40c642a3afd Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 08:59:42 +0100 Subject: [PATCH 065/306] Tried to publish all modules at the same time --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4fcc9866..18e39992 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: Publish package to the Maven Central Repository on: push: tags: - - core-v* + - v* jobs: publish: runs-on: ubuntu-latest @@ -26,4 +26,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 6ddf98dbff41ae6b1635182761945969854877c1 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 09:03:12 +0100 Subject: [PATCH 066/306] Tried to publish all modules at the same time...again --- .github/workflows/release.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 18e39992..eec56aac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: distribution: 'temurin' - name: Build project run: mvn -B -Prelease clean install - - name: Publish package + - name: Publish 'core' env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} @@ -26,4 +26,13 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + - name: Publish 'reflection' + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + run: mvn -B -pl reflection -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From d6a1de75aa7dc0c44a1bb048baf6f23a4e222d38 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 10:02:56 +0100 Subject: [PATCH 067/306] Java Version and Micro-Migration version is not set in one position --- core/pom.xml | 6 +++--- examples/pom.xml | 8 ++++---- pom.xml | 10 +++++++--- reflection/pom.xml | 10 +++++----- 4 files changed, 19 insertions(+), 15 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index e9d78eb4..fdb04e6c 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-core - 0.0.2 + ${revision} MicroMigration-Core Migration Lib for MicroStream software.xdev - 0.0.2 + ${revision} micro-migration @@ -47,7 +47,7 @@ maven-javadoc-plugin 3.2.0 - 9 + ${java.version} UTF-8 false diff --git a/examples/pom.xml b/examples/pom.xml index f45bb7f3..51f3540f 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.2 + ${revision} MicroMigration-Examples Examples for the MicroMigration-Library software.xdev - 0.0.2 + ${revision} micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-core - 0.0.2 + ${revision} software.xdev micro-migration-reflection - 0.0.2 + ${revision} diff --git a/pom.xml b/pom.xml index 2471dfbc..4cd4a0b7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.2 + ${revision} software.xdev micro-migration MicroMigration @@ -40,6 +40,10 @@ UTF-8 + + 8 + 0.0.2 @@ -70,8 +74,8 @@ maven-compiler-plugin 3.8.0 - 9 - 9 + ${java.version} + ${java.version} UTF-8 diff --git a/reflection/pom.xml b/reflection/pom.xml index 6929efcc..6da0283b 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.2 + ${revision} MicroMigration-Reflection Provides a migrater based on reflection software.xdev - 0.0.2 + ${revision} micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-core - 0.0.2 + ${revision} org.reflections reflections - 0.9.11 + 0.10.2 @@ -47,7 +47,7 @@ maven-javadoc-plugin 3.2.0 - 9 + ${java.version} UTF-8 false From b238ee1c0858a6554f6ce6f87a20f22415fe7f5d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 11:01:07 +0100 Subject: [PATCH 068/306] Added Badges and Check Build Action --- .github/workflows/checkBuild.yml | 59 ++++++++++++++++++++++++++++++++ README.md | 5 +++ 2 files changed, 64 insertions(+) create mode 100644 .github/workflows/checkBuild.yml diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml new file mode 100644 index 00000000..49a491ab --- /dev/null +++ b/.github/workflows/checkBuild.yml @@ -0,0 +1,59 @@ +name: Check Build + +on: + workflow_dispatch: + push: + branches: [ main ] + paths-ignore: + - '**.md' + pull_request: + branches: [ main ] + paths-ignore: + - '**.md' + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + java: [8, 11, 17] + java-package: [jdk] + distribution: [temurin] + + steps: + - uses: actions/checkout@v3 + + - name: Set up JDK + uses: actions/setup-java@v3 + with: + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + java-package: ${{ matrix.java-package }} + cache: 'maven' + + - name: Build with Maven + run: mvn -B clean verify + + - name: Check for uncommited changes + run: | + if [[ "$(git status --porcelain)" != "" ]]; then + echo ---------------------------------------- + echo git status + echo ---------------------------------------- + git status + echo ---------------------------------------- + echo git diff + echo ---------------------------------------- + git diff + echo ---------------------------------------- + echo Troubleshooting + echo ---------------------------------------- + echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && mvn -B clean verify" + exit 1 + fi + + - uses: actions/upload-artifact@v3 + with: + name: jars-java-${{ matrix.java }} + path: target/*.jar \ No newline at end of file diff --git a/README.md b/README.md index 9130b611..f76f3a95 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ +[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration-core)](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) +[![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/main)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Amain) +[![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) +[![javadoc reflection](https://javadoc.io/badge2/software.xdev/micro-migration-reflection/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-reflection) + # Micro migration When you think about default database setup, you probably imagine something like this: From cae2dbd72c8e4bbe17d942565beae464314051b0 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 11:50:29 +0100 Subject: [PATCH 069/306] Pushed Java Version to 9 --- .github/workflows/checkBuild.yml | 2 +- .../xdev/micromigration/version/MigrationVersion.java | 9 +-------- pom.xml | 5 +++-- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 49a491ab..77891106 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: - java: [8, 11, 17] + java: [9, 11, 17] java-package: [jdk] distribution: [temurin] diff --git a/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java index 397a96af..3005b35b 100644 --- a/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java +++ b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java @@ -84,12 +84,5 @@ public boolean equals(Object obj) return true; } - public static Comparator COMPARATOR = new Comparator() - { - @Override - public int compare(MigrationVersion o1, MigrationVersion o2) - { - return Arrays.compare(o1.versions, o2.versions); - } - }; + public static Comparator COMPARATOR = Comparator.comparing(MigrationVersion::getVersions, (o1, o2) -> Arrays.compare(o1,o2)); } diff --git a/pom.xml b/pom.xml index 4cd4a0b7..17d64ec8 100644 --- a/pom.xml +++ b/pom.xml @@ -40,9 +40,10 @@ UTF-8 - - 8 + 9 0.0.2 From 67bce2bae7426df905cecd3524d7f9d82b89bc1f Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 11:53:26 +0100 Subject: [PATCH 070/306] Removed impossible test for Java 9 There is no major version for java 9 available in GitHub Actions --- .github/workflows/checkBuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 77891106..cc3f7b68 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: - java: [9, 11, 17] + java: [11, 17] java-package: [jdk] distribution: [temurin] From 63be6480d1ca67eeb1b74549d144c70358db04e5 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 12:59:35 +0100 Subject: [PATCH 071/306] Fixed READMEs --- README.md | 35 ++++++++++++++++++++++++++++------- examples/README.md | 2 +- reflection/README.md | 17 +++++++++++++++-- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f76f3a95..3953c701 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ [![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration-core)](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) [![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/main)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Amain) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) -[![javadoc reflection](https://javadoc.io/badge2/software.xdev/micro-migration-reflection/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-reflection) # Micro migration When you think about default database setup, you probably imagine something like this: @@ -29,6 +28,19 @@ the version, suited to the current code. ![Migrate datastore to new version](./docs/MigrationSequence_4.png "Migrate datastore to new version") +## Usage + +### Maven + +Simply add the dependency to your `pom.xml`: +``` + + software.xdev + micro-migration-core + 0.0.2 + +``` + ## Approaches There are two possible usages with the Micro migration library: @@ -37,8 +49,8 @@ It can be used on a brand new datastore or introduced later, after a MicroStream Only the storage manager (`MigrationEmbeddedStorageManager`) knows about the versioning. The rest of application does not know about the version and can have no regards about it. -### `MigrationEmbeddedStorageManager` -Extensive examples can be found in its [own repository](https://github.com/JohannesRabauer/micro-migration-examples). +### MigrationEmbeddedStorageManager +Extensive examples can be found in its own [own module](https://github.com/xdev-software/micro-migration/tree/main/examples). A simple example where scripts need to be registered in the `ExplicitMigrater`: ```java @@ -70,7 +82,7 @@ public class UpdateToV1_0 implements MigrationScript } ``` -### `MigrationManager` +### MigrationManager Although the approach with the `MigrationEmbeddedStorageManager` is pretty easy to handle, it is intrusive in the way, that it replaces the root entry point of the MicroStream datastore and inserts its own `VersionedRoot` as root. Some users might find this too entrusive. @@ -90,7 +102,7 @@ public static void main(String[] args) ``` ## Migrater -### `ExplicitMigrater` +### ExplicitMigrater Scripts for the migrations must be registered in a `MicroMigrater`. The simplest way for this is to use the `ExplicitMigrater` and just put the scripts in the constructor. A downside of this method is that you need to register all scripts (new or old) manually in the constructor. @@ -102,7 +114,7 @@ final ExplicitMigrater migrater = new ExplicitMigrater( ); ``` -### `ReflectiveMigrater` +### ReflectiveMigrater For a more convenient usage the `ReflectiveMigrater` was built. You simply instanciate a object of this class with the package name of your `MicroMigrationScript`s. The `ReflectiveMigrater` will search for any implementations of `MicroMigrationScript` in the given package. @@ -111,4 +123,13 @@ This way scripts can simply be placed in the same package and on startup of the ```java final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.examples.reflective.scripts"); ``` -Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own repository](https://github.com/JohannesRabauer/micro-migration-reflection). +Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own module](https://github.com/xdev-software/micro-migration/tree/main/reflection). + +To use this, you need to add the following dependency to your `pom.xml`: +``` + + software.xdev + micro-migration-reflection + 0.0.2 + +``` diff --git a/examples/README.md b/examples/README.md index 38960b87..d378ca09 100644 --- a/examples/README.md +++ b/examples/README.md @@ -10,7 +10,7 @@ This is the most straight forward approach to use migration scripts. In package `software.xdev.micromigration.examples.reflective` a migrater which finds it's scripts through reflection is used. So here all `MicroMigrationScript`s in the defined `software.xdev.micromigration.examples.reflective.scripts` package are used. -Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own repository](https://github.com/JohannesRabauer/micro-migration-reflection). +Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own module](https://github.com/xdev-software/micro-migration/tree/main/reflection). ## Practical examples The package `software.xdev.micromigration.examples.practical.embedded` contains examples diff --git a/reflection/README.md b/reflection/README.md index f6db8af2..c2ad3b86 100644 --- a/reflection/README.md +++ b/reflection/README.md @@ -1,8 +1,21 @@ -# micro-migration-reflection +# Micro migration Reflection Provides a migrater based on reflection Currently only holds one class `ReflectiveMigrater` which uses the [Reflections library](https://github.com/ronmamo/reflections) to find all instances of the `MicroMigrationScript` in a defined package. Because it is using the additional dependency, this class is extracted in this own repository and can be added only if needed -to the [core repository](https://github.com/JohannesRabauer/micro-migration). \ No newline at end of file +to the [core module](https://github.com/xdev-software/micro-migration#maven). + +## Usage + +### Maven + +Simply add the dependency to your `pom.xml`: +``` + + software.xdev + micro-migration-reflection + 0.0.2 + +``` \ No newline at end of file From 7e0ad04580a830bda1eed3a8f66c39fb4c2e6d00 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 14:05:19 +0100 Subject: [PATCH 072/306] Added CODE_OF_CONDUCT --- CODE_OF_CONDUCT.md | 133 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..68226cdd --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +[info@xdev-software.de](info@xdev-software.de). +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations From fc07483d98a9ced68badb5de3795d2a77b90eb81 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 14:06:04 +0100 Subject: [PATCH 073/306] Corrected CODE_OF_CONDUCT --- CODE_OF_CONDUCT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 68226cdd..d2bb5ac1 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -61,7 +61,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -[info@xdev-software.de](info@xdev-software.de). +info@xdev-software.de. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the From 62a5a422ae3fb33237186eda620514f8ac747535 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 14:24:04 +0100 Subject: [PATCH 074/306] Added OpenSSF Best Practices --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3953c701..7b2da697 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ [![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration-core)](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) [![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/main)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Amain) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) +[![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) # Micro migration When you think about default database setup, you probably imagine something like this: From 036c08b2b44cd0f85f3c5b9b8bb1e61257fd7041 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 12 Dec 2022 15:32:07 +0100 Subject: [PATCH 075/306] Tweaked Readmes --- CODE_OF_CONDUCT.md | 2 +- CONTRIBUTING.md | 41 +++++++++++++++++++++++++++++++++++++++++ LICENSE.txt => LICENSE | 0 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 CONTRIBUTING.md rename LICENSE.txt => LICENSE (100%) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index d2bb5ac1..30529370 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -61,7 +61,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -info@xdev-software.de. +opensource@xdev-software.de. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..cc6a8548 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# Contributing to Micro migration + +We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: + +- Reporting a bug +- Discussing the current state of the code +- Submitting a fix +- Proposing new features +- Becoming a maintainer + +## We Develop with Github + +We use GitHub to host code, to track issues and feature requests, as well as accept pull requests. + +## All Code Changes Happen Through Pull Requests + +Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests: + +1. Fork the repo and create your branch from `master`. +2. If you've added code that should be tested, add tests. +3. If you've changed APIs, update the documentation. +4. Ensure the test suite passes. +5. Issue that pull request! + +All commits must be [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). + +## Any contributions you make will be under the Apache-2.0 license + +In short, when you submit code changes, your submissions are understood to be under the same [Apache-2.0 license](https://github.com/xdev-software/micro-migration/blob/main/LICENSE) that covers the project. Feel free to contact the maintainers if that's a concern. + +## Report bugs using Github's [issues](https://github.com/xdev-software/micro-migration/issues) + +We use GitHub issues to track public bugs. Report a bug by opening a new issue, it's that easy! + +## License + +By contributing, you agree that your contributions will be licensed under its Apache-2.0 license. + +## Code of Conduct + +Please follow our [Code of Conduct](CODE_OF_CONDUCT.md). \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE similarity index 100% rename from LICENSE.txt rename to LICENSE From 95fa43e3118463ca8506ecd9e10f3c7634bcb58a Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 13 Dec 2022 07:55:01 +0100 Subject: [PATCH 076/306] Updated Doc --- CHANGELOG.md | 2 ++ CONTRIBUTING.md | 20 +++++++++++++------- README.md | 7 +++++++ 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..a2594e81 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,2 @@ +## 0.0.2 +* Updated MicroStream from v4 to v5. \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cc6a8548..359c7e90 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,11 +2,14 @@ We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: -- Reporting a bug -- Discussing the current state of the code -- Submitting a fix -- Proposing new features -- Becoming a maintainer +- **Reporting a bug**: File issues on GitHub. +- **Send pull requests**: If you want to contribute code, check out the development instructions below. +- **Discussing the current state of the code** +- **Submitting a fix** +- **Proposing new features** +- **Becoming a maintainer** + +We encourage you to read the [contribution instructions by GitHub](https://guides.github.com/activities/contributing-to-open-source/#contributing) also. ## We Develop with Github @@ -22,8 +25,6 @@ Pull requests are the best way to propose changes to the codebase. We actively w 4. Ensure the test suite passes. 5. Issue that pull request! -All commits must be [signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). - ## Any contributions you make will be under the Apache-2.0 license In short, when you submit code changes, your submissions are understood to be under the same [Apache-2.0 license](https://github.com/xdev-software/micro-migration/blob/main/LICENSE) that covers the project. Feel free to contact the maintainers if that's a concern. @@ -32,6 +33,11 @@ In short, when you submit code changes, your submissions are understood to be un We use GitHub issues to track public bugs. Report a bug by opening a new issue, it's that easy! +### Get in touch with the team + +Twitter: https://twitter.com/xdevsoftware +Mail: opensource@xdev-software.de + ## License By contributing, you agree that your contributions will be licensed under its Apache-2.0 license. diff --git a/README.md b/README.md index 7b2da697..5602aa68 100644 --- a/README.md +++ b/README.md @@ -134,3 +134,10 @@ To use this, you need to add the following dependency to your `pom.xml`: 0.0.2 ``` + +# Links +- [Javadoc](https://javadoc.io/doc/software.xdev/micro-migration-core/latest/index.html) +- [MvnRepository](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) + +# Contributing +We would love your input in any way. More about contributing: [CONTRIBUTING.md](CONTRIBUTING.md) \ No newline at end of file From 46714efde6ad2fa1be6e793f3bce68e9e521d4e6 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 13 Dec 2022 11:01:02 +0100 Subject: [PATCH 077/306] Restructured project for dynamic MicroStream Version --- core/pom.xml | 17 +-- .../xdev/micromigration/MigrationManager.java | 6 +- .../migrater/AbstractMigrater.java | 2 +- .../migrater/MicroMigrater.java | 3 +- .../micromigration/version/Versioned.java | 4 +- .../ReflectiveVersionMigrationScriptTest.java | 19 +-- .../version/MigrationVersionTest.java | 4 +- examples/pom.xml | 2 +- microstream-v5/pom.xml | 143 ++++++++++++++++++ .../v5/MigrationEmbeddedStorage.java | 0 .../v5/MigrationEmbeddedStorageManager.java | 0 .../microstream/v5/MigrationManagerV5.java | 0 .../microstream/v5/MigrationScriptV5.java | 0 .../v5/TunnelingEmbeddedStorageManager.java | 0 .../microstream/v5/package-info.java | 4 + ...oduceMigrationOnExistingDatastoreTest.java | 0 .../MigrationScriptAfterScriptTest.java | 0 .../integration/MultipleScriptsTest.java | 0 ...oreStuffInMigrationStorageManagerTest.java | 0 .../migrater/ExplicitMigraterTest.java | 0 .../testUtil/MicroMigrationScriptDummy.java | 0 pom.xml | 1 + reflection/pom.xml | 16 ++ .../ScriptInstantiationException.java | 6 +- 24 files changed, 189 insertions(+), 38 deletions(-) create mode 100644 microstream-v5/pom.xml rename {core => microstream-v5}/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java (100%) rename {core => microstream-v5}/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java (100%) rename {core => microstream-v5}/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java (100%) rename {core => microstream-v5}/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java (100%) rename {core => microstream-v5}/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java (100%) create mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java rename {core => microstream-v5}/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java (100%) rename {core => microstream-v5}/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java (100%) rename {core => microstream-v5}/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java (100%) rename {core => microstream-v5}/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java (100%) rename {core => microstream-v5}/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java (100%) rename {core => microstream-v5}/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java (100%) diff --git a/core/pom.xml b/core/pom.xml index fdb04e6c..ca8a3c60 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -1,5 +1,5 @@ - 4.0.0 software.xdev @@ -14,19 +14,6 @@ micro-migration - - - one.microstream - microstream-storage-embedded - 05.00.02-MS-GA - - - one.microstream - microstream-configuration - 05.00.02-MS-GA - - - diff --git a/core/src/main/java/software/xdev/micromigration/MigrationManager.java b/core/src/main/java/software/xdev/micromigration/MigrationManager.java index ec5b4e4e..4f1ac227 100644 --- a/core/src/main/java/software/xdev/micromigration/MigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/MigrationManager.java @@ -1,14 +1,10 @@ package software.xdev.micromigration; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.MicroMigrater; - - /** * Manages a given object and keeps the version for it. *

* Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * datastore versioned. Since it is not integrated like the MigrationEmbeddedStorageManager * multiple versioned objects can be used in one datastore. * * @author Johannes Rabauer diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 6dfc5d61..6e4fa6d5 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -109,7 +109,7 @@ private MigrationVersion migrateWithScript( * Checks if the given {@link MigrationScript} is not already registered in the * {@link #getSortedScripts()}. * @throws {@link VersionAlreadyRegisteredException} if script is already registered. - * @param scriptToCheck. It's target version is checked, if it is not already registered. + * @param scriptToCheck It's target version is checked, if it is not already registered. */ protected void checkIfVersionIsAlreadyRegistered(MigrationScript scriptToCheck) { diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 9f2641dd..6691a32c 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -6,7 +6,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** @@ -66,7 +65,7 @@ public MigrationVersion migrateToNewest( * Scripts which have a higher version won't be exectued. * * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(Context)} - * method. This way the script can call {@link EmbeddedStorageManager#store(Object)} or another method on the storage manager. + * method. This way the script can call EmbeddedStorageManager#store or another method on the storage manager. * * @param objectToMigrate is relayed to the scripts {@link MigrationScript#migrate(Context)} * method. This way the script can change something within the object to migrate. diff --git a/core/src/main/java/software/xdev/micromigration/version/Versioned.java b/core/src/main/java/software/xdev/micromigration/version/Versioned.java index e78a27dc..62349bd5 100644 --- a/core/src/main/java/software/xdev/micromigration/version/Versioned.java +++ b/core/src/main/java/software/xdev/micromigration/version/Versioned.java @@ -1,9 +1,7 @@ package software.xdev.micromigration.version; -import software.xdev.micromigration.microstream.v5.MigrationManagerV5; - /** - * Interface used by the {@link MigrationManagerV5} for easier versioning of objects. + * Interface used by the MigrationManagers for easier versioning of objects. * * @author Johannes Rabauer * diff --git a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index 0199d562..83d50b1b 100644 --- a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -2,10 +2,11 @@ import static org.junit.jupiter.api.Assertions.assertEquals; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.ReflectiveVersionMigrationScript; import software.xdev.micromigration.version.MigrationVersion; class ReflectiveVersionMigrationScriptTest @@ -15,42 +16,42 @@ public static class v1_CorrectClassName extends ReflectiveVersionMigrationScript @Test void testCorrectName_v1_CorrectClassName() { - assertEquals(new MigrationVersion(1), new v1_CorrectClassName().getTargetVersion()); + Assertions.assertEquals(new MigrationVersion(1), new v1_CorrectClassName().getTargetVersion()); } public static class v1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v1_1_CorrectClassName() { - assertEquals(new MigrationVersion(1, 1), new v1_1_CorrectClassName().getTargetVersion()); + Assertions.assertEquals(new MigrationVersion(1, 1), new v1_1_CorrectClassName().getTargetVersion()); } public static class v1_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v1_1_1_CorrectClassName() { - assertEquals(new MigrationVersion(1, 1, 1), new v1_1_1_CorrectClassName().getTargetVersion()); + Assertions.assertEquals(new MigrationVersion(1, 1, 1), new v1_1_1_CorrectClassName().getTargetVersion()); } public static class v10_1_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v10_1_1_CorrectClassName() { - assertEquals(new MigrationVersion(10, 1, 1), new v10_1_1_CorrectClassName().getTargetVersion()); + Assertions.assertEquals(new MigrationVersion(10, 1, 1), new v10_1_1_CorrectClassName().getTargetVersion()); } public static class v10_10_1_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v10_10_1_CorrectClassName() { - assertEquals(new MigrationVersion(10, 10, 1), new v10_10_1_CorrectClassName().getTargetVersion()); + Assertions.assertEquals(new MigrationVersion(10, 10, 1), new v10_10_1_CorrectClassName().getTargetVersion()); } public static class v10_10_10_CorrectClassName extends ReflectiveVersionMigrationScriptDummy{} @Test void testCorrectName_v10_10_10_CorrectClassName() { - assertEquals(new MigrationVersion(10, 10, 10), new v10_10_10_CorrectClassName().getTargetVersion()); + Assertions.assertEquals(new MigrationVersion(10, 10, 10), new v10_10_10_CorrectClassName().getTargetVersion()); } public static class a1_InvalidClassName extends ReflectiveVersionMigrationScriptDummy { } @@ -126,10 +127,10 @@ void testInvalildName_v___InvalidClassName() } - public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript + public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript { @Override - public void migrate(Context context) { + public void migrate(Context context) { //Dummy } } diff --git a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java index 1326903e..a4c502ef 100644 --- a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java +++ b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java @@ -3,8 +3,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; +import software.xdev.micromigration.version.MigrationVersion; -class MigrationVersionTest + +class MigrationVersionTest { @Test diff --git a/examples/pom.xml b/examples/pom.xml index 51f3540f..4a29ded5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -17,7 +17,7 @@ software.xdev - micro-migration-core + micro-migration-microstream-v5 ${revision} diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml new file mode 100644 index 00000000..95ea692e --- /dev/null +++ b/microstream-v5/pom.xml @@ -0,0 +1,143 @@ + + 4.0.0 + software.xdev + micro-migration-microstream-v5 + ${revision} + MicroMigration-for-MicroStreamV5 + Provides the micro migration support for MicroStream version 5 + + + 05.00.02-MS-GA + + + + software.xdev + ${revision} + micro-migration + + + + + software.xdev + micro-migration-core + ${revision} + + + one.microstream + microstream-storage-embedded + ${microstream.version} + + + one.microstream + microstream-configuration + ${microstream.version} + + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + ${java.version} + UTF-8 + false + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + + diff --git a/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java similarity index 100% rename from core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java diff --git a/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java similarity index 100% rename from core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java diff --git a/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java similarity index 100% rename from core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java diff --git a/core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java similarity index 100% rename from core/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java diff --git a/core/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java similarity index 100% rename from core/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java new file mode 100644 index 00000000..f152f602 --- /dev/null +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides classes to use micro migration for MicroStream v5 + */ + diff --git a/core/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java similarity index 100% rename from core/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java rename to microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java diff --git a/core/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java similarity index 100% rename from core/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java rename to microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java diff --git a/core/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java similarity index 100% rename from core/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java rename to microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java diff --git a/core/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java similarity index 100% rename from core/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java rename to microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java diff --git a/core/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java similarity index 100% rename from core/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java rename to microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java diff --git a/core/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java similarity index 100% rename from core/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java rename to microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java diff --git a/pom.xml b/pom.xml index 17d64ec8..e4062648 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ core reflection examples + microstream-v5 diff --git a/reflection/pom.xml b/reflection/pom.xml index 6da0283b..3f0502b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -8,6 +8,10 @@ MicroMigration-Reflection Provides a migrater based on reflection + + 05.00.02-MS-GA + + software.xdev ${revision} @@ -25,6 +29,18 @@ reflections 0.10.2 + + one.microstream + microstream-storage-embedded + ${microstream.version} + test + + + one.microstream + microstream-configuration + ${microstream.version} + test + diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java index 0e730a61..cf1c2836 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java @@ -9,7 +9,11 @@ public class ScriptInstantiationException extends Exception { private static final long serialVersionUID = 7087560201226697433L; - + + /** + * @param message for the exception + * @param cause of the exception + */ public ScriptInstantiationException(String message, Throwable cause) { super(message, cause); } From b41994e4cba61f96c3c3150731177a2b8f73cadf Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 13 Dec 2022 11:18:19 +0100 Subject: [PATCH 078/306] Implemented migration for MicroStream v6 and v7 --- .github/workflows/release.yml | 29 +- microstream-v6/pom.xml | 143 ++++++++++ .../v5/MigrationEmbeddedStorage.java | 92 +++++++ .../v5/MigrationEmbeddedStorageManager.java | 99 +++++++ .../microstream/v5/MigrationManagerV5.java | 108 ++++++++ .../microstream/v5/MigrationScriptV5.java | 19 ++ .../v5/TunnelingEmbeddedStorageManager.java | 248 ++++++++++++++++++ .../microstream/v5/package-info.java | 4 + ...oduceMigrationOnExistingDatastoreTest.java | 43 +++ .../MigrationScriptAfterScriptTest.java | 151 +++++++++++ .../integration/MultipleScriptsTest.java | 76 ++++++ ...oreStuffInMigrationStorageManagerTest.java | 60 +++++ .../migrater/ExplicitMigraterTest.java | 76 ++++++ .../testUtil/MicroMigrationScriptDummy.java | 28 ++ microstream-v7/pom.xml | 143 ++++++++++ .../v5/MigrationEmbeddedStorage.java | 92 +++++++ .../v5/MigrationEmbeddedStorageManager.java | 99 +++++++ .../microstream/v5/MigrationManagerV5.java | 108 ++++++++ .../microstream/v5/MigrationScriptV5.java | 19 ++ .../v5/TunnelingEmbeddedStorageManager.java | 248 ++++++++++++++++++ .../microstream/v5/package-info.java | 4 + ...oduceMigrationOnExistingDatastoreTest.java | 43 +++ .../MigrationScriptAfterScriptTest.java | 151 +++++++++++ .../integration/MultipleScriptsTest.java | 76 ++++++ ...oreStuffInMigrationStorageManagerTest.java | 60 +++++ .../migrater/ExplicitMigraterTest.java | 76 ++++++ .../testUtil/MicroMigrationScriptDummy.java | 28 ++ pom.xml | 4 +- 28 files changed, 2325 insertions(+), 2 deletions(-) create mode 100644 microstream-v6/pom.xml create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java create mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java create mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java create mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java create mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java create mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java create mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java create mode 100644 microstream-v7/pom.xml create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java create mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java create mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java create mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java create mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java create mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java create mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index eec56aac..aa5d6617 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,4 +35,31 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl reflection -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -pl reflection -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + - name: Publish 'micro-migration-microstream-v5' + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + run: mvn -B -pl microstream-v5 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + - name: Publish 'micro-migration-microstream-v6' + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + run: mvn -B -pl microstream-v6 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + - name: Publish 'micro-migration-microstream-v7' + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + run: mvn -B -pl microstream-v7 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml new file mode 100644 index 00000000..82147760 --- /dev/null +++ b/microstream-v6/pom.xml @@ -0,0 +1,143 @@ + + 4.0.0 + software.xdev + micro-migration-microstream-v6 + ${revision} + MicroMigration-for-MicroStreamV6 + Provides the micro migration support for MicroStream version 6 + + + 06.01.00-MS-GA + + + + software.xdev + ${revision} + micro-migration + + + + + software.xdev + micro-migration-core + ${revision} + + + one.microstream + microstream-storage-embedded + ${microstream.version} + + + one.microstream + microstream-configuration + ${microstream.version} + + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + ${java.version} + UTF-8 + false + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + + diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java new file mode 100644 index 00000000..230fba35 --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java @@ -0,0 +1,92 @@ +package software.xdev.micromigration.microstream.v5; + +import java.nio.file.Path; +import java.util.Objects; + +import software.xdev.micromigration.migrater.MicroMigrater; +import one.microstream.afs.nio.types.NioFileSystem; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.types.Storage; +import one.microstream.storage.types.StorageConfiguration; + + +/** + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorage +{ + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) + { + Objects.requireNonNull(migrater); + return new MigrationEmbeddedStorageManager( + createStorageManager(), + migrater + ).start(); + } + + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param storageDirectory is used as the base directory for the datastore + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start( + Path storageDirectory, + MicroMigrater migrater + ) + { + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageDirectory); + + return new MigrationEmbeddedStorageManager( + createStorageManager(storageDirectory), + migrater + ).start(); + } + + private static EmbeddedStorageManager createStorageManager(Path storageDirectory) + { + NioFileSystem fileSystem = NioFileSystem.New(); + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder() + .setStorageFileProvider( + Storage.FileProviderBuilder(fileSystem) + .setDirectory(fileSystem.ensureDirectoryPath(storageDirectory.toAbsolutePath().toString())) + .createFileProvider() + ) + .createConfiguration() + ) + .createEmbeddedStorageManager(); + } + + private static EmbeddedStorageManager createStorageManager() + { + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder().createConfiguration() + ) + .createEmbeddedStorageManager(); + } +} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..1b0ad43a --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java @@ -0,0 +1,99 @@ +package software.xdev.micromigration.microstream.v5; + +import java.util.Objects; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedRoot; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager +{ + private final MicroMigrater migrater ; + private VersionedRoot versionRoot ; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ + public MigrationEmbeddedStorageManager( + EmbeddedStorageManager nativeManager, + MicroMigrater migrater + ) + { + super(nativeManager); + Objects.requireNonNull(migrater); + this.migrater = migrater; + } + + /** + * {@inheritDoc} + *

+ * Checks if the root object is of the instance of {@link Versioned}. + * If it is not, the root will be replaced with the versioned root and the actual root object + * will be put inside the versioned root. + *

+ * After starting the storage manager, all the available update scripts are executed in order + * until the newest version of the datastore is reached. + */ + @Override + public MigrationEmbeddedStorageManager start() + { + this.nativeManager.start(); + if(this.nativeManager.root() instanceof VersionedRoot) + { + this.versionRoot = (VersionedRoot)this.nativeManager.root(); + } + else + { + //Build VersionedRoot around actual root, set by user. + this.versionRoot = new VersionedRoot(this.nativeManager.root()); + nativeManager.setRoot(versionRoot); + nativeManager.storeRoot(); + } + new MigrationManagerV5( + this.versionRoot, + migrater, + this + ) + .migrate(this.versionRoot.getRoot()); + return this; + } + + public MigrationVersion getCurrentVersion() + { + return this.versionRoot.getVersion(); + } + + @Override + public Object root() { + return this.versionRoot.getRoot(); + } + + @Override + public Object setRoot(Object newRoot) { + this.versionRoot.setRoot(newRoot); + return newRoot; + } + + @Override + public long storeRoot() { + return this.nativeManager.store(this.versionRoot); + } +} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java new file mode 100644 index 00000000..502b4cff --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java @@ -0,0 +1,108 @@ +package software.xdev.micromigration.microstream.v5; + +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import software.xdev.micromigration.MigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Manages a given object and keeps the version for it. + *

+ * Can be used to keep the version of the MicroStream-Root-Object to keep the whole + * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * multiple versioned objects can be used in one datastore. + * + * @author Johannes Rabauer + * + */ +public class MigrationManagerV5 implements MigrationManager +{ + private final Supplier currentVersionGetter; + private final Consumer currentVersionSetter; + private final Consumer currentVersionStorer; + private final MicroMigrater migrater ; + private final EmbeddedStorageManager storageManager ; + + /** + * Much more complicated constructor than {@link MigrationManagerV5#MigrationManagerV5(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManagerV5 + ( + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + Objects.requireNonNull(currentVersionGetter); + Objects.requireNonNull(currentVersionSetter); + Objects.requireNonNull(currentVersionStorer); + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageManager); + this.currentVersionGetter = currentVersionGetter; + this.currentVersionSetter = currentVersionSetter; + this.currentVersionStorer = currentVersionStorer; + this.migrater = migrater; + this.storageManager = storageManager; + } + + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link MigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManagerV5 + ( + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + this( + ( ) -> versionedObject.getVersion() , + (version) -> versionedObject.setVersion(version) , + (version) -> storageManager.store(versionedObject), + migrater , + storageManager + ); + Objects.requireNonNull(versionedObject); + } + + /** + * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. + * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon + */ + public void migrate(Object objectToMigrate) + { + final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); + // Execute Updates + final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( + versionBeforeUpdate, + new TunnelingEmbeddedStorageManager(this.storageManager), + objectToMigrate + ); + //Update stored version, if needed + if(!versionAfterUpdate.equals(versionBeforeUpdate)) + { + currentVersionSetter.accept(versionAfterUpdate); + currentVersionStorer.accept(versionAfterUpdate); + } + } +} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java new file mode 100644 index 00000000..400e3a88 --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java @@ -0,0 +1,19 @@ +package software.xdev.micromigration.microstream.v5; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Interface for scripts to migrate / update datastores. + *

+ * One script is supposed to bring a datastore from a lower version to the target version. + * After the {@link MigrationScriptV5#migrate(Context)} method is called, + * the target version is reached. + * + * @author Johannes Rabauer + * + */ +public interface MigrationScriptV5 extends MigrationScript +{} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..4de05400 --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java @@ -0,0 +1,248 @@ +package software.xdev.micromigration.microstream.v5; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; + +import java.util.Objects; +import java.util.function.Predicate; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager +{ + protected final EmbeddedStorageManager nativeManager; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + */ + public TunnelingEmbeddedStorageManager( + EmbeddedStorageManager nativeManager + ) + { + Objects.requireNonNull(nativeManager); + this.nativeManager = nativeManager; + } + + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + + @Override + public TunnelingEmbeddedStorageManager start() + { + this.nativeManager.start(); + return this; + } + + @Override + public Object root() { + return this.nativeManager.root(); + } + + @Override + public Object setRoot(Object newRoot) { + return this.nativeManager.setRoot(newRoot); + } + + @Override + public long storeRoot() { + return this.nativeManager.storeRoot(); + } + + @Override + public StorageConfiguration configuration() + { + return this.nativeManager.configuration(); + } + + @Override + public StorageTypeDictionary typeDictionary() + { + return this.nativeManager.typeDictionary(); + } + + @Override + public boolean shutdown() + { + return this.nativeManager.shutdown(); + } + + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + + @Override + public StorageConnection createConnection() + { + return this.nativeManager.createConnection(); + } + + + @Override + public PersistenceRootsView viewRoots() + { + return this.nativeManager.viewRoots(); + } + + @Override + @Deprecated + public Reference defaultRoot() + { + return this.nativeManager.defaultRoot(); + } + + @Override + public Database database() + { + return this.nativeManager.database(); + } + + @Override + public boolean isAcceptingTasks() + { + return this.nativeManager.isAcceptingTasks(); + } + + @Override + public boolean isRunning() + { + return this.nativeManager.isRunning(); + } + + @Override + public boolean isStartingUp() + { + return this.nativeManager.isStartingUp(); + } + + @Override + public boolean isShuttingDown() + { + return this.nativeManager.isShuttingDown(); + } + + @Override + public void checkAcceptingTasks() + { + this.nativeManager.checkAcceptingTasks(); + } + + @Override + public long initializationTime() + { + return this.nativeManager.initializationTime(); + } + + @Override + public long operationModeTime() + { + return this.nativeManager.operationModeTime(); + } + + @Override + public boolean isActive() + { + return this.nativeManager.isActive(); + } + + @Override + public boolean issueGarbageCollection(long nanoTimeBudget) + { + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); + } + + @Override + public boolean issueFileCheck(long nanoTimeBudget) + { + return this.nativeManager.issueFileCheck(nanoTimeBudget); + } + + @Override + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.nativeManager.createStorageStatistics(); + } + + @Override + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); + } + + @Override + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) + { + return this.nativeManager.exportTypes(exportFileProvider, isExportType); + } + + @Override + public void importFiles(XGettingEnum importFiles) + { + this.nativeManager.importFiles(importFiles); + } + + @Override + public PersistenceManager persistenceManager() + { + return this.nativeManager.persistenceManager(); + } + + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } + + } diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java new file mode 100644 index 00000000..f152f602 --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides classes to use micro migration for MicroStream v5 + */ + diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java new file mode 100644 index 00000000..91f41bf0 --- /dev/null +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -0,0 +1,43 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +class IntroduceMigrationOnExistingDatastoreTest +{ + final static String ROOT = "OriginalRoot"; + + @Test + void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + { + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) + { + storageManager.setRoot(ROOT); + storageManager.storeRoot(); + } + + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(ROOT, migrationStorageManager.root()); + Assertions.assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + } + } +} diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java new file mode 100644 index 00000000..f437a065 --- /dev/null +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -0,0 +1,151 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedObject; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +class MigrationScriptAfterScriptTest +{ + @Test + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + { + //First run without any migration script + final ExplicitMigrater firstMigrater = new ExplicitMigrater(); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) + { + migrationStorageManager.setRoot(0); + migrationStorageManager.storeRoot(); + assertEquals(0, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); + } + + + //Run with one migration script + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + assertEquals(1, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); + } + + + //Run with two migration scripts + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) + { + assertEquals(2, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + final AtomicBoolean notificationReceived = new AtomicBoolean(false); + migrater.setNotificationConsumer( + notification -> + { + Assertions.assertEquals(firstScript, notification.getExecutedScript()); + Assertions.assertEquals(new MigrationVersion(0), notification.getSourceVersion()); + Assertions.assertEquals(new MigrationVersion(1), notification.getTargetVersion()); + notificationReceived.set(true); + } + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertTrue(notificationReceived.get()); + } + } + + @Test + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + { + //First run without any migration script + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + VersionedObject firstRoot = new VersionedObject<>(0); + storageManager.setRoot(firstRoot); + storageManager.storeRoot(); + assertEquals(Integer.valueOf(0), firstRoot.getObject()); + assertEquals(new MigrationVersion(0), firstRoot.getVersion()); + } + + + //Run with one migration script + final MigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getMigratingObject().setObject(1) + ); + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManagerV5( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(1), currentRoot.getObject()); + assertEquals(new MigrationVersion(1), currentRoot.getVersion()); + } + + + //Run with two migration scripts + final MigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getMigratingObject().setObject(2) + ); + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManagerV5( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript, secondScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(2), currentRoot.getObject()); + assertEquals(new MigrationVersion(2), currentRoot.getVersion()); + } + } + + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) + { + return EmbeddedStorage.start(storageFolder); + } + +} diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java new file mode 100644 index 00000000..e08c6d5f --- /dev/null +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -0,0 +1,76 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + + +class MultipleScriptsTest +{ + @Test + void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(2, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(2) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript) + ); + } + + @Test + void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(3) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript, thirdScript) + ); + } +} diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java new file mode 100644 index 00000000..424b0569 --- /dev/null +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -0,0 +1,60 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + + +class StoreStuffInMigrationStorageManagerTest +{ + private static class RootClass + { + private ChildClass child = new ChildClass(); + } + + private static class ChildClass + { + private int i = 0; + } + + @Test + void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException + { + final MigrationScript script = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> {} + ); + final ExplicitMigrater migrater = new ExplicitMigrater(script); + //Create new store and change stored object + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + migrationStorageManager.setRoot(new RootClass()); + migrationStorageManager.storeRoot(); + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertEquals(0, storedRoot.child.i); + ((RootClass)migrationStorageManager.root()).child.i = 1; + migrationStorageManager.store(storedRoot.child); + assertEquals(1, storedRoot.child.i); + } + //Check if stored object is correct + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertNotNull(storedRoot); + assertEquals(1, storedRoot.child.i); + } + } + +} diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java new file mode 100644 index 00000000..808fd39d --- /dev/null +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -0,0 +1,76 @@ +package software.xdev.micromigration.migrater; + + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + + +class ExplicitMigraterTest +{ + + @Test + void testGetSortedScripts_empty() + { + final ExplicitMigrater migrater = new ExplicitMigrater(); + assertEquals(0,migrater.getSortedScripts().size()); + } + + @Test + void testGetSortedScripts_sorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)), + new MicroMigrationScriptDummy(new MigrationVersion(2)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testGetSortedScripts_unsorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(2)), + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testWrongTypedVersionedScript(@TempDir Path storageFolder) + { + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(storageFolder, new ExplicitMigrater())) + { + storageManager.setRoot("SomeString"); + storageManager.storeRoot(); + } + final ExplicitMigrater migrater = new ExplicitMigrater( + new SimpleTypedMigrationScript( + new MigrationVersion(1), + (context) -> { + context.getStorageManager().setRoot(context.getMigratingObject() + 1); + } + ) + ); + Assertions.assertThrows(ClassCastException.class, () -> + { + MigrationEmbeddedStorage.start(storageFolder, migrater); + } + ); + + } + +} diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java new file mode 100644 index 00000000..cf32f3a8 --- /dev/null +++ b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -0,0 +1,28 @@ +package software.xdev.micromigration.testUtil; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class MicroMigrationScriptDummy implements MigrationScript +{ + private final MigrationVersion version; + + public MicroMigrationScriptDummy(MigrationVersion version) + { + this.version = version; + } + + @Override + public MigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void migrate(Context context) { + // Don't do anything. + } +} diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml new file mode 100644 index 00000000..e9ccbcac --- /dev/null +++ b/microstream-v7/pom.xml @@ -0,0 +1,143 @@ + + 4.0.0 + software.xdev + micro-migration-microstream-v7 + ${revision} + MicroMigration-for-MicroStreamV7 + Provides the micro migration support for MicroStream version 7 + + + 07.01.00-MS-GA + + + + software.xdev + ${revision} + micro-migration + + + + + software.xdev + micro-migration-core + ${revision} + + + one.microstream + microstream-storage-embedded + ${microstream.version} + + + one.microstream + microstream-configuration + ${microstream.version} + + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.2.0 + + ${java.version} + UTF-8 + false + + + + attach-javadocs + + jar + + + + + + maven-resources-plugin + 2.6 + + UTF-8 + + + + + + + + release + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + + diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java new file mode 100644 index 00000000..230fba35 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java @@ -0,0 +1,92 @@ +package software.xdev.micromigration.microstream.v5; + +import java.nio.file.Path; +import java.util.Objects; + +import software.xdev.micromigration.migrater.MicroMigrater; +import one.microstream.afs.nio.types.NioFileSystem; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.types.Storage; +import one.microstream.storage.types.StorageConfiguration; + + +/** + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorage +{ + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) + { + Objects.requireNonNull(migrater); + return new MigrationEmbeddedStorageManager( + createStorageManager(), + migrater + ).start(); + } + + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param storageDirectory is used as the base directory for the datastore + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start( + Path storageDirectory, + MicroMigrater migrater + ) + { + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageDirectory); + + return new MigrationEmbeddedStorageManager( + createStorageManager(storageDirectory), + migrater + ).start(); + } + + private static EmbeddedStorageManager createStorageManager(Path storageDirectory) + { + NioFileSystem fileSystem = NioFileSystem.New(); + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder() + .setStorageFileProvider( + Storage.FileProviderBuilder(fileSystem) + .setDirectory(fileSystem.ensureDirectoryPath(storageDirectory.toAbsolutePath().toString())) + .createFileProvider() + ) + .createConfiguration() + ) + .createEmbeddedStorageManager(); + } + + private static EmbeddedStorageManager createStorageManager() + { + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder().createConfiguration() + ) + .createEmbeddedStorageManager(); + } +} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..1b0ad43a --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java @@ -0,0 +1,99 @@ +package software.xdev.micromigration.microstream.v5; + +import java.util.Objects; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedRoot; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager +{ + private final MicroMigrater migrater ; + private VersionedRoot versionRoot ; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ + public MigrationEmbeddedStorageManager( + EmbeddedStorageManager nativeManager, + MicroMigrater migrater + ) + { + super(nativeManager); + Objects.requireNonNull(migrater); + this.migrater = migrater; + } + + /** + * {@inheritDoc} + *

+ * Checks if the root object is of the instance of {@link Versioned}. + * If it is not, the root will be replaced with the versioned root and the actual root object + * will be put inside the versioned root. + *

+ * After starting the storage manager, all the available update scripts are executed in order + * until the newest version of the datastore is reached. + */ + @Override + public MigrationEmbeddedStorageManager start() + { + this.nativeManager.start(); + if(this.nativeManager.root() instanceof VersionedRoot) + { + this.versionRoot = (VersionedRoot)this.nativeManager.root(); + } + else + { + //Build VersionedRoot around actual root, set by user. + this.versionRoot = new VersionedRoot(this.nativeManager.root()); + nativeManager.setRoot(versionRoot); + nativeManager.storeRoot(); + } + new MigrationManagerV5( + this.versionRoot, + migrater, + this + ) + .migrate(this.versionRoot.getRoot()); + return this; + } + + public MigrationVersion getCurrentVersion() + { + return this.versionRoot.getVersion(); + } + + @Override + public Object root() { + return this.versionRoot.getRoot(); + } + + @Override + public Object setRoot(Object newRoot) { + this.versionRoot.setRoot(newRoot); + return newRoot; + } + + @Override + public long storeRoot() { + return this.nativeManager.store(this.versionRoot); + } +} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java new file mode 100644 index 00000000..502b4cff --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java @@ -0,0 +1,108 @@ +package software.xdev.micromigration.microstream.v5; + +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import software.xdev.micromigration.MigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Manages a given object and keeps the version for it. + *

+ * Can be used to keep the version of the MicroStream-Root-Object to keep the whole + * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * multiple versioned objects can be used in one datastore. + * + * @author Johannes Rabauer + * + */ +public class MigrationManagerV5 implements MigrationManager +{ + private final Supplier currentVersionGetter; + private final Consumer currentVersionSetter; + private final Consumer currentVersionStorer; + private final MicroMigrater migrater ; + private final EmbeddedStorageManager storageManager ; + + /** + * Much more complicated constructor than {@link MigrationManagerV5#MigrationManagerV5(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManagerV5 + ( + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + Objects.requireNonNull(currentVersionGetter); + Objects.requireNonNull(currentVersionSetter); + Objects.requireNonNull(currentVersionStorer); + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageManager); + this.currentVersionGetter = currentVersionGetter; + this.currentVersionSetter = currentVersionSetter; + this.currentVersionStorer = currentVersionStorer; + this.migrater = migrater; + this.storageManager = storageManager; + } + + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link MigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link MigrationScript} + * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManagerV5 + ( + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + this( + ( ) -> versionedObject.getVersion() , + (version) -> versionedObject.setVersion(version) , + (version) -> storageManager.store(versionedObject), + migrater , + storageManager + ); + Objects.requireNonNull(versionedObject); + } + + /** + * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. + * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon + */ + public void migrate(Object objectToMigrate) + { + final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); + // Execute Updates + final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( + versionBeforeUpdate, + new TunnelingEmbeddedStorageManager(this.storageManager), + objectToMigrate + ); + //Update stored version, if needed + if(!versionAfterUpdate.equals(versionBeforeUpdate)) + { + currentVersionSetter.accept(versionAfterUpdate); + currentVersionStorer.accept(versionAfterUpdate); + } + } +} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java new file mode 100644 index 00000000..400e3a88 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java @@ -0,0 +1,19 @@ +package software.xdev.micromigration.microstream.v5; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +/** + * Interface for scripts to migrate / update datastores. + *

+ * One script is supposed to bring a datastore from a lower version to the target version. + * After the {@link MigrationScriptV5#migrate(Context)} method is called, + * the target version is reached. + * + * @author Johannes Rabauer + * + */ +public interface MigrationScriptV5 extends MigrationScript +{} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..4de05400 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java @@ -0,0 +1,248 @@ +package software.xdev.micromigration.microstream.v5; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; + +import java.util.Objects; +import java.util.function.Predicate; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager +{ + protected final EmbeddedStorageManager nativeManager; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + */ + public TunnelingEmbeddedStorageManager( + EmbeddedStorageManager nativeManager + ) + { + Objects.requireNonNull(nativeManager); + this.nativeManager = nativeManager; + } + + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + + @Override + public TunnelingEmbeddedStorageManager start() + { + this.nativeManager.start(); + return this; + } + + @Override + public Object root() { + return this.nativeManager.root(); + } + + @Override + public Object setRoot(Object newRoot) { + return this.nativeManager.setRoot(newRoot); + } + + @Override + public long storeRoot() { + return this.nativeManager.storeRoot(); + } + + @Override + public StorageConfiguration configuration() + { + return this.nativeManager.configuration(); + } + + @Override + public StorageTypeDictionary typeDictionary() + { + return this.nativeManager.typeDictionary(); + } + + @Override + public boolean shutdown() + { + return this.nativeManager.shutdown(); + } + + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + + @Override + public StorageConnection createConnection() + { + return this.nativeManager.createConnection(); + } + + + @Override + public PersistenceRootsView viewRoots() + { + return this.nativeManager.viewRoots(); + } + + @Override + @Deprecated + public Reference defaultRoot() + { + return this.nativeManager.defaultRoot(); + } + + @Override + public Database database() + { + return this.nativeManager.database(); + } + + @Override + public boolean isAcceptingTasks() + { + return this.nativeManager.isAcceptingTasks(); + } + + @Override + public boolean isRunning() + { + return this.nativeManager.isRunning(); + } + + @Override + public boolean isStartingUp() + { + return this.nativeManager.isStartingUp(); + } + + @Override + public boolean isShuttingDown() + { + return this.nativeManager.isShuttingDown(); + } + + @Override + public void checkAcceptingTasks() + { + this.nativeManager.checkAcceptingTasks(); + } + + @Override + public long initializationTime() + { + return this.nativeManager.initializationTime(); + } + + @Override + public long operationModeTime() + { + return this.nativeManager.operationModeTime(); + } + + @Override + public boolean isActive() + { + return this.nativeManager.isActive(); + } + + @Override + public boolean issueGarbageCollection(long nanoTimeBudget) + { + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); + } + + @Override + public boolean issueFileCheck(long nanoTimeBudget) + { + return this.nativeManager.issueFileCheck(nanoTimeBudget); + } + + @Override + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.nativeManager.createStorageStatistics(); + } + + @Override + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); + } + + @Override + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) + { + return this.nativeManager.exportTypes(exportFileProvider, isExportType); + } + + @Override + public void importFiles(XGettingEnum importFiles) + { + this.nativeManager.importFiles(importFiles); + } + + @Override + public PersistenceManager persistenceManager() + { + return this.nativeManager.persistenceManager(); + } + + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } + + } diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java new file mode 100644 index 00000000..f152f602 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides classes to use micro migration for MicroStream v5 + */ + diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java new file mode 100644 index 00000000..91f41bf0 --- /dev/null +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -0,0 +1,43 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +class IntroduceMigrationOnExistingDatastoreTest +{ + final static String ROOT = "OriginalRoot"; + + @Test + void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + { + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) + { + storageManager.setRoot(ROOT); + storageManager.storeRoot(); + } + + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(ROOT, migrationStorageManager.root()); + Assertions.assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + } + } +} diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java new file mode 100644 index 00000000..f437a065 --- /dev/null +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -0,0 +1,151 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedObject; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +class MigrationScriptAfterScriptTest +{ + @Test + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + { + //First run without any migration script + final ExplicitMigrater firstMigrater = new ExplicitMigrater(); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) + { + migrationStorageManager.setRoot(0); + migrationStorageManager.storeRoot(); + assertEquals(0, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); + } + + + //Run with one migration script + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + assertEquals(1, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); + } + + + //Run with two migration scripts + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) + { + assertEquals(2, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + final AtomicBoolean notificationReceived = new AtomicBoolean(false); + migrater.setNotificationConsumer( + notification -> + { + Assertions.assertEquals(firstScript, notification.getExecutedScript()); + Assertions.assertEquals(new MigrationVersion(0), notification.getSourceVersion()); + Assertions.assertEquals(new MigrationVersion(1), notification.getTargetVersion()); + notificationReceived.set(true); + } + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertTrue(notificationReceived.get()); + } + } + + @Test + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + { + //First run without any migration script + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + VersionedObject firstRoot = new VersionedObject<>(0); + storageManager.setRoot(firstRoot); + storageManager.storeRoot(); + assertEquals(Integer.valueOf(0), firstRoot.getObject()); + assertEquals(new MigrationVersion(0), firstRoot.getVersion()); + } + + + //Run with one migration script + final MigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getMigratingObject().setObject(1) + ); + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManagerV5( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(1), currentRoot.getObject()); + assertEquals(new MigrationVersion(1), currentRoot.getVersion()); + } + + + //Run with two migration scripts + final MigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getMigratingObject().setObject(2) + ); + try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManagerV5( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript, secondScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(2), currentRoot.getObject()); + assertEquals(new MigrationVersion(2), currentRoot.getVersion()); + } + } + + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) + { + return EmbeddedStorage.start(storageFolder); + } + +} diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java new file mode 100644 index 00000000..e08c6d5f --- /dev/null +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -0,0 +1,76 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + + +class MultipleScriptsTest +{ + @Test + void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(2, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(2) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript) + ); + } + + @Test + void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) + { + final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(3) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript, thirdScript) + ); + } +} diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java new file mode 100644 index 00000000..424b0569 --- /dev/null +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -0,0 +1,60 @@ +package software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + + +class StoreStuffInMigrationStorageManagerTest +{ + private static class RootClass + { + private ChildClass child = new ChildClass(); + } + + private static class ChildClass + { + private int i = 0; + } + + @Test + void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException + { + final MigrationScript script = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> {} + ); + final ExplicitMigrater migrater = new ExplicitMigrater(script); + //Create new store and change stored object + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + migrationStorageManager.setRoot(new RootClass()); + migrationStorageManager.storeRoot(); + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertEquals(0, storedRoot.child.i); + ((RootClass)migrationStorageManager.root()).child.i = 1; + migrationStorageManager.store(storedRoot.child); + assertEquals(1, storedRoot.child.i); + } + //Check if stored object is correct + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertNotNull(storedRoot); + assertEquals(1, storedRoot.child.i); + } + } + +} diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java new file mode 100644 index 00000000..808fd39d --- /dev/null +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -0,0 +1,76 @@ +package software.xdev.micromigration.migrater; + + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + + +class ExplicitMigraterTest +{ + + @Test + void testGetSortedScripts_empty() + { + final ExplicitMigrater migrater = new ExplicitMigrater(); + assertEquals(0,migrater.getSortedScripts().size()); + } + + @Test + void testGetSortedScripts_sorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)), + new MicroMigrationScriptDummy(new MigrationVersion(2)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testGetSortedScripts_unsorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(2)), + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testWrongTypedVersionedScript(@TempDir Path storageFolder) + { + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(storageFolder, new ExplicitMigrater())) + { + storageManager.setRoot("SomeString"); + storageManager.storeRoot(); + } + final ExplicitMigrater migrater = new ExplicitMigrater( + new SimpleTypedMigrationScript( + new MigrationVersion(1), + (context) -> { + context.getStorageManager().setRoot(context.getMigratingObject() + 1); + } + ) + ); + Assertions.assertThrows(ClassCastException.class, () -> + { + MigrationEmbeddedStorage.start(storageFolder, migrater); + } + ); + + } + +} diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java new file mode 100644 index 00000000..cf32f3a8 --- /dev/null +++ b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -0,0 +1,28 @@ +package software.xdev.micromigration.testUtil; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; + + +public class MicroMigrationScriptDummy implements MigrationScript +{ + private final MigrationVersion version; + + public MicroMigrationScriptDummy(MigrationVersion version) + { + this.version = version; + } + + @Override + public MigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void migrate(Context context) { + // Don't do anything. + } +} diff --git a/pom.xml b/pom.xml index e4062648..19fac1ab 100644 --- a/pom.xml +++ b/pom.xml @@ -44,7 +44,7 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 - 0.0.2 + 0.0.3 @@ -52,6 +52,8 @@ reflection examples microstream-v5 + microstream-v6 + microstream-v7 From 5bcf40d43f6b83f5c0753615878d2aab8ad0ff44 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 13 Dec 2022 16:02:05 +0100 Subject: [PATCH 079/306] Fixed Setup with multiple MicroStream versions --- examples/pom.xml | 4 ++-- .../examples/explicit/MainExplicit.java | 4 ++-- .../examples/explicit/scripts/UpdateToV1_0.java | 4 ++-- .../examples/explicit/scripts/UpdateToV1_1.java | 4 ++-- ...nPracticalWithMigrationEmbeddedStorageManager.java | 4 ++-- .../examples/practical/embedded/UpdateToV1_0.java | 4 ++-- .../examples/practical/embedded/UpdateToV2_0.java | 4 ++-- .../MainPracticalWithMigrationManager.java | 6 +++--- .../practical/migrationManager/UpdateToV1_0.java | 4 ++-- .../practical/migrationManager/UpdateToV2_0.java | 4 ++-- .../examples/reflective/MainReflective.java | 4 ++-- .../examples/reflective/scripts/UpdateToV1_0.java | 4 ++-- .../examples/reflective/scripts/UpdateToV1_1.java | 4 ++-- .../{v5 => }/MigrationEmbeddedStorage.java | 2 +- .../microstream}/MigrationEmbeddedStorageManager.java | 6 +++--- .../micromigration/microstream/MigrationManager.java | 11 +++++------ .../micromigration/microstream/MigrationScript.java | 7 +++---- .../microstream}/TunnelingEmbeddedStorageManager.java | 4 ++-- .../microstream/{v5 => }/package-info.java | 0 .../IntroduceMigrationOnExistingDatastoreTest.java | 4 ++-- .../integration/MigrationScriptAfterScriptTest.java | 10 +++++----- .../integration/MultipleScriptsTest.java | 4 ++-- .../StoreStuffInMigrationStorageManagerTest.java | 4 ++-- .../micromigration/migrater/ExplicitMigraterTest.java | 4 ++-- .../microstream}/MigrationEmbeddedStorage.java | 2 +- .../microstream}/MigrationEmbeddedStorageManager.java | 6 +++--- .../micromigration/microstream/MigrationManager.java | 11 +++++------ .../micromigration/microstream/MigrationScript.java | 7 +++---- .../microstream}/TunnelingEmbeddedStorageManager.java | 4 ++-- .../xdev/micromigration/microstream/package-info.java | 4 ++++ .../micromigration/microstream/v5/package-info.java | 4 ---- .../IntroduceMigrationOnExistingDatastoreTest.java | 4 ++-- .../integration/MigrationScriptAfterScriptTest.java | 10 +++++----- .../integration/MultipleScriptsTest.java | 4 ++-- .../StoreStuffInMigrationStorageManagerTest.java | 4 ++-- .../micromigration/migrater/ExplicitMigraterTest.java | 4 ++-- .../microstream}/MigrationEmbeddedStorage.java | 2 +- .../microstream}/MigrationEmbeddedStorageManager.java | 6 +++--- .../micromigration/microstream/MigrationManager.java | 11 +++++------ .../micromigration/microstream/MigrationScript.java | 7 +++---- .../microstream}/TunnelingEmbeddedStorageManager.java | 4 ++-- .../xdev/micromigration/microstream/package-info.java | 4 ++++ .../micromigration/microstream/v5/package-info.java | 4 ---- .../IntroduceMigrationOnExistingDatastoreTest.java | 4 ++-- .../integration/MigrationScriptAfterScriptTest.java | 10 +++++----- .../integration/MultipleScriptsTest.java | 4 ++-- .../StoreStuffInMigrationStorageManagerTest.java | 4 ++-- .../micromigration/migrater/ExplicitMigraterTest.java | 4 ++-- 48 files changed, 116 insertions(+), 122 deletions(-) rename microstream-v5/src/main/java/software/xdev/micromigration/microstream/{v5 => }/MigrationEmbeddedStorage.java (98%) rename {microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v5/src/main/java/software/xdev/micromigration/microstream}/MigrationEmbeddedStorageManager.java (94%) rename microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java => microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java (93%) rename microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java => microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java (56%) rename {microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v5/src/main/java/software/xdev/micromigration/microstream}/TunnelingEmbeddedStorageManager.java (97%) rename microstream-v5/src/main/java/software/xdev/micromigration/microstream/{v5 => }/package-info.java (100%) rename {microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v6/src/main/java/software/xdev/micromigration/microstream}/MigrationEmbeddedStorage.java (98%) rename {microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v6/src/main/java/software/xdev/micromigration/microstream}/MigrationEmbeddedStorageManager.java (94%) rename microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java => microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java (93%) rename microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java => microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java (56%) rename {microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v6/src/main/java/software/xdev/micromigration/microstream}/TunnelingEmbeddedStorageManager.java (97%) create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java rename {microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v7/src/main/java/software/xdev/micromigration/microstream}/MigrationEmbeddedStorage.java (98%) rename {microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v7/src/main/java/software/xdev/micromigration/microstream}/MigrationEmbeddedStorageManager.java (94%) rename microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java => microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java (93%) rename microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java => microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java (56%) rename {microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5 => microstream-v7/src/main/java/software/xdev/micromigration/microstream}/TunnelingEmbeddedStorageManager.java (97%) create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java delete mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java diff --git a/examples/pom.xml b/examples/pom.xml index 4a29ded5..50a395ce 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -6,7 +6,7 @@ micro-migration-examples ${revision} MicroMigration-Examples - Examples for the MicroMigration-Library + Examples for the MicroMigration-Library with MicroStream v7 software.xdev @@ -17,7 +17,7 @@ software.xdev - micro-migration-microstream-v5 + micro-migration-microstream-v7 ${revision} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 41320c88..ea5d0799 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -2,8 +2,8 @@ import java.util.Date; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; import software.xdev.micromigration.migrater.ExplicitMigrater; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 39a151d8..2d65e9be 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -2,13 +2,13 @@ import java.util.Date; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV1_0 implements MigrationScriptV5 +public class UpdateToV1_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 0433b3f1..78b2f157 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -2,13 +2,13 @@ import java.util.Date; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV1_1 implements MigrationScriptV5 +public class UpdateToV1_1 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index ec0ee9e3..2ce76118 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -1,7 +1,7 @@ package software.xdev.micromigration.examples.practical.embedded; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.migrater.ExplicitMigrater; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index a943e5b4..e3785e42 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -1,7 +1,7 @@ package software.xdev.micromigration.examples.practical.embedded; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; @@ -9,7 +9,7 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV1_0 implements MigrationScriptV5 +public class UpdateToV1_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index e3dc29e7..3d7911d7 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -2,13 +2,13 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV2_0 implements MigrationScriptV5 +public class UpdateToV2_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index 7a341395..abd9f570 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -1,6 +1,6 @@ package software.xdev.micromigration.examples.practical.migrationManager; -import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -44,7 +44,7 @@ public static void main(String[] args) { final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); VersionedObject versionedBranch = (VersionedObject)storageManager.root(); - new MigrationManagerV5(versionedBranch, migraterWithV1, storageManager) + new MigrationManager(versionedBranch, migraterWithV1, storageManager) .migrate(versionedBranch); System.out.println(storageManager.root().toString()); } @@ -55,7 +55,7 @@ public static void main(String[] args) { final ExplicitMigrater migraterWithV2 = new ExplicitMigrater(new UpdateToV1_0(), new UpdateToV2_0()); VersionedObject versionedBranch = (VersionedObject)storageManager.root(); - new MigrationManagerV5(versionedBranch, migraterWithV2, storageManager) + new MigrationManager(versionedBranch, migraterWithV2, storageManager) .migrate(versionedBranch); System.out.println(storageManager.root().toString()); } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index f0711f1f..b2e4dbf3 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -3,14 +3,14 @@ import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV1_0 implements MigrationScriptV5> +public class UpdateToV1_0 implements MigrationScript> { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 8a055aec..155558bc 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -2,14 +2,14 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV2_0 implements MigrationScriptV5> +public class UpdateToV2_0 implements MigrationScript> { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index 031a7570..1e87e99e 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -2,8 +2,8 @@ import java.util.Date; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ReflectiveMigrater; import software.xdev.micromigration.migrater.ScriptInstantiationException; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index d22c1bf4..79f2caa4 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -2,13 +2,13 @@ import java.util.Date; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV1_0 implements MigrationScriptV5 +public class UpdateToV1_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index 6313b72d..273354fd 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -2,13 +2,13 @@ import java.util.Date; -import software.xdev.micromigration.microstream.v5.MigrationScriptV5; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class UpdateToV1_1 implements MigrationScriptV5 +public class UpdateToV1_1 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java similarity index 98% rename from microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 230fba35..cc4be8f3 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.nio.file.Path; import java.util.Objects; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java similarity index 94% rename from microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 1b0ad43a..b73e0a9e 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.util.Objects; @@ -15,7 +15,7 @@ *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * @@ -67,7 +67,7 @@ public MigrationEmbeddedStorageManager start() nativeManager.setRoot(versionRoot); nativeManager.storeRoot(); } - new MigrationManagerV5( + new MigrationManager( this.versionRoot, migrater, this diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java similarity index 93% rename from microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 502b4cff..11dea89e 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,10 +1,9 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; -import software.xdev.micromigration.MigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; @@ -22,7 +21,7 @@ * @author Johannes Rabauer * */ -public class MigrationManagerV5 implements MigrationManager +public class MigrationManager implements software.xdev.micromigration.MigrationManager { private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; @@ -31,7 +30,7 @@ public class MigrationManagerV5 implements MigrationManager private final EmbeddedStorageManager storageManager ; /** - * Much more complicated constructor than {@link MigrationManagerV5#MigrationManagerV5(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. * * @param currentVersionGetter which supplies the current version of the object to update. * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. @@ -39,7 +38,7 @@ public class MigrationManagerV5 implements MigrationManager * @param migrater does the actual migration with the given {@link MigrationScript} * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManagerV5 + public MigrationManager ( final Supplier currentVersionGetter, final Consumer currentVersionSetter, @@ -68,7 +67,7 @@ public class MigrationManagerV5 implements MigrationManager * @param migrater does the actual migration with the given {@link MigrationScript} * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManagerV5 + public MigrationManager ( final Versioned versionedObject, final MicroMigrater migrater , diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java similarity index 56% rename from microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 400e3a88..17f5ae71 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,7 +1,6 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -9,11 +8,11 @@ * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScriptV5#migrate(Context)} method is called, + * After the {@link MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScriptV5 extends MigrationScript +public interface MigrationScript extends software.xdev.micromigration.scripts.MigrationScript {} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java similarity index 97% rename from microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 4de05400..9988dec4 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; @@ -31,7 +31,7 @@ *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java similarity index 100% rename from microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java rename to microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 91f41bf0..96515851 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -5,8 +5,8 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index f437a065..7224e0ae 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -7,9 +7,9 @@ import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; @@ -110,7 +110,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManagerV5( + new MigrationManager( (Versioned) storageManager.root(), new ExplicitMigrater(firstScript), storageManager @@ -130,7 +130,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManagerV5( + new MigrationManager( (Versioned) storageManager.root(), new ExplicitMigrater(firstScript, secondScript), storageManager diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index e08c6d5f..8bc4f529 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -4,8 +4,8 @@ import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; import software.xdev.micromigration.scripts.MigrationScript; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 424b0569..d41bd811 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -6,8 +6,8 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 808fd39d..badc98fd 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -11,8 +11,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.version.MigrationVersion; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java similarity index 98% rename from microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java rename to microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 230fba35..cc4be8f3 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.nio.file.Path; import java.util.Objects; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java similarity index 94% rename from microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java rename to microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 1b0ad43a..b73e0a9e 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.util.Objects; @@ -15,7 +15,7 @@ *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * @@ -67,7 +67,7 @@ public MigrationEmbeddedStorageManager start() nativeManager.setRoot(versionRoot); nativeManager.storeRoot(); } - new MigrationManagerV5( + new MigrationManager( this.versionRoot, migrater, this diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java similarity index 93% rename from microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java rename to microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 502b4cff..11dea89e 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,10 +1,9 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; -import software.xdev.micromigration.MigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; @@ -22,7 +21,7 @@ * @author Johannes Rabauer * */ -public class MigrationManagerV5 implements MigrationManager +public class MigrationManager implements software.xdev.micromigration.MigrationManager { private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; @@ -31,7 +30,7 @@ public class MigrationManagerV5 implements MigrationManager private final EmbeddedStorageManager storageManager ; /** - * Much more complicated constructor than {@link MigrationManagerV5#MigrationManagerV5(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. * * @param currentVersionGetter which supplies the current version of the object to update. * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. @@ -39,7 +38,7 @@ public class MigrationManagerV5 implements MigrationManager * @param migrater does the actual migration with the given {@link MigrationScript} * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManagerV5 + public MigrationManager ( final Supplier currentVersionGetter, final Consumer currentVersionSetter, @@ -68,7 +67,7 @@ public class MigrationManagerV5 implements MigrationManager * @param migrater does the actual migration with the given {@link MigrationScript} * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManagerV5 + public MigrationManager ( final Versioned versionedObject, final MicroMigrater migrater , diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java similarity index 56% rename from microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java rename to microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 400e3a88..17f5ae71 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,7 +1,6 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -9,11 +8,11 @@ * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScriptV5#migrate(Context)} method is called, + * After the {@link MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScriptV5 extends MigrationScript +public interface MigrationScript extends software.xdev.micromigration.scripts.MigrationScript {} diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java similarity index 97% rename from microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java rename to microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 4de05400..9988dec4 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; @@ -31,7 +31,7 @@ *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java new file mode 100644 index 00000000..e6ed3bad --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides classes to use micro migration for MicroStream v6 + */ + diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java deleted file mode 100644 index f152f602..00000000 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provides classes to use micro migration for MicroStream v5 - */ - diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 91f41bf0..96515851 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -5,8 +5,8 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index f437a065..7224e0ae 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -7,9 +7,9 @@ import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; @@ -110,7 +110,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManagerV5( + new MigrationManager( (Versioned) storageManager.root(), new ExplicitMigrater(firstScript), storageManager @@ -130,7 +130,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManagerV5( + new MigrationManager( (Versioned) storageManager.root(), new ExplicitMigrater(firstScript, secondScript), storageManager diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index e08c6d5f..8bc4f529 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -4,8 +4,8 @@ import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; import software.xdev.micromigration.scripts.MigrationScript; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 424b0569..d41bd811 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -6,8 +6,8 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 808fd39d..badc98fd 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -11,8 +11,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.version.MigrationVersion; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java similarity index 98% rename from microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java rename to microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 230fba35..cc4be8f3 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorage.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.nio.file.Path; import java.util.Objects; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java similarity index 94% rename from microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java rename to microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 1b0ad43a..b73e0a9e 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.util.Objects; @@ -15,7 +15,7 @@ *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * @@ -67,7 +67,7 @@ public MigrationEmbeddedStorageManager start() nativeManager.setRoot(versionRoot); nativeManager.storeRoot(); } - new MigrationManagerV5( + new MigrationManager( this.versionRoot, migrater, this diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java similarity index 93% rename from microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java rename to microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 502b4cff..11dea89e 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/MigrationManagerV5.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,10 +1,9 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import java.util.Objects; import java.util.function.Consumer; import java.util.function.Supplier; -import software.xdev.micromigration.MigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; @@ -22,7 +21,7 @@ * @author Johannes Rabauer * */ -public class MigrationManagerV5 implements MigrationManager +public class MigrationManager implements software.xdev.micromigration.MigrationManager { private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; @@ -31,7 +30,7 @@ public class MigrationManagerV5 implements MigrationManager private final EmbeddedStorageManager storageManager ; /** - * Much more complicated constructor than {@link MigrationManagerV5#MigrationManagerV5(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. * * @param currentVersionGetter which supplies the current version of the object to update. * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. @@ -39,7 +38,7 @@ public class MigrationManagerV5 implements MigrationManager * @param migrater does the actual migration with the given {@link MigrationScript} * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManagerV5 + public MigrationManager ( final Supplier currentVersionGetter, final Consumer currentVersionSetter, @@ -68,7 +67,7 @@ public class MigrationManagerV5 implements MigrationManager * @param migrater does the actual migration with the given {@link MigrationScript} * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManagerV5 + public MigrationManager ( final Versioned versionedObject, final MicroMigrater migrater , diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java similarity index 56% rename from microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java rename to microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 400e3a88..17f5ae71 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/v5/MigrationScriptV5.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,7 +1,6 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -9,11 +8,11 @@ * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScriptV5#migrate(Context)} method is called, + * After the {@link MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScriptV5 extends MigrationScript +public interface MigrationScript extends software.xdev.micromigration.scripts.MigrationScript {} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java similarity index 97% rename from microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java rename to microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 4de05400..9988dec4 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/v5/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,4 +1,4 @@ -package software.xdev.micromigration.microstream.v5; +package software.xdev.micromigration.microstream; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; @@ -31,7 +31,7 @@ *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManagerV5} to do the actual migration. + * Internally uses the {@link MigrationManager} to do the actual migration. * * @author Johannes Rabauer * diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java new file mode 100644 index 00000000..0d326173 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java @@ -0,0 +1,4 @@ +/** + * Provides classes to use micro migration for MicroStream v7 + */ + diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java deleted file mode 100644 index f152f602..00000000 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/v5/package-info.java +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provides classes to use micro migration for MicroStream v5 - */ - diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 91f41bf0..96515851 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -5,8 +5,8 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index f437a065..7224e0ae 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -7,9 +7,9 @@ import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.v5.MigrationManagerV5; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; @@ -110,7 +110,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManagerV5( + new MigrationManager( (Versioned) storageManager.root(), new ExplicitMigrater(firstScript), storageManager @@ -130,7 +130,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ); try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) { - new MigrationManagerV5( + new MigrationManager( (Versioned) storageManager.root(), new ExplicitMigrater(firstScript, secondScript), storageManager diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index e08c6d5f..8bc4f529 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -4,8 +4,8 @@ import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; import software.xdev.micromigration.scripts.MigrationScript; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 424b0569..d41bd811 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -6,8 +6,8 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 808fd39d..badc98fd 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -11,8 +11,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.v5.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.version.MigrationVersion; From 1dc4a7520495fb823e0f242771e37f917aff9695 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 09:28:54 +0100 Subject: [PATCH 080/306] Updated README --- README.md | 54 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 5602aa68..0eeb255b 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,9 @@ the version, suited to the current code. Simply add the dependency to your `pom.xml`: ``` - software.xdev - micro-migration-core - 0.0.2 + software.xdev + micro-migration-microstream-v7 + 0.0.3 ``` @@ -57,10 +57,10 @@ A simple example where scripts need to be registered in the `ExplicitMigrater`: ```java public static void main(String[] args) { - ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); - MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); - //Do some business logic - storageManager.shutdown(); + ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); + MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); + //Do some business logic + storageManager.shutdown(); } ``` @@ -110,8 +110,8 @@ A downside of this method is that you need to register all scripts (new or old) ```java final ExplicitMigrater migrater = new ExplicitMigrater( - new UpdateToV1_0(), - new UpdateToV1_1() + new UpdateToV1_0(), + new UpdateToV1_1() ); ``` @@ -129,11 +129,41 @@ Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com To use this, you need to add the following dependency to your `pom.xml`: ``` - software.xdev - micro-migration-reflection - 0.0.2 + software.xdev + micro-migration-reflection + 0.0.3 + +``` + +## Supported MicroStream versions +Micro migration currently supports the following MicroStream versions: +| MicroStream Version | Micro migration artifact Id | +| --- | --- | +| 05.00.02-MS-GA | micro-migration-microstream-v5 | +| 06.01.00-MS-GA | micro-migration-microstream-v6 | +| 07.01.00-MS-GA | micro-migration-microstream-v7 | + +If you are using a different, not listed version of MicroStream, this shouldn't be a problem. +Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `07.00.00-MS-GA`, +then use `micro-migration-microstream-v7`) and exclude the dependent version of MicroStream vom Micro migration: +``` + + software.xdev + micro-migration-microstream-v7 + 0.0.3 + + + one.microstream + microstream-storage-embedded + + + one.microstream + microstream-configuration + + ``` +Since there is rarely a breaking change, this works 90% of times. # Links - [Javadoc](https://javadoc.io/doc/software.xdev/micro-migration-core/latest/index.html) From 2c599d0229abd428cc515f6979eadf8c1fb84a13 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 09:42:20 +0100 Subject: [PATCH 081/306] First try for implementing dependabot --- .github/dependabot.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..d9e20cad --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,24 @@ +version: 1 +updates: +- package-ecosystem: maven + directory: "/core" +- package-ecosystem: maven + directory: "/examples" +- package-ecosystem: maven + directory: "/reflection" + # Ignore the version, because it is only used for testing + ignore: + - dependency-name: "one.microstream:microstream-storage-embedded" + - dependency-name: "one.microstream:microstream-storage-configuration" +- package-ecosystem: maven + directory: "/microstream-v5" + # Ignore the version, because this is supposed to be for old MicroStream versions + ignore: + - dependency-name: "one.microstream:microstream-storage-embedded" + - dependency-name: "one.microstream:microstream-storage-configuration" +- package-ecosystem: maven + directory: "/microstream-v6" + # Ignore the version, because this is supposed to be for old MicroStream versions + ignore: + - dependency-name: "one.microstream:microstream-storage-embedded" + - dependency-name: "one.microstream:microstream-storage-configuration" \ No newline at end of file From b7e8c388293840b458f131b5895cedfcb1a94c11 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 09:46:13 +0100 Subject: [PATCH 082/306] Updated dependabot schedule --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index d9e20cad..89093e8e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -2,22 +2,32 @@ version: 1 updates: - package-ecosystem: maven directory: "/core" + schedule: + interval: "weekly" - package-ecosystem: maven directory: "/examples" + schedule: + interval: "weekly" - package-ecosystem: maven directory: "/reflection" + schedule: + interval: "weekly" # Ignore the version, because it is only used for testing ignore: - dependency-name: "one.microstream:microstream-storage-embedded" - dependency-name: "one.microstream:microstream-storage-configuration" - package-ecosystem: maven directory: "/microstream-v5" + schedule: + interval: "weekly" # Ignore the version, because this is supposed to be for old MicroStream versions ignore: - dependency-name: "one.microstream:microstream-storage-embedded" - dependency-name: "one.microstream:microstream-storage-configuration" - package-ecosystem: maven directory: "/microstream-v6" + schedule: + interval: "weekly" # Ignore the version, because this is supposed to be for old MicroStream versions ignore: - dependency-name: "one.microstream:microstream-storage-embedded" From 8b32b6881a52b65d3afe8889b667f4458921e11a Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 10:58:48 +0100 Subject: [PATCH 083/306] Fixed dependabot-config-version --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 89093e8e..07f92915 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,4 +1,4 @@ -version: 1 +version: 2 updates: - package-ecosystem: maven directory: "/core" From 629fc1846e26fd9b5660194c1d886599818f0ee2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:11 +0000 Subject: [PATCH 084/306] Bump maven-resources-plugin from 2.6 to 3.3.0 in /microstream-v5 Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 2.6 to 3.3.0. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-2.6...maven-resources-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- microstream-v5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 95ea692e..4c76be8c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -71,7 +71,7 @@ maven-resources-plugin - 2.6 + 3.3.0 UTF-8 From eb291f3f954f69e9b32000eea3f7a54a8e764b9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:12 +0000 Subject: [PATCH 085/306] Bump maven-javadoc-plugin from 3.2.0 to 3.4.1 in /core Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- core/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/pom.xml b/core/pom.xml index ca8a3c60..91e51dde 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -32,7 +32,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.4.1 ${java.version} UTF-8 From 55e93c084a32f4dd8352c7b66c3c42013060638d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:12 +0000 Subject: [PATCH 086/306] Bump maven-resources-plugin from 2.6 to 3.3.0 in /microstream-v6 Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 2.6 to 3.3.0. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-2.6...maven-resources-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- microstream-v6/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 82147760..2771e8c3 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -71,7 +71,7 @@ maven-resources-plugin - 2.6 + 3.3.0 UTF-8 From 06ec01c70cae3e37ec94e1a44afc753cd120cc7d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:14 +0000 Subject: [PATCH 087/306] Bump maven-resources-plugin from 2.6 to 3.3.0 in /reflection Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 2.6 to 3.3.0. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-2.6...maven-resources-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- reflection/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reflection/pom.xml b/reflection/pom.xml index 3f0502b7..0c2ad794 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -78,7 +78,7 @@ maven-resources-plugin - 2.6 + 3.3.0 UTF-8 From 77b2e5baf1837dc4296100eca9e810adcd1a5555 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:15 +0000 Subject: [PATCH 088/306] Bump maven-resources-plugin from 2.6 to 3.3.0 in /core Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 2.6 to 3.3.0. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-2.6...maven-resources-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- core/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/pom.xml b/core/pom.xml index ca8a3c60..d65d9fd1 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -52,7 +52,7 @@ maven-resources-plugin - 2.6 + 3.3.0 UTF-8 From 05537014a0f022096812a07b0e792ae40dd9d06e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:16 +0000 Subject: [PATCH 089/306] Bump maven-javadoc-plugin from 3.2.0 to 3.4.1 in /microstream-v6 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- microstream-v6/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 82147760..35db7ffb 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -54,7 +54,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.4.1 ${java.version} UTF-8 From 349e87f1d5880b7769069687f6774dadd60dca32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:16 +0000 Subject: [PATCH 090/306] Bump maven-javadoc-plugin from 3.2.0 to 3.4.1 in /microstream-v5 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- microstream-v5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 95ea692e..5197adb0 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -54,7 +54,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.4.1 ${java.version} UTF-8 From 930c3d797607a8bf39bacdf254c66347a30c2263 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 09:59:17 +0000 Subject: [PATCH 091/306] Bump maven-javadoc-plugin from 3.2.0 to 3.4.1 in /reflection Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- reflection/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reflection/pom.xml b/reflection/pom.xml index 3f0502b7..b73ab848 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -61,7 +61,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.4.1 ${java.version} UTF-8 From 50e27a5821df441207d98ba1c6b9422755b54b6d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 11:04:33 +0100 Subject: [PATCH 092/306] Added microstream-v7 to dependabot --- .github/dependabot.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 07f92915..9c7f53a0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -31,4 +31,8 @@ updates: # Ignore the version, because this is supposed to be for old MicroStream versions ignore: - dependency-name: "one.microstream:microstream-storage-embedded" - - dependency-name: "one.microstream:microstream-storage-configuration" \ No newline at end of file + - dependency-name: "one.microstream:microstream-storage-configuration" +- package-ecosystem: maven + directory: "/microstream-v7" + schedule: + interval: "weekly" \ No newline at end of file From 1aa82ce00dd5cfe0b24a2f3db30d0bed8c71b67e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 10:05:38 +0000 Subject: [PATCH 093/306] Bump maven-resources-plugin from 2.6 to 3.3.0 in /microstream-v7 Bumps [maven-resources-plugin](https://github.com/apache/maven-resources-plugin) from 2.6 to 3.3.0. - [Release notes](https://github.com/apache/maven-resources-plugin/releases) - [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-2.6...maven-resources-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-resources-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- microstream-v7/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index e9ccbcac..21606842 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -71,7 +71,7 @@ maven-resources-plugin - 2.6 + 3.3.0 UTF-8 From 553ccb9dba7790d4d96e0860fc195473034da79b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Dec 2022 10:05:42 +0000 Subject: [PATCH 094/306] Bump maven-javadoc-plugin from 3.2.0 to 3.4.1 in /microstream-v7 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.2.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.2.0...maven-javadoc-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- microstream-v7/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index e9ccbcac..d8e1691a 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -54,7 +54,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.2.0 + 3.4.1 ${java.version} UTF-8 From c32d50111ffb421403a0a43589b6910d02f95319 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 11:20:51 +0100 Subject: [PATCH 095/306] Updated Readme --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0eeb255b..0c5cc98f 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ the version, suited to the current code. ### Maven Simply add the dependency to your `pom.xml`: -``` +```xml software.xdev micro-migration-microstream-v7 @@ -55,8 +55,7 @@ Extensive examples can be found in its own [own module](https://github.com/xdev- A simple example where scripts need to be registered in the `ExplicitMigrater`: ```java -public static void main(String[] args) -{ +public static void main(String[] args){ ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); //Do some business logic @@ -75,8 +74,7 @@ public class UpdateToV1_0 implements MigrationScript } @Override - public void migrate(Context context) - { + public void migrate(Context context){ //Logic of the update context.getStorageManager().setRoot("Update 1.0"); } @@ -91,8 +89,7 @@ That's why a second approach can be used, where the `MigrationManager` is used. the `MigrationEmbeddedStorageManager`. ```java -public static void main(String[] args) -{ +public static void main(String[] args){ ExplicitMigrater migrater = new ExplicitMigrater(new UpdateToV1_0()); EmbeddedStorageManager storageManager = EmbeddedStorage.start(); VersionedObject versionedRoot =(VersionedObject)storageManager.root(); @@ -127,7 +124,7 @@ final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.microm Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own module](https://github.com/xdev-software/micro-migration/tree/main/reflection). To use this, you need to add the following dependency to your `pom.xml`: -``` +```xml software.xdev micro-migration-reflection @@ -146,7 +143,7 @@ Micro migration currently supports the following MicroStream versions: If you are using a different, not listed version of MicroStream, this shouldn't be a problem. Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `07.00.00-MS-GA`, then use `micro-migration-microstream-v7`) and exclude the dependent version of MicroStream vom Micro migration: -``` +```xml software.xdev micro-migration-microstream-v7 From 2d991a0bc3e465dd8402de2731443ec5e4b2727b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 11:51:02 +0100 Subject: [PATCH 096/306] Fixed missing JavaDoc --- .../java/software/xdev/micromigration/MigrationManager.java | 4 ++-- .../microstream/MigrationEmbeddedStorageManager.java | 5 ++++- .../microstream/TunnelingEmbeddedStorageManager.java | 6 ++++-- .../microstream/MigrationEmbeddedStorageManager.java | 5 ++++- .../microstream/TunnelingEmbeddedStorageManager.java | 3 +++ .../microstream/MigrationEmbeddedStorageManager.java | 5 ++++- .../microstream/TunnelingEmbeddedStorageManager.java | 3 +++ 7 files changed, 24 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/MigrationManager.java b/core/src/main/java/software/xdev/micromigration/MigrationManager.java index 4f1ac227..380faf98 100644 --- a/core/src/main/java/software/xdev/micromigration/MigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/MigrationManager.java @@ -13,8 +13,8 @@ public interface MigrationManager { /** - * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. - * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon + * Migrates the given object to the newest possible version, defined by the {@link software.xdev.micromigration.migrater.MicroMigrater}. + * @param objectToMigrate is given to the {@link software.xdev.micromigration.migrater.MicroMigrater} for migrating upon */ public void migrate(Object objectToMigrate); } diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index b73e0a9e..0ca5cd6a 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -75,7 +75,10 @@ public MigrationEmbeddedStorageManager start() .migrate(this.versionRoot.getRoot()); return this; } - + + /** + * @return current version that's managed + */ public MigrationVersion getCurrentVersion() { return this.versionRoot.getVersion(); diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 9988dec4..81505d80 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -38,6 +38,9 @@ */ public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager { + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ protected final EmbeddedStorageManager nativeManager; /** @@ -244,5 +247,4 @@ public void issueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter) { this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); } - - } +} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index b73e0a9e..0ca5cd6a 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -75,7 +75,10 @@ public MigrationEmbeddedStorageManager start() .migrate(this.versionRoot.getRoot()); return this; } - + + /** + * @return current version that's managed + */ public MigrationVersion getCurrentVersion() { return this.versionRoot.getVersion(); diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 9988dec4..da48bc8c 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -38,6 +38,9 @@ */ public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager { + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ protected final EmbeddedStorageManager nativeManager; /** diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index b73e0a9e..0ca5cd6a 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -75,7 +75,10 @@ public MigrationEmbeddedStorageManager start() .migrate(this.versionRoot.getRoot()); return this; } - + + /** + * @return current version that's managed + */ public MigrationVersion getCurrentVersion() { return this.versionRoot.getVersion(); diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 9988dec4..da48bc8c 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -38,6 +38,9 @@ */ public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager { + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ protected final EmbeddedStorageManager nativeManager; /** From 928688536473c5e8344a39063e90b6a13b556969 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 13:07:40 +0100 Subject: [PATCH 097/306] Cleaned up poms --- core/pom.xml | 79 +----------------------------------------- microstream-v5/pom.xml | 76 +--------------------------------------- microstream-v7/pom.xml | 76 +--------------------------------------- pom.xml | 75 +++++++++++++++++++++++++++++++++++++++ reflection/pom.xml | 76 +--------------------------------------- 5 files changed, 79 insertions(+), 303 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8bc2bd6f..cfae503a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -19,43 +19,14 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 - - ${java.version} - UTF-8 - false - - -Xdoclint:none - -Xdoclint:none - - - - attach-javadocs - - jar - - - + org.apache.maven.plugins maven-resources-plugin - 3.3.0 - - UTF-8 - @@ -65,57 +36,9 @@ release - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - org.jreleaser jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 31387d75..0f819c5a 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -41,40 +41,14 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 - - ${java.version} - UTF-8 - false - - - - attach-javadocs - - jar - - - + org.apache.maven.plugins maven-resources-plugin - 3.3.0 - - UTF-8 - @@ -84,57 +58,9 @@ release - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - org.jreleaser jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 75bcd213..b9343b56 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -41,40 +41,14 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 - - ${java.version} - UTF-8 - false - - - - attach-javadocs - - jar - - - + org.apache.maven.plugins maven-resources-plugin - 3.3.0 - - UTF-8 - @@ -84,57 +58,9 @@ release - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - org.jreleaser jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - diff --git a/pom.xml b/pom.xml index 19fac1ab..cae70496 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,81 @@ + + + + org.apache.maven.plugins + maven-resources-plugin + 3.3.0 + + UTF-8 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.4.1 + + ${java.version} + UTF-8 + false + + -Xdoclint:none + -Xdoclint:none + + + + attach-javadoc + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-source + + jar + + + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + ALWAYS + true + + + + + + ALWAYS + https://s01.oss.sonatype.org/service/local; + false + false + target/staging-deploy + + + + + + + + + + + org.apache.maven.plugins diff --git a/reflection/pom.xml b/reflection/pom.xml index daacddcc..973eb0c4 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -48,40 +48,14 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 - - ${java.version} - UTF-8 - false - - - - attach-javadocs - - jar - - - + org.apache.maven.plugins maven-resources-plugin - 3.3.0 - - UTF-8 - @@ -91,57 +65,9 @@ release - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - org.jreleaser jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - From 441394c626e9ccfa885ecd2c01146a0f50307b98 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 13:11:46 +0100 Subject: [PATCH 098/306] Fixed JavaDoc --- .../xdev/micromigration/migrater/AbstractMigrater.java | 2 +- pom.xml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 6e4fa6d5..384aa04e 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -108,7 +108,7 @@ private MigrationVersion migrateWithScript( /** * Checks if the given {@link MigrationScript} is not already registered in the * {@link #getSortedScripts()}. - * @throws {@link VersionAlreadyRegisteredException} if script is already registered. + * @throws VersionAlreadyRegisteredException if script is already registered. * @param scriptToCheck It's target version is checked, if it is not already registered. */ protected void checkIfVersionIsAlreadyRegistered(MigrationScript scriptToCheck) diff --git a/pom.xml b/pom.xml index cae70496..19c83c0f 100644 --- a/pom.xml +++ b/pom.xml @@ -91,9 +91,6 @@ ${java.version} UTF-8 false - - -Xdoclint:none - -Xdoclint:none From d48db769619afae7df9e07716e14ba60ff8ec9ae Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 13:13:03 +0100 Subject: [PATCH 099/306] Fixed Check Build-Workflow for new develop branch --- .github/workflows/checkBuild.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index cc3f7b68..05e0b469 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -3,13 +3,17 @@ name: Check Build on: workflow_dispatch: push: - branches: [ main ] + branches: [ develop ] paths-ignore: - '**.md' pull_request: branches: [ main ] paths-ignore: - '**.md' + pull_request: + branches: [ develop ] + paths-ignore: + - '**.md' jobs: build: From 8bd7a410947d445e1ff4dc709f2009abec7f5625 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 13:14:30 +0100 Subject: [PATCH 100/306] Fixed Check Build-Workflow for new develop branch --- .github/workflows/checkBuild.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 05e0b469..719fddbc 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -7,11 +7,7 @@ on: paths-ignore: - '**.md' pull_request: - branches: [ main ] - paths-ignore: - - '**.md' - pull_request: - branches: [ develop ] + branches: [ main, develop ] paths-ignore: - '**.md' From 8257349f7d178fe423fff16a29265f77e04c75cc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 14:57:33 +0100 Subject: [PATCH 101/306] Expanded JavaDoc --- .../xdev/micromigration/MigrationManager.java | 2 +- ...VersionAgnosticEmbeddedStorageManager.java | 25 +++++++++-- .../migrater/AbstractMigrater.java | 6 +++ .../migrater/ExplicitMigrater.java | 2 +- .../migrater/MicroMigrater.java | 6 +-- .../VersionAlreadyRegisteredException.java | 42 ++++++++++++++++--- .../ScriptExecutionNotification.java | 35 ++++++++++++---- .../xdev/micromigration/scripts/Context.java | 8 +++- .../scripts/MigrationScript.java | 18 ++++---- .../scripts/SimpleMigrationScript.java | 8 +++- .../version/MigrationVersion.java | 25 +++++++---- .../micromigration/version/Versioned.java | 12 +++++- .../version/VersionedObject.java | 15 +++++-- .../micromigration/version/VersionedRoot.java | 15 +++++-- ...oreStuffInMigrationStorageManagerTest.java | 2 +- ...oreStuffInMigrationStorageManagerTest.java | 2 +- ...oreStuffInMigrationStorageManagerTest.java | 2 +- 17 files changed, 172 insertions(+), 53 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/MigrationManager.java b/core/src/main/java/software/xdev/micromigration/MigrationManager.java index 380faf98..06ab6b0d 100644 --- a/core/src/main/java/software/xdev/micromigration/MigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/MigrationManager.java @@ -16,5 +16,5 @@ public interface MigrationManager * Migrates the given object to the newest possible version, defined by the {@link software.xdev.micromigration.migrater.MicroMigrater}. * @param objectToMigrate is given to the {@link software.xdev.micromigration.migrater.MicroMigrater} for migrating upon */ - public void migrate(Object objectToMigrate); + void migrate(Object objectToMigrate); } diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java index 4d683f42..2ab88a63 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java @@ -1,6 +1,25 @@ package software.xdev.micromigration.microstream.versionagnostic; -public interface VersionAgnosticEmbeddedStorageManager { - public long store(final Object instance); - public T getNativeStorageManager(); +/** + * To keep MicroStream from being directly referenced, this is a abstraction to keep the + * actual EmbeddedStorageManager concealed. + * + * @param is usually the one.microstream.storage.embedded.types.EmbeddedStorageManager, + * but to keep it version agnostic, this is dynamically typed. + * + * @author Johannes Rabauer + */ +public interface VersionAgnosticEmbeddedStorageManager +{ + /** + * Stores the given object instance + * @param instance to store + * @return the object id representing the passed instance + */ + long store(final Object instance); + + /** + * @return the actual EmbeddedStorageManager + */ + T getNativeStorageManager(); } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 384aa04e..bc02bb80 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -12,6 +12,12 @@ import software.xdev.micromigration.version.MigrationVersion; +/** + * Provides the basic functionality to apply {@link MigrationScript}s to + * a datastore. + * + * @author Johannes Rabauer + */ public abstract class AbstractMigrater implements MicroMigrater { private Consumer notificationConsumer = null; diff --git a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java index a2220cf2..17a6416b 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java @@ -19,7 +19,7 @@ public class ExplicitMigrater extends AbstractMigrater /** * @param scripts are all the scripts that are executed, if the current version is lower than this of the script
* Versions of the scripts must be unique. That means that no version is allowed multiple times in the migrater. - * @throws VersionAlreadyRegisteredException + * @throws VersionAlreadyRegisteredException if two scripts have the same version */ public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegisteredException { diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 6691a32c..466d9891 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -19,7 +19,7 @@ public interface MicroMigrater /** * @return all the contained {@link MigrationScript}s, sorted by their {@link MigrationVersion} ascending. */ - public TreeSet> getSortedScripts(); + TreeSet> getSortedScripts(); /** * Executes all the scripts that are available to the migrater. @@ -42,7 +42,7 @@ public interface MicroMigrater * * @return the target version of the last executed script */ - public MigrationVersion migrateToNewest( + MigrationVersion migrateToNewest( MigrationVersion fromVersion , VersionAgnosticEmbeddedStorageManager storageManager, Object root @@ -72,7 +72,7 @@ public MigrationVersion migrateToNewest( * * @return the target version of the last executed script */ - public MigrationVersion migrateToVersion + MigrationVersion migrateToVersion ( MigrationVersion fromVersion , MigrationVersion targetVersion , diff --git a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index 6ce95ba5..108ec977 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -6,16 +6,36 @@ import software.xdev.micromigration.scripts.MigrationScript; +/** + * Exception that should be used if two scripts with the same version exist. + * @author Johannes Rabauer + */ public class VersionAlreadyRegisteredException extends Error { private static final long serialVersionUID = 2153008832167067975L; - - private MigrationVersion alreadyRegisteredVersion; - private MigrationScript alreadyRegisteredScript ; - private MigrationScript newScriptToRegister ; - + + /** + * The already registered script with the same version + */ + private final MigrationVersion alreadyRegisteredVersion; + /** + * The version of the already registered script + */ + private final MigrationScript alreadyRegisteredScript ; + /** + * The script with the same version as {@link #alreadyRegisteredScript}, + * which should be registered as well + */ + private final MigrationScript newScriptToRegister ; + + /** + * @param alreadyRegisteredVersion The version of the already registered script + * @param alreadyRegisteredScript The already registered script with the same version + * @param newScriptToRegister The script with the same version as alreadyRegisteredScript, + * which should be registered as well + */ public VersionAlreadyRegisteredException( - MigrationVersion alreadyRegisteredVersion, + MigrationVersion alreadyRegisteredVersion, MigrationScript alreadyRegisteredScript , MigrationScript newScriptToRegister ) @@ -26,16 +46,26 @@ public VersionAlreadyRegisteredException( this.newScriptToRegister = Objects.requireNonNull(newScriptToRegister) ; } + /** + * @return the version of the already registered script + */ public MigrationVersion getAlreadyRegisteredVersion() { return alreadyRegisteredVersion; } + /** + * @return the already registered script with the same version + */ public MigrationScript getAlreadyRegisteredScript() { return alreadyRegisteredScript; } + /** + * @return the script with the same version as {@link #getAlreadyRegisteredScript()}, + * which should be registered as well + */ public MigrationScript getNewScriptToRegister() { return newScriptToRegister; diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java index 6fa1c055..beaa6535 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java @@ -10,16 +10,22 @@ * Contains data about the execution of a script by a {@link MicroMigrater}. * * @author Johannes Rabauer - * */ public class ScriptExecutionNotification { - private MigrationScript executedScript; - private MigrationVersion sourceVersion ; - private MigrationVersion targetVersion ; - private LocalDateTime startDate ; - private LocalDateTime endDate ; - + private final MigrationScript executedScript; + private final MigrationVersion sourceVersion ; + private final MigrationVersion targetVersion ; + private final LocalDateTime startDate ; + private final LocalDateTime endDate ; + + /** + * @param executedScript script that was executed + * @param sourceVersion original version of the object before executing the script + * @param targetVersion version of the object after executing the script + * @param startDate time when the script was started + * @param endDate time when the script has finished + */ public ScriptExecutionNotification( MigrationScript executedScript, MigrationVersion sourceVersion , @@ -36,26 +42,41 @@ public ScriptExecutionNotification( this.endDate = endDate ; } + /** + * @return the script that was executed + */ public MigrationScript getExecutedScript() { return executedScript; } + /** + * @return the original version of the object before executing the script + */ public MigrationVersion getSourceVersion() { return sourceVersion; } + /** + * @return the version of the object after executing the script + */ public MigrationVersion getTargetVersion() { return targetVersion; } + /** + * @return the time when the script was started + */ public LocalDateTime getStartDate() { return startDate; } + /** + * @return time when the script has finished + */ public LocalDateTime getEndDate() { return endDate; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/Context.java b/core/src/main/java/software/xdev/micromigration/scripts/Context.java index 19ff7324..8cc87aa8 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/Context.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/Context.java @@ -12,9 +12,13 @@ public class Context { private final T migratingObject; private final E storageManager ; - + + /** + * @param migratingObject that must be migrated to a new version + * @param storageManager where the migratingObject is stored + */ public Context( - final T migratingObject, + final T migratingObject, final VersionAgnosticEmbeddedStorageManager storageManager ) { diff --git a/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java index 4f5794b1..2ec732d7 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java @@ -20,7 +20,7 @@ public interface MigrationScript /** * @return the version of the datastore after this script is executed. */ - public MigrationVersion getTargetVersion(); + MigrationVersion getTargetVersion(); /** * Execute logic to migrate the given datastore to a newer version of the store. @@ -28,13 +28,11 @@ public interface MigrationScript * * @param context that holds necessary data for the migration */ - public void migrate(Context context); - - public static Comparator> COMPARATOR = new Comparator>() - { - @Override - public int compare(MigrationScript o1, MigrationScript o2) { - return MigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); - } - }; + void migrate(Context context); + + /** + * Provides a {@link Comparator} that compares the {@link #getTargetVersion()} of the given scripts + */ + Comparator> COMPARATOR = + (o1, o2) -> MigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); } diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java index 8cccc24d..2cf97149 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java @@ -14,11 +14,15 @@ */ public class SimpleMigrationScript extends SimpleTypedMigrationScript { + /** + * @param targetVersion to which the script is updating the object + * @param consumer which consumes the object and updates it to the target version + */ public SimpleMigrationScript( - final MigrationVersion version , + final MigrationVersion targetVersion , final Consumer> consumer ) { - super(version, consumer); + super(targetVersion, consumer); } } diff --git a/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java index 3005b35b..a6389adf 100644 --- a/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java +++ b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java @@ -13,7 +13,10 @@ public class MigrationVersion { private final int[] versions; - + + /** + * @param versions as integers. For example 1.0.2 would be an array of [1,0,2] + */ public MigrationVersion(int... versions) { if(versions == null || versions.length == 0) @@ -24,8 +27,11 @@ public MigrationVersion(int... versions) { this.versions = versions; } - } - + } + + /** + * @param versionsAsList as integers. For example 1.0.2 would be a list of [1,0,2] + */ public MigrationVersion(List versionsAsList) { if(versionsAsList == null || versionsAsList.size() == 0) @@ -43,6 +49,9 @@ public MigrationVersion(List versionsAsList) } } + /** + * @return versions as an array of integers. For example 1.0.2 would be an array of [1,0,2] + */ public int[] getVersions() { return this.versions; @@ -79,10 +88,12 @@ public boolean equals(Object obj) if (getClass() != obj.getClass()) return false; MigrationVersion other = (MigrationVersion) obj; - if (!Arrays.equals(versions, other.versions)) - return false; - return true; + return Arrays.equals(versions, other.versions); } - public static Comparator COMPARATOR = Comparator.comparing(MigrationVersion::getVersions, (o1, o2) -> Arrays.compare(o1,o2)); + /** + * Provides a {@link Comparator} that compares the {@link #getVersions()} of the given versions + */ + public static Comparator COMPARATOR = + Comparator.comparing(MigrationVersion::getVersions, (o1, o2) -> Arrays.compare(o1,o2)); } diff --git a/core/src/main/java/software/xdev/micromigration/version/Versioned.java b/core/src/main/java/software/xdev/micromigration/version/Versioned.java index 62349bd5..fa098cee 100644 --- a/core/src/main/java/software/xdev/micromigration/version/Versioned.java +++ b/core/src/main/java/software/xdev/micromigration/version/Versioned.java @@ -8,6 +8,14 @@ */ public interface Versioned { - public void setVersion(MigrationVersion version); - public MigrationVersion getVersion(); + /** + * @param version to set the current version of the object + */ + void setVersion(MigrationVersion version); + + /** + * + * @return the current version of the object + */ + MigrationVersion getVersion(); } diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java index d2594dcd..777ac016 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java @@ -14,7 +14,10 @@ public class VersionedObject implements Versioned { private MigrationVersion currentVersion; private T actualObject ; - + + /** + * @param actualObject set the actual object which is versioned + */ public VersionedObject(T actualObject) { this.actualObject = actualObject ; @@ -33,12 +36,18 @@ public MigrationVersion getVersion() { return this.currentVersion; } - + + /** + * @param actualObject which is versioned + */ public void setObject(T actualObject) { this.actualObject = actualObject; } - + + /** + * @return the actual object which is versioned + */ public T getObject() { return this.actualObject; diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java index 01162fe6..a0eee3f7 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java @@ -13,7 +13,10 @@ public class VersionedRoot implements Versioned { private MigrationVersion currentVersion; private Object actualRoot ; - + + /** + * @param actualRoot which is stored in the datastore and defined by the user + */ public VersionedRoot(Object actualRoot) { this.actualRoot = actualRoot ; @@ -32,12 +35,18 @@ public MigrationVersion getVersion() { return this.currentVersion; } - + + /** + * @param actualRoot which is stored in the datastore and defined by the user + */ public void setRoot(Object actualRoot) { this.actualRoot = actualRoot; } - + + /** + * @return the actual root, that's defined by the user + */ public Object getRoot() { return this.actualRoot; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index d41bd811..51b1cccc 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -21,7 +21,7 @@ class StoreStuffInMigrationStorageManagerTest { private static class RootClass { - private ChildClass child = new ChildClass(); + private final ChildClass child = new ChildClass(); } private static class ChildClass diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index d41bd811..51b1cccc 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -21,7 +21,7 @@ class StoreStuffInMigrationStorageManagerTest { private static class RootClass { - private ChildClass child = new ChildClass(); + private final ChildClass child = new ChildClass(); } private static class ChildClass diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index d41bd811..51b1cccc 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -21,7 +21,7 @@ class StoreStuffInMigrationStorageManagerTest { private static class RootClass { - private ChildClass child = new ChildClass(); + private final ChildClass child = new ChildClass(); } private static class ChildClass From c4d6cacad14baf3df2e4925f33c48365550966c5 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 15:00:59 +0100 Subject: [PATCH 102/306] Added Changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2594e81..77174b15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,2 +1,6 @@ +## 0.0.3 +* Restructured the complete maven modules. Multiple MicroStream-Versions are now supported. +* Added plenty of documentation + ## 0.0.2 * Updated MicroStream from v4 to v5. \ No newline at end of file From 9d5abc62edbbe217c25c3af47074c84053a51f4d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 14 Dec 2022 15:28:27 +0100 Subject: [PATCH 103/306] Extended Check Build for dry run release --- .github/workflows/checkBuild.yml | 26 +++++++++++++++++++++++++- core/pom.xml | 2 +- pom.xml | 22 ++-------------------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 719fddbc..8303309f 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -56,4 +56,28 @@ jobs: - uses: actions/upload-artifact@v3 with: name: jars-java-${{ matrix.java }} - path: target/*.jar \ No newline at end of file + path: target/*.jar + + publish: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - name: Build project + run: mvn -B -Prelease clean install + - name: Publish 'core' + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/core/pom.xml b/core/pom.xml index cfae503a..5c341ef2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -10,8 +10,8 @@ software.xdev - ${revision} micro-migration + ${revision} diff --git a/pom.xml b/pom.xml index 19c83c0f..984f8456 100644 --- a/pom.xml +++ b/pom.xml @@ -60,13 +60,13 @@ org.junit.jupiter junit-jupiter-api - 5.6.2 + 5.9.0 test org.junit.jupiter junit-jupiter-engine - 5.6.2 + 5.9.0 test @@ -175,28 +175,10 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - aggregate - - - org.apache.maven.plugins maven-source-plugin - 3.2.1 - - - attach-source - - aggregate - - - From 2f5365364a67985e26326b36c149fd5deaa9dae6 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 07:22:49 +0100 Subject: [PATCH 104/306] Updated pom.xml --- pom.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/pom.xml b/pom.xml index 984f8456..0f136bee 100644 --- a/pom.xml +++ b/pom.xml @@ -175,10 +175,26 @@ org.apache.maven.plugins maven-javadoc-plugin + + + attach-javadoc + + aggregate + + + org.apache.maven.plugins maven-source-plugin + + + attach-source + + aggregate + + + From 9a84296e2368489a98bcd5d47898a120949ede1d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 07:25:57 +0100 Subject: [PATCH 105/306] Update pom.xml --- pom.xml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/pom.xml b/pom.xml index 0f136bee..8a6dccf9 100644 --- a/pom.xml +++ b/pom.xml @@ -172,18 +172,6 @@ release - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadoc - - aggregate - - - - org.apache.maven.plugins maven-source-plugin From ba381929d017ef635f9535a2394039136d4038ff Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 07:28:04 +0100 Subject: [PATCH 106/306] Update pom.xml --- pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index 8a6dccf9..43266f0a 100644 --- a/pom.xml +++ b/pom.xml @@ -172,6 +172,18 @@ release + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadoc + + jar + + + + org.apache.maven.plugins maven-source-plugin From 10cf62a0e15b220f7d859fa620d5ae0dffe40a59 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 07:56:39 +0100 Subject: [PATCH 107/306] Update pom.xml --- pom.xml | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/pom.xml b/pom.xml index 43266f0a..4a8d667a 100644 --- a/pom.xml +++ b/pom.xml @@ -166,38 +166,4 @@ - - - - release - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-source - - aggregate - - - - - - - - From 194b2ca5d3175119e4186861da5a704442a7d4ef Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 07:59:59 +0100 Subject: [PATCH 108/306] Update checkBuild.yml --- .github/workflows/checkBuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 8303309f..8f9cb49a 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -80,4 +80,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -pl microstream-v7 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 7f04a13faf97e81d03dd549ecac10d3fda4f0c81 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 08:01:37 +0100 Subject: [PATCH 109/306] Update checkBuild.yml --- .github/workflows/checkBuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 8f9cb49a..534aec3e 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -80,4 +80,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl microstream-v7 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 87119cd3d50304f77b8460f92e4863a9ced7d6df Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 09:38:56 +0100 Subject: [PATCH 110/306] Updated super pom for release --- .../microstream/MigrationEmbeddedStorage.java | 5 +- .../MigrationEmbeddedStorageManager.java | 10 ++-- .../microstream/MigrationManager.java | 2 +- .../microstream/MigrationScript.java | 2 +- .../TunnelingEmbeddedStorageManager.java | 2 +- .../microstream/MigrationEmbeddedStorage.java | 8 +-- .../MigrationEmbeddedStorageManager.java | 10 ++-- .../microstream/MigrationManager.java | 2 +- .../microstream/MigrationScript.java | 2 +- .../TunnelingEmbeddedStorageManager.java | 6 +-- .../microstream/MigrationEmbeddedStorage.java | 8 +-- .../MigrationEmbeddedStorageManager.java | 6 +-- .../microstream/MigrationManager.java | 2 +- .../microstream/MigrationScript.java | 2 +- .../TunnelingEmbeddedStorageManager.java | 6 +-- pom.xml | 50 +++++++++++++++++-- 16 files changed, 83 insertions(+), 40 deletions(-) diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index cc4be8f3..946ebe59 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -5,7 +5,6 @@ import software.xdev.micromigration.migrater.MicroMigrater; import one.microstream.afs.nio.types.NioFileSystem; -import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import one.microstream.storage.types.Storage; @@ -13,8 +12,8 @@ /** - * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for - * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. + * Provides static utility calls to create the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. * * @author Johannes Rabauer * diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 0ca5cd6a..b358b832 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -11,14 +11,14 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link Versioned} + * Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * + * Internally uses the {@link software.xdev.micromigration.microstream.MigrationManager} to do the actual migration. + * * @author Johannes Rabauer - * + * */ public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager { diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 11dea89e..3a9ed592 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -15,7 +15,7 @@ * Manages a given object and keeps the version for it. *

* Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * datastore versioned. Since it is not integrated like the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} * multiple versioned objects can be used in one datastore. * * @author Johannes Rabauer diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 17f5ae71..48df48b6 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -8,7 +8,7 @@ * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScript#migrate(Context)} method is called, + * After the {@link software.xdev.micromigration.scripts.MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 81505d80..153f7b96 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -27,7 +27,7 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index cc4be8f3..a6676ef7 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -13,11 +13,11 @@ /** - * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for - * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. - * + * Provides static utility calls to create the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. + * * @author Johannes Rabauer - * + * */ public class MigrationEmbeddedStorage { diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 0ca5cd6a..b358b832 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -11,14 +11,14 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link Versioned} + * Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * + * Internally uses the {@link software.xdev.micromigration.microstream.MigrationManager} to do the actual migration. + * * @author Johannes Rabauer - * + * */ public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager { diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 11dea89e..3a9ed592 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -15,7 +15,7 @@ * Manages a given object and keeps the version for it. *

* Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * datastore versioned. Since it is not integrated like the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} * multiple versioned objects can be used in one datastore. * * @author Johannes Rabauer diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 17f5ae71..48df48b6 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -8,7 +8,7 @@ * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScript#migrate(Context)} method is called, + * After the {@link software.xdev.micromigration.scripts.MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index da48bc8c..028ce0a2 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -27,14 +27,14 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
* Internally uses the {@link MigrationManager} to do the actual migration. - * + * * @author Johannes Rabauer - * + * */ public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager { diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index cc4be8f3..a6676ef7 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -13,11 +13,11 @@ /** - * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for - * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. - * + * Provides static utility calls to create the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. + * * @author Johannes Rabauer - * + * */ public class MigrationEmbeddedStorage { diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 0ca5cd6a..a386b73b 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -11,11 +11,11 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link Versioned} + * Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. + * Internally uses the {@link software.xdev.micromigration.microstream.MigrationManager} to do the actual migration. * * @author Johannes Rabauer * diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 11dea89e..3a9ed592 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -15,7 +15,7 @@ * Manages a given object and keeps the version for it. *

* Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link MigrationEmbeddedStorageManager} + * datastore versioned. Since it is not integrated like the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} * multiple versioned objects can be used in one datastore. * * @author Johannes Rabauer diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 17f5ae71..48df48b6 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -8,7 +8,7 @@ * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScript#migrate(Context)} method is called, + * After the {@link software.xdev.micromigration.scripts.MigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index da48bc8c..028ce0a2 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -27,14 +27,14 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
* Internally uses the {@link MigrationManager} to do the actual migration. - * + * * @author Johannes Rabauer - * + * */ public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager { diff --git a/pom.xml b/pom.xml index 4a8d667a..0c0a6760 100644 --- a/pom.xml +++ b/pom.xml @@ -159,11 +159,55 @@ maven-surefire-plugin 2.22.2 + + + org.apache.maven.plugins + maven-javadoc-plugin + + ${java.version} + UTF-8 + false + + -Xdoclint:none + -Xdoclint:none + + + + attach-javadocs + + aggregate-jar + + package + + + - org.jreleaser - jreleaser-maven-plugin - 1.3.1 + org.apache.maven.plugins + maven-source-plugin + + + attach-source + + aggregate + + + + + + + release + + + + org.jreleaser + jreleaser-maven-plugin + 1.3.1 + + + + + From 3adf4d6d6b9d1268e295ff3e1c0860f4012aba17 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 09:41:24 +0100 Subject: [PATCH 111/306] Update checkBuild.yml --- .github/workflows/checkBuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 534aec3e..8303309f 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -80,4 +80,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From b2888cfd2f43727102f0237f4b111b9f42253364 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 09:48:08 +0100 Subject: [PATCH 112/306] Fixed Check Build --- .github/workflows/checkBuild.yml | 4 ++-- pom.xml | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 8303309f..2923cd53 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -58,7 +58,7 @@ jobs: name: jars-java-${{ matrix.java }} path: target/*.jar - publish: + publish dry run: runs-on: ubuntu-latest steps: - name: Checkout @@ -72,7 +72,7 @@ jobs: distribution: 'temurin' - name: Build project run: mvn -B -Prelease clean install - - name: Publish 'core' + - name: Publish project env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} diff --git a/pom.xml b/pom.xml index 0c0a6760..5b094b5e 100644 --- a/pom.xml +++ b/pom.xml @@ -8,6 +8,7 @@ software.xdev micro-migration MicroMigration + Multimodule project for Micro Migration pom From f6620db2b62775b90e5ac09acc1f979f1a13da17 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 09:50:28 +0100 Subject: [PATCH 113/306] Update checkBuild.yml --- .github/workflows/checkBuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 2923cd53..3fb1aa9b 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -58,7 +58,7 @@ jobs: name: jars-java-${{ matrix.java }} path: target/*.jar - publish dry run: + publish-dry-run: runs-on: ubuntu-latest steps: - name: Checkout From fcee25168db2ce12b398cf9ad960bb3c8ff66f74 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 10:11:33 +0100 Subject: [PATCH 114/306] Trying to change revision to global version --- core/pom.xml | 4 ++-- examples/pom.xml | 8 ++++---- microstream-v5/pom.xml | 6 +++--- microstream-v6/pom.xml | 6 +++--- microstream-v7/pom.xml | 6 +++--- pom.xml | 4 ++-- reflection/pom.xml | 6 +++--- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 5c341ef2..def5bba9 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - ${revision} + ${global.version} MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - ${revision} + ${global.version} diff --git a/examples/pom.xml b/examples/pom.xml index 50a395ce..93a84b77 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - ${revision} + ${global.version} MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - ${revision} + ${global.version} micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-microstream-v7 - ${revision} + ${global.version} software.xdev micro-migration-reflection - ${revision} + ${global.version} diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 0f819c5a..de572618 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - ${revision} + ${global.version} MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -14,7 +14,7 @@ software.xdev - ${revision} + ${global.version} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${global.version} one.microstream diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 283309e3..c60df691 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - ${revision} + ${global.version} MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -14,7 +14,7 @@ software.xdev - ${revision} + ${global.version} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${global.version} one.microstream diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index b9343b56..72d9c412 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - ${revision} + ${global.version} MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -14,7 +14,7 @@ software.xdev - ${revision} + ${global.version} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${global.version} one.microstream diff --git a/pom.xml b/pom.xml index 5b094b5e..700990d9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - ${revision} + ${global.version} software.xdev micro-migration MicroMigration @@ -45,7 +45,7 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 - 0.0.3 + 0.0.3 diff --git a/reflection/pom.xml b/reflection/pom.xml index 973eb0c4..cbd33fa4 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - ${revision} + ${global.version} MicroMigration-Reflection Provides a migrater based on reflection @@ -14,7 +14,7 @@ software.xdev - ${revision} + ${global.version} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${global.version} org.reflections From 59ebc1306eb071357d171607150cac309a4afea8 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 10:14:35 +0100 Subject: [PATCH 115/306] Revert "Trying to change revision to global version" This reverts commit fcee25168db2ce12b398cf9ad960bb3c8ff66f74. --- core/pom.xml | 4 ++-- examples/pom.xml | 8 ++++---- microstream-v5/pom.xml | 6 +++--- microstream-v6/pom.xml | 6 +++--- microstream-v7/pom.xml | 6 +++--- pom.xml | 4 ++-- reflection/pom.xml | 6 +++--- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index def5bba9..5c341ef2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - ${global.version} + ${revision} MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - ${global.version} + ${revision} diff --git a/examples/pom.xml b/examples/pom.xml index 93a84b77..50a395ce 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - ${global.version} + ${revision} MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - ${global.version} + ${revision} micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-microstream-v7 - ${global.version} + ${revision} software.xdev micro-migration-reflection - ${global.version} + ${revision} diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index de572618..0f819c5a 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - ${global.version} + ${revision} MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -14,7 +14,7 @@ software.xdev - ${global.version} + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${global.version} + ${revision} one.microstream diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index c60df691..283309e3 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - ${global.version} + ${revision} MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -14,7 +14,7 @@ software.xdev - ${global.version} + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${global.version} + ${revision} one.microstream diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 72d9c412..b9343b56 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - ${global.version} + ${revision} MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -14,7 +14,7 @@ software.xdev - ${global.version} + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${global.version} + ${revision} one.microstream diff --git a/pom.xml b/pom.xml index 700990d9..5b094b5e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - ${global.version} + ${revision} software.xdev micro-migration MicroMigration @@ -45,7 +45,7 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 - 0.0.3 + 0.0.3 diff --git a/reflection/pom.xml b/reflection/pom.xml index cbd33fa4..973eb0c4 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - ${global.version} + ${revision} MicroMigration-Reflection Provides a migrater based on reflection @@ -14,7 +14,7 @@ software.xdev - ${global.version} + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${global.version} + ${revision} org.reflections From f0f8e5abbbd66c1e0ac1574ddc9def2470416031 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 10:21:41 +0100 Subject: [PATCH 116/306] Update pom.xml --- pom.xml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pom.xml b/pom.xml index 5b094b5e..2a58f131 100644 --- a/pom.xml +++ b/pom.xml @@ -196,19 +196,4 @@ - - - - release - - - - org.jreleaser - jreleaser-maven-plugin - 1.3.1 - - - - - From b2846e62b59dffd7d07d04d0416aca9a16b4f2ae Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 10:23:57 +0100 Subject: [PATCH 117/306] Test with static version --- core/pom.xml | 4 ++-- examples/pom.xml | 8 ++++---- microstream-v5/pom.xml | 6 +++--- microstream-v6/pom.xml | 6 +++--- microstream-v7/pom.xml | 6 +++--- pom.xml | 2 +- reflection/pom.xml | 6 +++--- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 5c341ef2..4db950b1 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - ${revision} + 0.0.3 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - ${revision} + 0.0.3 diff --git a/examples/pom.xml b/examples/pom.xml index 50a395ce..8a1ac63a 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - ${revision} + 0.0.3 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - ${revision} + 0.0.3 micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-microstream-v7 - ${revision} + 0.0.3 software.xdev micro-migration-reflection - ${revision} + 0.0.3 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 0f819c5a..93baf540 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - ${revision} + 0.0.3 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -14,7 +14,7 @@ software.xdev - ${revision} + 0.0.3 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + 0.0.3 one.microstream diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 283309e3..f2bde459 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - ${revision} + 0.0.3 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -14,7 +14,7 @@ software.xdev - ${revision} + 0.0.3 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + 0.0.3 one.microstream diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index b9343b56..e2b7cf59 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - ${revision} + 0.0.3 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -14,7 +14,7 @@ software.xdev - ${revision} + 0.0.3 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + 0.0.3 one.microstream diff --git a/pom.xml b/pom.xml index 2a58f131..f073fd6e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - ${revision} + 0.0.3 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 973eb0c4..696b9788 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - ${revision} + 0.0.3 MicroMigration-Reflection Provides a migrater based on reflection @@ -14,7 +14,7 @@ software.xdev - ${revision} + 0.0.3 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + 0.0.3 org.reflections From 67d3ea89cebc52bafdb501bf3480936345a5bb4b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 13:04:43 +0100 Subject: [PATCH 118/306] Tried v0.0.4 --- .github/workflows/release.yml | 40 ++--------------------------------- CHANGELOG.md | 5 ++++- README.md | 8 +++---- core/pom.xml | 4 ++-- examples/pom.xml | 8 +++---- microstream-v5/pom.xml | 6 +++--- microstream-v6/pom.xml | 6 +++--- microstream-v7/pom.xml | 6 +++--- pom.xml | 4 ++-- reflection/pom.xml | 6 +++--- 10 files changed, 30 insertions(+), 63 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aa5d6617..988f93d1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: distribution: 'temurin' - name: Build project run: mvn -B -Prelease clean install - - name: Publish 'core' + - name: Publish env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} @@ -26,40 +26,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl core -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy - - name: Publish 'reflection' - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl reflection -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy - - name: Publish 'micro-migration-microstream-v5' - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl microstream-v5 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy - - name: Publish 'micro-migration-microstream-v6' - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl microstream-v6 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy - - name: Publish 'micro-migration-microstream-v7' - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -pl microstream-v7 -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 77174b15..c1a601fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ +## 0.0.4 +* Fixed setup. 0.0.3 was not working with the release setup. + ## 0.0.3 * Restructured the complete maven modules. Multiple MicroStream-Versions are now supported. * Added plenty of documentation ## 0.0.2 -* Updated MicroStream from v4 to v5. \ No newline at end of file +* Updated MicroStream from v4 to v5. diff --git a/README.md b/README.md index 0c5cc98f..2ef713dd 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Simply add the dependency to your `pom.xml`: software.xdev micro-migration-microstream-v7 - 0.0.3 + 0.0.4 ``` @@ -128,7 +128,7 @@ To use this, you need to add the following dependency to your `pom.xml`: software.xdev micro-migration-reflection - 0.0.3 + 0.0.4 ``` @@ -147,7 +147,7 @@ then use `micro-migration-microstream-v7`) and exclude the dependent version of software.xdev micro-migration-microstream-v7 - 0.0.3 + 0.0.4 one.microstream @@ -167,4 +167,4 @@ Since there is rarely a breaking change, this works 90% of times. - [MvnRepository](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) # Contributing -We would love your input in any way. More about contributing: [CONTRIBUTING.md](CONTRIBUTING.md) \ No newline at end of file +We would love your input in any way. More about contributing: [CONTRIBUTING.md](CONTRIBUTING.md) diff --git a/core/pom.xml b/core/pom.xml index 4db950b1..bc8a438a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.3 + 0.0.4 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.3 + 0.0.4 diff --git a/examples/pom.xml b/examples/pom.xml index 8a1ac63a..d0c3dde5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.3 + 0.0.4 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.3 + 0.0.4 micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-microstream-v7 - 0.0.3 + 0.0.4 software.xdev micro-migration-reflection - 0.0.3 + 0.0.4 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 93baf540..9933c74f 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.3 + 0.0.4 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -14,7 +14,7 @@ software.xdev - 0.0.3 + 0.0.4 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.3 + 0.0.4 one.microstream diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index f2bde459..4b6ec8d9 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.3 + 0.0.4 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -14,7 +14,7 @@ software.xdev - 0.0.3 + 0.0.4 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.3 + 0.0.4 one.microstream diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index e2b7cf59..d1a2f2f3 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.3 + 0.0.4 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -14,7 +14,7 @@ software.xdev - 0.0.3 + 0.0.4 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.3 + 0.0.4 one.microstream diff --git a/pom.xml b/pom.xml index f073fd6e..f158e0d8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.3 + 0.0.4 software.xdev micro-migration MicroMigration @@ -45,7 +45,7 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 - 0.0.3 + 0.0.4 diff --git a/reflection/pom.xml b/reflection/pom.xml index 696b9788..dec34088 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.3 + 0.0.4 MicroMigration-Reflection Provides a migrater based on reflection @@ -14,7 +14,7 @@ software.xdev - 0.0.3 + 0.0.4 micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.3 + 0.0.4 org.reflections From fc9e40e5b15a3941c72407015187e8a7753c74e8 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 13:36:17 +0100 Subject: [PATCH 119/306] Cleanup --- .github/workflows/release.yml | 4 +--- examples/pom.xml | 16 ++++++++++++++++ pom.xml | 15 ++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 988f93d1..737d1d5c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,8 +16,6 @@ jobs: with: java-version: '11' distribution: 'temurin' - - name: Build project - run: mvn -B -Prelease clean install - name: Publish env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} @@ -26,4 +24,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy \ No newline at end of file diff --git a/examples/pom.xml b/examples/pom.xml index d0c3dde5..02d52c6d 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -26,4 +26,20 @@ 0.0.4 + + + + + org.jreleaser + jreleaser-maven-plugin + + + + true + + + + + + diff --git a/pom.xml b/pom.xml index f158e0d8..b362a887 100644 --- a/pom.xml +++ b/pom.xml @@ -144,7 +144,6 @@ - org.apache.maven.plugins @@ -196,4 +195,18 @@ + + + + release + + + + org.jreleaser + jreleaser-maven-plugin + + + + + From 9ec4ecb7304b097ceee04a2e2e130858ba636b29 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 13:44:19 +0100 Subject: [PATCH 120/306] Tried excluding Examples from release --- .github/workflows/checkBuild.yml | 2 +- examples/pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 3fb1aa9b..44c478cb 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -80,4 +80,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run \ No newline at end of file diff --git a/examples/pom.xml b/examples/pom.xml index 02d52c6d..be896641 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -34,9 +34,9 @@ jreleaser-maven-plugin - + true - + From a04318d29e862c6fc4e5f1538d4b7ce249600ac1 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 13:46:45 +0100 Subject: [PATCH 121/306] Fixed release --- .github/workflows/checkBuild.yml | 2 +- .github/workflows/release.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 44c478cb..60b95c13 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -80,4 +80,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run \ No newline at end of file + run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 737d1d5c..08ed899f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,4 +24,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy \ No newline at end of file + run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From 535f39f996bf070bf3a423251c9d55848593350c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 13:49:12 +0100 Subject: [PATCH 122/306] Fixed Release --- .github/workflows/checkBuild.yml | 2 +- .github/workflows/release.yml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 60b95c13..3fb1aa9b 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -80,4 +80,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 08ed899f..bf5306d0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,7 @@ name: Publish package to the Maven Central Repository on: push: + branches: [ main ] tags: - v* jobs: @@ -24,4 +25,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From b55c61f469cf6f08c3663c83ac7b80a6e3c27933 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 13:56:11 +0100 Subject: [PATCH 123/306] Fixed Release action --- examples/pom.xml | 16 ---------------- pom.xml | 1 - 2 files changed, 17 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index be896641..d0c3dde5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -26,20 +26,4 @@ 0.0.4 - - - - - org.jreleaser - jreleaser-maven-plugin - - - - true - - - - - - diff --git a/pom.xml b/pom.xml index b362a887..1d6363d4 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,6 @@ core reflection - examples microstream-v5 microstream-v6 microstream-v7 From 1c581dca80167a82c087d568c6f3829ab2e317f9 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 14:26:41 +0100 Subject: [PATCH 124/306] Tried cleanup --- pom.xml | 82 +++++++++++++++++++++++++-------------------------------- 1 file changed, 36 insertions(+), 46 deletions(-) diff --git a/pom.xml b/pom.xml index 1d6363d4..73d8ece9 100644 --- a/pom.xml +++ b/pom.xml @@ -74,15 +74,6 @@ - - org.apache.maven.plugins - maven-resources-plugin - 3.3.0 - - UTF-8 - - - org.apache.maven.plugins maven-javadoc-plugin @@ -129,9 +120,9 @@ ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false + https://s01.oss.sonatype.org/service/local + true + true target/staging-deploy @@ -158,40 +149,6 @@ maven-surefire-plugin 2.22.2 - - - org.apache.maven.plugins - maven-javadoc-plugin - - ${java.version} - UTF-8 - false - - -Xdoclint:none - -Xdoclint:none - - - - attach-javadocs - - aggregate-jar - - package - - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-source - - aggregate - - - - @@ -204,6 +161,39 @@ org.jreleaser jreleaser-maven-plugin + + org.apache.maven.plugins + maven-javadoc-plugin + + ${java.version} + UTF-8 + false + + -Xdoclint:none + -Xdoclint:none + + + + attach-javadocs + + aggregate-jar + + package + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-source + + aggregate + + + + From 6a0697c507d53837b4859b17fb751faf3714df14 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 14:35:21 +0100 Subject: [PATCH 125/306] Once again try with dynamic version number --- .github/workflows/checkBuild.yml | 2 -- core/pom.xml | 4 ++-- examples/pom.xml | 8 ++++---- microstream-v5/pom.xml | 6 +++--- microstream-v6/pom.xml | 6 +++--- microstream-v7/pom.xml | 6 +++--- pom.xml | 4 ++-- reflection/pom.xml | 6 +++--- 8 files changed, 20 insertions(+), 22 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 3fb1aa9b..d2d33336 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -70,8 +70,6 @@ jobs: with: java-version: '11' distribution: 'temurin' - - name: Build project - run: mvn -B -Prelease clean install - name: Publish project env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/core/pom.xml b/core/pom.xml index bc8a438a..5c341ef2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.4 + ${revision} MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.4 + ${revision} diff --git a/examples/pom.xml b/examples/pom.xml index d0c3dde5..50a395ce 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.4 + ${revision} MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.4 + ${revision} micro-migration @@ -18,12 +18,12 @@ software.xdev micro-migration-microstream-v7 - 0.0.4 + ${revision} software.xdev micro-migration-reflection - 0.0.4 + ${revision} diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 9933c74f..0f819c5a 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.4 + ${revision} MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -14,7 +14,7 @@ software.xdev - 0.0.4 + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.4 + ${revision} one.microstream diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 4b6ec8d9..283309e3 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.4 + ${revision} MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -14,7 +14,7 @@ software.xdev - 0.0.4 + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.4 + ${revision} one.microstream diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index d1a2f2f3..b9343b56 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.4 + ${revision} MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -14,7 +14,7 @@ software.xdev - 0.0.4 + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.4 + ${revision} one.microstream diff --git a/pom.xml b/pom.xml index 73d8ece9..deda819a 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.4 + ${revision} software.xdev micro-migration MicroMigration @@ -45,7 +45,7 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 - 0.0.4 + 0.0.5 diff --git a/reflection/pom.xml b/reflection/pom.xml index dec34088..973eb0c4 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.4 + ${revision} MicroMigration-Reflection Provides a migrater based on reflection @@ -14,7 +14,7 @@ software.xdev - 0.0.4 + ${revision} micro-migration @@ -22,7 +22,7 @@ software.xdev micro-migration-core - 0.0.4 + ${revision} org.reflections From efb3489e4f6e2ca339c42c340910e430de11b180 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 15 Dec 2022 15:03:29 +0100 Subject: [PATCH 126/306] Test with static version --- core/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/pom.xml b/core/pom.xml index 5c341ef2..adf11595 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -11,7 +11,7 @@ software.xdev micro-migration - ${revision} + 0.0.5 From 2b87e9194ce2446b92c2affb89b445c20972789d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 07:47:03 +0100 Subject: [PATCH 127/306] Trying to set the redundant relativePath --- core/pom.xml | 3 ++- pom.xml | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/pom.xml b/core/pom.xml index adf11595..8ab23291 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -11,7 +11,8 @@ software.xdev micro-migration - 0.0.5 + ${revision} + ../pom.xml diff --git a/pom.xml b/pom.xml index deda819a..034fd34e 100644 --- a/pom.xml +++ b/pom.xml @@ -74,6 +74,14 @@ + + org.apache.maven.plugins + maven-resources-plugin + 3.3.0 + + UTF-8 + + org.apache.maven.plugins maven-javadoc-plugin From ece9c37b003e20f1ff67c2fd34c2007ecd1bb847 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 07:58:47 +0100 Subject: [PATCH 128/306] Trying to build with pre build --- .github/workflows/checkBuild.yml | 2 ++ core/pom.xml | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index d2d33336..7eddb320 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -70,6 +70,8 @@ jobs: with: java-version: '11' distribution: 'temurin' + - name: Build with Maven + run: mvn -B clean install - name: Publish project env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/core/pom.xml b/core/pom.xml index 8ab23291..5c341ef2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -12,7 +12,6 @@ software.xdev micro-migration ${revision} - ../pom.xml From a46eef69b96aa8a5b57889af30e78a9ca4613dfc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 09:26:37 +0100 Subject: [PATCH 129/306] Fixed revision reference --- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 2 +- microstream-v6/pom.xml | 2 +- microstream-v7/pom.xml | 2 +- reflection/pom.xml | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index 50a395ce..0bf3f609 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -18,12 +18,12 @@ software.xdev micro-migration-microstream-v7 - ${revision} + ${project.version} software.xdev micro-migration-reflection - ${revision} + ${project.version} diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 0f819c5a..30fde8c1 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${project.version} one.microstream diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 283309e3..87355c91 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${project.version} one.microstream diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index b9343b56..7eac00bf 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -22,7 +22,7 @@ software.xdev micro-migration-core - ${revision} + ${project.version} one.microstream diff --git a/reflection/pom.xml b/reflection/pom.xml index 973eb0c4..ccd25e15 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -14,15 +14,15 @@ software.xdev - ${revision} micro-migration + ${revision} software.xdev micro-migration-core - ${revision} + ${project.version} org.reflections From 32e01166eb3d1c1e2ec84b12380b0cbd8bb99484 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 09:32:39 +0100 Subject: [PATCH 130/306] Replaced revision since it's not working witch JReleaser --- core/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 3 +-- reflection/pom.xml | 4 ++-- 7 files changed, 13 insertions(+), 14 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 5c341ef2..bc8a438a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - ${revision} + 0.0.4 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - ${revision} + 0.0.4 diff --git a/examples/pom.xml b/examples/pom.xml index 0bf3f609..775f7ffb 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - ${revision} + 0.0.4 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - ${revision} + 0.0.4 micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 30fde8c1..d6c19dd3 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - ${revision} + 0.0.4 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -14,8 +14,8 @@ software.xdev - ${revision} micro-migration + 0.0.4 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 87355c91..093f1531 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - ${revision} + 0.0.4 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -14,8 +14,8 @@ software.xdev - ${revision} micro-migration + 0.0.4 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 7eac00bf..ea001885 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - ${revision} + 0.0.4 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -14,8 +14,8 @@ software.xdev - ${revision} micro-migration + 0.0.4 diff --git a/pom.xml b/pom.xml index 034fd34e..7ac6e89c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - ${revision} + 0.0.4 software.xdev micro-migration MicroMigration @@ -45,7 +45,6 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 - 0.0.5 diff --git a/reflection/pom.xml b/reflection/pom.xml index ccd25e15..5f490df8 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - ${revision} + 0.0.4 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - ${revision} + 0.0.4 From f83683be0f8d3ee56f1b5cb8b87edd0222b717e4 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 09:36:00 +0100 Subject: [PATCH 131/306] Added Snapshot to version --- core/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index bc8a438a..f1f70ab9 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.4 + 0.0.4-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.4 + 0.0.4-SNAPSHOT diff --git a/examples/pom.xml b/examples/pom.xml index 775f7ffb..b896d4d7 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.4 + 0.0.4-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.4 + 0.0.4-SNAPSHOT micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index d6c19dd3..834b8c57 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.4 + 0.0.4-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4 + 0.0.4-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 093f1531..b618a642 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.4 + 0.0.4-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4 + 0.0.4-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index ea001885..3d148bc0 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.4 + 0.0.4-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4 + 0.0.4-SNAPSHOT diff --git a/pom.xml b/pom.xml index 7ac6e89c..10ec0a34 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.4 + 0.0.4-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 5f490df8..0f34cd8a 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.4 + 0.0.4-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4 + 0.0.4-SNAPSHOT From 4fed300757de076dac1a380b8333a8b4c569f7b8 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 09:47:44 +0100 Subject: [PATCH 132/306] Update release.yml --- .github/workflows/release.yml | 98 +++++++++++++++++++++++++++++++++-- 1 file changed, 94 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bf5306d0..9d4e2b7e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,10 +2,72 @@ name: Publish package to the Maven Central Repository on: push: branches: [ main ] - tags: - - v* jobs: - publish: + check_build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - name: Build with Maven + run: mvn -B clean verify + prepare_release: + runs-on: ubuntu-latest + needs: [check_build] + outputs: + upload_url: ${{ steps.create_draft.outputs.upload_url }} + steps: + - uses: actions/checkout@v3 + + - name: Configure Git + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + + - name: Un-SNAP + run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false + + - name: Get version + id: version + run: | + echo "::set-output name=release::$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" + + - name: Commit and Push + run: | + git add -A + git commit -m "Release ${{ steps.version.outputs.release }}" + git push origin + git tag v${{ steps.version.outputs.release }} + git push origin --tags + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: v${{ steps.version.outputs.release }} + release_name: v${{ steps.version.outputs.release }} + commitish: master + body: | + ## Installation + Add the following lines to your pom: + ```XML + + software.xdev + micro-migration-microstream-v7 + ${{ steps.version.outputs.release }} + + ``` + draft: false + prerelease: false + publish_central: runs-on: ubuntu-latest steps: - name: Checkout @@ -25,4 +87,32 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + after_release: + runs-on: ubuntu-latest + needs: [publish_central] + steps: + - uses: actions/checkout@v3 + + - name: Init Git and pull + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git pull + + - name: Inc Version and SNAP root + run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true + + - name: Git Commit and Push + run: | + git add -A + git commit -m "Preparing for next development iteration" + git push origin + + - name: pull-request + uses: repo-sync/pull-request@v2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + destination_branch: "develop" + pr_title: "Sync back" + pr_body: "An automated PR to sync changes back" \ No newline at end of file From 5d4495a353fd7e1ab93989d5f93f8e38ee15ea42 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 09:52:14 +0100 Subject: [PATCH 133/306] Fixed release.yml --- .github/workflows/release.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d4e2b7e..9b243fc5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,11 +69,10 @@ jobs: prerelease: false publish_central: runs-on: ubuntu-latest + needs: [prepare_release] steps: - name: Checkout uses: actions/checkout@v3 - with: - fetch-depth: 0 - name: Set up Java uses: actions/setup-java@v3 with: From 925527eff7c101b4ef9647a29976cede11c0fd48 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 09:58:33 +0100 Subject: [PATCH 134/306] Fixed warning in release --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9b243fc5..e2d5d76c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -36,7 +36,7 @@ jobs: - name: Get version id: version run: | - echo "::set-output name=release::$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" + echo "release=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT - name: Commit and Push run: | From 638e8b5f99dd325caae83897f9ed62fb5eb963dc Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 09:11:22 +0000 Subject: [PATCH 135/306] Release 0.0.4 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index f1f70ab9..bc8a438a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.4-SNAPSHOT + 0.0.4 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.4 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 834b8c57..d6c19dd3 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.4-SNAPSHOT + 0.0.4 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.4 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index b618a642..093f1531 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.4-SNAPSHOT + 0.0.4 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.4 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 3d148bc0..ea001885 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.4-SNAPSHOT + 0.0.4 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.4 diff --git a/pom.xml b/pom.xml index 10ec0a34..7ac6e89c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.4-SNAPSHOT + 0.0.4 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 0f34cd8a..5f490df8 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.4-SNAPSHOT + 0.0.4 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.4 From 4199c436f7fa1fd712acfc9c807fd64d82356323 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 10:17:52 +0100 Subject: [PATCH 136/306] Version update --- .github/workflows/checkBuild.yml | 5 +++-- .github/workflows/release.yml | 5 +++++ CHANGELOG.md | 3 +++ README.md | 6 +++--- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 10 files changed, 25 insertions(+), 16 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 7eddb320..eda49ce9 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -35,6 +35,9 @@ jobs: - name: Build with Maven run: mvn -B clean verify + - name: Build examples with Maven + run: mvn -B -pl examples clean verify + - name: Check for uncommited changes run: | if [[ "$(git status --porcelain)" != "" ]]; then @@ -70,8 +73,6 @@ jobs: with: java-version: '11' distribution: 'temurin' - - name: Build with Maven - run: mvn -B clean install - name: Publish project env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e2d5d76c..b1ccdc14 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,6 +32,8 @@ jobs: - name: Un-SNAP run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false + - name: Un-SNAP examples + run: mvn -B -pl examples versions:set -DremoveSnapshot -DgenerateBackupPoms=false - name: Get version id: version @@ -101,6 +103,9 @@ jobs: - name: Inc Version and SNAP root run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true + + - name: Inc Version and SNAP root from examples + run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true - name: Git Commit and Push run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index c1a601fe..1dd01a46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.0.5 +* Tried a new release-action. + ## 0.0.4 * Fixed setup. 0.0.3 was not working with the release setup. diff --git a/README.md b/README.md index 2ef713dd..cf3e8450 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Simply add the dependency to your `pom.xml`: software.xdev micro-migration-microstream-v7 - 0.0.4 + 0.0.5 ``` @@ -128,7 +128,7 @@ To use this, you need to add the following dependency to your `pom.xml`: software.xdev micro-migration-reflection - 0.0.4 + 0.0.5 ``` @@ -147,7 +147,7 @@ then use `micro-migration-microstream-v7`) and exclude the dependent version of software.xdev micro-migration-microstream-v7 - 0.0.4 + 0.0.5 one.microstream diff --git a/core/pom.xml b/core/pom.xml index f1f70ab9..2cf5ef8e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 834b8c57..823e6e1c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index b618a642..07758b27 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 3d148bc0..38a0e193 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/pom.xml b/pom.xml index 10ec0a34..03914ee3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 0f34cd8a..8a0751fc 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT From a75836b8cd0b1f008f2a4ddb46446dfa86592d15 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 10:25:19 +0100 Subject: [PATCH 137/306] Fixed GitHub Actions --- .github/workflows/checkBuild.yml | 3 ++- .github/workflows/release.yml | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index eda49ce9..520b0021 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -36,7 +36,8 @@ jobs: run: mvn -B clean verify - name: Build examples with Maven - run: mvn -B -pl examples clean verify + run: mvn -B clean verify + working-directory: examples - name: Check for uncommited changes run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b1ccdc14..c8de0b45 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,8 +8,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - with: - fetch-depth: 0 - name: Set up Java uses: actions/setup-java@v3 with: @@ -33,7 +31,8 @@ jobs: - name: Un-SNAP run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false - name: Un-SNAP examples - run: mvn -B -pl examples versions:set -DremoveSnapshot -DgenerateBackupPoms=false + run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false + working-directory: examples - name: Get version id: version @@ -106,6 +105,8 @@ jobs: - name: Inc Version and SNAP root from examples run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true + working-directory: examples + - name: Git Commit and Push run: | From 3ecf244afa0bfc9331e05cf26114ad84eab5a310 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 10:26:20 +0100 Subject: [PATCH 138/306] Fixed examples version --- examples/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index b896d4d7..08bb7f80 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.4-SNAPSHOT + 0.0.5-SNAPSHOT micro-migration From 61df194a6d1abfc778bc922215e3b55a07583a04 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 10:43:51 +0100 Subject: [PATCH 139/306] Excluded examples from versioning --- .github/workflows/checkBuild.yml | 6 +----- .github/workflows/release.yml | 10 +--------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 520b0021..8960ffa0 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -7,7 +7,7 @@ on: paths-ignore: - '**.md' pull_request: - branches: [ main, develop ] + branches: [ develop ] paths-ignore: - '**.md' @@ -35,10 +35,6 @@ jobs: - name: Build with Maven run: mvn -B clean verify - - name: Build examples with Maven - run: mvn -B clean verify - working-directory: examples - - name: Check for uncommited changes run: | if [[ "$(git status --porcelain)" != "" ]]; then diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c8de0b45..9100a3e5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,9 +30,6 @@ jobs: - name: Un-SNAP run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false - - name: Un-SNAP examples - run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false - working-directory: examples - name: Get version id: version @@ -102,12 +99,7 @@ jobs: - name: Inc Version and SNAP root run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true - - - name: Inc Version and SNAP root from examples - run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true - working-directory: examples - - + - name: Git Commit and Push run: | git add -A From 146d756e212bab25a0ec06f571adbd90d599975f Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 09:47:48 +0000 Subject: [PATCH 140/306] Release 0.0.5 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 2cf5ef8e..8aa6e9c0 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 823e6e1c..919a99ac 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 07758b27..31db9d75 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 38a0e193..1682b8c1 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/pom.xml b/pom.xml index 03914ee3..4689735d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5-SNAPSHOT + 0.0.5 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 8a0751fc..d7c7d0b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 From 2d9373e0881aa9fc5f95085ce4a11f3e278fc9fc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 10:56:38 +0100 Subject: [PATCH 141/306] Update release.yml --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9100a3e5..334e7ccd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,13 +46,13 @@ jobs: - name: Create Release id: create_release - uses: actions/create-release@v1 + uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: v${{ steps.version.outputs.release }} - release_name: v${{ steps.version.outputs.release }} - commitish: master + name: v${{ steps.version.outputs.release }} + target_commitish: main body: | ## Installation Add the following lines to your pom: From 88c9fec2a1704b62fb5019bd8625f47ddcfe0ccd Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 10:57:00 +0100 Subject: [PATCH 142/306] Revert "Release 0.0.5" This reverts commit 146d756e212bab25a0ec06f571adbd90d599975f. --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8aa6e9c0..2cf5ef8e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 919a99ac..823e6e1c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 31db9d75..07758b27 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 1682b8c1..38a0e193 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/pom.xml b/pom.xml index 4689735d..03914ee3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5 + 0.0.5-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index d7c7d0b7..8a0751fc 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT From c06bdd662a33784b2a9140d52f4770dbfc847f03 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 09:59:26 +0000 Subject: [PATCH 143/306] Release 0.0.5 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 2cf5ef8e..8aa6e9c0 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 823e6e1c..919a99ac 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 07758b27..31db9d75 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 38a0e193..1682b8c1 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/pom.xml b/pom.xml index 03914ee3..4689735d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5-SNAPSHOT + 0.0.5 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 8a0751fc..d7c7d0b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 From 2b9bbacfdc7a74a9282863a85d4e2343af3b671b Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 10:01:29 +0000 Subject: [PATCH 144/306] Preparing for next development iteration --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8aa6e9c0..ea471451 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 919a99ac..6b6ce218 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 31db9d75..05f0043f 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 1682b8c1..85935d7c 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/pom.xml b/pom.xml index 4689735d..27d28b9f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5 + 0.0.6-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index d7c7d0b7..2bf0c9dd 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT From a3a12c0511530af14c65d9672cf4b188066646fb Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 11:51:54 +0100 Subject: [PATCH 145/306] Fixed miss pull after version change --- .github/workflows/release.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 334e7ccd..0db96300 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -71,6 +71,13 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 + # This might seem strange, but in order to see the Version update from the previous step, + # we must pull this change from git. + - name: Init Git and pull + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git pull - name: Set up Java uses: actions/setup-java@v3 with: From 34805de1fdde6f0459a9115daf24d7ae8320b7ee Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 12:02:09 +0100 Subject: [PATCH 146/306] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cf3e8450..88193e1e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration-core)](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) -[![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/main)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Amain) +[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/versions) +[![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/main)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) @@ -136,9 +136,9 @@ To use this, you need to add the following dependency to your `pom.xml`: Micro migration currently supports the following MicroStream versions: | MicroStream Version | Micro migration artifact Id | | --- | --- | -| 05.00.02-MS-GA | micro-migration-microstream-v5 | -| 06.01.00-MS-GA | micro-migration-microstream-v6 | -| 07.01.00-MS-GA | micro-migration-microstream-v7 | +| [05.00.02-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | +| [06.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | +| [07.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | If you are using a different, not listed version of MicroStream, this shouldn't be a problem. Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `07.00.00-MS-GA`, @@ -164,7 +164,7 @@ Since there is rarely a breaking change, this works 90% of times. # Links - [Javadoc](https://javadoc.io/doc/software.xdev/micro-migration-core/latest/index.html) -- [MvnRepository](https://mvnrepository.com/artifact/software.xdev/micro-migration-core) +- [Maven central repository](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/version) # Contributing We would love your input in any way. More about contributing: [CONTRIBUTING.md](CONTRIBUTING.md) From 7cf49007f58e18b8492c71790fa232f97c40191e Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 12:04:07 +0100 Subject: [PATCH 147/306] Revert to v0.0.5 because of problems with release --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index ea471451..2cf5ef8e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 6b6ce218..823e6e1c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 05f0043f..07758b27 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 85935d7c..38a0e193 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT diff --git a/pom.xml b/pom.xml index 27d28b9f..03914ee3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 2bf0c9dd..8a0751fc 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.5-SNAPSHOT From 8ffb359795e8db01d9d07b7435be46a330b83b44 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 11:06:10 +0000 Subject: [PATCH 148/306] Release 0.0.5 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 2cf5ef8e..8aa6e9c0 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 823e6e1c..919a99ac 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 07758b27..31db9d75 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 38a0e193..1682b8c1 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/pom.xml b/pom.xml index 03914ee3..4689735d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5-SNAPSHOT + 0.0.5 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 8a0751fc..d7c7d0b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 From f587be86d1947f8758f536ab47d12e6cdbdb9d09 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 13:21:50 +0100 Subject: [PATCH 149/306] Workaround because releasing right away does not work --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 03914ee3..0f2892e1 100644 --- a/pom.xml +++ b/pom.xml @@ -128,8 +128,8 @@ ALWAYS https://s01.oss.sonatype.org/service/local - true - true + false + false target/staging-deploy From c58ebda9a4ee81072add5d4d897c5d391413d745 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 13:22:28 +0100 Subject: [PATCH 150/306] Revert "Release 0.0.5" This reverts commit 8ffb359795e8db01d9d07b7435be46a330b83b44. --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8aa6e9c0..2cf5ef8e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 919a99ac..823e6e1c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 31db9d75..07758b27 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 1682b8c1..38a0e193 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/pom.xml b/pom.xml index 4689735d..03914ee3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5 + 0.0.5-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index d7c7d0b7..8a0751fc 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT From 64a8b2e619f818365d174a8eb524ec313052abd3 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 12:24:35 +0000 Subject: [PATCH 151/306] Release 0.0.5 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 2cf5ef8e..8aa6e9c0 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 823e6e1c..919a99ac 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 07758b27..31db9d75 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 38a0e193..1682b8c1 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/pom.xml b/pom.xml index 0f2892e1..138ddf3e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5-SNAPSHOT + 0.0.5 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 8a0751fc..d7c7d0b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 From d3c4adebf154fe6ab04715e69574d42e2942d606 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 13:28:41 +0100 Subject: [PATCH 152/306] Revert "Release 0.0.5" This reverts commit 64a8b2e619f818365d174a8eb524ec313052abd3. --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8aa6e9c0..2cf5ef8e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 919a99ac..823e6e1c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 31db9d75..07758b27 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 1682b8c1..38a0e193 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT diff --git a/pom.xml b/pom.xml index 138ddf3e..0f2892e1 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5 + 0.0.5-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index d7c7d0b7..8a0751fc 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5 + 0.0.5-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.5-SNAPSHOT From 907942be4afb1c31c1dcc0e4576a4e587da6065c Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 12:29:57 +0000 Subject: [PATCH 153/306] Release 0.0.5 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 2cf5ef8e..8aa6e9c0 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 823e6e1c..919a99ac 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 07758b27..31db9d75 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 38a0e193..1682b8c1 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 diff --git a/pom.xml b/pom.xml index 0f2892e1..138ddf3e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5-SNAPSHOT + 0.0.5 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 8a0751fc..d7c7d0b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5-SNAPSHOT + 0.0.5 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5-SNAPSHOT + 0.0.5 From c6f20755802180ab1e761e835eabd2a5ffb665b2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 12:33:23 +0000 Subject: [PATCH 154/306] Preparing for next development iteration --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 8aa6e9c0..ea471451 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 919a99ac..6b6ce218 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 31db9d75..05f0043f 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 1682b8c1..85935d7c 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT diff --git a/pom.xml b/pom.xml index 138ddf3e..46cca8b5 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.5 + 0.0.6-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index d7c7d0b7..2bf0c9dd 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.5 + 0.0.6-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.5 + 0.0.6-SNAPSHOT From 94f70399bdc47281a534fba15099d09ee05329dc Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Fri, 16 Dec 2022 14:13:03 +0100 Subject: [PATCH 155/306] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 35 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 +++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..d9cdd08a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,35 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Implemented Micro migration like this... +2. Started datastore... +3. Restarted datastore... + + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Environment (please complete the following information):** + - OS: [e.g. Windows 10, Ubuntu] + - Java version [e.g. Java 11] + - IDE [e.g. eclipse, intellij] + - MicroStream version [e.g. 07.01.00-MS-GA] + - Micro migration version [e.g. 22] + - Maven pom.xml [relevant parts] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..bbcbbe7d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From bf187341d36ef59d831a44a55be0c75cfd1ca60c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 16 Dec 2022 15:01:10 +0100 Subject: [PATCH 156/306] Fixes for new version --- CHANGELOG.md | 3 +++ README.md | 6 +++--- examples/pom.xml | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dd01a46..429500ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.0.6 +* Tried a new release-action...again. + ## 0.0.5 * Tried a new release-action. diff --git a/README.md b/README.md index 88193e1e..101a6047 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Simply add the dependency to your `pom.xml`: software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.6 ``` @@ -128,7 +128,7 @@ To use this, you need to add the following dependency to your `pom.xml`: software.xdev micro-migration-reflection - 0.0.5 + 0.0.6 ``` @@ -147,7 +147,7 @@ then use `micro-migration-microstream-v7`) and exclude the dependent version of software.xdev micro-migration-microstream-v7 - 0.0.5 + 0.0.6 one.microstream diff --git a/examples/pom.xml b/examples/pom.xml index 08bb7f80..e54c2af0 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.5-SNAPSHOT + 0.0.6 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.5-SNAPSHOT + 0.0.6 micro-migration From 3824d3de1d0616025f5b8f27c137c539726bb392 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 14:02:58 +0000 Subject: [PATCH 157/306] Release 0.0.6 --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index ea471451..f5331d7e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.6-SNAPSHOT + 0.0.6 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.6 diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 6b6ce218..bd1f3b3a 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.6-SNAPSHOT + 0.0.6 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.6 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 05f0043f..5b4d80ed 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.6-SNAPSHOT + 0.0.6 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.6 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 85935d7c..0bc674a9 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.6-SNAPSHOT + 0.0.6 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.6 diff --git a/pom.xml b/pom.xml index 46cca8b5..e3fdc19f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.6-SNAPSHOT + 0.0.6 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 2bf0c9dd..9a9d0098 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.6-SNAPSHOT + 0.0.6 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6-SNAPSHOT + 0.0.6 From 884f556de9d063fd1083988006234f42923ec370 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 16 Dec 2022 14:06:29 +0000 Subject: [PATCH 158/306] Preparing for next development iteration --- core/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index f5331d7e..194147c7 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-core - 0.0.6 + 0.0.7-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.6 + 0.0.7-SNAPSHOT diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index bd1f3b3a..0ee2cb25 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.6 + 0.0.7-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6 + 0.0.7-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 5b4d80ed..ccc26821 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.6 + 0.0.7-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6 + 0.0.7-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 0bc674a9..7d292366 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.6 + 0.0.7-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6 + 0.0.7-SNAPSHOT diff --git a/pom.xml b/pom.xml index e3fdc19f..1decbafc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.6 + 0.0.7-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 9a9d0098..cd65e5bd 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.6 + 0.0.7-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.6 + 0.0.7-SNAPSHOT From 6f69b83229e723d44b16df844005c22573ca0a34 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Mon, 19 Dec 2022 13:16:26 +0100 Subject: [PATCH 159/306] Create SECURITY.md --- SECURITY.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..03bbbd46 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,20 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| < 0.0.6 | :x: | +| > 0.0.6 | :white_check_mark: | + +## Supported MicroStream versions +Micro migration currently supports the following MicroStream versions: +| MicroStream Version | Micro migration artifact Id | +| --- | --- | +| [05.00.02-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | +| [06.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | +| [07.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | + +## Reporting a Vulnerability + +Instructions for reporting a vulnerability can be found on the [CONTRIBUTING page](CONTRIBUTING.md). From 62ee00e65e5a037253743b2cb5f365bccccc4f85 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 19 Dec 2022 13:22:36 +0100 Subject: [PATCH 160/306] Created rudimentary pr-template --- pull_request_template.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 pull_request_template.md diff --git a/pull_request_template.md b/pull_request_template.md new file mode 100644 index 00000000..149f9339 --- /dev/null +++ b/pull_request_template.md @@ -0,0 +1,4 @@ +## What does this PR do? + +## Checklist before merging +- [ ] If its a core feature, I have added through test. \ No newline at end of file From f0720539553a1780d8da1dc66eb60d5b60dd3d76 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Mon, 19 Dec 2022 14:10:01 +0100 Subject: [PATCH 161/306] Create codeql.yml --- .github/workflows/codeql.yml | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000..70a157d5 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,76 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ "develop", main ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ "develop" ] + schedule: + - cron: '27 16 * * 6' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'java' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Use only 'java' to analyze code written in Java, Kotlin or both + # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" From b54e4c2fb5767246a7d5afda6f6375bd3b95474f Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 19 Dec 2022 14:27:27 +0100 Subject: [PATCH 162/306] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 101a6047..70af09ef 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ +![License](https://img.shields.io/github/license/xdev-software/micro-migration) [![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/versions) -[![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/main)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) +[![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) +![Twitter Follow](https://img.shields.io/twitter/follow/XDEVSoftware) # Micro migration When you think about default database setup, you probably imagine something like this: From 8a7dad04357076c936a57ebbdf5cd3fec1c35e30 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 19 Dec 2022 14:29:39 +0100 Subject: [PATCH 163/306] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70af09ef..e8a98e62 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) -![Twitter Follow](https://img.shields.io/twitter/follow/XDEVSoftware) +[![Twitter Follow](https://img.shields.io/twitter/follow/XDEVSoftware)](https://twitter.com/XDEVSoftware) # Micro migration When you think about default database setup, you probably imagine something like this: From c95fa1b159be749779943218dde4c53d667a096c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 19 Dec 2022 14:38:18 +0100 Subject: [PATCH 164/306] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e8a98e62..b4d6a458 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![License](https://img.shields.io/github/license/xdev-software/micro-migration) [![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/versions) -[![Build](https://img.shields.io/github/workflow/status/xdev-software/micro-migration/Check%20Build/develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) +[![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/micro-migration/checkBuild.yml?branch=develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) [![Twitter Follow](https://img.shields.io/twitter/follow/XDEVSoftware)](https://twitter.com/XDEVSoftware) From 73f559a57d3d4c492b280878da896266911044df Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 19 Dec 2022 15:06:13 +0100 Subject: [PATCH 165/306] Activated Caching for maven in github actions --- .github/workflows/checkBuild.yml | 1 + .github/workflows/release.yml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 8960ffa0..2a90003b 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -70,6 +70,7 @@ jobs: with: java-version: '11' distribution: 'temurin' + cache: 'maven' - name: Publish project env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0db96300..794e8d2e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,6 +13,7 @@ jobs: with: java-version: '11' distribution: 'temurin' + cache: 'maven' - name: Build with Maven run: mvn -B clean verify prepare_release: @@ -83,6 +84,7 @@ jobs: with: java-version: '11' distribution: 'temurin' + cache: 'maven' - name: Publish env: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} From 809b435261620f971f337aa1b61e38dd52c7f2cd Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 19 Dec 2022 15:09:26 +0100 Subject: [PATCH 166/306] Added abstract to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index b4d6a458..9f1a1a3d 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,10 @@ [![Twitter Follow](https://img.shields.io/twitter/follow/XDEVSoftware)](https://twitter.com/XDEVSoftware) # Micro migration +Tiny java library to migrate MicroStream datastores. +Applies migration scripts on the datastores to keep them up to date. + +## Intro When you think about default database setup, you probably imagine something like this: ![Imaginative system layout](./docs/MigrationSequence_1.png "Imaginative system layout") From 91cb49c4e9ed9dbf27e012a5f15d29bc4bcc44b9 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 21 Dec 2022 11:28:23 +0100 Subject: [PATCH 167/306] Abstracted BusinessBranchDummyBranch in exmaple --- ...alWithMigrationEmbeddedStorageManager.java | 20 ++----------------- .../MainPracticalWithMigrationManager.java | 20 +------------------ .../examples/practical/v0/BusinessBranch.java | 18 +++++++++++++++++ 3 files changed, 21 insertions(+), 37 deletions(-) diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 2ce76118..753263a6 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -27,7 +27,7 @@ public static void main(String[] args) final ExplicitMigrater emptyMigrater = new ExplicitMigrater(); try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(emptyMigrater)) { - storageManager.setRoot(createDummyBranch()); + storageManager.setRoot(BusinessBranch.createDummyBranch()); storageManager.storeRoot(); System.out.println(storageManager.root().toString()); } @@ -52,21 +52,5 @@ public static void main(String[] args) } } - private static BusinessBranch createDummyBranch() - { - BusinessBranch branch = new BusinessBranch(); - Customer customer1 = new Customer(); - customer1.name = "Mick Fleetwood"; - customer1.number = 1; - customer1.street = "Fleetwood Street"; - customer1.city = "Redruth"; - branch.customers.add(customer1); - Customer customer2 = new Customer(); - customer2.name = "Lindsey Buckingham"; - customer2.number = 2; - customer2.street = "Mac Street"; - customer2.city = "Palo Alto"; - branch.customers.add(customer2); - return branch; - } + } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index abd9f570..428bbd2e 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -32,7 +32,7 @@ public static void main(String[] args) //V0.0 try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { - VersionedObject versionedBranch = new VersionedObject<>(createDummyBranch()); + VersionedObject versionedBranch = new VersionedObject<>(BusinessBranch.createDummyBranch()); storageManager.setRoot(versionedBranch); storageManager.storeRoot(); System.out.println(storageManager.root().toString()); @@ -60,22 +60,4 @@ public static void main(String[] args) System.out.println(storageManager.root().toString()); } } - - private static BusinessBranch createDummyBranch() - { - BusinessBranch branch = new BusinessBranch(); - Customer customer1 = new Customer(); - customer1.name = "Mick Fleetwood"; - customer1.number = 1; - customer1.street = "Fleetwood Street"; - customer1.city = "Redruth"; - branch.customers.add(customer1); - Customer customer2 = new Customer(); - customer2.name = "Lindsey Buckingham"; - customer2.number = 2; - customer2.street = "Mac Street"; - customer2.city = "Palo Alto"; - branch.customers.add(customer2); - return branch; - } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java index fcc8f7ff..8b23e7d0 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java @@ -15,4 +15,22 @@ public String toString() { } return toString; } + + public static BusinessBranch createDummyBranch() + { + BusinessBranch branch = new BusinessBranch(); + Customer customer1 = new Customer(); + customer1.name = "Mick Fleetwood"; + customer1.number = 1; + customer1.street = "Fleetwood Street"; + customer1.city = "Redruth"; + branch.customers.add(customer1); + Customer customer2 = new Customer(); + customer2.name = "Lindsey Buckingham"; + customer2.number = 2; + customer2.street = "Mac Street"; + customer2.city = "Palo Alto"; + branch.customers.add(customer2); + return branch; + } } From c5bb901e591fe51d7b2bc6caf46ea339bd98cb60 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 21 Dec 2022 11:42:55 +0100 Subject: [PATCH 168/306] Added Javadoc --- .../examples/explicit/MainExplicit.java | 11 ++++++++++- .../examples/reflective/MainReflective.java | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index ea5d0799..7a2e99c7 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -2,13 +2,22 @@ import java.util.Date; +import software.xdev.micromigration.examples.practical.embedded.UpdateToV2_0; +import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; import software.xdev.micromigration.migrater.ExplicitMigrater; - +/** + * The most basic usage of micro migration. + * Here two {@link software.xdev.micromigration.scripts.MigrationScript}s are explicitly registered + * and subsequently executed. Easy. + * + * @author Johannes Rabauer + * + */ public class MainExplicit { public static void main(String[] args) diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index 1e87e99e..3cf1848b 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -8,6 +8,11 @@ import software.xdev.micromigration.migrater.ScriptInstantiationException; +/** + * Shows the usage of the {@link ReflectiveMigrater}. Very simple. + * + * @author Johannes Rabauer + */ public class MainReflective { public static void main(String[] args) From 1160d16e373c1dce9b113ac474c7f75ab669de58 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 21 Dec 2022 11:43:05 +0100 Subject: [PATCH 169/306] Added example for notification --- .../notification/MainNotification.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java new file mode 100644 index 00000000..5bf80f34 --- /dev/null +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -0,0 +1,54 @@ +package software.xdev.micromigration.examples.notification; + +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.version.MigrationVersion; + +import java.util.Date; + + +/** + * Shows the basic registration of migration notifications + * ({@link software.xdev.micromigration.notification.ScriptExecutionNotification}). + * + * @author Johannes Rabauer + */ +public class MainNotification +{ + public static void main(String[] args) + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MainNotification.UpdateToV1_0() + ); + migrater.setNotificationConsumer( + scriptExecutionNotification -> System.out.println("Script " + scriptExecutionNotification.getExecutedScript().getClass().getSimpleName() + " executed.") + ); + final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); + System.out.println(storageManager.root()); + if(storageManager.root() == null) + { + storageManager.setRoot("Hello World! @ " + new Date()); + } + storageManager.storeRoot(); + storageManager.shutdown(); + } + + static class UpdateToV1_0 implements MigrationScript + { + @Override + public MigrationVersion getTargetVersion() + { + return new MigrationVersion(1,0); + } + + @Override + public void migrate(Context context) + { + context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); + } + } +} From 6871e99e42548db24530246e0002f34c0bb4766b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 21 Dec 2022 12:06:58 +0100 Subject: [PATCH 170/306] Added a ScriptExecutionNotificationWithoutScriptReference --- .../migrater/AbstractMigrater.java | 8 +-- ... AbstractScriptExecutionNotification.java} | 21 ++------ ...cutionNotificationWithScriptReference.java | 50 +++++++++++++++++++ ...ionNotificationWithoutScriptReference.java | 40 +++++++++++++++ 4 files changed, 99 insertions(+), 20 deletions(-) rename core/src/main/java/software/xdev/micromigration/notification/{ScriptExecutionNotification.java => AbstractScriptExecutionNotification.java} (81%) create mode 100644 core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java create mode 100644 core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index bc02bb80..485e2dc3 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -6,7 +6,7 @@ import java.util.function.Consumer; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import software.xdev.micromigration.notification.ScriptExecutionNotification; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; @@ -20,13 +20,13 @@ */ public abstract class AbstractMigrater implements MicroMigrater { - private Consumer notificationConsumer = null; + private Consumer notificationConsumer = null; /** * Registers a callback to take action when a script is executed. * @param notificationConsumer is executed when a script is used from this migrater. */ - public void setNotificationConsumer(Consumer notificationConsumer) + public void setNotificationConsumer(Consumer notificationConsumer) { this.notificationConsumer = notificationConsumer; } @@ -84,7 +84,7 @@ public MigrationVersion migrateToNewest( if(this.notificationConsumer != null) { this.notificationConsumer.accept( - new ScriptExecutionNotification( + new ScriptExecutionNotificationWithScriptReference( script , versionBeforeUpdate , updateVersionWhichWasExecuted, diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java similarity index 81% rename from core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java rename to core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java index beaa6535..9ed6f181 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotification.java +++ b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java @@ -1,33 +1,31 @@ package software.xdev.micromigration.notification; -import java.time.LocalDateTime; - import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; +import java.time.LocalDateTime; + + /** * Contains data about the execution of a script by a {@link MicroMigrater}. * * @author Johannes Rabauer */ -public class ScriptExecutionNotification +public abstract class AbstractScriptExecutionNotification { - private final MigrationScript executedScript; private final MigrationVersion sourceVersion ; private final MigrationVersion targetVersion ; private final LocalDateTime startDate ; private final LocalDateTime endDate ; /** - * @param executedScript script that was executed * @param sourceVersion original version of the object before executing the script * @param targetVersion version of the object after executing the script * @param startDate time when the script was started * @param endDate time when the script has finished */ - public ScriptExecutionNotification( - MigrationScript executedScript, + public AbstractScriptExecutionNotification( MigrationVersion sourceVersion , MigrationVersion targetVersion , LocalDateTime startDate , @@ -35,21 +33,12 @@ public ScriptExecutionNotification( ) { super(); - this.executedScript = executedScript; this.sourceVersion = sourceVersion ; this.targetVersion = targetVersion ; this.startDate = startDate ; this.endDate = endDate ; } - /** - * @return the script that was executed - */ - public MigrationScript getExecutedScript() - { - return executedScript; - } - /** * @return the original version of the object before executing the script */ diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java new file mode 100644 index 00000000..bc8681ad --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java @@ -0,0 +1,50 @@ +package software.xdev.micromigration.notification; + +import java.time.LocalDateTime; + +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +/** + * Contains data about the execution of a script by a {@link MicroMigrater}. + * + * @author Johannes Rabauer + */ +public class ScriptExecutionNotificationWithScriptReference extends AbstractScriptExecutionNotification +{ + private final MigrationScript executedScript; + + /** + * @param executedScript script that was executed + * @param sourceVersion original version of the object before executing the script + * @param targetVersion version of the object after executing the script + * @param startDate time when the script was started + * @param endDate time when the script has finished + */ + public ScriptExecutionNotificationWithScriptReference( + MigrationScript executedScript, + MigrationVersion sourceVersion , + MigrationVersion targetVersion , + LocalDateTime startDate , + LocalDateTime endDate + ) + { + super( + sourceVersion, + targetVersion, + startDate , + endDate + ); + this.executedScript = executedScript; + } + + /** + * @return the script that was executed + */ + public MigrationScript getExecutedScript() + { + return executedScript; + } + +} diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java new file mode 100644 index 00000000..580ba6ef --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java @@ -0,0 +1,40 @@ +package software.xdev.micromigration.notification; + +/** + * Same as {@link ScriptExecutionNotificationWithScriptReference} but instead of referencing + * the {@link software.xdev.micromigration.scripts.MigrationScript} directly, only the name of the script is + * extracted through the class name. + *

+ * "Why?!" - If you want to persist say a history of your applied scripts in your database and + * you reference your scripts directly, these classes are referenced in your datastore. + * That shouldn't be a problem. Except when you refactor or delete these scripts. + * Usually what's really important is the name of the script. + * + * @author Johannes Rabauer + */ +public class ScriptExecutionNotificationWithoutScriptReference extends AbstractScriptExecutionNotification +{ + private final String executedScriptName; + + /** + * @param originalNotification where the reference to the script is deleted and the class name is extracted. + */ + public ScriptExecutionNotificationWithoutScriptReference(final ScriptExecutionNotificationWithScriptReference originalNotification) + { + super( + originalNotification.getSourceVersion(), + originalNotification.getTargetVersion(), + originalNotification.getStartDate() , + originalNotification.getEndDate() + ); + this.executedScriptName = originalNotification.getExecutedScript().getClass().getSimpleName(); + } + + /** + * @return the name of the script that was extracted. + */ + public String getExecutedScriptName() + { + return this.executedScriptName; + } +} From 82eaa1a655a6588aee9a7d8e7b54cca0024eb986 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 22 Dec 2022 09:34:32 +0100 Subject: [PATCH 171/306] Incomplete refactoring of migration-structure --- core/pom.xml | 5 +- .../xdev/micromigration/MigrationManager.java | 20 -- ...nosticMigrationEmbeddedStorageManager.java | 113 ++++++++ .../VersionAgnosticMigrationManager.java | 39 ++- ...nosticTunnelingEmbeddedStorageManager.java | 37 +++ .../migrater/AbstractMigrater.java | 52 ++-- .../migrater/ExplicitMigrater.java | 13 +- .../migrater/MicroMigrater.java | 18 +- .../VersionAlreadyRegisteredException.java | 18 +- .../AbstractScriptExecutionNotification.java | 1 - ...cutionNotificationWithScriptReference.java | 12 +- ...ionNotificationWithoutScriptReference.java | 5 +- .../xdev/micromigration/scripts/Context.java | 2 +- .../ReflectiveVersionMigrationScript.java | 6 +- .../scripts/SimpleTypedMigrationScript.java | 6 +- ...va => VersionAgnosticMigrationScript.java} | 10 +- microstream-v5/pom.xml | 6 + .../microstream/MigrationEmbeddedStorage.java | 1 - .../MigrationEmbeddedStorageManager.java | 79 +----- .../microstream/MigrationManager.java | 110 ++------ .../microstream/MigrationScript.java | 6 +- .../TunnelingEmbeddedStorageManager.java | 9 +- .../MigrationScriptAfterScriptTest.java | 37 ++- .../integration/MultipleScriptsTest.java | 32 +-- ...oreStuffInMigrationStorageManagerTest.java | 22 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- microstream-v6/pom.xml | 76 +---- .../microstream/MigrationEmbeddedStorage.java | 16 +- .../MigrationEmbeddedStorageManager.java | 262 +++++++++++++---- .../microstream/MigrationManager.java | 107 ------- .../microstream/MigrationScript.java | 7 +- .../TunnelingEmbeddedStorageManager.java | 251 ----------------- ...oduceMigrationOnExistingDatastoreTest.java | 19 +- .../MigrationScriptAfterScriptTest.java | 40 ++- .../integration/MultipleScriptsTest.java | 32 +-- ...oreStuffInMigrationStorageManagerTest.java | 22 +- .../migrater/ExplicitMigraterTest.java | 14 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- .../microstream/MigrationEmbeddedStorage.java | 16 +- .../MigrationEmbeddedStorageManager.java | 266 ++++++++++++++---- .../microstream/MigrationScript.java | 7 +- .../TunnelingEmbeddedStorageManager.java | 251 ----------------- ...oduceMigrationOnExistingDatastoreTest.java | 19 +- .../MigrationScriptAfterScriptTest.java | 40 ++- .../integration/MultipleScriptsTest.java | 34 +-- ...oreStuffInMigrationStorageManagerTest.java | 22 +- .../migrater/ExplicitMigraterTest.java | 14 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- .../migrater/ReflectiveMigrater.java | 25 +- .../abstractSuperClass/AbstractScript.java | 6 +- .../errorThrowing/ErrorThrowingScript.java | 6 +- .../ExceptionThrowingScript.java | 6 +- .../includeSubPackages/ValidScript.java | 6 +- .../subpackage/ValidScriptInSubpackage.java | 6 +- .../ValidScript.java | 6 +- .../NoCorrectConstructorScript.java | 6 +- .../migrater/scripts/valid/ValidScript.java | 6 +- 57 files changed, 920 insertions(+), 1345 deletions(-) delete mode 100644 core/src/main/java/software/xdev/micromigration/MigrationManager.java create mode 100644 core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java rename microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java => core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java (75%) create mode 100644 core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java rename core/src/main/java/software/xdev/micromigration/scripts/{MigrationScript.java => VersionAgnosticMigrationScript.java} (82%) delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java delete mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java diff --git a/core/pom.xml b/core/pom.xml index 194147c7..8955cc23 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -20,10 +20,7 @@ org.apache.maven.plugins maven-source-plugin - - org.apache.maven.plugins - maven-javadoc-plugin - + org.apache.maven.plugins maven-resources-plugin diff --git a/core/src/main/java/software/xdev/micromigration/MigrationManager.java b/core/src/main/java/software/xdev/micromigration/MigrationManager.java deleted file mode 100644 index 06ab6b0d..00000000 --- a/core/src/main/java/software/xdev/micromigration/MigrationManager.java +++ /dev/null @@ -1,20 +0,0 @@ -package software.xdev.micromigration; - -/** - * Manages a given object and keeps the version for it. - *

- * Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the MigrationEmbeddedStorageManager - * multiple versioned objects can be used in one datastore. - * - * @author Johannes Rabauer - * - */ -public interface MigrationManager -{ - /** - * Migrates the given object to the newest possible version, defined by the {@link software.xdev.micromigration.migrater.MicroMigrater}. - * @param objectToMigrate is given to the {@link software.xdev.micromigration.migrater.MicroMigrater} for migrating upon - */ - void migrate(Object objectToMigrate); -} diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..c960aa4d --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -0,0 +1,113 @@ +package software.xdev.micromigration.microstream.versionagnostic; + +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedRoot; + +import java.util.Objects; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class VersionAgnosticMigrationEmbeddedStorageManager + implements AutoCloseable +{ + private final MicroMigrater migrater ; + private VersionedRoot versionRoot ; + + private VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; + + /** + * @param tunnelingManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ + public VersionAgnosticMigrationEmbeddedStorageManager( + VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager, + MicroMigrater migrater + ) + { + this.tunnelingManager = Objects.requireNonNull(tunnelingManager); + this.migrater = Objects.requireNonNull(migrater); + } + + protected VersionAgnosticTunnelingEmbeddedStorageManager getTunnelingManager() + { + return this.tunnelingManager; + } + + /** + * {@inheritDoc} + *

+ * Checks if the root object is of the instance of {@link Versioned}. + * If it is not, the root will be replaced with the versioned root and the actual root object + * will be put inside the versioned root. + *

+ * After starting the storage manager, all the available update scripts are executed in order + * until the newest version of the datastore is reached. + */ + public SELF start() + { + this.tunnelingManager.start(); + if(this.tunnelingManager.root() instanceof VersionedRoot) + { + this.versionRoot = (VersionedRoot)this.tunnelingManager.root(); + } + else + { + //Build VersionedRoot around actual root, set by user. + this.versionRoot = new VersionedRoot(this.tunnelingManager.root()); + this.tunnelingManager.setRoot(versionRoot); + this.tunnelingManager.storeRoot(); + } + new VersionAgnosticMigrationManager( + this.versionRoot, + migrater, + this.tunnelingManager + ) + .migrate(this.versionRoot.getRoot()); + return (SELF)this; + } + + /** + * @return current version that's managed + */ + public MigrationVersion getCurrentVersion() + { + return this.versionRoot.getVersion(); + } + + public Object root() { + return this.versionRoot.getRoot(); + } + + public Object setRoot(Object newRoot) { + this.versionRoot.setRoot(newRoot); + return newRoot; + } + + public long storeRoot() { + this.tunnelingManager.store(this.versionRoot); + return this.tunnelingManager.store(this.versionRoot.getRoot()); + } + + public long store(Object objectToStore) { + return this.tunnelingManager.store(objectToStore); + } + + @Override public void close() + { + this.tunnelingManager.close(); + } +} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java similarity index 75% rename from microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java rename to core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index 3a9ed592..201d5b1e 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -1,14 +1,13 @@ -package software.xdev.micromigration.microstream; - -import java.util.Objects; -import java.util.function.Consumer; -import java.util.function.Supplier; +package software.xdev.micromigration.microstream.versionagnostic; import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; /** @@ -21,30 +20,30 @@ * @author Johannes Rabauer * */ -public class MigrationManager implements software.xdev.micromigration.MigrationManager +public class VersionAgnosticMigrationManager { private final Supplier currentVersionGetter; private final Consumer currentVersionSetter; private final Consumer currentVersionStorer; private final MicroMigrater migrater ; - private final EmbeddedStorageManager storageManager ; + private final VersionAgnosticTunnelingEmbeddedStorageManager storageManager ; /** - * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * Much more complicated constructor than {@link VersionAgnosticMigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. * * @param currentVersionGetter which supplies the current version of the object to update. * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManager + public VersionAgnosticMigrationManager ( final Supplier currentVersionGetter, final Consumer currentVersionSetter, final Consumer currentVersionStorer, final MicroMigrater migrater , - final EmbeddedStorageManager storageManager + final VersionAgnosticTunnelingEmbeddedStorageManager storageManager ) { Objects.requireNonNull(currentVersionGetter); @@ -63,15 +62,15 @@ public class MigrationManager implements software.xdev.micromigration.MigrationM * Simple Constructor. * * @param versionedObject which provides getter and setter for the current version. - * This object will be stored after the {@link MigrationScript}s are executed. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. */ - public MigrationManager + public VersionAgnosticMigrationManager ( final Versioned versionedObject, final MicroMigrater migrater , - final EmbeddedStorageManager storageManager + final VersionAgnosticTunnelingEmbeddedStorageManager storageManager ) { this( @@ -94,7 +93,7 @@ public void migrate(Object objectToMigrate) // Execute Updates final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( versionBeforeUpdate, - new TunnelingEmbeddedStorageManager(this.storageManager), + this.storageManager, objectToMigrate ); //Update stored version, if needed diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..e98e16fe --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java @@ -0,0 +1,37 @@ +package software.xdev.micromigration.microstream.versionagnostic; + +import software.xdev.micromigration.version.Versioned; + + +/** + * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + * + * @author Johannes Rabauer + * + */ + public interface VersionAgnosticTunnelingEmbeddedStorageManager + extends VersionAgnosticEmbeddedStorageManager, AutoCloseable +{ + T start(); + Object root(); + Object setRoot(Object newRoot); + long storeRoot(); + boolean shutdown(); + boolean isAcceptingTasks(); + boolean isRunning(); + boolean isStartingUp(); + boolean isShuttingDown(); + void checkAcceptingTasks(); + long initializationTime(); + long operationModeTime(); + boolean isActive(); + boolean issueGarbageCollection(long nanoTimeBudget); + boolean issueFileCheck(long nanoTimeBudget); + long store(Object instance); + T getNativeStorageManager(); + void close(); +} diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 485e2dc3..a81ba4a5 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -1,34 +1,36 @@ package software.xdev.micromigration.migrater; -import java.time.LocalDateTime; -import java.util.Objects; -import java.util.TreeSet; -import java.util.function.Consumer; - import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; +import java.util.TreeSet; +import java.util.function.Consumer; + /** - * Provides the basic functionality to apply {@link MigrationScript}s to + * Provides the basic functionality to apply {@link VersionAgnosticMigrationScript}s to * a datastore. * * @author Johannes Rabauer */ public abstract class AbstractMigrater implements MicroMigrater { - private Consumer notificationConsumer = null; + private List> notificationConsumers = new ArrayList<>(); /** * Registers a callback to take action when a script is executed. * @param notificationConsumer is executed when a script is used from this migrater. */ - public void setNotificationConsumer(Consumer notificationConsumer) + public void registerNotificationConsumer(Consumer notificationConsumer) { - this.notificationConsumer = notificationConsumer; + this.notificationConsumers.add(notificationConsumer); } @Override @@ -41,7 +43,7 @@ public MigrationVersion migrateToNewest( Objects.requireNonNull(fromVersion); Objects.requireNonNull(storageManager); - TreeSet> sortedScripts = getSortedScripts(); + TreeSet> sortedScripts = getSortedScripts(); if(sortedScripts.size() > 0) { return migrateToVersion( @@ -68,7 +70,7 @@ public MigrationVersion migrateToNewest( Objects.requireNonNull(storageManager); MigrationVersion updateVersionWhichWasExecuted = fromVersion; - for (MigrationScript script : this.getSortedScripts()) + for (VersionAgnosticMigrationScript script : this.getSortedScripts()) { if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) { @@ -76,22 +78,22 @@ public MigrationVersion migrateToNewest( { LocalDateTime startDate = null; MigrationVersion versionBeforeUpdate = updateVersionWhichWasExecuted; - if(this.notificationConsumer != null) + if(!this.notificationConsumers.isEmpty()) { startDate = LocalDateTime.now(); } updateVersionWhichWasExecuted = migrateWithScript(script, storageManager, objectToMigrate); - if(this.notificationConsumer != null) + if(!this.notificationConsumers.isEmpty()) { - this.notificationConsumer.accept( + ScriptExecutionNotificationWithScriptReference scriptNotification = new ScriptExecutionNotificationWithScriptReference( - script , - versionBeforeUpdate , - updateVersionWhichWasExecuted, - startDate , + script, + versionBeforeUpdate, + updateVersionWhichWasExecuted, + startDate, LocalDateTime.now() - ) - ); + ); + this.notificationConsumers.forEach(consumer -> consumer.accept(scriptNotification)); } } } @@ -101,7 +103,7 @@ public MigrationVersion migrateToNewest( @SuppressWarnings("unchecked") private MigrationVersion migrateWithScript( - MigrationScript script , + VersionAgnosticMigrationScript script , VersionAgnosticEmbeddedStorageManager storageManager , Object objectToMigrate ) @@ -112,15 +114,15 @@ private MigrationVersion migrateWithScript( } /** - * Checks if the given {@link MigrationScript} is not already registered in the + * Checks if the given {@link VersionAgnosticMigrationScript} is not already registered in the * {@link #getSortedScripts()}. * @throws VersionAlreadyRegisteredException if script is already registered. * @param scriptToCheck It's target version is checked, if it is not already registered. */ - protected void checkIfVersionIsAlreadyRegistered(MigrationScript scriptToCheck) + protected void checkIfVersionIsAlreadyRegistered(VersionAgnosticMigrationScript scriptToCheck) { //Check if same version is not already registered - for (MigrationScript alreadyRegisteredScript : this.getSortedScripts()) + for (VersionAgnosticMigrationScript alreadyRegisteredScript : this.getSortedScripts()) { if(MigrationVersion.COMPARATOR.compare(alreadyRegisteredScript.getTargetVersion(), scriptToCheck.getTargetVersion()) == 0) { diff --git a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java index 17a6416b..b5ccdec5 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java @@ -1,8 +1,8 @@ package software.xdev.micromigration.migrater; -import java.util.TreeSet; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; -import software.xdev.micromigration.scripts.MigrationScript; +import java.util.TreeSet; /** * Contains all the available scripts to migrate the datastore to a certain version. @@ -14,16 +14,17 @@ */ public class ExplicitMigrater extends AbstractMigrater { - private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); + private final TreeSet> sortedScripts = new TreeSet<>( + VersionAgnosticMigrationScript.COMPARATOR); /** * @param scripts are all the scripts that are executed, if the current version is lower than this of the script
* Versions of the scripts must be unique. That means that no version is allowed multiple times in the migrater. * @throws VersionAlreadyRegisteredException if two scripts have the same version */ - public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRegisteredException + public ExplicitMigrater(VersionAgnosticMigrationScript...scripts) throws VersionAlreadyRegisteredException { - for (MigrationScript script : scripts) + for (VersionAgnosticMigrationScript script : scripts) { checkIfVersionIsAlreadyRegistered(script); this.sortedScripts.add(script); @@ -31,7 +32,7 @@ public ExplicitMigrater(MigrationScript ...scripts) throws VersionAlreadyRe } @Override - public TreeSet> getSortedScripts() { + public TreeSet> getSortedScripts() { return this.sortedScripts; } } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 466d9891..cad1bf94 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater; -import java.util.TreeSet; - import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; +import java.util.TreeSet; + /** * Executes all the available scripts to migrate the datastore to a certain version. @@ -17,9 +17,9 @@ public interface MicroMigrater { /** - * @return all the contained {@link MigrationScript}s, sorted by their {@link MigrationVersion} ascending. + * @return all the contained {@link VersionAgnosticMigrationScript}s, sorted by their {@link MigrationVersion} ascending. */ - TreeSet> getSortedScripts(); + TreeSet> getSortedScripts(); /** * Executes all the scripts that are available to the migrater. @@ -34,10 +34,10 @@ public interface MicroMigrater * @param fromVersion is the current version of the datastore. * Scripts for lower versions then the fromVersion are not executed. * - * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(Context)} + * @param storageManager is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} * method. This way the script can call {@link VersionAgnosticEmbeddedStorageManager#store(Object)} or another method on the storage manager. * - * @param root is relayed to the scripts {@link MigrationScript#migrate(Context)} + * @param root is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} * method. This way the script can change something within the root object. * * @return the target version of the last executed script @@ -64,10 +64,10 @@ MigrationVersion migrateToNewest( * @param targetVersion is the highest allowed script version. * Scripts which have a higher version won't be exectued. * - * @param storageManager is relayed to the scripts {@link MigrationScript#migrate(Context)} + * @param storageManager is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} * method. This way the script can call EmbeddedStorageManager#store or another method on the storage manager. * - * @param objectToMigrate is relayed to the scripts {@link MigrationScript#migrate(Context)} + * @param objectToMigrate is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} * method. This way the script can change something within the object to migrate. * * @return the target version of the last executed script diff --git a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index 108ec977..ac1b0218 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -1,9 +1,9 @@ package software.xdev.micromigration.migrater; -import java.util.Objects; - +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import software.xdev.micromigration.scripts.MigrationScript; + +import java.util.Objects; /** @@ -21,12 +21,12 @@ public class VersionAlreadyRegisteredException extends Error /** * The version of the already registered script */ - private final MigrationScript alreadyRegisteredScript ; + private final VersionAgnosticMigrationScript alreadyRegisteredScript ; /** * The script with the same version as {@link #alreadyRegisteredScript}, * which should be registered as well */ - private final MigrationScript newScriptToRegister ; + private final VersionAgnosticMigrationScript newScriptToRegister ; /** * @param alreadyRegisteredVersion The version of the already registered script @@ -36,8 +36,8 @@ public class VersionAlreadyRegisteredException extends Error */ public VersionAlreadyRegisteredException( MigrationVersion alreadyRegisteredVersion, - MigrationScript alreadyRegisteredScript , - MigrationScript newScriptToRegister + VersionAgnosticMigrationScript alreadyRegisteredScript , + VersionAgnosticMigrationScript newScriptToRegister ) { super("Version " + alreadyRegisteredVersion.toString() + " is already registered. Versions must be unique within the migrater."); @@ -57,7 +57,7 @@ public MigrationVersion getAlreadyRegisteredVersion() /** * @return the already registered script with the same version */ - public MigrationScript getAlreadyRegisteredScript() + public VersionAgnosticMigrationScript getAlreadyRegisteredScript() { return alreadyRegisteredScript; } @@ -66,7 +66,7 @@ public MigrationScript getAlreadyRegisteredScript() * @return the script with the same version as {@link #getAlreadyRegisteredScript()}, * which should be registered as well */ - public MigrationScript getNewScriptToRegister() + public VersionAgnosticMigrationScript getNewScriptToRegister() { return newScriptToRegister; } diff --git a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java index 9ed6f181..c26a7f4d 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java +++ b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java @@ -1,7 +1,6 @@ package software.xdev.micromigration.notification; import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; import java.time.LocalDateTime; diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java index bc8681ad..cb21885f 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.notification; -import java.time.LocalDateTime; - import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; +import java.time.LocalDateTime; + /** * Contains data about the execution of a script by a {@link MicroMigrater}. * @@ -13,7 +13,7 @@ */ public class ScriptExecutionNotificationWithScriptReference extends AbstractScriptExecutionNotification { - private final MigrationScript executedScript; + private final VersionAgnosticMigrationScript executedScript; /** * @param executedScript script that was executed @@ -23,7 +23,7 @@ public class ScriptExecutionNotificationWithScriptReference extends AbstractScri * @param endDate time when the script has finished */ public ScriptExecutionNotificationWithScriptReference( - MigrationScript executedScript, + VersionAgnosticMigrationScript executedScript, MigrationVersion sourceVersion , MigrationVersion targetVersion , LocalDateTime startDate , @@ -42,7 +42,7 @@ public ScriptExecutionNotificationWithScriptReference( /** * @return the script that was executed */ - public MigrationScript getExecutedScript() + public VersionAgnosticMigrationScript getExecutedScript() { return executedScript; } diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java index 580ba6ef..4f599b39 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java @@ -1,8 +1,11 @@ package software.xdev.micromigration.notification; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; + + /** * Same as {@link ScriptExecutionNotificationWithScriptReference} but instead of referencing - * the {@link software.xdev.micromigration.scripts.MigrationScript} directly, only the name of the script is + * the {@link VersionAgnosticMigrationScript} directly, only the name of the script is * extracted through the class name. *

* "Why?!" - If you want to persist say a history of your applied scripts in your database and diff --git a/core/src/main/java/software/xdev/micromigration/scripts/Context.java b/core/src/main/java/software/xdev/micromigration/scripts/Context.java index 8cc87aa8..4e266884 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/Context.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/Context.java @@ -4,7 +4,7 @@ /** - * Container that holds necessary information for the execution of an {@link MigrationScript} + * Container that holds necessary information for the execution of an {@link VersionAgnosticMigrationScript} * * @author Johannes Rabauer */ diff --git a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java index 05606bf0..ef907004 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,9 +1,9 @@ package software.xdev.micromigration.scripts; -import java.util.ArrayList; - import software.xdev.micromigration.version.MigrationVersion; +import java.util.ArrayList; + /** * Script which creates the target version of the script through the class name. @@ -28,7 +28,7 @@ * @author Johannes Rabauer * */ -public abstract class ReflectiveVersionMigrationScript implements MigrationScript +public abstract class ReflectiveVersionMigrationScript implements VersionAgnosticMigrationScript { private final static char PREFIX = 'v'; private final static String VERSION_SEPERATOR = "_"; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java index cbea8000..7802e33b 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.scripts; +import software.xdev.micromigration.version.MigrationVersion; + import java.util.Objects; import java.util.function.Consumer; -import software.xdev.micromigration.version.MigrationVersion; - /** * Provides a simple way to create a migration script with the necessary version @@ -13,7 +13,7 @@ * @author Johannes Rabauer * */ -public class SimpleTypedMigrationScript implements MigrationScript +public class SimpleTypedMigrationScript implements VersionAgnosticMigrationScript { private final MigrationVersion version ; private final Consumer> consumer; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java similarity index 82% rename from core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java rename to core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java index 2ec732d7..39910ec8 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/MigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java @@ -1,21 +1,21 @@ package software.xdev.micromigration.scripts; -import java.util.Comparator; - import software.xdev.micromigration.version.MigrationVersion; +import java.util.Comparator; + /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link MigrationScript#migrate(Context)} method is called, + * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScript +public interface VersionAgnosticMigrationScript { /** * @return the version of the datastore after this script is executed. @@ -33,6 +33,6 @@ public interface MigrationScript /** * Provides a {@link Comparator} that compares the {@link #getTargetVersion()} of the given scripts */ - Comparator> COMPARATOR = + Comparator> COMPARATOR = (o1, o2) -> MigrationVersion.COMPARATOR.compare(o1.getTargetVersion(), o2.getTargetVersion()); } diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 0ee2cb25..44159cf8 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -34,6 +34,12 @@ microstream-configuration ${microstream.version} + + software.xdev + micro-migration-core + 0.0.7-SNAPSHOT + compile + diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 946ebe59..6eb8cf13 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -29,7 +29,6 @@ public class MigrationEmbeddedStorage * @param migrater which is used as source for the migration scripts * @return the created storage manager with the given migrater */ - @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) { Objects.requireNonNull(migrater); diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index b358b832..b8223df4 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,13 +1,10 @@ package software.xdev.micromigration.microstream; -import java.util.Objects; - -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import software.xdev.micromigration.version.VersionedRoot; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** @@ -15,16 +12,14 @@ *

* Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link software.xdev.micromigration.microstream.MigrationManager} to do the actual migration. + * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. * * @author Johannes Rabauer * */ -public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager +public class MigrationEmbeddedStorageManager + extends VersionAgnosticMigrationEmbeddedStorageManager { - private final MicroMigrater migrater ; - private VersionedRoot versionRoot ; - /** * @param nativeManager which will be used as the underlying storage manager. * Almost all methods are only rerouted to this native manager. @@ -37,66 +32,6 @@ public MigrationEmbeddedStorageManager( MicroMigrater migrater ) { - super(nativeManager); - Objects.requireNonNull(migrater); - this.migrater = migrater; - } - - /** - * {@inheritDoc} - *

- * Checks if the root object is of the instance of {@link Versioned}. - * If it is not, the root will be replaced with the versioned root and the actual root object - * will be put inside the versioned root. - *

- * After starting the storage manager, all the available update scripts are executed in order - * until the newest version of the datastore is reached. - */ - @Override - public MigrationEmbeddedStorageManager start() - { - this.nativeManager.start(); - if(this.nativeManager.root() instanceof VersionedRoot) - { - this.versionRoot = (VersionedRoot)this.nativeManager.root(); - } - else - { - //Build VersionedRoot around actual root, set by user. - this.versionRoot = new VersionedRoot(this.nativeManager.root()); - nativeManager.setRoot(versionRoot); - nativeManager.storeRoot(); - } - new MigrationManager( - this.versionRoot, - migrater, - this - ) - .migrate(this.versionRoot.getRoot()); - return this; - } - - /** - * @return current version that's managed - */ - public MigrationVersion getCurrentVersion() - { - return this.versionRoot.getVersion(); - } - - @Override - public Object root() { - return this.versionRoot.getRoot(); - } - - @Override - public Object setRoot(Object newRoot) { - this.versionRoot.setRoot(newRoot); - return newRoot; - } - - @Override - public long storeRoot() { - return this.nativeManager.store(this.versionRoot); + super(new TunnelingEmbeddedStorageManager(nativeManager), migrater); } } diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 3a9ed592..e00da405 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,107 +1,31 @@ package software.xdev.micromigration.microstream; -import java.util.Objects; -import java.util.function.Consumer; -import java.util.function.Supplier; - +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import java.util.function.Consumer; +import java.util.function.Supplier; -/** - * Manages a given object and keeps the version for it. - *

- * Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} - * multiple versioned objects can be used in one datastore. - * - * @author Johannes Rabauer - * - */ -public class MigrationManager implements software.xdev.micromigration.MigrationManager -{ - private final Supplier currentVersionGetter; - private final Consumer currentVersionSetter; - private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; - private final EmbeddedStorageManager storageManager ; - /** - * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. - * - * @param currentVersionGetter which supplies the current version of the object to update. - * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. - * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. - */ - public MigrationManager - ( - final Supplier currentVersionGetter, - final Consumer currentVersionSetter, - final Consumer currentVersionStorer, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) - { - Objects.requireNonNull(currentVersionGetter); - Objects.requireNonNull(currentVersionSetter); - Objects.requireNonNull(currentVersionStorer); - Objects.requireNonNull(migrater); - Objects.requireNonNull(storageManager); - this.currentVersionGetter = currentVersionGetter; - this.currentVersionSetter = currentVersionSetter; - this.currentVersionStorer = currentVersionStorer; - this.migrater = migrater; - this.storageManager = storageManager; - } - - /** - * Simple Constructor. - * - * @param versionedObject which provides getter and setter for the current version. - * This object will be stored after the {@link MigrationScript}s are executed. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. - */ - public MigrationManager - ( - final Versioned versionedObject, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) +public class MigrationManager extends VersionAgnosticMigrationManager +{ + public MigrationManager( + Supplier currentVersionGetter, + Consumer currentVersionSetter, + Consumer currentVersionStorer, + MicroMigrater migrater, + EmbeddedStorageManager storageManager) { - this( - ( ) -> versionedObject.getVersion() , - (version) -> versionedObject.setVersion(version) , - (version) -> storageManager.store(versionedObject), - migrater , - storageManager - ); - Objects.requireNonNull(versionedObject); + super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new TunnelingEmbeddedStorageManager(storageManager)); } - /** - * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. - * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon - */ - public void migrate(Object objectToMigrate) + public MigrationManager( + Versioned versionedObject, MicroMigrater migrater, + EmbeddedStorageManager storageManager) { - final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); - // Execute Updates - final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( - versionBeforeUpdate, - new TunnelingEmbeddedStorageManager(this.storageManager), - objectToMigrate - ); - //Update stored version, if needed - if(!versionAfterUpdate.equals(versionBeforeUpdate)) - { - currentVersionSetter.accept(versionAfterUpdate); - currentVersionStorer.accept(versionAfterUpdate); - } + super(versionedObject, migrater, new TunnelingEmbeddedStorageManager(storageManager)); } } diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 48df48b6..40662841 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,18 +1,18 @@ package software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link software.xdev.micromigration.scripts.MigrationScript#migrate(Context)} method is called, + * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScript extends software.xdev.micromigration.scripts.MigrationScript +public interface MigrationScript extends VersionAgnosticMigrationScript {} diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 153f7b96..350b09c4 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,7 +1,5 @@ package software.xdev.micromigration.microstream; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import software.xdev.micromigration.version.Versioned; import one.microstream.afs.types.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; @@ -21,6 +19,8 @@ import one.microstream.storage.types.StorageLiveFileProvider; import one.microstream.storage.types.StorageRawFileStatistics; import one.microstream.storage.types.StorageTypeDictionary; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; import java.util.Objects; import java.util.function.Predicate; @@ -36,7 +36,10 @@ * @author Johannes Rabauer * */ -public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager +public class TunnelingEmbeddedStorageManager + implements + EmbeddedStorageManager, + VersionAgnosticTunnelingEmbeddedStorageManager { /** * The underlying, actual MicroStream EmbeddedStorageManager diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index 7224e0ae..c473b09b 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,27 +1,26 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.atomic.AtomicBoolean; - +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedObject; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class MigrationScriptAfterScriptTest { @@ -40,7 +39,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with one migration script - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -53,7 +52,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -68,13 +67,13 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem @Test void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); final AtomicBoolean notificationReceived = new AtomicBoolean(false); - migrater.setNotificationConsumer( + migrater.registerNotificationConsumer( notification -> { Assertions.assertEquals(firstScript, notification.getExecutedScript()); @@ -104,7 +103,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final MigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); @@ -124,7 +123,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final MigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 8bc4f529..df5e060f 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,20 +1,20 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Path; - +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; + +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; class MultipleScriptsTest @@ -22,11 +22,11 @@ class MultipleScriptsTest @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -41,11 +41,11 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -57,15 +57,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 51b1cccc..cbfee9c4 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,20 +1,20 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import java.io.IOException; -import java.nio.file.Path; - +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; class StoreStuffInMigrationStorageManagerTest @@ -32,7 +32,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final MigrationScript script = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index cf32f3a8..ecfaf2c5 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.testUtil; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class MicroMigrationScriptDummy implements MigrationScript +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index ccc26821..d91b8743 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -41,40 +41,14 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 - - - attach-sources - - jar - - - org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 - - ${java.version} - UTF-8 - false - - - - attach-javadocs - - jar - - - + org.apache.maven.plugins maven-resources-plugin - 3.3.0 - - UTF-8 - @@ -84,57 +58,9 @@ release - - org.apache.maven.plugins - maven-javadoc-plugin - 3.4.1 - - - attach-javadoc - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-source - - jar - - - - org.jreleaser jreleaser-maven-plugin - 1.3.1 - - - - ALWAYS - true - - - - - - ALWAYS - https://s01.oss.sonatype.org/service/local; - false - false - target/staging-deploy - - - - - - diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index a6676ef7..dcc90d16 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,23 +1,22 @@ package software.xdev.micromigration.microstream; -import java.nio.file.Path; -import java.util.Objects; - -import software.xdev.micromigration.migrater.MicroMigrater; import one.microstream.afs.nio.types.NioFileSystem; -import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import one.microstream.storage.types.Storage; import one.microstream.storage.types.StorageConfiguration; +import software.xdev.micromigration.migrater.MicroMigrater; + +import java.nio.file.Path; +import java.util.Objects; /** - * Provides static utility calls to create the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} for + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. - * + * * @author Johannes Rabauer - * + * */ public class MigrationEmbeddedStorage { @@ -30,7 +29,6 @@ public class MigrationEmbeddedStorage * @param migrater which is used as source for the migration scripts * @return the created storage manager with the given migrater */ - @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) { Objects.requireNonNull(migrater); diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index b358b832..03cc2197 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,30 +1,46 @@ package software.xdev.micromigration.microstream; -import java.util.Objects; - -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import software.xdev.micromigration.version.VersionedRoot; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.function.Predicate; /** * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} + * Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link software.xdev.micromigration.microstream.MigrationManager} to do the actual migration. + * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. * * @author Johannes Rabauer * */ -public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager +public class MigrationEmbeddedStorageManager + extends VersionAgnosticMigrationEmbeddedStorageManager + implements EmbeddedStorageManager { - private final MicroMigrater migrater ; - private VersionedRoot versionRoot ; - /** * @param nativeManager which will be used as the underlying storage manager. * Almost all methods are only rerouted to this native manager. @@ -37,66 +53,198 @@ public MigrationEmbeddedStorageManager( MicroMigrater migrater ) { - super(nativeManager); - Objects.requireNonNull(migrater); - this.migrater = migrater; + super(nativeManager, migrater); } - /** - * {@inheritDoc} - *

- * Checks if the root object is of the instance of {@link Versioned}. - * If it is not, the root will be replaced with the versioned root and the actual root object - * will be put inside the versioned root. - *

- * After starting the storage manager, all the available update scripts are executed in order - * until the newest version of the datastore is reached. - */ - @Override - public MigrationEmbeddedStorageManager start() - { - this.nativeManager.start(); - if(this.nativeManager.root() instanceof VersionedRoot) - { - this.versionRoot = (VersionedRoot)this.nativeManager.root(); - } - else - { - //Build VersionedRoot around actual root, set by user. - this.versionRoot = new VersionedRoot(this.nativeManager.root()); - nativeManager.setRoot(versionRoot); - nativeManager.storeRoot(); - } - new MigrationManager( - this.versionRoot, - migrater, - this - ) - .migrate(this.versionRoot.getRoot()); - return this; - } + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// - /** - * @return current version that's managed - */ - public MigrationVersion getCurrentVersion() + @Override + public EmbeddedStorageManager startNative() { - return this.versionRoot.getVersion(); + this.getTunnelingManager().start(); + return this; } @Override public Object root() { - return this.versionRoot.getRoot(); + return this.getTunnelingManager().root(); } @Override public Object setRoot(Object newRoot) { - this.versionRoot.setRoot(newRoot); - return newRoot; + return this.getTunnelingManager().setRoot(newRoot); } @Override public long storeRoot() { - return this.nativeManager.store(this.versionRoot); + return this.getTunnelingManager().storeRoot(); } + + @Override + public StorageConfiguration configuration() + { + return this.getTunnelingManager().configuration(); + } + + @Override + public StorageTypeDictionary typeDictionary() + { + return this.getTunnelingManager().typeDictionary(); + } + + @Override + public boolean shutdown() + { + return this.getTunnelingManager().shutdown(); + } + + @Override + public void close() throws StorageException + { + this.getTunnelingManager().close(); + } + + @Override + public StorageConnection createConnection() + { + return this.getTunnelingManager().createConnection(); + } + + + @Override + public PersistenceRootsView viewRoots() + { + return this.getTunnelingManager().viewRoots(); + } + + @Override + @Deprecated + public Reference defaultRoot() + { + return this.getTunnelingManager().defaultRoot(); + } + + @Override + public Database database() + { + return this.getTunnelingManager().database(); + } + + @Override + public boolean isAcceptingTasks() + { + return this.getTunnelingManager().isAcceptingTasks(); + } + + @Override + public boolean isRunning() + { + return this.getTunnelingManager().isRunning(); + } + + @Override + public boolean isStartingUp() + { + return this.getTunnelingManager().isStartingUp(); + } + + @Override + public boolean isShuttingDown() + { + return this.getTunnelingManager().isShuttingDown(); + } + + @Override + public void checkAcceptingTasks() + { + this.getTunnelingManager().checkAcceptingTasks(); + } + + @Override + public long initializationTime() + { + return this.getTunnelingManager().initializationTime(); + } + + @Override + public long operationModeTime() + { + return this.getTunnelingManager().operationModeTime(); + } + + @Override + public boolean isActive() + { + return this.getTunnelingManager().isActive(); + } + + @Override + public boolean issueGarbageCollection(long nanoTimeBudget) + { + return this.getTunnelingManager().issueGarbageCollection(nanoTimeBudget); + } + + @Override + public boolean issueFileCheck(long nanoTimeBudget) + { + return this.getTunnelingManager().issueFileCheck(nanoTimeBudget); + } + + @Override + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { + return this.getTunnelingManager().issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.getTunnelingManager().createStorageStatistics(); + } + + @Override + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { + this.getTunnelingManager().exportChannels(fileProvider, performGarbageCollection); + } + + @Override + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) + { + return this.getTunnelingManager().exportTypes(exportFileProvider, isExportType); + } + + @Override + public void importFiles(XGettingEnum importFiles) + { + this.getTunnelingManager().importFiles(importFiles); + } + + @Override + public PersistenceManager persistenceManager() + { + return this.getTunnelingManager().persistenceManager(); + } + + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.getTunnelingManager(); + } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.getTunnelingManager().issueFullBackup(targetFileProvider, typeDictionaryExporter); + } + } diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java deleted file mode 100644 index 3a9ed592..00000000 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ /dev/null @@ -1,107 +0,0 @@ -package software.xdev.micromigration.microstream; - -import java.util.Objects; -import java.util.function.Consumer; -import java.util.function.Supplier; - -import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.scripts.MigrationScript; -import software.xdev.micromigration.version.MigrationVersion; -import software.xdev.micromigration.version.Versioned; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; - - -/** - * Manages a given object and keeps the version for it. - *

- * Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} - * multiple versioned objects can be used in one datastore. - * - * @author Johannes Rabauer - * - */ -public class MigrationManager implements software.xdev.micromigration.MigrationManager -{ - private final Supplier currentVersionGetter; - private final Consumer currentVersionSetter; - private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; - private final EmbeddedStorageManager storageManager ; - - /** - * Much more complicated constructor than {@link MigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. - * - * @param currentVersionGetter which supplies the current version of the object to update. - * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. - * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. - */ - public MigrationManager - ( - final Supplier currentVersionGetter, - final Consumer currentVersionSetter, - final Consumer currentVersionStorer, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) - { - Objects.requireNonNull(currentVersionGetter); - Objects.requireNonNull(currentVersionSetter); - Objects.requireNonNull(currentVersionStorer); - Objects.requireNonNull(migrater); - Objects.requireNonNull(storageManager); - this.currentVersionGetter = currentVersionGetter; - this.currentVersionSetter = currentVersionSetter; - this.currentVersionStorer = currentVersionStorer; - this.migrater = migrater; - this.storageManager = storageManager; - } - - /** - * Simple Constructor. - * - * @param versionedObject which provides getter and setter for the current version. - * This object will be stored after the {@link MigrationScript}s are executed. - * @param migrater does the actual migration with the given {@link MigrationScript} - * @param storageManager for the {@link MigrationScript}s to use. Is not used for the storing of the new version. - */ - public MigrationManager - ( - final Versioned versionedObject, - final MicroMigrater migrater , - final EmbeddedStorageManager storageManager - ) - { - this( - ( ) -> versionedObject.getVersion() , - (version) -> versionedObject.setVersion(version) , - (version) -> storageManager.store(versionedObject), - migrater , - storageManager - ); - Objects.requireNonNull(versionedObject); - } - - /** - * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. - * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon - */ - public void migrate(Object objectToMigrate) - { - final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); - // Execute Updates - final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( - versionBeforeUpdate, - new TunnelingEmbeddedStorageManager(this.storageManager), - objectToMigrate - ); - //Update stored version, if needed - if(!versionAfterUpdate.equals(versionBeforeUpdate)) - { - currentVersionSetter.accept(versionAfterUpdate); - currentVersionStorer.accept(versionAfterUpdate); - } - } -} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 48df48b6..6ae8679d 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,18 +1,19 @@ package software.xdev.micromigration.microstream; -import software.xdev.micromigration.scripts.Context; import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link software.xdev.micromigration.scripts.MigrationScript#migrate(Context)} method is called, + * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScript extends software.xdev.micromigration.scripts.MigrationScript +public interface MigrationScript extends VersionAgnosticMigrationScript {} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java deleted file mode 100644 index 028ce0a2..00000000 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ /dev/null @@ -1,251 +0,0 @@ -package software.xdev.micromigration.microstream; - -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import software.xdev.micromigration.version.Versioned; -import one.microstream.afs.types.AFile; -import one.microstream.collections.types.XGettingEnum; -import one.microstream.persistence.binary.types.Binary; -import one.microstream.persistence.types.PersistenceManager; -import one.microstream.persistence.types.PersistenceRootsView; -import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; -import one.microstream.reference.Reference; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import one.microstream.storage.exceptions.StorageException; -import one.microstream.storage.types.Database; -import one.microstream.storage.types.StorageConfiguration; -import one.microstream.storage.types.StorageConnection; -import one.microstream.storage.types.StorageEntityCacheEvaluator; -import one.microstream.storage.types.StorageEntityTypeExportFileProvider; -import one.microstream.storage.types.StorageEntityTypeExportStatistics; -import one.microstream.storage.types.StorageEntityTypeHandler; -import one.microstream.storage.types.StorageLiveFileProvider; -import one.microstream.storage.types.StorageRawFileStatistics; -import one.microstream.storage.types.StorageTypeDictionary; - -import java.util.Objects; -import java.util.function.Predicate; - - -/** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. - *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * - * @author Johannes Rabauer - * - */ -public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager -{ - /** - * The underlying, actual MicroStream EmbeddedStorageManager - */ - protected final EmbeddedStorageManager nativeManager; - - /** - * @param nativeManager which will be used as the underlying storage manager. - * All methods are only rerouted to this native manager. - * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted - * and a {@link Versioned} is placed between the requests. - */ - public TunnelingEmbeddedStorageManager( - EmbeddedStorageManager nativeManager - ) - { - Objects.requireNonNull(nativeManager); - this.nativeManager = nativeManager; - } - - //////////////////////////////////////////////////////////////// - // Simply forward all the methods - //////////////////////////////////////////////////////////////// - - @Override - public TunnelingEmbeddedStorageManager start() - { - this.nativeManager.start(); - return this; - } - - @Override - public Object root() { - return this.nativeManager.root(); - } - - @Override - public Object setRoot(Object newRoot) { - return this.nativeManager.setRoot(newRoot); - } - - @Override - public long storeRoot() { - return this.nativeManager.storeRoot(); - } - - @Override - public StorageConfiguration configuration() - { - return this.nativeManager.configuration(); - } - - @Override - public StorageTypeDictionary typeDictionary() - { - return this.nativeManager.typeDictionary(); - } - - @Override - public boolean shutdown() - { - return this.nativeManager.shutdown(); - } - - @Override - public void close() throws StorageException - { - this.nativeManager.close(); - } - - @Override - public StorageConnection createConnection() - { - return this.nativeManager.createConnection(); - } - - - @Override - public PersistenceRootsView viewRoots() - { - return this.nativeManager.viewRoots(); - } - - @Override - @Deprecated - public Reference defaultRoot() - { - return this.nativeManager.defaultRoot(); - } - - @Override - public Database database() - { - return this.nativeManager.database(); - } - - @Override - public boolean isAcceptingTasks() - { - return this.nativeManager.isAcceptingTasks(); - } - - @Override - public boolean isRunning() - { - return this.nativeManager.isRunning(); - } - - @Override - public boolean isStartingUp() - { - return this.nativeManager.isStartingUp(); - } - - @Override - public boolean isShuttingDown() - { - return this.nativeManager.isShuttingDown(); - } - - @Override - public void checkAcceptingTasks() - { - this.nativeManager.checkAcceptingTasks(); - } - - @Override - public long initializationTime() - { - return this.nativeManager.initializationTime(); - } - - @Override - public long operationModeTime() - { - return this.nativeManager.operationModeTime(); - } - - @Override - public boolean isActive() - { - return this.nativeManager.isActive(); - } - - @Override - public boolean issueGarbageCollection(long nanoTimeBudget) - { - return this.nativeManager.issueGarbageCollection(nanoTimeBudget); - } - - @Override - public boolean issueFileCheck(long nanoTimeBudget) - { - return this.nativeManager.issueFileCheck(nanoTimeBudget); - } - - @Override - public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) - { - return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); - } - - @Override - public StorageRawFileStatistics createStorageStatistics() - { - return this.nativeManager.createStorageStatistics(); - } - - @Override - public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) - { - this.nativeManager.exportChannels(fileProvider, performGarbageCollection); - } - - @Override - public StorageEntityTypeExportStatistics exportTypes( - StorageEntityTypeExportFileProvider exportFileProvider, - Predicate isExportType) - { - return this.nativeManager.exportTypes(exportFileProvider, isExportType); - } - - @Override - public void importFiles(XGettingEnum importFiles) - { - this.nativeManager.importFiles(importFiles); - } - - @Override - public PersistenceManager persistenceManager() - { - return this.nativeManager.persistenceManager(); - } - - @Override - public long store(Object instance) - { - return EmbeddedStorageManager.super.store(instance); - } - - @Override public EmbeddedStorageManager getNativeStorageManager() - { - return this.nativeManager; - } - - @Override - public void issueFullBackup(StorageLiveFileProvider targetFileProvider, - PersistenceTypeDictionaryExporter typeDictionaryExporter) { - this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); - } - - } diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 96515851..48cf2e4c 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,21 +1,16 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.io.IOException; -import java.nio.file.Path; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; -import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import java.io.IOException; +import java.nio.file.Path; class IntroduceMigrationOnExistingDatastoreTest diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index 7224e0ae..d7d93519 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,27 +1,23 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.atomic.AtomicBoolean; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationManager; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedObject; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class MigrationScriptAfterScriptTest { @@ -40,7 +36,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with one migration script - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -53,7 +49,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -68,13 +64,13 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem @Test void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); final AtomicBoolean notificationReceived = new AtomicBoolean(false); - migrater.setNotificationConsumer( + migrater.registerNotificationConsumer( notification -> { Assertions.assertEquals(firstScript, notification.getExecutedScript()); @@ -104,7 +100,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final MigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); @@ -124,7 +120,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final MigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 8bc4f529..67353baf 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,20 +1,16 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Path; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; -import software.xdev.micromigration.scripts.MigrationScript; -import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; -import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +import java.nio.file.Path; class MultipleScriptsTest @@ -22,11 +18,11 @@ class MultipleScriptsTest @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -41,11 +37,11 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -57,15 +53,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 51b1cccc..5e6dfee8 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,20 +1,18 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.scripts.MigrationScript; -import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; -import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; class StoreStuffInMigrationStorageManagerTest @@ -32,7 +30,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final MigrationScript script = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index badc98fd..6314b3af 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,21 +1,17 @@ package software.xdev.micromigration.migrater; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Path; - -import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; + class ExplicitMigraterTest { diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index cf32f3a8..ecfaf2c5 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.testUtil; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class MicroMigrationScriptDummy implements MigrationScript +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index a6676ef7..dcc90d16 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,23 +1,22 @@ package software.xdev.micromigration.microstream; -import java.nio.file.Path; -import java.util.Objects; - -import software.xdev.micromigration.migrater.MicroMigrater; import one.microstream.afs.nio.types.NioFileSystem; -import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import one.microstream.storage.types.Storage; import one.microstream.storage.types.StorageConfiguration; +import software.xdev.micromigration.migrater.MicroMigrater; + +import java.nio.file.Path; +import java.util.Objects; /** - * Provides static utility calls to create the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} for + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. - * + * * @author Johannes Rabauer - * + * */ public class MigrationEmbeddedStorage { @@ -30,7 +29,6 @@ public class MigrationEmbeddedStorage * @param migrater which is used as source for the migration scripts * @return the created storage manager with the given migrater */ - @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) { Objects.requireNonNull(migrater); diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index a386b73b..03cc2197 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,30 +1,46 @@ package software.xdev.micromigration.microstream; -import java.util.Objects; - -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; -import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import software.xdev.micromigration.version.VersionedRoot; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.function.Predicate; /** * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} + * Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link software.xdev.micromigration.microstream.MigrationManager} to do the actual migration. - * + * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + * * @author Johannes Rabauer - * + * */ -public class MigrationEmbeddedStorageManager extends TunnelingEmbeddedStorageManager +public class MigrationEmbeddedStorageManager + extends VersionAgnosticMigrationEmbeddedStorageManager + implements EmbeddedStorageManager { - private final MicroMigrater migrater ; - private VersionedRoot versionRoot ; - /** * @param nativeManager which will be used as the underlying storage manager. * Almost all methods are only rerouted to this native manager. @@ -37,66 +53,198 @@ public MigrationEmbeddedStorageManager( MicroMigrater migrater ) { - super(nativeManager); - Objects.requireNonNull(migrater); - this.migrater = migrater; + super(nativeManager, migrater); } - /** - * {@inheritDoc} - *

- * Checks if the root object is of the instance of {@link Versioned}. - * If it is not, the root will be replaced with the versioned root and the actual root object - * will be put inside the versioned root. - *

- * After starting the storage manager, all the available update scripts are executed in order - * until the newest version of the datastore is reached. - */ - @Override - public MigrationEmbeddedStorageManager start() - { - this.nativeManager.start(); - if(this.nativeManager.root() instanceof VersionedRoot) - { - this.versionRoot = (VersionedRoot)this.nativeManager.root(); - } - else - { - //Build VersionedRoot around actual root, set by user. - this.versionRoot = new VersionedRoot(this.nativeManager.root()); - nativeManager.setRoot(versionRoot); - nativeManager.storeRoot(); - } - new MigrationManager( - this.versionRoot, - migrater, - this - ) - .migrate(this.versionRoot.getRoot()); - return this; - } + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// - /** - * @return current version that's managed - */ - public MigrationVersion getCurrentVersion() + @Override + public EmbeddedStorageManager startNative() { - return this.versionRoot.getVersion(); + this.getTunnelingManager().start(); + return this; } @Override public Object root() { - return this.versionRoot.getRoot(); + return this.getTunnelingManager().root(); } @Override public Object setRoot(Object newRoot) { - this.versionRoot.setRoot(newRoot); - return newRoot; + return this.getTunnelingManager().setRoot(newRoot); } @Override public long storeRoot() { - return this.nativeManager.store(this.versionRoot); + return this.getTunnelingManager().storeRoot(); } + + @Override + public StorageConfiguration configuration() + { + return this.getTunnelingManager().configuration(); + } + + @Override + public StorageTypeDictionary typeDictionary() + { + return this.getTunnelingManager().typeDictionary(); + } + + @Override + public boolean shutdown() + { + return this.getTunnelingManager().shutdown(); + } + + @Override + public void close() throws StorageException + { + this.getTunnelingManager().close(); + } + + @Override + public StorageConnection createConnection() + { + return this.getTunnelingManager().createConnection(); + } + + + @Override + public PersistenceRootsView viewRoots() + { + return this.getTunnelingManager().viewRoots(); + } + + @Override + @Deprecated + public Reference defaultRoot() + { + return this.getTunnelingManager().defaultRoot(); + } + + @Override + public Database database() + { + return this.getTunnelingManager().database(); + } + + @Override + public boolean isAcceptingTasks() + { + return this.getTunnelingManager().isAcceptingTasks(); + } + + @Override + public boolean isRunning() + { + return this.getTunnelingManager().isRunning(); + } + + @Override + public boolean isStartingUp() + { + return this.getTunnelingManager().isStartingUp(); + } + + @Override + public boolean isShuttingDown() + { + return this.getTunnelingManager().isShuttingDown(); + } + + @Override + public void checkAcceptingTasks() + { + this.getTunnelingManager().checkAcceptingTasks(); + } + + @Override + public long initializationTime() + { + return this.getTunnelingManager().initializationTime(); + } + + @Override + public long operationModeTime() + { + return this.getTunnelingManager().operationModeTime(); + } + + @Override + public boolean isActive() + { + return this.getTunnelingManager().isActive(); + } + + @Override + public boolean issueGarbageCollection(long nanoTimeBudget) + { + return this.getTunnelingManager().issueGarbageCollection(nanoTimeBudget); + } + + @Override + public boolean issueFileCheck(long nanoTimeBudget) + { + return this.getTunnelingManager().issueFileCheck(nanoTimeBudget); + } + + @Override + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { + return this.getTunnelingManager().issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.getTunnelingManager().createStorageStatistics(); + } + + @Override + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { + this.getTunnelingManager().exportChannels(fileProvider, performGarbageCollection); + } + + @Override + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) + { + return this.getTunnelingManager().exportTypes(exportFileProvider, isExportType); + } + + @Override + public void importFiles(XGettingEnum importFiles) + { + this.getTunnelingManager().importFiles(importFiles); + } + + @Override + public PersistenceManager persistenceManager() + { + return this.getTunnelingManager().persistenceManager(); + } + + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.getTunnelingManager(); + } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.getTunnelingManager().issueFullBackup(targetFileProvider, typeDictionaryExporter); + } + } diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 48df48b6..6ae8679d 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,18 +1,19 @@ package software.xdev.micromigration.microstream; -import software.xdev.micromigration.scripts.Context; import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; /** * Interface for scripts to migrate / update datastores. *

* One script is supposed to bring a datastore from a lower version to the target version. - * After the {@link software.xdev.micromigration.scripts.MigrationScript#migrate(Context)} method is called, + * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. * * @author Johannes Rabauer * */ -public interface MigrationScript extends software.xdev.micromigration.scripts.MigrationScript +public interface MigrationScript extends VersionAgnosticMigrationScript {} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java deleted file mode 100644 index 028ce0a2..00000000 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ /dev/null @@ -1,251 +0,0 @@ -package software.xdev.micromigration.microstream; - -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; -import software.xdev.micromigration.version.Versioned; -import one.microstream.afs.types.AFile; -import one.microstream.collections.types.XGettingEnum; -import one.microstream.persistence.binary.types.Binary; -import one.microstream.persistence.types.PersistenceManager; -import one.microstream.persistence.types.PersistenceRootsView; -import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; -import one.microstream.reference.Reference; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import one.microstream.storage.exceptions.StorageException; -import one.microstream.storage.types.Database; -import one.microstream.storage.types.StorageConfiguration; -import one.microstream.storage.types.StorageConnection; -import one.microstream.storage.types.StorageEntityCacheEvaluator; -import one.microstream.storage.types.StorageEntityTypeExportFileProvider; -import one.microstream.storage.types.StorageEntityTypeExportStatistics; -import one.microstream.storage.types.StorageEntityTypeHandler; -import one.microstream.storage.types.StorageLiveFileProvider; -import one.microstream.storage.types.StorageRawFileStatistics; -import one.microstream.storage.types.StorageTypeDictionary; - -import java.util.Objects; -import java.util.function.Predicate; - - -/** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. - *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * - * @author Johannes Rabauer - * - */ -public class TunnelingEmbeddedStorageManager implements EmbeddedStorageManager, VersionAgnosticEmbeddedStorageManager -{ - /** - * The underlying, actual MicroStream EmbeddedStorageManager - */ - protected final EmbeddedStorageManager nativeManager; - - /** - * @param nativeManager which will be used as the underlying storage manager. - * All methods are only rerouted to this native manager. - * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted - * and a {@link Versioned} is placed between the requests. - */ - public TunnelingEmbeddedStorageManager( - EmbeddedStorageManager nativeManager - ) - { - Objects.requireNonNull(nativeManager); - this.nativeManager = nativeManager; - } - - //////////////////////////////////////////////////////////////// - // Simply forward all the methods - //////////////////////////////////////////////////////////////// - - @Override - public TunnelingEmbeddedStorageManager start() - { - this.nativeManager.start(); - return this; - } - - @Override - public Object root() { - return this.nativeManager.root(); - } - - @Override - public Object setRoot(Object newRoot) { - return this.nativeManager.setRoot(newRoot); - } - - @Override - public long storeRoot() { - return this.nativeManager.storeRoot(); - } - - @Override - public StorageConfiguration configuration() - { - return this.nativeManager.configuration(); - } - - @Override - public StorageTypeDictionary typeDictionary() - { - return this.nativeManager.typeDictionary(); - } - - @Override - public boolean shutdown() - { - return this.nativeManager.shutdown(); - } - - @Override - public void close() throws StorageException - { - this.nativeManager.close(); - } - - @Override - public StorageConnection createConnection() - { - return this.nativeManager.createConnection(); - } - - - @Override - public PersistenceRootsView viewRoots() - { - return this.nativeManager.viewRoots(); - } - - @Override - @Deprecated - public Reference defaultRoot() - { - return this.nativeManager.defaultRoot(); - } - - @Override - public Database database() - { - return this.nativeManager.database(); - } - - @Override - public boolean isAcceptingTasks() - { - return this.nativeManager.isAcceptingTasks(); - } - - @Override - public boolean isRunning() - { - return this.nativeManager.isRunning(); - } - - @Override - public boolean isStartingUp() - { - return this.nativeManager.isStartingUp(); - } - - @Override - public boolean isShuttingDown() - { - return this.nativeManager.isShuttingDown(); - } - - @Override - public void checkAcceptingTasks() - { - this.nativeManager.checkAcceptingTasks(); - } - - @Override - public long initializationTime() - { - return this.nativeManager.initializationTime(); - } - - @Override - public long operationModeTime() - { - return this.nativeManager.operationModeTime(); - } - - @Override - public boolean isActive() - { - return this.nativeManager.isActive(); - } - - @Override - public boolean issueGarbageCollection(long nanoTimeBudget) - { - return this.nativeManager.issueGarbageCollection(nanoTimeBudget); - } - - @Override - public boolean issueFileCheck(long nanoTimeBudget) - { - return this.nativeManager.issueFileCheck(nanoTimeBudget); - } - - @Override - public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) - { - return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); - } - - @Override - public StorageRawFileStatistics createStorageStatistics() - { - return this.nativeManager.createStorageStatistics(); - } - - @Override - public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) - { - this.nativeManager.exportChannels(fileProvider, performGarbageCollection); - } - - @Override - public StorageEntityTypeExportStatistics exportTypes( - StorageEntityTypeExportFileProvider exportFileProvider, - Predicate isExportType) - { - return this.nativeManager.exportTypes(exportFileProvider, isExportType); - } - - @Override - public void importFiles(XGettingEnum importFiles) - { - this.nativeManager.importFiles(importFiles); - } - - @Override - public PersistenceManager persistenceManager() - { - return this.nativeManager.persistenceManager(); - } - - @Override - public long store(Object instance) - { - return EmbeddedStorageManager.super.store(instance); - } - - @Override public EmbeddedStorageManager getNativeStorageManager() - { - return this.nativeManager; - } - - @Override - public void issueFullBackup(StorageLiveFileProvider targetFileProvider, - PersistenceTypeDictionaryExporter typeDictionaryExporter) { - this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); - } - - } diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 96515851..48cf2e4c 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,21 +1,16 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.io.IOException; -import java.nio.file.Path; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; -import software.xdev.micromigration.version.MigrationVersion; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import java.io.IOException; +import java.nio.file.Path; class IntroduceMigrationOnExistingDatastoreTest diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index 7224e0ae..d7d93519 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,27 +1,23 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.atomic.AtomicBoolean; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationManager; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedObject; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class MigrationScriptAfterScriptTest { @@ -40,7 +36,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with one migration script - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -53,7 +49,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -68,13 +64,13 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem @Test void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); final AtomicBoolean notificationReceived = new AtomicBoolean(false); - migrater.setNotificationConsumer( + migrater.registerNotificationConsumer( notification -> { Assertions.assertEquals(firstScript, notification.getExecutedScript()); @@ -104,7 +100,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final MigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); @@ -124,7 +120,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final MigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 8bc4f529..71718298 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,20 +1,20 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Path; - +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; -import software.xdev.micromigration.scripts.MigrationScript; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; + +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; class MultipleScriptsTest @@ -22,11 +22,11 @@ class MultipleScriptsTest @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -34,18 +34,18 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(2, migrationStorageManager.root()); - Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); } } @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -57,15 +57,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final MigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final MigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final MigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 51b1cccc..5e6dfee8 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,20 +1,18 @@ package software.xdev.micromigration.integration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.scripts.MigrationScript; -import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; -import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.io.TempDir; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; class StoreStuffInMigrationStorageManagerTest @@ -32,7 +30,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final MigrationScript script = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index badc98fd..6314b3af 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,21 +1,17 @@ package software.xdev.micromigration.migrater; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Path; - -import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; + class ExplicitMigraterTest { diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index cf32f3a8..ecfaf2c5 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.testUtil; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class MicroMigrationScriptDummy implements MigrationScript +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java index 4d7bb4d6..328ea574 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java @@ -1,21 +1,20 @@ package software.xdev.micromigration.migrater; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Modifier; -import java.util.TreeSet; - import org.reflections.Reflections; import org.reflections.scanners.SubTypesScanner; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.reflections.util.FilterBuilder; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; -import software.xdev.micromigration.scripts.MigrationScript; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.util.TreeSet; /** * Contains all the available scripts to migrate the datastore to a certain version. *

- * Searches all implementation of {@link MigrationScript} in the specified package + * Searches all implementation of {@link VersionAgnosticMigrationScript} in the specified package * and it's the sub packages. * * @author Johannes Rabauer @@ -23,10 +22,11 @@ */ public class ReflectiveMigrater extends AbstractMigrater { - private final TreeSet> sortedScripts = new TreeSet<>(MigrationScript.COMPARATOR); + private final TreeSet> sortedScripts = new TreeSet<>( + VersionAgnosticMigrationScript.COMPARATOR); /** - * @param packagePath defines the package in which {@link MigrationScript}s will be searched. + * @param packagePath defines the package in which {@link VersionAgnosticMigrationScript}s will be searched. * Also searches through all sub packages of packagePath * @throws ScriptInstantiationException if a class in the given package could not be instantiated */ @@ -41,12 +41,13 @@ public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationEx .filterInputsBy(new FilterBuilder().includePackage(packagePath)) ); - for (Class scriptClass : reflections.getSubTypesOf(MigrationScript.class)) + for (Class scriptClass : reflections.getSubTypesOf( + VersionAgnosticMigrationScript.class)) { //Only instanciate non abstract classes if(!Modifier.isAbstract(scriptClass.getModifiers())) { - MigrationScript instanciatedScript = instanciateClass(scriptClass); + VersionAgnosticMigrationScript instanciatedScript = instanciateClass(scriptClass); checkIfVersionIsAlreadyRegistered(instanciatedScript); this.sortedScripts.add(instanciatedScript); } @@ -54,7 +55,7 @@ public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationEx } @SuppressWarnings("rawtypes") - private MigrationScript instanciateClass(Class scriptClass) throws ScriptInstantiationException + private VersionAgnosticMigrationScript instanciateClass(Class scriptClass) throws ScriptInstantiationException { try { return scriptClass.getDeclaredConstructor().newInstance(); @@ -71,7 +72,7 @@ private MigrationScript instanciateClass(Class s } @Override - public TreeSet> getSortedScripts() + public TreeSet> getSortedScripts() { return this.sortedScripts; } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java index 70f1eee0..356a7f85 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.migrater.scripts.abstractSuperClass; -import software.xdev.micromigration.scripts.MigrationScript; -import software.xdev.micromigration.version.MigrationVersion; import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; -public abstract class AbstractScript implements MigrationScript +public abstract class AbstractScript implements VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java index cf4fcf5d..b2589cb1 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.errorThrowing; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class ErrorThrowingScript implements MigrationScript +public class ErrorThrowingScript implements VersionAgnosticMigrationScript { public ErrorThrowingScript() { diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java index 4c72a3c0..e024fec0 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.exceptionThrowing; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class ExceptionThrowingScript implements MigrationScript +public class ExceptionThrowingScript implements VersionAgnosticMigrationScript { public ExceptionThrowingScript() throws Exception { diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java index 33d28f64..8c95b387 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.includeSubPackages; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class ValidScript implements MigrationScript +public class ValidScript implements VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java index 16cf5d1f..e9379bbc 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class ValidScriptInSubpackage implements MigrationScript +public class ValidScriptInSubpackage implements VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java index 72438d97..674ee0ae 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class ValidScript implements MigrationScript +public class ValidScript implements VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java index 65603e36..e932011a 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.noCorrectConstructor; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class NoCorrectConstructorScript implements MigrationScript +public class NoCorrectConstructorScript implements VersionAgnosticMigrationScript { private final String argument; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java index 2ea5fe84..0ab3b094 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.valid; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.MigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class ValidScript implements MigrationScript +public class ValidScript implements VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() From 723cef34c0ac620dfd07ead64d3ad8b72f2cba6d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 22 Dec 2022 10:39:18 +0100 Subject: [PATCH 172/306] Working refactoring --- ...nosticMigrationEmbeddedStorageManager.java | 6 +- .../VersionAgnosticMigrationManager.java | 6 +- .../migrater/AbstractMigrater.java | 22 +- .../migrater/MicroMigrater.java | 11 +- .../xdev/micromigration/scripts/Context.java | 7 +- .../ReflectiveVersionMigrationScript.java | 3 +- .../scripts/SimpleMigrationScript.java | 9 +- .../scripts/SimpleTypedMigrationScript.java | 3 +- .../VersionAgnosticMigrationScript.java | 3 +- .../ReflectiveVersionMigrationScriptTest.java | 10 +- examples/pom.xml | 4 +- .../explicit/scripts/UpdateToV1_0.java | 8 +- .../explicit/scripts/UpdateToV1_1.java | 8 +- .../notification/MainNotification.java | 5 +- .../practical/embedded/UpdateToV1_0.java | 8 +- .../practical/embedded/UpdateToV2_0.java | 4 +- .../migrationManager/UpdateToV1_0.java | 4 +- .../migrationManager/UpdateToV2_0.java | 4 +- .../reflective/scripts/UpdateToV1_0.java | 8 +- .../reflective/scripts/UpdateToV1_1.java | 8 +- .../microstream/MigrationManager.java | 4 +- .../MigrationScriptAfterScriptTest.java | 4 +- .../integration/MultipleScriptsTest.java | 15 +- ...oreStuffInMigrationStorageManagerTest.java | 3 +- .../migrater/ExplicitMigraterTest.java | 15 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- .../MigrationEmbeddedStorageManager.java | 215 +-------------- .../microstream/MigrationManager.java | 31 +++ .../microstream/MigrationScript.java | 3 +- .../TunnelingEmbeddedStorageManager.java | 253 ++++++++++++++++++ ...oduceMigrationOnExistingDatastoreTest.java | 7 +- .../MigrationScriptAfterScriptTest.java | 13 +- .../integration/MultipleScriptsTest.java | 21 +- ...oreStuffInMigrationStorageManagerTest.java | 5 +- .../migrater/ExplicitMigraterTest.java | 5 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- .../MigrationEmbeddedStorageManager.java | 215 +-------------- .../microstream/MigrationManager.java | 31 +++ .../microstream/MigrationScript.java | 3 +- .../TunnelingEmbeddedStorageManager.java | 253 ++++++++++++++++++ ...oduceMigrationOnExistingDatastoreTest.java | 7 +- .../MigrationScriptAfterScriptTest.java | 13 +- .../integration/MultipleScriptsTest.java | 15 +- ...oreStuffInMigrationStorageManagerTest.java | 5 +- .../migrater/ExplicitMigraterTest.java | 5 +- .../testUtil/MicroMigrationScriptDummy.java | 6 +- reflection/pom.xml | 12 +- .../AbstractScript.java | 4 +- .../v1_ValidScript.java | 4 +- .../abstractSuperClass/AbstractScript.java | 5 +- .../abstractSuperClass/ValidScript.java | 4 +- .../errorThrowing/ErrorThrowingScript.java | 8 +- .../ExceptionThrowingScript.java | 8 +- .../includeSubPackages/ValidScript.java | 8 +- .../subpackage/ValidScriptInSubpackage.java | 8 +- .../ValidScript.java | 8 +- .../NoCorrectConstructorScript.java | 8 +- .../reflectiveVersion/v1_ValidScript.java | 6 +- .../migrater/scripts/valid/ValidScript.java | 8 +- 59 files changed, 770 insertions(+), 621 deletions(-) create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java create mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java create mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index c960aa4d..fbc48b1c 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -74,7 +74,7 @@ public SELF start() new VersionAgnosticMigrationManager( this.versionRoot, migrater, - this.tunnelingManager + this ) .migrate(this.versionRoot.getRoot()); return (SELF)this; @@ -106,6 +106,10 @@ public long store(Object objectToStore) { return this.tunnelingManager.store(objectToStore); } + public boolean shutdown(){ + return this.tunnelingManager.shutdown(); + } + @Override public void close() { this.tunnelingManager.close(); diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index 201d5b1e..08adb5f4 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -26,7 +26,7 @@ public class VersionAgnosticMigrationManager private final Consumer currentVersionSetter; private final Consumer currentVersionStorer; private final MicroMigrater migrater ; - private final VersionAgnosticTunnelingEmbeddedStorageManager storageManager ; + private final VersionAgnosticMigrationEmbeddedStorageManager storageManager ; /** * Much more complicated constructor than {@link VersionAgnosticMigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. @@ -43,7 +43,7 @@ public class VersionAgnosticMigrationManager final Consumer currentVersionSetter, final Consumer currentVersionStorer, final MicroMigrater migrater , - final VersionAgnosticTunnelingEmbeddedStorageManager storageManager + final VersionAgnosticMigrationEmbeddedStorageManager storageManager ) { Objects.requireNonNull(currentVersionGetter); @@ -70,7 +70,7 @@ public class VersionAgnosticMigrationManager ( final Versioned versionedObject, final MicroMigrater migrater , - final VersionAgnosticTunnelingEmbeddedStorageManager storageManager + final VersionAgnosticMigrationEmbeddedStorageManager storageManager ) { this( diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index a81ba4a5..c7db6908 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -1,6 +1,6 @@ package software.xdev.micromigration.migrater; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -34,9 +34,9 @@ public void registerNotificationConsumer(Consumer> MigrationVersion migrateToNewest( MigrationVersion fromVersion , - VersionAgnosticEmbeddedStorageManager storageManager, + E storageManager, Object root ) { @@ -54,14 +54,15 @@ public MigrationVersion migrateToNewest( ); } return fromVersion; - } - + } + + @SuppressWarnings("unchecked") @Override - public MigrationVersion migrateToVersion + public > MigrationVersion migrateToVersion ( MigrationVersion fromVersion , MigrationVersion targetVersion , - VersionAgnosticEmbeddedStorageManager storageManager , + E storageManager , Object objectToMigrate ) { @@ -72,6 +73,7 @@ public MigrationVersion migrateToNewest( MigrationVersion updateVersionWhichWasExecuted = fromVersion; for (VersionAgnosticMigrationScript script : this.getSortedScripts()) { + VersionAgnosticMigrationScript castedScript = (VersionAgnosticMigrationScript)script; if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) { if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) @@ -82,7 +84,7 @@ public MigrationVersion migrateToNewest( { startDate = LocalDateTime.now(); } - updateVersionWhichWasExecuted = migrateWithScript(script, storageManager, objectToMigrate); + updateVersionWhichWasExecuted = migrateWithScript(castedScript, storageManager, objectToMigrate); if(!this.notificationConsumers.isEmpty()) { ScriptExecutionNotificationWithScriptReference scriptNotification = @@ -102,9 +104,9 @@ public MigrationVersion migrateToNewest( } @SuppressWarnings("unchecked") - private MigrationVersion migrateWithScript( + private > MigrationVersion migrateWithScript( VersionAgnosticMigrationScript script , - VersionAgnosticEmbeddedStorageManager storageManager , + E storageManager , Object objectToMigrate ) { diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index cad1bf94..17657425 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,6 +1,7 @@ package software.xdev.micromigration.migrater; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; @@ -14,7 +15,7 @@ * @author Johannes Rabauer * */ -public interface MicroMigrater +public interface MicroMigrater { /** * @return all the contained {@link VersionAgnosticMigrationScript}s, sorted by their {@link MigrationVersion} ascending. @@ -42,9 +43,9 @@ public interface MicroMigrater * * @return the target version of the last executed script */ - MigrationVersion migrateToNewest( + > MigrationVersion migrateToNewest( MigrationVersion fromVersion , - VersionAgnosticEmbeddedStorageManager storageManager, + E storageManager, Object root ); @@ -72,11 +73,11 @@ MigrationVersion migrateToNewest( * * @return the target version of the last executed script */ - MigrationVersion migrateToVersion + > MigrationVersion migrateToVersion ( MigrationVersion fromVersion , MigrationVersion targetVersion , - VersionAgnosticEmbeddedStorageManager storageManager , + E storageManager , Object objectToMigrate ); } diff --git a/core/src/main/java/software/xdev/micromigration/scripts/Context.java b/core/src/main/java/software/xdev/micromigration/scripts/Context.java index 4e266884..49fcfa72 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/Context.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/Context.java @@ -1,8 +1,5 @@ package software.xdev.micromigration.scripts; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; - - /** * Container that holds necessary information for the execution of an {@link VersionAgnosticMigrationScript} * @@ -19,12 +16,12 @@ public class Context */ public Context( final T migratingObject, - final VersionAgnosticEmbeddedStorageManager storageManager + final E storageManager ) { super(); this.migratingObject = migratingObject; - this.storageManager = storageManager.getNativeStorageManager(); + this.storageManager = storageManager; } /** diff --git a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java index ef907004..edf1253c 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,5 +1,6 @@ package software.xdev.micromigration.scripts; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; import java.util.ArrayList; @@ -28,7 +29,7 @@ * @author Johannes Rabauer * */ -public abstract class ReflectiveVersionMigrationScript implements VersionAgnosticMigrationScript +public abstract class ReflectiveVersionMigrationScript> implements VersionAgnosticMigrationScript { private final static char PREFIX = 'v'; private final static String VERSION_SEPERATOR = "_"; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java index 2cf97149..c27ac463 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java @@ -1,9 +1,10 @@ package software.xdev.micromigration.scripts; -import java.util.function.Consumer; - +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; +import java.util.function.Consumer; + /** * Provides a simple way to create a migration script with the necessary version @@ -12,7 +13,7 @@ * @author Johannes Rabauer * */ -public class SimpleMigrationScript extends SimpleTypedMigrationScript +public class SimpleMigrationScript> extends SimpleTypedMigrationScript { /** * @param targetVersion to which the script is updating the object @@ -20,7 +21,7 @@ public class SimpleMigrationScript extends SimpleTypedMigrationScript> consumer + final Consumer> consumer ) { super(targetVersion, consumer); diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java index 7802e33b..4ab437a7 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java @@ -1,5 +1,6 @@ package software.xdev.micromigration.scripts; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; import java.util.Objects; @@ -13,7 +14,7 @@ * @author Johannes Rabauer * */ -public class SimpleTypedMigrationScript implements VersionAgnosticMigrationScript +public class SimpleTypedMigrationScript> implements VersionAgnosticMigrationScript { private final MigrationVersion version ; private final Consumer> consumer; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java index 39910ec8..16e63753 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java @@ -1,5 +1,6 @@ package software.xdev.micromigration.scripts; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; import java.util.Comparator; @@ -15,7 +16,7 @@ * @author Johannes Rabauer * */ -public interface VersionAgnosticMigrationScript +public interface VersionAgnosticMigrationScript> { /** * @return the version of the datastore after this script is executed. diff --git a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index 83d50b1b..b63f3645 100644 --- a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -1,12 +1,8 @@ package software.xdev.micromigration.scripts; -import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; - -import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.ReflectiveVersionMigrationScript; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; class ReflectiveVersionMigrationScriptTest @@ -127,10 +123,10 @@ void testInvalildName_v___InvalidClassName() } - public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript + public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript> { @Override - public void migrate(Context context) { + public void migrate(Context> context) { //Dummy } } diff --git a/examples/pom.xml b/examples/pom.xml index e54c2af0..9b018332 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.6 + 0.0.7 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.6 + 0.0.7 micro-migration diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 2d65e9be..02decd38 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.examples.explicit.scripts; -import java.util.Date; - +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Date; public class UpdateToV1_0 implements MigrationScript @@ -17,7 +17,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 78b2f157..7db5b20c 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.examples.explicit.scripts; -import java.util.Date; - +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Date; public class UpdateToV1_1 implements MigrationScript @@ -17,7 +17,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index 5bf80f34..c2e28d03 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.examples.notification; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; @@ -24,7 +23,7 @@ public static void main(String[] args) final ExplicitMigrater migrater = new ExplicitMigrater( new MainNotification.UpdateToV1_0() ); - migrater.setNotificationConsumer( + migrater.registerNotificationConsumer( scriptExecutionNotification -> System.out.println("Script " + scriptExecutionNotification.getExecutedScript().getClass().getSimpleName() + " executed.") ); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); @@ -46,7 +45,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index e3785e42..5f72f0c2 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.examples.practical.embedded; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; +import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; +import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; -import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; public class UpdateToV1_0 implements MigrationScript @@ -18,7 +18,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println("Executing Script for v1.0..."); software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = context.getMigratingObject(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index 3d7911d7..3274773f 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -2,10 +2,10 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; public class UpdateToV2_0 implements MigrationScript @@ -17,7 +17,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println("Executing Script for v2.0..."); final BusinessBranch branch = context.getMigratingObject(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index b2e4dbf3..027cbf18 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -3,11 +3,11 @@ import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; public class UpdateToV1_0 implements MigrationScript> @@ -19,7 +19,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context, EmbeddedStorageManager> context) + public void migrate(Context, MigrationEmbeddedStorageManager> context) { System.out.println("Executing Script for v1.0..."); VersionedObject versionedBranch = context.getMigratingObject(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 155558bc..3eaf2937 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -2,11 +2,11 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; public class UpdateToV2_0 implements MigrationScript> @@ -18,7 +18,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context, EmbeddedStorageManager> context) + public void migrate(Context, MigrationEmbeddedStorageManager> context) { System.out.println("Executing Script for v2.0..."); VersionedObject versionedBranch = context.getMigratingObject(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 79f2caa4..8fa8a359 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.examples.reflective.scripts; -import java.util.Date; - +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Date; public class UpdateToV1_0 implements MigrationScript @@ -17,7 +17,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index 273354fd..da1b76c2 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.examples.reflective.scripts; -import java.util.Date; - +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; + +import java.util.Date; public class UpdateToV1_1 implements MigrationScript @@ -17,7 +17,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index e00da405..dfaf8d71 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -19,13 +19,13 @@ public MigrationManager( MicroMigrater migrater, EmbeddedStorageManager storageManager) { - super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new TunnelingEmbeddedStorageManager(storageManager)); + super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } public MigrationManager( Versioned versionedObject, MicroMigrater migrater, EmbeddedStorageManager storageManager) { - super(versionedObject, migrater, new TunnelingEmbeddedStorageManager(storageManager)); + super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } } diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index c473b09b..e714a112 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -103,7 +103,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final VersionAgnosticMigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); @@ -123,7 +123,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final VersionAgnosticMigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index df5e060f..115ba3bb 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -22,11 +21,11 @@ class MultipleScriptsTest @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -41,11 +40,11 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -57,15 +56,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index cbfee9c4..f7f3c9f2 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; @@ -32,7 +31,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index badc98fd..be6360c3 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,21 +1,18 @@ package software.xdev.micromigration.migrater; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import java.nio.file.Path; - -import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; - import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; + class ExplicitMigraterTest { @@ -58,7 +55,7 @@ void testWrongTypedVersionedScript(@TempDir Path storageFolder) storageManager.storeRoot(); } final ExplicitMigrater migrater = new ExplicitMigrater( - new SimpleTypedMigrationScript( + new SimpleTypedMigrationScript( new MigrationVersion(1), (context) -> { context.getStorageManager().setRoot(context.getMigratingObject() + 1); diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index ecfaf2c5..1f6b8d9a 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.testUtil; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; @@ -22,7 +22,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) { + public void migrate(Context context) { // Don't do anything. } } diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 03cc2197..2073bd7f 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,31 +1,11 @@ package software.xdev.micromigration.microstream; -import one.microstream.afs.types.AFile; -import one.microstream.collections.types.XGettingEnum; -import one.microstream.persistence.binary.types.Binary; -import one.microstream.persistence.types.PersistenceManager; -import one.microstream.persistence.types.PersistenceRootsView; -import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; -import one.microstream.reference.Reference; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import one.microstream.storage.exceptions.StorageException; -import one.microstream.storage.types.Database; -import one.microstream.storage.types.StorageConfiguration; -import one.microstream.storage.types.StorageConnection; -import one.microstream.storage.types.StorageEntityCacheEvaluator; -import one.microstream.storage.types.StorageEntityTypeExportFileProvider; -import one.microstream.storage.types.StorageEntityTypeExportStatistics; -import one.microstream.storage.types.StorageEntityTypeHandler; -import one.microstream.storage.types.StorageLiveFileProvider; -import one.microstream.storage.types.StorageRawFileStatistics; -import one.microstream.storage.types.StorageTypeDictionary; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; -import java.util.function.Predicate; - /** * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. @@ -39,7 +19,6 @@ */ public class MigrationEmbeddedStorageManager extends VersionAgnosticMigrationEmbeddedStorageManager - implements EmbeddedStorageManager { /** * @param nativeManager which will be used as the underlying storage manager. @@ -53,198 +32,6 @@ public MigrationEmbeddedStorageManager( MicroMigrater migrater ) { - super(nativeManager, migrater); - } - - //////////////////////////////////////////////////////////////// - // Simply forward all the methods - //////////////////////////////////////////////////////////////// - - @Override - public EmbeddedStorageManager startNative() - { - this.getTunnelingManager().start(); - return this; - } - - @Override - public Object root() { - return this.getTunnelingManager().root(); - } - - @Override - public Object setRoot(Object newRoot) { - return this.getTunnelingManager().setRoot(newRoot); - } - - @Override - public long storeRoot() { - return this.getTunnelingManager().storeRoot(); - } - - @Override - public StorageConfiguration configuration() - { - return this.getTunnelingManager().configuration(); - } - - @Override - public StorageTypeDictionary typeDictionary() - { - return this.getTunnelingManager().typeDictionary(); - } - - @Override - public boolean shutdown() - { - return this.getTunnelingManager().shutdown(); - } - - @Override - public void close() throws StorageException - { - this.getTunnelingManager().close(); + super(new TunnelingEmbeddedStorageManager(nativeManager), migrater); } - - @Override - public StorageConnection createConnection() - { - return this.getTunnelingManager().createConnection(); - } - - - @Override - public PersistenceRootsView viewRoots() - { - return this.getTunnelingManager().viewRoots(); - } - - @Override - @Deprecated - public Reference defaultRoot() - { - return this.getTunnelingManager().defaultRoot(); - } - - @Override - public Database database() - { - return this.getTunnelingManager().database(); - } - - @Override - public boolean isAcceptingTasks() - { - return this.getTunnelingManager().isAcceptingTasks(); - } - - @Override - public boolean isRunning() - { - return this.getTunnelingManager().isRunning(); - } - - @Override - public boolean isStartingUp() - { - return this.getTunnelingManager().isStartingUp(); - } - - @Override - public boolean isShuttingDown() - { - return this.getTunnelingManager().isShuttingDown(); - } - - @Override - public void checkAcceptingTasks() - { - this.getTunnelingManager().checkAcceptingTasks(); - } - - @Override - public long initializationTime() - { - return this.getTunnelingManager().initializationTime(); - } - - @Override - public long operationModeTime() - { - return this.getTunnelingManager().operationModeTime(); - } - - @Override - public boolean isActive() - { - return this.getTunnelingManager().isActive(); - } - - @Override - public boolean issueGarbageCollection(long nanoTimeBudget) - { - return this.getTunnelingManager().issueGarbageCollection(nanoTimeBudget); - } - - @Override - public boolean issueFileCheck(long nanoTimeBudget) - { - return this.getTunnelingManager().issueFileCheck(nanoTimeBudget); - } - - @Override - public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) - { - return this.getTunnelingManager().issueCacheCheck(nanoTimeBudget, entityEvaluator); - } - - @Override - public StorageRawFileStatistics createStorageStatistics() - { - return this.getTunnelingManager().createStorageStatistics(); - } - - @Override - public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) - { - this.getTunnelingManager().exportChannels(fileProvider, performGarbageCollection); - } - - @Override - public StorageEntityTypeExportStatistics exportTypes( - StorageEntityTypeExportFileProvider exportFileProvider, - Predicate isExportType) - { - return this.getTunnelingManager().exportTypes(exportFileProvider, isExportType); - } - - @Override - public void importFiles(XGettingEnum importFiles) - { - this.getTunnelingManager().importFiles(importFiles); - } - - @Override - public PersistenceManager persistenceManager() - { - return this.getTunnelingManager().persistenceManager(); - } - - @Override - public long store(Object instance) - { - return EmbeddedStorageManager.super.store(instance); - } - - @Override public EmbeddedStorageManager getNativeStorageManager() - { - return this.getTunnelingManager(); - } - - @Override - public void issueFullBackup(StorageLiveFileProvider targetFileProvider, - PersistenceTypeDictionaryExporter typeDictionaryExporter) { - this.getTunnelingManager().issueFullBackup(targetFileProvider, typeDictionaryExporter); - } - } diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java new file mode 100644 index 00000000..dfaf8d71 --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -0,0 +1,31 @@ +package software.xdev.micromigration.microstream; + +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; + +import java.util.function.Consumer; +import java.util.function.Supplier; + + +public class MigrationManager extends VersionAgnosticMigrationManager +{ + public MigrationManager( + Supplier currentVersionGetter, + Consumer currentVersionSetter, + Consumer currentVersionStorer, + MicroMigrater migrater, + EmbeddedStorageManager storageManager) + { + super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } + + public MigrationManager( + Versioned versionedObject, MicroMigrater migrater, + EmbeddedStorageManager storageManager) + { + super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } +} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 6ae8679d..40662841 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.microstream; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -15,5 +14,5 @@ * @author Johannes Rabauer * */ -public interface MigrationScript extends VersionAgnosticMigrationScript +public interface MigrationScript extends VersionAgnosticMigrationScript {} diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..350b09c4 --- /dev/null +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -0,0 +1,253 @@ +package software.xdev.micromigration.microstream; + +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; + +import java.util.Objects; +import java.util.function.Predicate; + + +/** + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManager} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class TunnelingEmbeddedStorageManager + implements + EmbeddedStorageManager, + VersionAgnosticTunnelingEmbeddedStorageManager +{ + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ + protected final EmbeddedStorageManager nativeManager; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + */ + public TunnelingEmbeddedStorageManager( + EmbeddedStorageManager nativeManager + ) + { + Objects.requireNonNull(nativeManager); + this.nativeManager = nativeManager; + } + + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + + @Override + public TunnelingEmbeddedStorageManager start() + { + this.nativeManager.start(); + return this; + } + + @Override + public Object root() { + return this.nativeManager.root(); + } + + @Override + public Object setRoot(Object newRoot) { + return this.nativeManager.setRoot(newRoot); + } + + @Override + public long storeRoot() { + return this.nativeManager.storeRoot(); + } + + @Override + public StorageConfiguration configuration() + { + return this.nativeManager.configuration(); + } + + @Override + public StorageTypeDictionary typeDictionary() + { + return this.nativeManager.typeDictionary(); + } + + @Override + public boolean shutdown() + { + return this.nativeManager.shutdown(); + } + + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + + @Override + public StorageConnection createConnection() + { + return this.nativeManager.createConnection(); + } + + + @Override + public PersistenceRootsView viewRoots() + { + return this.nativeManager.viewRoots(); + } + + @Override + @Deprecated + public Reference defaultRoot() + { + return this.nativeManager.defaultRoot(); + } + + @Override + public Database database() + { + return this.nativeManager.database(); + } + + @Override + public boolean isAcceptingTasks() + { + return this.nativeManager.isAcceptingTasks(); + } + + @Override + public boolean isRunning() + { + return this.nativeManager.isRunning(); + } + + @Override + public boolean isStartingUp() + { + return this.nativeManager.isStartingUp(); + } + + @Override + public boolean isShuttingDown() + { + return this.nativeManager.isShuttingDown(); + } + + @Override + public void checkAcceptingTasks() + { + this.nativeManager.checkAcceptingTasks(); + } + + @Override + public long initializationTime() + { + return this.nativeManager.initializationTime(); + } + + @Override + public long operationModeTime() + { + return this.nativeManager.operationModeTime(); + } + + @Override + public boolean isActive() + { + return this.nativeManager.isActive(); + } + + @Override + public boolean issueGarbageCollection(long nanoTimeBudget) + { + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); + } + + @Override + public boolean issueFileCheck(long nanoTimeBudget) + { + return this.nativeManager.issueFileCheck(nanoTimeBudget); + } + + @Override + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.nativeManager.createStorageStatistics(); + } + + @Override + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); + } + + @Override + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) + { + return this.nativeManager.exportTypes(exportFileProvider, isExportType); + } + + @Override + public void importFiles(XGettingEnum importFiles) + { + this.nativeManager.importFiles(importFiles); + } + + @Override + public PersistenceManager persistenceManager() + { + return this.nativeManager.persistenceManager(); + } + + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } +} diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 48cf2e4c..ebd46b8b 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -2,9 +2,10 @@ import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; @@ -12,6 +13,8 @@ import java.io.IOException; import java.nio.file.Path; +import static org.junit.jupiter.api.Assertions.assertEquals; + class IntroduceMigrationOnExistingDatastoreTest { @@ -32,7 +35,7 @@ void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(ROOT, migrationStorageManager.root()); - Assertions.assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); } } } diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index d7d93519..e714a112 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -5,6 +5,9 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -36,7 +39,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with one migration script - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -49,7 +52,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -64,7 +67,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem @Test void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -100,7 +103,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final VersionAgnosticMigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); @@ -120,7 +123,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final VersionAgnosticMigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 67353baf..0c431fbe 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,9 +1,10 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; @@ -12,17 +13,19 @@ import java.nio.file.Path; +import static org.junit.jupiter.api.Assertions.assertEquals; + class MultipleScriptsTest { @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -30,18 +33,18 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(2, migrationStorageManager.root()); - Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); } } @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -53,15 +56,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 5e6dfee8..f7f3c9f2 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,8 +1,9 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -30,7 +31,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 6314b3af..be6360c3 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,9 +1,10 @@ package software.xdev.micromigration.migrater; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; @@ -54,7 +55,7 @@ void testWrongTypedVersionedScript(@TempDir Path storageFolder) storageManager.storeRoot(); } final ExplicitMigrater migrater = new ExplicitMigrater( - new SimpleTypedMigrationScript( + new SimpleTypedMigrationScript( new MigrationVersion(1), (context) -> { context.getStorageManager().setRoot(context.getMigratingObject() + 1); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index ecfaf2c5..1f6b8d9a 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.testUtil; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; @@ -22,7 +22,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) { + public void migrate(Context context) { // Don't do anything. } } diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 03cc2197..2073bd7f 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,31 +1,11 @@ package software.xdev.micromigration.microstream; -import one.microstream.afs.types.AFile; -import one.microstream.collections.types.XGettingEnum; -import one.microstream.persistence.binary.types.Binary; -import one.microstream.persistence.types.PersistenceManager; -import one.microstream.persistence.types.PersistenceRootsView; -import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; -import one.microstream.reference.Reference; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import one.microstream.storage.exceptions.StorageException; -import one.microstream.storage.types.Database; -import one.microstream.storage.types.StorageConfiguration; -import one.microstream.storage.types.StorageConnection; -import one.microstream.storage.types.StorageEntityCacheEvaluator; -import one.microstream.storage.types.StorageEntityTypeExportFileProvider; -import one.microstream.storage.types.StorageEntityTypeExportStatistics; -import one.microstream.storage.types.StorageEntityTypeHandler; -import one.microstream.storage.types.StorageLiveFileProvider; -import one.microstream.storage.types.StorageRawFileStatistics; -import one.microstream.storage.types.StorageTypeDictionary; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; -import java.util.function.Predicate; - /** * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. @@ -39,7 +19,6 @@ */ public class MigrationEmbeddedStorageManager extends VersionAgnosticMigrationEmbeddedStorageManager - implements EmbeddedStorageManager { /** * @param nativeManager which will be used as the underlying storage manager. @@ -53,198 +32,6 @@ public MigrationEmbeddedStorageManager( MicroMigrater migrater ) { - super(nativeManager, migrater); - } - - //////////////////////////////////////////////////////////////// - // Simply forward all the methods - //////////////////////////////////////////////////////////////// - - @Override - public EmbeddedStorageManager startNative() - { - this.getTunnelingManager().start(); - return this; - } - - @Override - public Object root() { - return this.getTunnelingManager().root(); - } - - @Override - public Object setRoot(Object newRoot) { - return this.getTunnelingManager().setRoot(newRoot); - } - - @Override - public long storeRoot() { - return this.getTunnelingManager().storeRoot(); - } - - @Override - public StorageConfiguration configuration() - { - return this.getTunnelingManager().configuration(); - } - - @Override - public StorageTypeDictionary typeDictionary() - { - return this.getTunnelingManager().typeDictionary(); - } - - @Override - public boolean shutdown() - { - return this.getTunnelingManager().shutdown(); - } - - @Override - public void close() throws StorageException - { - this.getTunnelingManager().close(); + super(new TunnelingEmbeddedStorageManager(nativeManager), migrater); } - - @Override - public StorageConnection createConnection() - { - return this.getTunnelingManager().createConnection(); - } - - - @Override - public PersistenceRootsView viewRoots() - { - return this.getTunnelingManager().viewRoots(); - } - - @Override - @Deprecated - public Reference defaultRoot() - { - return this.getTunnelingManager().defaultRoot(); - } - - @Override - public Database database() - { - return this.getTunnelingManager().database(); - } - - @Override - public boolean isAcceptingTasks() - { - return this.getTunnelingManager().isAcceptingTasks(); - } - - @Override - public boolean isRunning() - { - return this.getTunnelingManager().isRunning(); - } - - @Override - public boolean isStartingUp() - { - return this.getTunnelingManager().isStartingUp(); - } - - @Override - public boolean isShuttingDown() - { - return this.getTunnelingManager().isShuttingDown(); - } - - @Override - public void checkAcceptingTasks() - { - this.getTunnelingManager().checkAcceptingTasks(); - } - - @Override - public long initializationTime() - { - return this.getTunnelingManager().initializationTime(); - } - - @Override - public long operationModeTime() - { - return this.getTunnelingManager().operationModeTime(); - } - - @Override - public boolean isActive() - { - return this.getTunnelingManager().isActive(); - } - - @Override - public boolean issueGarbageCollection(long nanoTimeBudget) - { - return this.getTunnelingManager().issueGarbageCollection(nanoTimeBudget); - } - - @Override - public boolean issueFileCheck(long nanoTimeBudget) - { - return this.getTunnelingManager().issueFileCheck(nanoTimeBudget); - } - - @Override - public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) - { - return this.getTunnelingManager().issueCacheCheck(nanoTimeBudget, entityEvaluator); - } - - @Override - public StorageRawFileStatistics createStorageStatistics() - { - return this.getTunnelingManager().createStorageStatistics(); - } - - @Override - public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) - { - this.getTunnelingManager().exportChannels(fileProvider, performGarbageCollection); - } - - @Override - public StorageEntityTypeExportStatistics exportTypes( - StorageEntityTypeExportFileProvider exportFileProvider, - Predicate isExportType) - { - return this.getTunnelingManager().exportTypes(exportFileProvider, isExportType); - } - - @Override - public void importFiles(XGettingEnum importFiles) - { - this.getTunnelingManager().importFiles(importFiles); - } - - @Override - public PersistenceManager persistenceManager() - { - return this.getTunnelingManager().persistenceManager(); - } - - @Override - public long store(Object instance) - { - return EmbeddedStorageManager.super.store(instance); - } - - @Override public EmbeddedStorageManager getNativeStorageManager() - { - return this.getTunnelingManager(); - } - - @Override - public void issueFullBackup(StorageLiveFileProvider targetFileProvider, - PersistenceTypeDictionaryExporter typeDictionaryExporter) { - this.getTunnelingManager().issueFullBackup(targetFileProvider, typeDictionaryExporter); - } - } diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java new file mode 100644 index 00000000..dfaf8d71 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -0,0 +1,31 @@ +package software.xdev.micromigration.microstream; + +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; + +import java.util.function.Consumer; +import java.util.function.Supplier; + + +public class MigrationManager extends VersionAgnosticMigrationManager +{ + public MigrationManager( + Supplier currentVersionGetter, + Consumer currentVersionSetter, + Consumer currentVersionStorer, + MicroMigrater migrater, + EmbeddedStorageManager storageManager) + { + super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } + + public MigrationManager( + Versioned versionedObject, MicroMigrater migrater, + EmbeddedStorageManager storageManager) + { + super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } +} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 6ae8679d..40662841 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.microstream; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -15,5 +14,5 @@ * @author Johannes Rabauer * */ -public interface MigrationScript extends VersionAgnosticMigrationScript +public interface MigrationScript extends VersionAgnosticMigrationScript {} diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..350b09c4 --- /dev/null +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -0,0 +1,253 @@ +package software.xdev.micromigration.microstream; + +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.reference.Reference; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; + +import java.util.Objects; +import java.util.function.Predicate; + + +/** + * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. + *

+ * Basically it intercepts storing the root object and places a {@link Versioned} + * in front of it. This means the root object of the datastore is then versioned.
+ * Internally uses the {@link MigrationManager} to do the actual migration. + * + * @author Johannes Rabauer + * + */ +public class TunnelingEmbeddedStorageManager + implements + EmbeddedStorageManager, + VersionAgnosticTunnelingEmbeddedStorageManager +{ + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ + protected final EmbeddedStorageManager nativeManager; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + */ + public TunnelingEmbeddedStorageManager( + EmbeddedStorageManager nativeManager + ) + { + Objects.requireNonNull(nativeManager); + this.nativeManager = nativeManager; + } + + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + + @Override + public TunnelingEmbeddedStorageManager start() + { + this.nativeManager.start(); + return this; + } + + @Override + public Object root() { + return this.nativeManager.root(); + } + + @Override + public Object setRoot(Object newRoot) { + return this.nativeManager.setRoot(newRoot); + } + + @Override + public long storeRoot() { + return this.nativeManager.storeRoot(); + } + + @Override + public StorageConfiguration configuration() + { + return this.nativeManager.configuration(); + } + + @Override + public StorageTypeDictionary typeDictionary() + { + return this.nativeManager.typeDictionary(); + } + + @Override + public boolean shutdown() + { + return this.nativeManager.shutdown(); + } + + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + + @Override + public StorageConnection createConnection() + { + return this.nativeManager.createConnection(); + } + + + @Override + public PersistenceRootsView viewRoots() + { + return this.nativeManager.viewRoots(); + } + + @Override + @Deprecated + public Reference defaultRoot() + { + return this.nativeManager.defaultRoot(); + } + + @Override + public Database database() + { + return this.nativeManager.database(); + } + + @Override + public boolean isAcceptingTasks() + { + return this.nativeManager.isAcceptingTasks(); + } + + @Override + public boolean isRunning() + { + return this.nativeManager.isRunning(); + } + + @Override + public boolean isStartingUp() + { + return this.nativeManager.isStartingUp(); + } + + @Override + public boolean isShuttingDown() + { + return this.nativeManager.isShuttingDown(); + } + + @Override + public void checkAcceptingTasks() + { + this.nativeManager.checkAcceptingTasks(); + } + + @Override + public long initializationTime() + { + return this.nativeManager.initializationTime(); + } + + @Override + public long operationModeTime() + { + return this.nativeManager.operationModeTime(); + } + + @Override + public boolean isActive() + { + return this.nativeManager.isActive(); + } + + @Override + public boolean issueGarbageCollection(long nanoTimeBudget) + { + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); + } + + @Override + public boolean issueFileCheck(long nanoTimeBudget) + { + return this.nativeManager.issueFileCheck(nanoTimeBudget); + } + + @Override + public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) + { + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.nativeManager.createStorageStatistics(); + } + + @Override + public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) + { + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); + } + + @Override + public StorageEntityTypeExportStatistics exportTypes( + StorageEntityTypeExportFileProvider exportFileProvider, + Predicate isExportType) + { + return this.nativeManager.exportTypes(exportFileProvider, isExportType); + } + + @Override + public void importFiles(XGettingEnum importFiles) + { + this.nativeManager.importFiles(importFiles); + } + + @Override + public PersistenceManager persistenceManager() + { + return this.nativeManager.persistenceManager(); + } + + @Override + public long store(Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + + @Override + public void issueFullBackup(StorageLiveFileProvider targetFileProvider, + PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } +} diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 48cf2e4c..ebd46b8b 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -2,9 +2,10 @@ import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; @@ -12,6 +13,8 @@ import java.io.IOException; import java.nio.file.Path; +import static org.junit.jupiter.api.Assertions.assertEquals; + class IntroduceMigrationOnExistingDatastoreTest { @@ -32,7 +35,7 @@ void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) { assertEquals(ROOT, migrationStorageManager.root()); - Assertions.assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); } } } diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index d7d93519..e714a112 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -5,6 +5,9 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -36,7 +39,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with one migration script - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -49,7 +52,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -64,7 +67,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem @Test void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); @@ -100,7 +103,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with one migration script - final VersionAgnosticMigrationScript, EmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); @@ -120,7 +123,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem //Run with two migration scripts - final VersionAgnosticMigrationScript, EmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 71718298..0c431fbe 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -22,11 +21,11 @@ class MultipleScriptsTest @Test void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); @@ -41,11 +40,11 @@ void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir @Test void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(2) ); @@ -57,15 +56,15 @@ void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) @Test void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) ); - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) ); - final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(3) ); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 5e6dfee8..f7f3c9f2 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,8 +1,9 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -30,7 +31,7 @@ private static class ChildClass @Test void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), (context) -> {} ); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 6314b3af..be6360c3 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,9 +1,10 @@ package software.xdev.micromigration.migrater; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; @@ -54,7 +55,7 @@ void testWrongTypedVersionedScript(@TempDir Path storageFolder) storageManager.storeRoot(); } final ExplicitMigrater migrater = new ExplicitMigrater( - new SimpleTypedMigrationScript( + new SimpleTypedMigrationScript( new MigrationVersion(1), (context) -> { context.getStorageManager().setRoot(context.getMigratingObject() + 1); diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index ecfaf2c5..1f6b8d9a 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.testUtil; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; @@ -22,7 +22,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) { + public void migrate(Context context) { // Don't do anything. } } diff --git a/reflection/pom.xml b/reflection/pom.xml index cd65e5bd..ce373be6 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -30,15 +30,9 @@ 0.10.2 - one.microstream - microstream-storage-embedded - ${microstream.version} - test - - - one.microstream - microstream-configuration - ${microstream.version} + software.xdev + micro-migration-microstream-v7 + ${project.version} test diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java index 06f7a1b5..2012fb08 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.ReflectiveVersionMigrationScript; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public abstract class AbstractScript extends ReflectiveVersionMigrationScript +public abstract class AbstractScript extends ReflectiveVersionMigrationScript { } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java index a6075e02..8c6f56ae 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; public class v1_ValidScript extends AbstractScript { @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java index 356a7f85..7d2f53e7 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java @@ -1,11 +1,10 @@ package software.xdev.micromigration.migrater.scripts.abstractSuperClass; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public abstract class AbstractScript implements VersionAgnosticMigrationScript +public abstract class AbstractScript implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java index 1e0d47cd..3c9c569b 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.migrater.scripts.abstractSuperClass; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; public class ValidScript extends AbstractScript { @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java index b2589cb1..9da0eeec 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.errorThrowing; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class ErrorThrowingScript implements VersionAgnosticMigrationScript +public class ErrorThrowingScript implements MigrationScript { public ErrorThrowingScript() { @@ -20,7 +20,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java index e024fec0..84c0db97 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.exceptionThrowing; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class ExceptionThrowingScript implements VersionAgnosticMigrationScript +public class ExceptionThrowingScript implements MigrationScript { public ExceptionThrowingScript() throws Exception { @@ -20,7 +20,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java index 8c95b387..54f8efe9 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.includeSubPackages; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScript implements VersionAgnosticMigrationScript +public class ValidScript implements MigrationScript { @Override public MigrationVersion getTargetVersion() @@ -15,7 +15,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java index e9379bbc..27bac0fe 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScriptInSubpackage implements VersionAgnosticMigrationScript +public class ValidScriptInSubpackage implements MigrationScript { @Override public MigrationVersion getTargetVersion() @@ -15,7 +15,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java index 674ee0ae..e1061dfa 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScript implements VersionAgnosticMigrationScript +public class ValidScript implements MigrationScript { @Override public MigrationVersion getTargetVersion() @@ -15,7 +15,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java index e932011a..ec15b6c3 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.noCorrectConstructor; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class NoCorrectConstructorScript implements VersionAgnosticMigrationScript +public class NoCorrectConstructorScript implements MigrationScript { private final String argument; @@ -22,7 +22,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { System.out.println(this.argument); } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java index 303d176a..a905aed3 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java @@ -1,14 +1,14 @@ package software.xdev.micromigration.migrater.scripts.reflectiveVersion; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.ReflectiveVersionMigrationScript; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; -public class v1_ValidScript extends ReflectiveVersionMigrationScript +public class v1_ValidScript extends ReflectiveVersionMigrationScript { @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java index 0ab3b094..fafad8e4 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.valid; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScript implements VersionAgnosticMigrationScript +public class ValidScript implements MigrationScript { @Override public MigrationVersion getTargetVersion() @@ -15,7 +15,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(Context context) { //Do nothing } From 7680c7cbf94df68be31a3783fc32e9c0d37edbcb Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 22 Dec 2022 11:02:58 +0100 Subject: [PATCH 173/306] Slight cleanup --- core/pom.xml | 28 ----------------- ...VersionAgnosticEmbeddedStorageManager.java | 25 --------------- ...nosticTunnelingEmbeddedStorageManager.java | 2 +- .../migrater/MicroMigrater.java | 1 - microstream-v5/pom.xml | 31 ------------------- microstream-v6/pom.xml | 31 ------------------- microstream-v7/pom.xml | 31 ------------------- pom.xml | 12 +++++++ reflection/pom.xml | 31 ------------------- 9 files changed, 13 insertions(+), 179 deletions(-) delete mode 100644 core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java diff --git a/core/pom.xml b/core/pom.xml index 8955cc23..018961e5 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -13,32 +13,4 @@ micro-migration 0.0.7-SNAPSHOT - - - - - org.apache.maven.plugins - maven-source-plugin - - - - org.apache.maven.plugins - maven-resources-plugin - - - - - - - release - - - - org.jreleaser - jreleaser-maven-plugin - - - - - diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java deleted file mode 100644 index 2ab88a63..00000000 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticEmbeddedStorageManager.java +++ /dev/null @@ -1,25 +0,0 @@ -package software.xdev.micromigration.microstream.versionagnostic; - -/** - * To keep MicroStream from being directly referenced, this is a abstraction to keep the - * actual EmbeddedStorageManager concealed. - * - * @param is usually the one.microstream.storage.embedded.types.EmbeddedStorageManager, - * but to keep it version agnostic, this is dynamically typed. - * - * @author Johannes Rabauer - */ -public interface VersionAgnosticEmbeddedStorageManager -{ - /** - * Stores the given object instance - * @param instance to store - * @return the object id representing the passed instance - */ - long store(final Object instance); - - /** - * @return the actual EmbeddedStorageManager - */ - T getNativeStorageManager(); -} diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java index e98e16fe..ee466cb8 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java @@ -14,7 +14,7 @@ * */ public interface VersionAgnosticTunnelingEmbeddedStorageManager - extends VersionAgnosticEmbeddedStorageManager, AutoCloseable + extends AutoCloseable { T start(); Object root(); diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 17657425..f598f51d 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,6 +1,5 @@ package software.xdev.micromigration.migrater; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 44159cf8..d1153767 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -41,35 +41,4 @@ compile - - - - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-resources-plugin - - - - - - - release - - - - org.jreleaser - jreleaser-maven-plugin - - - - - diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index d91b8743..a85441d5 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -35,35 +35,4 @@ ${microstream.version} - - - - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-resources-plugin - - - - - - - release - - - - org.jreleaser - jreleaser-maven-plugin - - - - - diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 7d292366..fb16686e 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -35,35 +35,4 @@ ${microstream.version} - - - - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-resources-plugin - - - - - - - release - - - - org.jreleaser - jreleaser-maven-plugin - - - - - diff --git a/pom.xml b/pom.xml index 1decbafc..be60a93f 100644 --- a/pom.xml +++ b/pom.xml @@ -156,6 +156,18 @@ maven-surefire-plugin 2.22.2 + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-javadoc-plugin + + + org.apache.maven.plugins + maven-resources-plugin + diff --git a/reflection/pom.xml b/reflection/pom.xml index ce373be6..b70e2ca5 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -36,35 +36,4 @@ test - - - - - org.apache.maven.plugins - maven-source-plugin - - - org.apache.maven.plugins - maven-javadoc-plugin - - - org.apache.maven.plugins - maven-resources-plugin - - - - - - - release - - - - org.jreleaser - jreleaser-maven-plugin - - - - - From 0eaeda2ddad4d111d0c6e56622c6a515aeebc4fb Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 22 Dec 2022 15:03:39 +0100 Subject: [PATCH 174/306] Fixed Javadoc --- ...nosticMigrationEmbeddedStorageManager.java | 54 ++++++-- .../VersionAgnosticMigrationManager.java | 39 +++--- ...nosticTunnelingEmbeddedStorageManager.java | 88 +++++++++++- .../migrater/AbstractMigrater.java | 19 ++- .../migrater/MicroMigrater.java | 20 +-- .../VersionAlreadyRegisteredException.java | 4 +- .../examples/explicit/MainExplicit.java | 8 +- .../explicit/scripts/UpdateToV1_0.java | 5 +- .../explicit/scripts/UpdateToV1_1.java | 5 +- .../notification/MainNotification.java | 6 +- ...alWithMigrationEmbeddedStorageManager.java | 3 - .../practical/embedded/UpdateToV1_0.java | 5 +- .../practical/embedded/UpdateToV2_0.java | 5 +- .../MainPracticalWithMigrationManager.java | 6 +- .../migrationManager/UpdateToV1_0.java | 5 +- .../migrationManager/UpdateToV2_0.java | 5 +- .../examples/reflective/MainReflective.java | 6 +- .../reflective/scripts/UpdateToV1_0.java | 5 +- .../reflective/scripts/UpdateToV1_1.java | 5 +- microstream-v5/pom.xml | 6 - .../MigrationEmbeddedStorageManager.java | 10 +- .../microstream/MigrationManager.java | 35 ++++- .../microstream/MigrationScript.java | 4 +- .../TunnelingEmbeddedStorageManager.java | 131 +++++++++++++++++- .../MigrationEmbeddedStorageManager.java | 10 +- .../microstream/MigrationManager.java | 35 ++++- .../microstream/MigrationScript.java | 4 +- .../TunnelingEmbeddedStorageManager.java | 131 +++++++++++++++++- .../MigrationEmbeddedStorageManager.java | 10 +- .../microstream/MigrationManager.java | 35 ++++- .../microstream/MigrationScript.java | 4 +- .../TunnelingEmbeddedStorageManager.java | 131 +++++++++++++++++- .../abstractSuperClass/AbstractScript.java | 4 +- .../errorThrowing/ErrorThrowingScript.java | 4 +- .../ExceptionThrowingScript.java | 4 +- .../includeSubPackages/ValidScript.java | 4 +- .../subpackage/ValidScriptInSubpackage.java | 4 +- .../ValidScript.java | 4 +- .../NoCorrectConstructorScript.java | 4 +- .../migrater/scripts/valid/ValidScript.java | 4 +- 40 files changed, 697 insertions(+), 174 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index fbc48b1c..abc0e28d 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -9,22 +9,28 @@ /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

* Basically it intercepts storing the root object and places a {@link Versioned} * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager} to do the actual migration. + * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + *

+ * {@code VersionAgnostic} because it should be independent from the actual MicroStream implementation used. + * + * @param class of itself to be able to return the actual class and not just a generic class + * + * @param The actually used MicroStream EmbeddedStorageManager * * @author Johannes Rabauer * */ -public class VersionAgnosticMigrationEmbeddedStorageManager +public abstract class VersionAgnosticMigrationEmbeddedStorageManager implements AutoCloseable { private final MicroMigrater migrater ; private VersionedRoot versionRoot ; - private VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; + private VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; /** * @param tunnelingManager which will be used as the underlying storage manager. @@ -34,30 +40,32 @@ public class VersionAgnosticMigrationEmbeddedStorageManager tunnelingManager, - MicroMigrater migrater + VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager, + MicroMigrater migrater ) { this.tunnelingManager = Objects.requireNonNull(tunnelingManager); this.migrater = Objects.requireNonNull(migrater); } - protected VersionAgnosticTunnelingEmbeddedStorageManager getTunnelingManager() + /** + * @return the used {@link VersionAgnosticTunnelingEmbeddedStorageManager} + */ + protected VersionAgnosticTunnelingEmbeddedStorageManager getTunnelingManager() { return this.tunnelingManager; } /** - * {@inheritDoc} - *

* Checks if the root object is of the instance of {@link Versioned}. * If it is not, the root will be replaced with the versioned root and the actual root object * will be put inside the versioned root. *

* After starting the storage manager, all the available update scripts are executed in order * until the newest version of the datastore is reached. + * @return itself */ - public SELF start() + public T start() { this.tunnelingManager.start(); if(this.tunnelingManager.root() instanceof VersionedRoot) @@ -77,7 +85,7 @@ public SELF start() this ) .migrate(this.versionRoot.getRoot()); - return (SELF)this; + return (T)this; } /** @@ -88,28 +96,52 @@ public MigrationVersion getCurrentVersion() return this.versionRoot.getVersion(); } + /** + * @return the actual root object + */ public Object root() { return this.versionRoot.getRoot(); } + /** + * Sets the actual root element (not the versioned root) + * @param newRoot to set + * @return the set object + */ public Object setRoot(Object newRoot) { this.versionRoot.setRoot(newRoot); return newRoot; } + /** + * Stores the {@link VersionedRoot} and the actual root object. + * @return what EmbeddedStorageManager#storeRoot returns + */ public long storeRoot() { this.tunnelingManager.store(this.versionRoot); return this.tunnelingManager.store(this.versionRoot.getRoot()); } + /** + * Stores the objectToStore + * @param objectToStore which is stored + * @return what EmbeddedStorageManager#store returns + */ public long store(Object objectToStore) { return this.tunnelingManager.store(objectToStore); } + /** + * Shuts down the datastore. + * @return what EmbeddedStorageManager#storeRoot shutdown + */ public boolean shutdown(){ return this.tunnelingManager.shutdown(); } + /** + * Closes the datastore. + */ @Override public void close() { this.tunnelingManager.close(); diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index 08adb5f4..b7bc7d25 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -13,23 +13,26 @@ /** * Manages a given object and keeps the version for it. *

- * Can be used to keep the version of the MicroStream-Root-Object to keep the whole - * datastore versioned. Since it is not integrated like the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} - * multiple versioned objects can be used in one datastore. - * + * Can be used to keep the version of the MicroStream-Root-Object and therefor keep the whole + * datastore versioned. + *

+ * {@code VersionAgnostic} because it should be independent from the actual MicroStream implementation used. + * + * @param The actually used MicroStream EmbeddedStorageManager + * * @author Johannes Rabauer * */ public class VersionAgnosticMigrationManager { - private final Supplier currentVersionGetter; - private final Consumer currentVersionSetter; - private final Consumer currentVersionStorer; - private final MicroMigrater migrater ; + private final Supplier currentVersionGetter; + private final Consumer currentVersionSetter; + private final Consumer currentVersionStorer; + private final MicroMigrater migrater ; private final VersionAgnosticMigrationEmbeddedStorageManager storageManager ; /** - * Much more complicated constructor than {@link VersionAgnosticMigrationManager#MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * Much more complicated constructor than {@link VersionAgnosticMigrationManager(Versioned, MicroMigrater, VersionAgnosticMigrationEmbeddedStorageManager)}. * * @param currentVersionGetter which supplies the current version of the object to update. * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. @@ -39,11 +42,11 @@ public class VersionAgnosticMigrationManager */ public VersionAgnosticMigrationManager ( - final Supplier currentVersionGetter, - final Consumer currentVersionSetter, - final Consumer currentVersionStorer, - final MicroMigrater migrater , - final VersionAgnosticMigrationEmbeddedStorageManager storageManager + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater , + final VersionAgnosticMigrationEmbeddedStorageManager storageManager ) { Objects.requireNonNull(currentVersionGetter); @@ -54,8 +57,8 @@ public class VersionAgnosticMigrationManager this.currentVersionGetter = currentVersionGetter; this.currentVersionSetter = currentVersionSetter; this.currentVersionStorer = currentVersionStorer; - this.migrater = migrater; - this.storageManager = storageManager; + this.migrater = migrater; + this.storageManager = storageManager; } /** @@ -68,8 +71,8 @@ public class VersionAgnosticMigrationManager */ public VersionAgnosticMigrationManager ( - final Versioned versionedObject, - final MicroMigrater migrater , + final Versioned versionedObject, + final MicroMigrater migrater , final VersionAgnosticMigrationEmbeddedStorageManager storageManager ) { diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java index ee466cb8..a36fe1e9 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java @@ -1,14 +1,15 @@ package software.xdev.micromigration.microstream.versionagnostic; -import software.xdev.micromigration.version.Versioned; - - /** - * Wrapper class for the MicroStream {@link VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. + *

+ * It's simply an interface to not directly depend on the MicroStream-Framework, but still use its functionality. + * For the separate Versions of MicroStream, a separate Maven-Module was created which implements this + * interface with the actual EmbeddedStorageManager. *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + * {@code VersionAgnostic} because it should be independent of the actual MicroStream implementation used. + * + * @param Represents the actually used MicroStream EmbeddedStorageManager * * @author Johannes Rabauer * @@ -16,22 +17,95 @@ public interface VersionAgnosticTunnelingEmbeddedStorageManager extends AutoCloseable { + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ T start(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ Object root(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @param newRoot whatever the actual EmbeddedStorageManager uses this for + * @return what the actual EmbeddedStorageManager returns + */ Object setRoot(Object newRoot); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ long storeRoot(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ boolean shutdown(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ boolean isAcceptingTasks(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ boolean isRunning(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ boolean isStartingUp(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ boolean isShuttingDown(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + */ void checkAcceptingTasks(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ long initializationTime(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ long operationModeTime(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @return what the actual EmbeddedStorageManager returns + */ boolean isActive(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @param nanoTimeBudget whatever the actual EmbeddedStorageManager uses this for + * @return what the actual EmbeddedStorageManager returns + */ boolean issueGarbageCollection(long nanoTimeBudget); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @param nanoTimeBudget whatever the actual EmbeddedStorageManager uses this for + * @return what the actual EmbeddedStorageManager returns + */ boolean issueFileCheck(long nanoTimeBudget); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + * @param instance whatever the actual EmbeddedStorageManager uses this for + * @return what the actual EmbeddedStorageManager returns + */ long store(Object instance); + /** + * @return the actual MicroStream EmbeddedStorageManager + */ T getNativeStorageManager(); + /** + * Simply relais the method-call to the MicroStream EmbeddedStorageManager + */ void close(); } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index c7db6908..9c4ec6ba 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -35,9 +35,9 @@ public void registerNotificationConsumer(Consumer> MigrationVersion migrateToNewest( - MigrationVersion fromVersion , - E storageManager, - Object root + MigrationVersion fromVersion , + E storageManager, + Object root ) { Objects.requireNonNull(fromVersion); @@ -60,10 +60,10 @@ public > Migration @Override public > MigrationVersion migrateToVersion ( - MigrationVersion fromVersion , - MigrationVersion targetVersion , - E storageManager , - Object objectToMigrate + MigrationVersion fromVersion , + MigrationVersion targetVersion , + E storageManager , + Object objectToMigrate ) { Objects.requireNonNull(fromVersion); @@ -106,8 +106,8 @@ public > Migration @SuppressWarnings("unchecked") private > MigrationVersion migrateWithScript( VersionAgnosticMigrationScript script , - E storageManager , - Object objectToMigrate + E storageManager , + Object objectToMigrate ) { T castedObjectToMigrate = (T) objectToMigrate; @@ -137,5 +137,4 @@ protected void checkIfVersionIsAlreadyRegistered(VersionAgnosticMigrationScript< } } } - } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index f598f51d..300fd412 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -35,17 +35,19 @@ public interface MicroMigrater * Scripts for lower versions then the fromVersion are not executed. * * @param storageManager is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} - * method. This way the script can call {@link VersionAgnosticEmbeddedStorageManager#store(Object)} or another method on the storage manager. + * method. This way the script can call {@link VersionAgnosticMigrationEmbeddedStorageManager#store(Object)} or another method on the storage manager. * * @param root is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} * method. This way the script can change something within the root object. + * + * @param the {@link VersionAgnosticMigrationEmbeddedStorageManager} which contains the migrating object * * @return the target version of the last executed script */ > MigrationVersion migrateToNewest( - MigrationVersion fromVersion , - E storageManager, - Object root + MigrationVersion fromVersion , + E storageManager, + Object root ); /** @@ -69,14 +71,16 @@ > MigrationVersion * * @param objectToMigrate is relayed to the scripts {@link VersionAgnosticMigrationScript#migrate(Context)} * method. This way the script can change something within the object to migrate. + * + * @param the {@link VersionAgnosticMigrationEmbeddedStorageManager} which contains the migrating object * * @return the target version of the last executed script */ > MigrationVersion migrateToVersion ( - MigrationVersion fromVersion , - MigrationVersion targetVersion , - E storageManager , - Object objectToMigrate + MigrationVersion fromVersion , + MigrationVersion targetVersion , + E storageManager , + Object objectToMigrate ); } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index ac1b0218..3901ccae 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -17,7 +17,7 @@ public class VersionAlreadyRegisteredException extends Error /** * The already registered script with the same version */ - private final MigrationVersion alreadyRegisteredVersion; + private final MigrationVersion alreadyRegisteredVersion; /** * The version of the already registered script */ @@ -35,7 +35,7 @@ public class VersionAlreadyRegisteredException extends Error * which should be registered as well */ public VersionAlreadyRegisteredException( - MigrationVersion alreadyRegisteredVersion, + MigrationVersion alreadyRegisteredVersion, VersionAgnosticMigrationScript alreadyRegisteredScript , VersionAgnosticMigrationScript newScriptToRegister ) diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 7a2e99c7..4627949d 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -1,15 +1,11 @@ package software.xdev.micromigration.examples.explicit; -import java.util.Date; - -import software.xdev.micromigration.examples.practical.embedded.UpdateToV2_0; -import software.xdev.micromigration.examples.practical.v0.BusinessBranch; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; import software.xdev.micromigration.migrater.ExplicitMigrater; +import java.util.Date; + /** * The most basic usage of micro migration. * Here two {@link software.xdev.micromigration.scripts.MigrationScript}s are explicitly registered diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 02decd38..984b100c 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -1,14 +1,13 @@ package software.xdev.micromigration.examples.explicit.scripts; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_0 implements MigrationScript +public class UpdateToV1_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 7db5b20c..c246ebd1 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -1,14 +1,13 @@ package software.xdev.micromigration.examples.explicit.scripts; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_1 implements MigrationScript +public class UpdateToV1_1 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index c2e28d03..9eb4a007 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -1,8 +1,5 @@ package software.xdev.micromigration.examples.notification; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; @@ -36,7 +33,8 @@ public static void main(String[] args) storageManager.shutdown(); } - static class UpdateToV1_0 implements MigrationScript + static class UpdateToV1_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 753263a6..55ce8f0b 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -1,9 +1,6 @@ package software.xdev.micromigration.examples.practical.embedded; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; -import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.migrater.ExplicitMigrater; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index 5f72f0c2..81dd61b4 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -3,13 +3,12 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.Address; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class UpdateToV1_0 implements MigrationScript +public class UpdateToV1_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index 3274773f..513ea7df 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -2,13 +2,12 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class UpdateToV2_0 implements MigrationScript +public class UpdateToV2_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index 428bbd2e..9d665706 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -1,12 +1,10 @@ package software.xdev.micromigration.examples.practical.migrationManager; -import software.xdev.micromigration.microstream.MigrationManager; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; -import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.version.VersionedObject; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; /** diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index 027cbf18..1384fbbd 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -3,14 +3,13 @@ import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -public class UpdateToV1_0 implements MigrationScript> +public class UpdateToV1_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 3eaf2937..13438d7e 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -2,14 +2,13 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -public class UpdateToV2_0 implements MigrationScript> +public class UpdateToV2_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript, software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager> { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index 3cf1848b..fdadcfbe 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -1,12 +1,10 @@ package software.xdev.micromigration.examples.reflective; -import java.util.Date; - -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ReflectiveMigrater; import software.xdev.micromigration.migrater.ScriptInstantiationException; +import java.util.Date; + /** * Shows the usage of the {@link ReflectiveMigrater}. Very simple. diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 8fa8a359..5703aa67 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -1,14 +1,13 @@ package software.xdev.micromigration.examples.reflective.scripts; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_0 implements MigrationScript +public class UpdateToV1_0 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index da1b76c2..48770cad 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -1,14 +1,13 @@ package software.xdev.micromigration.examples.reflective.scripts; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_1 implements MigrationScript +public class UpdateToV1_1 implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index d1153767..c1d86de8 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -34,11 +34,5 @@ microstream-configuration ${microstream.version} - - software.xdev - micro-migration-core - 0.0.7-SNAPSHOT - compile - diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index b8223df4..fff5347a 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -2,17 +2,15 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; /** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. - *

- * Basically it intercepts storing the root object and places a {@link software.xdev.micromigration.version.Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationEmbeddedStorageManager * * @author Johannes Rabauer * diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index dfaf8d71..5967cf58 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -3,6 +3,7 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; @@ -10,21 +11,47 @@ import java.util.function.Supplier; +/** + * Specific implementation of the {@link VersionAgnosticMigrationManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationManager + */ public class MigrationManager extends VersionAgnosticMigrationManager { + /** + * Much more complicated constructor than {@link MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager( Supplier currentVersionGetter, Consumer currentVersionSetter, Consumer currentVersionStorer, - MicroMigrater migrater, - EmbeddedStorageManager storageManager) + MicroMigrater migrater, + EmbeddedStorageManager storageManager + ) { super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager( - Versioned versionedObject, MicroMigrater migrater, - EmbeddedStorageManager storageManager) + Versioned versionedObject, + MicroMigrater migrater , + EmbeddedStorageManager storageManager + ) { super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 40662841..bb8029f8 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -10,7 +10,9 @@ * One script is supposed to bring a datastore from a lower version to the target version. * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. - * + *

+ * This is a shorthand for {@link VersionAgnosticMigrationScript} for this specific MicroStream version. + * * @author Johannes Rabauer * */ diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 350b09c4..53c2c1a7 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -27,12 +27,12 @@ /** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * + * It simply relays all the commands to the contained {@link EmbeddedStorageManager}. + * + * @see VersionAgnosticTunnelingEmbeddedStorageManager + * * @author Johannes Rabauer * */ @@ -64,6 +64,10 @@ public TunnelingEmbeddedStorageManager( // Simply forward all the methods //////////////////////////////////////////////////////////////// + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#start} + */ @Override public TunnelingEmbeddedStorageManager start() { @@ -71,58 +75,97 @@ public TunnelingEmbeddedStorageManager start() return this; } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#root} + */ @Override public Object root() { return this.nativeManager.root(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#setRoot(Object)} + */ @Override public Object setRoot(Object newRoot) { return this.nativeManager.setRoot(newRoot); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#storeRoot()} + */ @Override public long storeRoot() { return this.nativeManager.storeRoot(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#configuration()} + */ @Override public StorageConfiguration configuration() { return this.nativeManager.configuration(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#typeDictionary()} + */ @Override public StorageTypeDictionary typeDictionary() { return this.nativeManager.typeDictionary(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#shutdown()} + */ @Override public boolean shutdown() { return this.nativeManager.shutdown(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#close()} + */ @Override public void close() throws StorageException { this.nativeManager.close(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createConnection()} + */ @Override public StorageConnection createConnection() { return this.nativeManager.createConnection(); } - + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#viewRoots()} + */ @Override public PersistenceRootsView viewRoots() { return this.nativeManager.viewRoots(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#defaultRoot()} + */ @Override @Deprecated public Reference defaultRoot() @@ -130,90 +173,150 @@ public Reference defaultRoot() return this.nativeManager.defaultRoot(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#database()} + */ @Override public Database database() { return this.nativeManager.database(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isAcceptingTasks()} + */ @Override public boolean isAcceptingTasks() { return this.nativeManager.isAcceptingTasks(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isRunning()} + */ @Override public boolean isRunning() { return this.nativeManager.isRunning(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isStartingUp()} + */ @Override public boolean isStartingUp() { return this.nativeManager.isStartingUp(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isShuttingDown()} + */ @Override public boolean isShuttingDown() { return this.nativeManager.isShuttingDown(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#checkAcceptingTasks()} + */ @Override public void checkAcceptingTasks() { this.nativeManager.checkAcceptingTasks(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#initializationTime()} + */ @Override public long initializationTime() { return this.nativeManager.initializationTime(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#operationModeTime()} + */ @Override public long operationModeTime() { return this.nativeManager.operationModeTime(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isActive()} + */ @Override public boolean isActive() { return this.nativeManager.isActive(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueGarbageCollection(long)} + */ @Override public boolean issueGarbageCollection(long nanoTimeBudget) { return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFileCheck(long)} + */ @Override public boolean issueFileCheck(long nanoTimeBudget) { return this.nativeManager.issueFileCheck(nanoTimeBudget); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueCacheCheck(long, StorageEntityCacheEvaluator)} + */ @Override public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createStorageStatistics} + */ @Override public StorageRawFileStatistics createStorageStatistics() { return this.nativeManager.createStorageStatistics(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportChannels(StorageLiveFileProvider)} + */ @Override public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportTypes(StorageEntityTypeExportFileProvider)} + */ @Override public StorageEntityTypeExportStatistics exportTypes( StorageEntityTypeExportFileProvider exportFileProvider, @@ -222,18 +325,30 @@ public StorageEntityTypeExportStatistics exportTypes( return this.nativeManager.exportTypes(exportFileProvider, isExportType); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#importFiles(XGettingEnum)} + */ @Override public void importFiles(XGettingEnum importFiles) { this.nativeManager.importFiles(importFiles); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#persistenceManager()} + */ @Override public PersistenceManager persistenceManager() { return this.nativeManager.persistenceManager(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#store(Object)} + */ @Override public long store(Object instance) { @@ -245,6 +360,10 @@ public long store(Object instance) return this.nativeManager; } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFullBackup(StorageLiveFileProvider, PersistenceTypeDictionaryExporter)} + */ @Override public void issueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter) { diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 2073bd7f..fff5347a 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -2,17 +2,15 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; /** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. - *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationEmbeddedStorageManager * * @author Johannes Rabauer * diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index dfaf8d71..5967cf58 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -3,6 +3,7 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; @@ -10,21 +11,47 @@ import java.util.function.Supplier; +/** + * Specific implementation of the {@link VersionAgnosticMigrationManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationManager + */ public class MigrationManager extends VersionAgnosticMigrationManager { + /** + * Much more complicated constructor than {@link MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager( Supplier currentVersionGetter, Consumer currentVersionSetter, Consumer currentVersionStorer, - MicroMigrater migrater, - EmbeddedStorageManager storageManager) + MicroMigrater migrater, + EmbeddedStorageManager storageManager + ) { super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager( - Versioned versionedObject, MicroMigrater migrater, - EmbeddedStorageManager storageManager) + Versioned versionedObject, + MicroMigrater migrater , + EmbeddedStorageManager storageManager + ) { super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 40662841..bb8029f8 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -10,7 +10,9 @@ * One script is supposed to bring a datastore from a lower version to the target version. * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. - * + *

+ * This is a shorthand for {@link VersionAgnosticMigrationScript} for this specific MicroStream version. + * * @author Johannes Rabauer * */ diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 350b09c4..53c2c1a7 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -27,12 +27,12 @@ /** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * + * It simply relays all the commands to the contained {@link EmbeddedStorageManager}. + * + * @see VersionAgnosticTunnelingEmbeddedStorageManager + * * @author Johannes Rabauer * */ @@ -64,6 +64,10 @@ public TunnelingEmbeddedStorageManager( // Simply forward all the methods //////////////////////////////////////////////////////////////// + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#start} + */ @Override public TunnelingEmbeddedStorageManager start() { @@ -71,58 +75,97 @@ public TunnelingEmbeddedStorageManager start() return this; } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#root} + */ @Override public Object root() { return this.nativeManager.root(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#setRoot(Object)} + */ @Override public Object setRoot(Object newRoot) { return this.nativeManager.setRoot(newRoot); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#storeRoot()} + */ @Override public long storeRoot() { return this.nativeManager.storeRoot(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#configuration()} + */ @Override public StorageConfiguration configuration() { return this.nativeManager.configuration(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#typeDictionary()} + */ @Override public StorageTypeDictionary typeDictionary() { return this.nativeManager.typeDictionary(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#shutdown()} + */ @Override public boolean shutdown() { return this.nativeManager.shutdown(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#close()} + */ @Override public void close() throws StorageException { this.nativeManager.close(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createConnection()} + */ @Override public StorageConnection createConnection() { return this.nativeManager.createConnection(); } - + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#viewRoots()} + */ @Override public PersistenceRootsView viewRoots() { return this.nativeManager.viewRoots(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#defaultRoot()} + */ @Override @Deprecated public Reference defaultRoot() @@ -130,90 +173,150 @@ public Reference defaultRoot() return this.nativeManager.defaultRoot(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#database()} + */ @Override public Database database() { return this.nativeManager.database(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isAcceptingTasks()} + */ @Override public boolean isAcceptingTasks() { return this.nativeManager.isAcceptingTasks(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isRunning()} + */ @Override public boolean isRunning() { return this.nativeManager.isRunning(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isStartingUp()} + */ @Override public boolean isStartingUp() { return this.nativeManager.isStartingUp(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isShuttingDown()} + */ @Override public boolean isShuttingDown() { return this.nativeManager.isShuttingDown(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#checkAcceptingTasks()} + */ @Override public void checkAcceptingTasks() { this.nativeManager.checkAcceptingTasks(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#initializationTime()} + */ @Override public long initializationTime() { return this.nativeManager.initializationTime(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#operationModeTime()} + */ @Override public long operationModeTime() { return this.nativeManager.operationModeTime(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isActive()} + */ @Override public boolean isActive() { return this.nativeManager.isActive(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueGarbageCollection(long)} + */ @Override public boolean issueGarbageCollection(long nanoTimeBudget) { return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFileCheck(long)} + */ @Override public boolean issueFileCheck(long nanoTimeBudget) { return this.nativeManager.issueFileCheck(nanoTimeBudget); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueCacheCheck(long, StorageEntityCacheEvaluator)} + */ @Override public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createStorageStatistics} + */ @Override public StorageRawFileStatistics createStorageStatistics() { return this.nativeManager.createStorageStatistics(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportChannels(StorageLiveFileProvider)} + */ @Override public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportTypes(StorageEntityTypeExportFileProvider)} + */ @Override public StorageEntityTypeExportStatistics exportTypes( StorageEntityTypeExportFileProvider exportFileProvider, @@ -222,18 +325,30 @@ public StorageEntityTypeExportStatistics exportTypes( return this.nativeManager.exportTypes(exportFileProvider, isExportType); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#importFiles(XGettingEnum)} + */ @Override public void importFiles(XGettingEnum importFiles) { this.nativeManager.importFiles(importFiles); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#persistenceManager()} + */ @Override public PersistenceManager persistenceManager() { return this.nativeManager.persistenceManager(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#store(Object)} + */ @Override public long store(Object instance) { @@ -245,6 +360,10 @@ public long store(Object instance) return this.nativeManager; } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFullBackup(StorageLiveFileProvider, PersistenceTypeDictionaryExporter)} + */ @Override public void issueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter) { diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 2073bd7f..fff5347a 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -2,17 +2,15 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; /** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. - *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link VersionAgnosticMigrationManager} to do the actual migration. + * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationEmbeddedStorageManager * * @author Johannes Rabauer * diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index dfaf8d71..5967cf58 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -3,6 +3,7 @@ import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; @@ -10,21 +11,47 @@ import java.util.function.Supplier; +/** + * Specific implementation of the {@link VersionAgnosticMigrationManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationManager + */ public class MigrationManager extends VersionAgnosticMigrationManager { + /** + * Much more complicated constructor than {@link MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager( Supplier currentVersionGetter, Consumer currentVersionSetter, Consumer currentVersionStorer, - MicroMigrater migrater, - EmbeddedStorageManager storageManager) + MicroMigrater migrater, + EmbeddedStorageManager storageManager + ) { super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public MigrationManager( - Versioned versionedObject, MicroMigrater migrater, - EmbeddedStorageManager storageManager) + Versioned versionedObject, + MicroMigrater migrater , + EmbeddedStorageManager storageManager + ) { super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); } diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index 40662841..bb8029f8 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -10,7 +10,9 @@ * One script is supposed to bring a datastore from a lower version to the target version. * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, * the target version is reached. - * + *

+ * This is a shorthand for {@link VersionAgnosticMigrationScript} for this specific MicroStream version. + * * @author Johannes Rabauer * */ diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 350b09c4..53c2c1a7 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -27,12 +27,12 @@ /** - * Wrapper class for the MicroStream {@link software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticEmbeddedStorageManager} interface. + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

- * Basically it intercepts storing the root object and places a {@link Versioned} - * in front of it. This means the root object of the datastore is then versioned.
- * Internally uses the {@link MigrationManager} to do the actual migration. - * + * It simply relays all the commands to the contained {@link EmbeddedStorageManager}. + * + * @see VersionAgnosticTunnelingEmbeddedStorageManager + * * @author Johannes Rabauer * */ @@ -64,6 +64,10 @@ public TunnelingEmbeddedStorageManager( // Simply forward all the methods //////////////////////////////////////////////////////////////// + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#start} + */ @Override public TunnelingEmbeddedStorageManager start() { @@ -71,58 +75,97 @@ public TunnelingEmbeddedStorageManager start() return this; } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#root} + */ @Override public Object root() { return this.nativeManager.root(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#setRoot(Object)} + */ @Override public Object setRoot(Object newRoot) { return this.nativeManager.setRoot(newRoot); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#storeRoot()} + */ @Override public long storeRoot() { return this.nativeManager.storeRoot(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#configuration()} + */ @Override public StorageConfiguration configuration() { return this.nativeManager.configuration(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#typeDictionary()} + */ @Override public StorageTypeDictionary typeDictionary() { return this.nativeManager.typeDictionary(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#shutdown()} + */ @Override public boolean shutdown() { return this.nativeManager.shutdown(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#close()} + */ @Override public void close() throws StorageException { this.nativeManager.close(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createConnection()} + */ @Override public StorageConnection createConnection() { return this.nativeManager.createConnection(); } - + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#viewRoots()} + */ @Override public PersistenceRootsView viewRoots() { return this.nativeManager.viewRoots(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#defaultRoot()} + */ @Override @Deprecated public Reference defaultRoot() @@ -130,90 +173,150 @@ public Reference defaultRoot() return this.nativeManager.defaultRoot(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#database()} + */ @Override public Database database() { return this.nativeManager.database(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isAcceptingTasks()} + */ @Override public boolean isAcceptingTasks() { return this.nativeManager.isAcceptingTasks(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isRunning()} + */ @Override public boolean isRunning() { return this.nativeManager.isRunning(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isStartingUp()} + */ @Override public boolean isStartingUp() { return this.nativeManager.isStartingUp(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isShuttingDown()} + */ @Override public boolean isShuttingDown() { return this.nativeManager.isShuttingDown(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#checkAcceptingTasks()} + */ @Override public void checkAcceptingTasks() { this.nativeManager.checkAcceptingTasks(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#initializationTime()} + */ @Override public long initializationTime() { return this.nativeManager.initializationTime(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#operationModeTime()} + */ @Override public long operationModeTime() { return this.nativeManager.operationModeTime(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isActive()} + */ @Override public boolean isActive() { return this.nativeManager.isActive(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueGarbageCollection(long)} + */ @Override public boolean issueGarbageCollection(long nanoTimeBudget) { return this.nativeManager.issueGarbageCollection(nanoTimeBudget); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFileCheck(long)} + */ @Override public boolean issueFileCheck(long nanoTimeBudget) { return this.nativeManager.issueFileCheck(nanoTimeBudget); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueCacheCheck(long, StorageEntityCacheEvaluator)} + */ @Override public boolean issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator) { return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createStorageStatistics} + */ @Override public StorageRawFileStatistics createStorageStatistics() { return this.nativeManager.createStorageStatistics(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportChannels(StorageLiveFileProvider)} + */ @Override public void exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection) { this.nativeManager.exportChannels(fileProvider, performGarbageCollection); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportTypes(StorageEntityTypeExportFileProvider)} + */ @Override public StorageEntityTypeExportStatistics exportTypes( StorageEntityTypeExportFileProvider exportFileProvider, @@ -222,18 +325,30 @@ public StorageEntityTypeExportStatistics exportTypes( return this.nativeManager.exportTypes(exportFileProvider, isExportType); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#importFiles(XGettingEnum)} + */ @Override public void importFiles(XGettingEnum importFiles) { this.nativeManager.importFiles(importFiles); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#persistenceManager()} + */ @Override public PersistenceManager persistenceManager() { return this.nativeManager.persistenceManager(); } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#store(Object)} + */ @Override public long store(Object instance) { @@ -245,6 +360,10 @@ public long store(Object instance) return this.nativeManager; } + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFullBackup(StorageLiveFileProvider, PersistenceTypeDictionaryExporter)} + */ @Override public void issueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter) { diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java index 7d2f53e7..eee8c95a 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.migrater.scripts.abstractSuperClass; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.version.MigrationVersion; -public abstract class AbstractScript implements MigrationScript +public abstract class AbstractScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java index 9da0eeec..f7e4dc2b 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.errorThrowing; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class ErrorThrowingScript implements MigrationScript +public class ErrorThrowingScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { public ErrorThrowingScript() { diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java index 84c0db97..61c3eefd 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.exceptionThrowing; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class ExceptionThrowingScript implements MigrationScript +public class ExceptionThrowingScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { public ExceptionThrowingScript() throws Exception { diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java index 54f8efe9..0cdd5aa0 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.includeSubPackages; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScript implements MigrationScript +public class ValidScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java index 27bac0fe..9dc57f53 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScriptInSubpackage implements MigrationScript +public class ValidScriptInSubpackage implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java index e1061dfa..a59d6207 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScript implements MigrationScript +public class ValidScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java index ec15b6c3..950c233c 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.noCorrectConstructor; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class NoCorrectConstructorScript implements MigrationScript +public class NoCorrectConstructorScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { private final String argument; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java index fafad8e4..e9f5052a 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.migrater.scripts.valid; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class ValidScript implements MigrationScript +public class ValidScript implements + software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() From 677d9bb50a82e3d180484284ed2cd26d86ddde11 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 22 Dec 2022 15:34:22 +0100 Subject: [PATCH 175/306] Script Execution history implemented --- ...nosticMigrationEmbeddedStorageManager.java | 20 ++++++--- .../VersionAgnosticMigrationManager.java | 23 ++++++++++ .../migrater/AbstractMigrater.java | 6 +-- .../migrater/MicroMigrater.java | 9 ++++ .../version/VersionedAndKeeperOfHistory.java | 27 ++++++++++++ .../version/VersionedObjectWithHistory.java | 41 +++++++++++++++++ .../version/VersionedRootWithHistory.java | 44 +++++++++++++++++++ .../integration/MigrationHistoryTest.java | 38 ++++++++++++++++ 8 files changed, 198 insertions(+), 10 deletions(-) create mode 100644 core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java create mode 100644 core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java create mode 100644 core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java create mode 100644 microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index abc0e28d..cae1aa7f 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -1,10 +1,13 @@ package software.xdev.micromigration.microstream.versionagnostic; import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedRoot; +import software.xdev.micromigration.version.VersionedRootWithHistory; +import java.util.List; import java.util.Objects; @@ -28,7 +31,7 @@ public abstract class VersionAgnosticMigrationEmbeddedStorageManager implements AutoCloseable { private final MicroMigrater migrater ; - private VersionedRoot versionRoot ; + private VersionedRootWithHistory versionRoot ; private VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; @@ -68,14 +71,14 @@ protected VersionAgnosticTunnelingEmbeddedStorageManager getTunnelingManager( public T start() { this.tunnelingManager.start(); - if(this.tunnelingManager.root() instanceof VersionedRoot) + if(this.tunnelingManager.root() instanceof VersionedRootWithHistory) { - this.versionRoot = (VersionedRoot)this.tunnelingManager.root(); + this.versionRoot = (VersionedRootWithHistory)this.tunnelingManager.root(); } else { - //Build VersionedRoot around actual root, set by user. - this.versionRoot = new VersionedRoot(this.tunnelingManager.root()); + //Build VersionedRootWithHistory around actual root, set by user. + this.versionRoot = new VersionedRootWithHistory(this.tunnelingManager.root()); this.tunnelingManager.setRoot(versionRoot); this.tunnelingManager.storeRoot(); } @@ -103,6 +106,13 @@ public Object root() { return this.versionRoot.getRoot(); } + /** + * @return the actual root object + */ + public List getMigrationHistory() { + return this.versionRoot.getMigrationHistory(); + } + /** * Sets the actual root element (not the versioned root) * @param newRoot to set diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index b7bc7d25..e33949a7 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -1,9 +1,11 @@ package software.xdev.micromigration.microstream.versionagnostic; import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedAndKeeperOfHistory; import java.util.Objects; import java.util.function.Consumer; @@ -86,6 +88,27 @@ public class VersionAgnosticMigrationManager Objects.requireNonNull(versionedObject); } + public VersionAgnosticMigrationManager + ( + final VersionedAndKeeperOfHistory versionedObject, + final MicroMigrater migrater , + final VersionAgnosticMigrationEmbeddedStorageManager storageManager + ) + { + this( + ( ) -> versionedObject.getVersion() , + (version) -> versionedObject.setVersion(version) , + (version) -> storageManager.store(versionedObject), + migrater , + storageManager + ); + Objects.requireNonNull(versionedObject); + migrater.registerNotificationConsumer( + executedScript -> + versionedObject.addExecutedScript(new ScriptExecutionNotificationWithoutScriptReference(executedScript)) + ); + } + /** * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 9c4ec6ba..08623e75 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -23,11 +23,7 @@ public abstract class AbstractMigrater implements MicroMigrater { private List> notificationConsumers = new ArrayList<>(); - - /** - * Registers a callback to take action when a script is executed. - * @param notificationConsumer is executed when a script is used from this migrater. - */ + public void registerNotificationConsumer(Consumer notificationConsumer) { this.notificationConsumers.add(notificationConsumer); diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 300fd412..8159e1dd 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,11 +1,13 @@ package software.xdev.micromigration.migrater; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; import java.util.TreeSet; +import java.util.function.Consumer; /** @@ -83,4 +85,11 @@ > MigrationVersion E storageManager , Object objectToMigrate ); + + /** + * Registers a callback to take action when a script is executed. + * @param notificationConsumer is executed when a script is used from this migrater. + */ + public void registerNotificationConsumer( + Consumer notificationConsumer); } diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java new file mode 100644 index 00000000..a1d4b68b --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java @@ -0,0 +1,27 @@ +package software.xdev.micromigration.version; + +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; + +import java.util.List; + + +/** + * Interface used by the MigrationManagers for easier versioning of objects + * and to keep and read the migration history. + * + * @author Johannes Rabauer + * + */ +public interface VersionedAndKeeperOfHistory extends Versioned +{ + /** + * Adds the information about the executed script to the history book. + * @param executedScriptInformation information about the executed script + */ + void addExecutedScript(ScriptExecutionNotificationWithoutScriptReference executedScriptInformation); + + /** + * @return the complete migration history. That means information about every executed script. + */ + List getMigrationHistory(); +} diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java new file mode 100644 index 00000000..c981bd92 --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java @@ -0,0 +1,41 @@ +package software.xdev.micromigration.version; + +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + + +/** + * This class is inserted as the root of the MicroStream datastore and contains only the + * current version, the actual root object and the history of executed scripts. + * + * @author Johannes Rabauer + * + */ +public class VersionedObjectWithHistory extends VersionedObject implements VersionedAndKeeperOfHistory +{ + private final List migrationHistory; + + /** + * @param actualRoot which is stored in the datastore and defined by the user + */ + public VersionedObjectWithHistory(Object actualRoot) + { + super(actualRoot); + this.migrationHistory = new ArrayList<>(); + } + + @Override + public void addExecutedScript(ScriptExecutionNotificationWithoutScriptReference executedScriptInformation) + { + this.migrationHistory.add(Objects.requireNonNull(executedScriptInformation)); + } + + @Override + public List getMigrationHistory() + { + return this.migrationHistory; + } +} diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java new file mode 100644 index 00000000..ac4476b0 --- /dev/null +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java @@ -0,0 +1,44 @@ +package software.xdev.micromigration.version; + +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + + +/** + * This class is inserted as the root of the MicroStream datastore and contains only the + * current version, the actual root object and the history of executed scripts. + * + * @author Johannes Rabauer + * + */ +public class VersionedRootWithHistory extends VersionedRoot implements VersionedAndKeeperOfHistory +{ + private final List migrationHistory; + + /** + * @param actualRoot which is stored in the datastore and defined by the user + */ + public VersionedRootWithHistory(Object actualRoot) + { + super(actualRoot); + this.migrationHistory = new ArrayList<>(); + } + + @Override + public void addExecutedScript(ScriptExecutionNotificationWithoutScriptReference executedScriptInformation) + { + this.migrationHistory.add(Objects.requireNonNull(executedScriptInformation)); + } + + /** + * @return the complete migration history. That means information about every executed script. + */ + @Override + public List getMigrationHistory() + { + return this.migrationHistory; + } +} diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java new file mode 100644 index 00000000..e7376d77 --- /dev/null +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java @@ -0,0 +1,38 @@ +package software.xdev.micromigration.integration; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +import java.nio.file.Path; + +import static org.junit.jupiter.api.Assertions.assertEquals; + + +class MigrationHistoryTest +{ + @Test + void testMigrationHistoryWithTwoScripts(@TempDir Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(2, migrationStorageManager.getMigrationHistory().size()); + assertEquals("SimpleTypedMigrationScript", migrationStorageManager.getMigrationHistory().get(0).getExecutedScriptName()); + } + } + +} From 90f09ee462bd22351d05f0e5b1d5cd759907fe28 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 23 Dec 2022 08:01:26 +0100 Subject: [PATCH 176/306] Cleanup, Refactoring --- .github/workflows/checkBuild.yml | 4 ++-- .github/workflows/release.yml | 2 +- .../VersionAgnosticMigrationManager.java | 8 +++++++ examples/pom.xml | 23 +++++++++++++++++-- .../examples/explicit/MainExplicit.java | 5 +++- .../explicit/scripts/UpdateToV1_0.java | 5 ++-- .../explicit/scripts/UpdateToV1_1.java | 5 ++-- .../notification/MainNotification.java | 4 +++- ...alWithMigrationEmbeddedStorageManager.java | 4 +++- .../practical/embedded/UpdateToV1_0.java | 5 ++-- .../practical/embedded/UpdateToV2_0.java | 5 ++-- .../MainPracticalWithMigrationManager.java | 1 + .../migrationManager/UpdateToV1_0.java | 5 ++-- .../migrationManager/UpdateToV2_0.java | 5 ++-- .../examples/reflective/MainReflective.java | 2 ++ .../reflective/scripts/UpdateToV1_0.java | 5 ++-- .../reflective/scripts/UpdateToV1_1.java | 5 ++-- pom.xml | 1 + 18 files changed, 70 insertions(+), 24 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 2a90003b..07995846 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -32,7 +32,7 @@ jobs: java-package: ${{ matrix.java-package }} cache: 'maven' - - name: Build with Maven + - name: Build with maven run: mvn -B clean verify - name: Check for uncommited changes @@ -79,4 +79,4 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file + run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 794e8d2e..96e5823d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -93,7 +93,7 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - run: mvn -B -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy after_release: runs-on: ubuntu-latest needs: [publish_central] diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index e33949a7..9ce94495 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -88,6 +88,14 @@ public class VersionAgnosticMigrationManager Objects.requireNonNull(versionedObject); } + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ public VersionAgnosticMigrationManager ( final VersionedAndKeeperOfHistory versionedObject, diff --git a/examples/pom.xml b/examples/pom.xml index 9b018332..735829e4 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.7 + 0.0.7-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.7 + 0.0.7-SNAPSHOT micro-migration @@ -26,4 +26,23 @@ ${project.version} + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + true + + + + org.apache.maven.plugins + maven-resources-plugin + + true + + + + diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 4627949d..27b27b74 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -2,13 +2,16 @@ import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.migrater.ExplicitMigrater; import java.util.Date; /** * The most basic usage of micro migration. - * Here two {@link software.xdev.micromigration.scripts.MigrationScript}s are explicitly registered + * Here two {@link MigrationScript}s are explicitly registered * and subsequently executed. Easy. * * @author Johannes Rabauer diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 984b100c..02decd38 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -1,13 +1,14 @@ package software.xdev.micromigration.examples.explicit.scripts; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_0 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript +public class UpdateToV1_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index c246ebd1..7db5b20c 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -1,13 +1,14 @@ package software.xdev.micromigration.examples.explicit.scripts; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_1 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript +public class UpdateToV1_1 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index 9eb4a007..588b7eb0 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.notification; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; @@ -9,7 +11,7 @@ /** * Shows the basic registration of migration notifications - * ({@link software.xdev.micromigration.notification.ScriptExecutionNotification}). + * ({@link ScriptExecutionNotification}). * * @author Johannes Rabauer */ diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 55ce8f0b..4716b4a1 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -1,6 +1,8 @@ package software.xdev.micromigration.examples.practical.embedded; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -16,7 +18,7 @@ * @author Johannes Rabauer * */ -public class MainPracticalWithMigrationEmbeddedStorageManager +public class MainPracticalWithMigrationEmbeddedStorageManager { public static void main(String[] args) { diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index 81dd61b4..5f72f0c2 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -3,12 +3,13 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.Address; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class UpdateToV1_0 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript +public class UpdateToV1_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index 513ea7df..3274773f 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -2,12 +2,13 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -public class UpdateToV2_0 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript +public class UpdateToV2_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index 9d665706..88499179 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -3,6 +3,7 @@ import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; +import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.version.VersionedObject; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index 1384fbbd..027cbf18 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -3,13 +3,14 @@ import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -public class UpdateToV1_0 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> +public class UpdateToV1_0 implements MigrationScript> { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 13438d7e..3eaf2937 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -2,13 +2,14 @@ import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -public class UpdateToV2_0 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript, software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager> +public class UpdateToV2_0 implements MigrationScript> { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index fdadcfbe..f30faefe 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.reflective; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ReflectiveMigrater; import software.xdev.micromigration.migrater.ScriptInstantiationException; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 5703aa67..8fa8a359 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -1,13 +1,14 @@ package software.xdev.micromigration.examples.reflective.scripts; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_0 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript +public class UpdateToV1_0 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index 48770cad..da1b76c2 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -1,13 +1,14 @@ package software.xdev.micromigration.examples.reflective.scripts; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; -public class UpdateToV1_1 implements - software.xdev.micromigration.scripts.VersionAgnosticMigrationScript +public class UpdateToV1_1 implements MigrationScript { @Override public MigrationVersion getTargetVersion() diff --git a/pom.xml b/pom.xml index be60a93f..c8452de9 100644 --- a/pom.xml +++ b/pom.xml @@ -50,6 +50,7 @@ core reflection + examples microstream-v5 microstream-v6 microstream-v7 From dd666d3615c8f559a3c908370e28422cd4b80983 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 23 Dec 2022 08:17:52 +0100 Subject: [PATCH 177/306] Added Changelog for 0.0.7 --- CHANGELOG.md | 4 ++++ README.md | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 429500ff..7701a9c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.0.7 +* A lot of refactoring of the module structure +* A migration history is now available and automatically stored + ## 0.0.6 * Tried a new release-action...again. diff --git a/README.md b/README.md index 9f1a1a3d..8d835211 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Simply add the dependency to your `pom.xml`: software.xdev micro-migration-microstream-v7 - 0.0.6 + 0.0.7 ``` @@ -134,7 +134,7 @@ To use this, you need to add the following dependency to your `pom.xml`: software.xdev micro-migration-reflection - 0.0.6 + 0.0.7 ``` @@ -153,7 +153,7 @@ then use `micro-migration-microstream-v7`) and exclude the dependent version of software.xdev micro-migration-microstream-v7 - 0.0.6 + 0.0.7 one.microstream From 12648cbb24652ebc3e4625f76d6e28a41d67ba7e Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 23 Dec 2022 07:20:52 +0000 Subject: [PATCH 178/306] Release 0.0.7 --- core/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 018961e5..6837c572 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-core - 0.0.7-SNAPSHOT + 0.0.7 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.7-SNAPSHOT + 0.0.7 diff --git a/examples/pom.xml b/examples/pom.xml index 735829e4..c612d5cb 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.7-SNAPSHOT + 0.0.7 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.7-SNAPSHOT + 0.0.7 micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index c1d86de8..220a66a6 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.7-SNAPSHOT + 0.0.7 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7-SNAPSHOT + 0.0.7 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index a85441d5..f0fb219d 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.7-SNAPSHOT + 0.0.7 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7-SNAPSHOT + 0.0.7 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index fb16686e..180627ed 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.7-SNAPSHOT + 0.0.7 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7-SNAPSHOT + 0.0.7 diff --git a/pom.xml b/pom.xml index c8452de9..d3d08f88 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.7-SNAPSHOT + 0.0.7 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index b70e2ca5..3bbb67b7 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.7-SNAPSHOT + 0.0.7 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7-SNAPSHOT + 0.0.7 From f2f326e5de314f8eba5441dfb5fe9a0ffeac0af1 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 23 Dec 2022 07:23:53 +0000 Subject: [PATCH 179/306] Preparing for next development iteration --- core/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 6837c572..0cef7405 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-core - 0.0.7 + 0.0.8-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.7 + 0.0.8-SNAPSHOT diff --git a/examples/pom.xml b/examples/pom.xml index c612d5cb..57dad20f 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.7 + 0.0.8-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.7 + 0.0.8-SNAPSHOT micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 220a66a6..908393b6 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.7 + 0.0.8-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7 + 0.0.8-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index f0fb219d..c77ffd87 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.7 + 0.0.8-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7 + 0.0.8-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 180627ed..656ea3c7 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.7 + 0.0.8-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7 + 0.0.8-SNAPSHOT diff --git a/pom.xml b/pom.xml index d3d08f88..e6fed97e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.7 + 0.0.8-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 3bbb67b7..25cf2a2c 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.7 + 0.0.8-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.7 + 0.0.8-SNAPSHOT From eb93d535f28e0d73570b1aa5fb83a6838fed956c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 23 Dec 2022 13:28:43 +0100 Subject: [PATCH 180/306] Thrown out deprecated Reflection Method --- .../xdev/micromigration/migrater/ReflectiveMigrater.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java index 328ea574..7e2d818c 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java @@ -1,7 +1,7 @@ package software.xdev.micromigration.migrater; import org.reflections.Reflections; -import org.reflections.scanners.SubTypesScanner; +import org.reflections.scanners.Scanners; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.reflections.util.FilterBuilder; @@ -36,7 +36,7 @@ public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationEx Reflections reflections = new Reflections( new ConfigurationBuilder() .setUrls(ClasspathHelper.forPackage(packagePath)) - .setScanners(new SubTypesScanner()) + .setScanners(Scanners.SubTypes) //I don't get why you have to filter again, but if you don't, super-packages will get included .filterInputsBy(new FilterBuilder().includePackage(packagePath)) ); From b20549e60aa9e094b289cee4427959cf6405e8e2 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 16 Jan 2023 15:19:58 +0100 Subject: [PATCH 181/306] Updated README --- LICENSE | 2 +- README.md | 35 +++++++++++++++++++++++++++++++---- docs/MigrationSequence_1.png | Bin 4372 -> 11271 bytes docs/MigrationSequence_2.png | Bin 11729 -> 15484 bytes docs/MigrationSequence_3.png | Bin 15863 -> 19428 bytes docs/MigrationSequence_4.png | Bin 20410 -> 28674 bytes 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/LICENSE b/LICENSE index 6d8d58fb..c86eeb40 100644 --- a/LICENSE +++ b/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2013-2018 Docker, Inc. + Copyright 2023 XDEV Software Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 8d835211..0809c64c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ -![License](https://img.shields.io/github/license/xdev-software/micro-migration) [![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/versions) [![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/micro-migration/checkBuild.yml?branch=develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) -[![Twitter Follow](https://img.shields.io/twitter/follow/XDEVSoftware)](https://twitter.com/XDEVSoftware) # Micro migration Tiny java library to migrate MicroStream datastores. @@ -168,9 +166,38 @@ then use `micro-migration-microstream-v7`) and exclude the dependent version of ``` Since there is rarely a breaking change, this works 90% of times. -# Links +## Releasing + +Before releasing: + +* Check if the [Check Build](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop)-Action was successful. +* Check the [changelog](CHANGELOG.md) + +If the ``develop`` is ready for release, create a pull request to the ``main``-Branch and merge the changes + +When the release is finished do the following: +* Merge the auto-generated PR (with the incremented version number) back into the ``develop`` +* Login to the [Sonatype repository manager](https://s01.oss.sonatype.org/), check the staged libraries, + close the repository and publish it (after a few minutes). + +## Developing + +### Software Requirements +You should have the following things installed: +* Git +* Java 9 +* Maven + +### Recommended setup +* Install ``IntelliJ`` (Community Edition is sufficient) + * Install the following plugins: + * Import the project + * Ensure that everything is encoded in ``UTF-8`` + * Ensure that the JDK/Java-Version is correct + +## Links - [Javadoc](https://javadoc.io/doc/software.xdev/micro-migration-core/latest/index.html) - [Maven central repository](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/version) -# Contributing +## Contributing We would love your input in any way. More about contributing: [CONTRIBUTING.md](CONTRIBUTING.md) diff --git a/docs/MigrationSequence_1.png b/docs/MigrationSequence_1.png index 822153dcdbf05977beb2bd4527ebe67b2f9d8f06..4b8c8da8a8f367827eed6a19ca0cf4643199c899 100644 GIT binary patch literal 11271 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 RXnl&yBt&IJDj~Xl{|hu`<-h;{ literal 11729 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 literal 20410 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 JS?83{1OP;}CKLbw From 33bdd5ce56bde20e30d5c68aa8b926eb2554919e Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 16 Jan 2023 15:22:39 +0100 Subject: [PATCH 182/306] Test if variable is also valid in .md-file --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 359c7e90..5a78a5e0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ We use GitHub to host code, to track issues and feature requests, as well as acc Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests: -1. Fork the repo and create your branch from `master`. +1. Fork the repo and create your branch from ${{ github.event.repository.default_branch }}. 2. If you've added code that should be tested, add tests. 3. If you've changed APIs, update the documentation. 4. Ensure the test suite passes. From 8895daeea824ca45d669a697a65c89d2845757c0 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 16 Jan 2023 15:23:28 +0100 Subject: [PATCH 183/306] Update Contributing.md because github-actions-variables are not valid in .md-files --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5a78a5e0..9d779ac9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ We use GitHub to host code, to track issues and feature requests, as well as acc Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests: -1. Fork the repo and create your branch from ${{ github.event.repository.default_branch }}. +1. Fork the repo and create your branch from `main`. 2. If you've added code that should be tested, add tests. 3. If you've changed APIs, update the documentation. 4. Ensure the test suite passes. From d38f005363b50e09c69044fdfa19332204816550 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 10:29:01 +0100 Subject: [PATCH 184/306] Added Enforcer Plugin --- pom.xml | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/pom.xml b/pom.xml index e6fed97e..e3f2d286 100644 --- a/pom.xml +++ b/pom.xml @@ -45,6 +45,7 @@ but we are using some functionality from Java 9: https://docs.microstream.one/manual/intro/system-requirements.html --> 9 + 3.8.1 @@ -143,6 +144,56 @@ + + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0 + + + + enforce-maven-and-java + + enforce + + + + + + ${maven.version} + + + ${java.version} + + + + + + + require-utf-8 + + enforce + + + + + UTF-8 + *.java + + + + + + + + + org.codehaus.mojo + extra-enforcer-rules + 1.6.1 + + + + org.apache.maven.plugins maven-compiler-plugin From 8a15f10a05271b2f983892cc4807317efa5a5492 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 13:54:47 +0100 Subject: [PATCH 185/306] Added ForbiddenAPIs --- .../migrater/AbstractMigrater.java | 19 ++++++++-- .../examples/explicit/MainExplicit.java | 4 ++- .../explicit/scripts/UpdateToV1_0.java | 3 +- .../explicit/scripts/UpdateToV1_1.java | 3 +- .../notification/MainNotification.java | 5 +-- ...alWithMigrationEmbeddedStorageManager.java | 8 +++-- .../practical/embedded/UpdateToV1_0.java | 6 ++-- .../practical/embedded/UpdateToV2_0.java | 6 ++-- .../MainPracticalWithMigrationManager.java | 8 +++-- .../migrationManager/UpdateToV1_0.java | 6 ++-- .../migrationManager/UpdateToV2_0.java | 6 ++-- .../examples/reflective/MainReflective.java | 3 +- .../reflective/scripts/UpdateToV1_0.java | 3 +- .../reflective/scripts/UpdateToV1_1.java | 3 +- pom.xml | 36 +++++++++++++++++++ .../NoCorrectConstructorScript.java | 4 ++- 16 files changed, 98 insertions(+), 25 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 08623e75..2595e603 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -6,6 +6,7 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; +import java.time.Clock; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -23,6 +24,8 @@ public abstract class AbstractMigrater implements MicroMigrater { private List> notificationConsumers = new ArrayList<>(); + private Clock clock = Clock.systemDefaultZone(); + public void registerNotificationConsumer(Consumer notificationConsumer) { @@ -78,7 +81,7 @@ public > Migration MigrationVersion versionBeforeUpdate = updateVersionWhichWasExecuted; if(!this.notificationConsumers.isEmpty()) { - startDate = LocalDateTime.now(); + startDate = LocalDateTime.now(this.clock); } updateVersionWhichWasExecuted = migrateWithScript(castedScript, storageManager, objectToMigrate); if(!this.notificationConsumers.isEmpty()) @@ -89,7 +92,7 @@ public > Migration versionBeforeUpdate, updateVersionWhichWasExecuted, startDate, - LocalDateTime.now() + LocalDateTime.now(this.clock) ); this.notificationConsumers.forEach(consumer -> consumer.accept(scriptNotification)); } @@ -133,4 +136,16 @@ protected void checkIfVersionIsAlreadyRegistered(VersionAgnosticMigrationScript< } } } + + /** + * Change used clock for notifications from {@link #registerNotificationConsumer(Consumer)}. + * @param clock is used when a + * {@link software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference} is created + * @return self + */ + public AbstractMigrater withClock(Clock clock) + { + this.clock = clock; + return this; + } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 27b27b74..1a6df553 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -8,6 +8,8 @@ import software.xdev.micromigration.migrater.ExplicitMigrater; import java.util.Date; +import java.util.logging.Logger; + /** * The most basic usage of micro migration. @@ -26,7 +28,7 @@ public static void main(String[] args) new UpdateToV1_1() ); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); - System.out.println(storageManager.root()); + Logger.getGlobal().info(storageManager.root().toString()); if(storageManager.root() == null) { storageManager.setRoot("Hello World! @ " + new Date()); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 02decd38..1d18cda5 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -6,6 +6,7 @@ import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; +import java.util.logging.Logger; public class UpdateToV1_0 implements MigrationScript @@ -19,7 +20,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 7db5b20c..4ae8bc03 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -6,6 +6,7 @@ import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; +import java.util.logging.Logger; public class UpdateToV1_1 implements MigrationScript @@ -19,7 +20,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index 588b7eb0..c6fe3bd6 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -7,6 +7,7 @@ import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; +import java.util.logging.Logger; /** @@ -23,10 +24,10 @@ public static void main(String[] args) new MainNotification.UpdateToV1_0() ); migrater.registerNotificationConsumer( - scriptExecutionNotification -> System.out.println("Script " + scriptExecutionNotification.getExecutedScript().getClass().getSimpleName() + " executed.") + scriptExecutionNotification -> Logger.getGlobal().info("Script " + scriptExecutionNotification.getExecutedScript().getClass().getSimpleName() + " executed.") ); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); - System.out.println(storageManager.root()); + Logger.getGlobal().info(storageManager.root().toString()); if(storageManager.root() == null) { storageManager.setRoot("Hello World! @ " + new Date()); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 4716b4a1..8f1d9ca3 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -5,6 +5,8 @@ import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; +import java.util.logging.Logger; + /** * A practical example of usage in a few steps: @@ -28,7 +30,7 @@ public static void main(String[] args) { storageManager.setRoot(BusinessBranch.createDummyBranch()); storageManager.storeRoot(); - System.out.println(storageManager.root().toString()); + Logger.getGlobal().info(storageManager.root().toString()); } @@ -36,7 +38,7 @@ public static void main(String[] args) final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV1)) { - System.out.println(storageManager.root().toString()); + Logger.getGlobal().info(storageManager.root().toString()); } @@ -47,7 +49,7 @@ public static void main(String[] args) ); try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV2)) { - System.out.println(storageManager.root().toString()); + Logger.getGlobal().info(storageManager.root().toString()); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index 5f72f0c2..4f0b6e50 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -8,6 +8,8 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; +import java.util.logging.Logger; + public class UpdateToV1_0 implements MigrationScript { @@ -20,7 +22,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println("Executing Script for v1.0..."); + Logger.getGlobal().info("Executing Script for v1.0..."); software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = context.getMigratingObject(); BusinessBranch newBranch = new BusinessBranch(); @@ -37,6 +39,6 @@ public void migrate(Context { @@ -19,7 +21,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println("Executing Script for v2.0..."); + Logger.getGlobal().info("Executing Script for v2.0..."); final BusinessBranch branch = context.getMigratingObject(); Customer newCustomer = new Customer(); newCustomer.name = "Stevie Nicks"; @@ -28,6 +30,6 @@ public void migrate(Context con newCustomer.address.city = "Phoenix"; branch.customers.add(newCustomer); context.getStorageManager().store(branch.customers); - System.out.println("Done executing Script for v2.0"); + Logger.getGlobal().info("Done executing Script for v2.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index 88499179..d1341190 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -7,6 +7,8 @@ import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.version.VersionedObject; +import java.util.logging.Logger; + /** * A practical example of usage in a few steps: @@ -34,7 +36,7 @@ public static void main(String[] args) VersionedObject versionedBranch = new VersionedObject<>(BusinessBranch.createDummyBranch()); storageManager.setRoot(versionedBranch); storageManager.storeRoot(); - System.out.println(storageManager.root().toString()); + Logger.getGlobal().info(storageManager.root().toString()); } @@ -45,7 +47,7 @@ public static void main(String[] args) VersionedObject versionedBranch = (VersionedObject)storageManager.root(); new MigrationManager(versionedBranch, migraterWithV1, storageManager) .migrate(versionedBranch); - System.out.println(storageManager.root().toString()); + Logger.getGlobal().info(storageManager.root().toString()); } @@ -56,7 +58,7 @@ public static void main(String[] args) VersionedObject versionedBranch = (VersionedObject)storageManager.root(); new MigrationManager(versionedBranch, migraterWithV2, storageManager) .migrate(versionedBranch); - System.out.println(storageManager.root().toString()); + Logger.getGlobal().info(storageManager.root().toString()); } } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index 027cbf18..ac9ae492 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -9,6 +9,8 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; +import java.util.logging.Logger; + public class UpdateToV1_0 implements MigrationScript> { @@ -21,7 +23,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context, MigrationEmbeddedStorageManager> context) { - System.out.println("Executing Script for v1.0..."); + Logger.getGlobal().info("Executing Script for v1.0..."); VersionedObject versionedBranch = context.getMigratingObject(); BusinessBranch oldBranch = (BusinessBranch) versionedBranch.getObject(); @@ -40,6 +42,6 @@ public void migrate(Context, MigrationEmbeddedStorageMan } versionedBranch.setObject(newBranch); context.getStorageManager().store(versionedBranch); - System.out.println("Done executing Script for v1.0"); + Logger.getGlobal().info("Done executing Script for v1.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 3eaf2937..55a63b40 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -8,6 +8,8 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; +import java.util.logging.Logger; + public class UpdateToV2_0 implements MigrationScript> { @@ -20,7 +22,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context, MigrationEmbeddedStorageManager> context) { - System.out.println("Executing Script for v2.0..."); + Logger.getGlobal().info("Executing Script for v2.0..."); VersionedObject versionedBranch = context.getMigratingObject(); final BusinessBranch branch = versionedBranch.getObject(); Customer newCustomer = new Customer(); @@ -30,6 +32,6 @@ public void migrate(Context, MigrationEmbeddedSt newCustomer.address.city = "Phoenix"; branch.customers.add(newCustomer); context.getStorageManager().store(branch.customers); - System.out.println("Done executing Script for v2.0"); + Logger.getGlobal().info("Done executing Script for v2.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index f30faefe..4174234e 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -6,6 +6,7 @@ import software.xdev.micromigration.migrater.ScriptInstantiationException; import java.util.Date; +import java.util.logging.Logger; /** @@ -20,7 +21,7 @@ public static void main(String[] args) try { final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.examples.reflective.scripts"); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); - System.out.println(storageManager.root()); + Logger.getGlobal().info(storageManager.root().toString()); if(storageManager.root() == null) { storageManager.setRoot("Hello World! @ " + new Date()); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 8fa8a359..5872137d 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -6,6 +6,7 @@ import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; +import java.util.logging.Logger; public class UpdateToV1_0 implements MigrationScript @@ -19,7 +20,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index da1b76c2..f6456bd8 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -6,6 +6,7 @@ import software.xdev.micromigration.version.MigrationVersion; import java.util.Date; +import java.util.logging.Logger; public class UpdateToV1_1 implements MigrationScript @@ -19,7 +20,7 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); } } diff --git a/pom.xml b/pom.xml index e3f2d286..0035ac08 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,8 @@ https://docs.microstream.one/manual/intro/system-requirements.html --> 9 3.8.1 + ${java.version} + ${java.version} @@ -194,6 +196,40 @@ + + + de.thetaphi + forbiddenapis + 3.4 + + + + jdk-unsafe + jdk-deprecated + + jdk-non-portable + + jdk-reflection + + jdk-system-out + + + + + + check + testCheck + + + + + org.apache.maven.plugins maven-compiler-plugin diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java index 950c233c..7a06c307 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -4,6 +4,8 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; +import java.util.logging.Logger; + public class NoCorrectConstructorScript implements software.xdev.micromigration.scripts.VersionAgnosticMigrationScript @@ -24,6 +26,6 @@ public MigrationVersion getTargetVersion() @Override public void migrate(Context context) { - System.out.println(this.argument); + Logger.getGlobal().info(this.argument); } } From 05cc63c74460d1ceddb4df9321b8515dd79c1454 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 14:27:22 +0100 Subject: [PATCH 186/306] Moved checkstyle --- README.md | 3 + config/checkstyle.xml | 311 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 314 insertions(+) create mode 100644 config/checkstyle.xml diff --git a/README.md b/README.md index 0809c64c..deb261a1 100644 --- a/README.md +++ b/README.md @@ -191,6 +191,9 @@ You should have the following things installed: ### Recommended setup * Install ``IntelliJ`` (Community Edition is sufficient) * Install the following plugins: + * [Save Actions](https://plugins.jetbrains.com/plugin/7642-save-actions) - Provides save actions, like running the formatter or adding ``final`` to fields + * [SonarLint](https://plugins.jetbrains.com/plugin/7973-sonarlint) - CodeStyle/CodeAnalysis + * [Checkstyle-IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea) - CodeStyle/CodeAnalysis. Uses this [checkstyle](config/checkstyle.xml). * Import the project * Ensure that everything is encoded in ``UTF-8`` * Ensure that the JDK/Java-Version is correct diff --git a/config/checkstyle.xml b/config/checkstyle.xml new file mode 100644 index 00000000..710e3e68 --- /dev/null +++ b/config/checkstyle.xml @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From ea52ae0723feb505c533c690641701bef7ec8353 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 14:54:04 +0100 Subject: [PATCH 187/306] Added checkstyle-plugin --- pom.xml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/pom.xml b/pom.xml index 0035ac08..ef91ec0a 100644 --- a/pom.xml +++ b/pom.xml @@ -230,6 +230,36 @@ + + + org.apache.maven.plugins + maven-checkstyle-plugin + 3.1.2 + + + com.puppycrawl.tools + checkstyle + 8.44 + + + + config/checkstyle.xml + UTF-8 + false + true + false + + + + validate + validate + + check + + + + + org.apache.maven.plugins maven-compiler-plugin From 84fe665338bebdda47eb9dc04dffc73df318024e Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 14:54:38 +0100 Subject: [PATCH 188/306] Added IntelliJ config-files --- .gitignore | 22 ++++- .idea/checkstyle-idea.xml | 20 +++++ .idea/codeStyles/Project.xml | 92 ++++++++++++++++++++ .idea/codeStyles/codeStyleConfig.xml | 5 ++ .idea/inspectionProfiles/Project_Default.xml | 6 ++ .idea/saveactions_settings.xml | 21 +++++ core/.idea/.gitignore | 10 +++ core/.idea/checkstyle-idea.xml | 16 ++++ core/.idea/encodings.xml | 8 ++ 9 files changed, 197 insertions(+), 3 deletions(-) create mode 100644 .idea/checkstyle-idea.xml create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/saveactions_settings.xml create mode 100644 core/.idea/.gitignore create mode 100644 core/.idea/checkstyle-idea.xml create mode 100644 core/.idea/encodings.xml diff --git a/.gitignore b/.gitignore index 71b513cc..57e69122 100644 --- a/.gitignore +++ b/.gitignore @@ -137,6 +137,22 @@ $RECYCLE.BIN/ #MicroStream Datastore default directory /storage/ -#IntelliJ -.idea -*.iml \ No newline at end of file +# == IntelliJ == +*.iml +*.ipr + +# Some files are user/installation independent and are used for configuring the IDE +# See also https://stackoverflow.com/a/35279076 + +.idea/* +!.idea/saveactions_settings.xml +!.idea/checkstyle-idea.xml + +!.idea/inspectionProfiles/ +.idea/inspectionProfiles/* +!.idea/inspectionProfiles/Project_Default.xml + +!.idea/codeStyles/ +.idea/codeStyles/* +!.idea/codeStyles/codeStyleConfig.xml +!.idea/codeStyles/Project.xml \ No newline at end of file diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml new file mode 100644 index 00000000..82ed5ccb --- /dev/null +++ b/.idea/checkstyle-idea.xml @@ -0,0 +1,20 @@ + + + + 10.0 + JavaOnlyWithTests + true + true + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..4e973754 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,92 @@ + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..6a1691d5 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml new file mode 100644 index 00000000..71a42c42 --- /dev/null +++ b/.idea/saveactions_settings.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/core/.idea/.gitignore b/core/.idea/.gitignore new file mode 100644 index 00000000..0a8642fa --- /dev/null +++ b/core/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Zeppelin ignored files +/ZeppelinRemoteNotebooks/ diff --git a/core/.idea/checkstyle-idea.xml b/core/.idea/checkstyle-idea.xml new file mode 100644 index 00000000..7b1556f5 --- /dev/null +++ b/core/.idea/checkstyle-idea.xml @@ -0,0 +1,16 @@ + + + + 10.3 + JavaOnly + true + + + \ No newline at end of file diff --git a/core/.idea/encodings.xml b/core/.idea/encodings.xml new file mode 100644 index 00000000..15970925 --- /dev/null +++ b/core/.idea/encodings.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file From ec54a36b43ff5091ae669d168f6bf361fca05fbb Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 15:16:22 +0100 Subject: [PATCH 189/306] Code formatting with new IntelliJ settings --- ...nosticMigrationEmbeddedStorageManager.java | 51 +++++---- .../VersionAgnosticMigrationManager.java | 16 +-- .../migrater/AbstractMigrater.java | 108 +++++++++--------- .../migrater/ExplicitMigrater.java | 12 +- .../migrater/MicroMigrater.java | 11 +- .../VersionAlreadyRegisteredException.java | 16 +-- .../AbstractScriptExecutionNotification.java | 20 ++-- ...cutionNotificationWithScriptReference.java | 26 ++--- ...ionNotificationWithoutScriptReference.java | 6 +- .../ReflectiveVersionMigrationScript.java | 8 +- .../scripts/SimpleMigrationScript.java | 4 +- .../scripts/SimpleTypedMigrationScript.java | 17 ++- .../VersionAgnosticMigrationScript.java | 4 +- .../version/VersionedAndKeeperOfHistory.java | 4 +- .../version/VersionedObjectWithHistory.java | 8 +- .../micromigration/version/VersionedRoot.java | 23 ++-- .../version/VersionedRootWithHistory.java | 8 +- .../ReflectiveVersionMigrationScriptTest.java | 3 +- .../version/MigrationVersionTest.java | 25 ++-- .../examples/explicit/MainExplicit.java | 8 +- .../explicit/scripts/UpdateToV1_0.java | 10 +- .../explicit/scripts/UpdateToV1_1.java | 10 +- .../notification/MainNotification.java | 10 +- ...alWithMigrationEmbeddedStorageManager.java | 12 +- .../practical/embedded/UpdateToV1_0.java | 14 +-- .../practical/embedded/UpdateToV2_0.java | 8 +- .../MainPracticalWithMigrationManager.java | 18 +-- .../migrationManager/UpdateToV1_0.java | 16 +-- .../migrationManager/UpdateToV2_0.java | 10 +- .../examples/reflective/MainReflective.java | 10 +- .../reflective/scripts/UpdateToV1_0.java | 10 +- .../reflective/scripts/UpdateToV1_1.java | 10 +- .../microstream/MigrationEmbeddedStorage.java | 12 +- .../microstream/MigrationManager.java | 22 ++-- .../TunnelingEmbeddedStorageManager.java | 6 +- ...oduceMigrationOnExistingDatastoreTest.java | 10 +- .../integration/MigrationHistoryTest.java | 9 +- .../MigrationScriptAfterScriptTest.java | 39 ++++--- .../integration/MultipleScriptsTest.java | 9 +- ...oreStuffInMigrationStorageManagerTest.java | 15 +-- .../migrater/ExplicitMigraterTest.java | 9 +- .../microstream/MigrationEmbeddedStorage.java | 6 +- .../microstream/MigrationManager.java | 6 +- .../TunnelingEmbeddedStorageManager.java | 6 +- ...oduceMigrationOnExistingDatastoreTest.java | 15 +-- .../MigrationScriptAfterScriptTest.java | 19 +-- .../integration/MultipleScriptsTest.java | 9 +- ...oreStuffInMigrationStorageManagerTest.java | 13 ++- .../migrater/ExplicitMigraterTest.java | 9 +- .../microstream/MigrationEmbeddedStorage.java | 16 +-- .../microstream/MigrationManager.java | 22 ++-- .../TunnelingEmbeddedStorageManager.java | 6 +- ...oduceMigrationOnExistingDatastoreTest.java | 15 +-- .../MigrationScriptAfterScriptTest.java | 19 +-- .../integration/MultipleScriptsTest.java | 9 +- ...oreStuffInMigrationStorageManagerTest.java | 13 ++- .../migrater/ExplicitMigraterTest.java | 9 +- .../migrater/ReflectiveMigrater.java | 59 +++++----- .../migrater/ReflectiveMigraterTest.java | 15 +-- .../NoCorrectConstructorScript.java | 8 +- 60 files changed, 476 insertions(+), 445 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index cae1aa7f..a129f49d 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream.versionagnostic; +import java.util.List; +import java.util.Objects; + import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; import software.xdev.micromigration.version.MigrationVersion; @@ -7,9 +10,6 @@ import software.xdev.micromigration.version.VersionedRoot; import software.xdev.micromigration.version.VersionedRootWithHistory; -import java.util.List; -import java.util.Objects; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. @@ -30,21 +30,21 @@ public abstract class VersionAgnosticMigrationEmbeddedStorageManager implements AutoCloseable { - private final MicroMigrater migrater ; - private VersionedRootWithHistory versionRoot ; - - private VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; - + private final MicroMigrater migrater; + private VersionedRootWithHistory versionRoot; + + private final VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; + /** - * @param tunnelingManager which will be used as the underlying storage manager. - * Almost all methods are only rerouted to this native manager. - * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted - * and a {@link Versioned} is placed between the requests. - * @param migrater which is used as source for the migration scripts + * @param tunnelingManager which will be used as the underlying storage manager. Almost all methods are only + * rerouted to this native manager. Only {@link #start()}, {@link #root()} and + * {@link #setRoot(Object)} are intercepted and a {@link Versioned} is placed between the + * requests. + * @param migrater which is used as source for the migration scripts */ public VersionAgnosticMigrationEmbeddedStorageManager( - VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager, - MicroMigrater migrater + final VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager, + final MicroMigrater migrater ) { this.tunnelingManager = Objects.requireNonNull(tunnelingManager); @@ -79,12 +79,12 @@ public T start() { //Build VersionedRootWithHistory around actual root, set by user. this.versionRoot = new VersionedRootWithHistory(this.tunnelingManager.root()); - this.tunnelingManager.setRoot(versionRoot); + this.tunnelingManager.setRoot(this.versionRoot); this.tunnelingManager.storeRoot(); } new VersionAgnosticMigrationManager( this.versionRoot, - migrater, + this.migrater, this ) .migrate(this.versionRoot.getRoot()); @@ -105,20 +105,23 @@ public MigrationVersion getCurrentVersion() public Object root() { return this.versionRoot.getRoot(); } - + /** * @return the actual root object */ - public List getMigrationHistory() { + public List getMigrationHistory() + { return this.versionRoot.getMigrationHistory(); } - + /** * Sets the actual root element (not the versioned root) + * * @param newRoot to set * @return the set object */ - public Object setRoot(Object newRoot) { + public Object setRoot(final Object newRoot) + { this.versionRoot.setRoot(newRoot); return newRoot; } @@ -131,13 +134,15 @@ public long storeRoot() { this.tunnelingManager.store(this.versionRoot); return this.tunnelingManager.store(this.versionRoot.getRoot()); } - + /** * Stores the objectToStore + * * @param objectToStore which is stored * @return what EmbeddedStorageManager#store returns */ - public long store(Object objectToStore) { + public long store(final Object objectToStore) + { return this.tunnelingManager.store(objectToStore); } diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index 9ce94495..54cc8c65 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -1,5 +1,9 @@ package software.xdev.micromigration.microstream.versionagnostic; +import java.util.Objects; +import java.util.function.Consumer; +import java.util.function.Supplier; + import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; @@ -7,10 +11,6 @@ import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedAndKeeperOfHistory; -import java.util.Objects; -import java.util.function.Consumer; -import java.util.function.Supplier; - /** * Manages a given object and keeps the version for it. @@ -121,9 +121,9 @@ public class VersionAgnosticMigrationManager * Migrates the given object to the newest possible version, defined by the {@link MicroMigrater}. * @param objectToMigrate is given to the {@link MicroMigrater} for migrating upon */ - public void migrate(Object objectToMigrate) + public void migrate(final Object objectToMigrate) { - final MigrationVersion versionBeforeUpdate = currentVersionGetter.get(); + final MigrationVersion versionBeforeUpdate = this.currentVersionGetter.get(); // Execute Updates final MigrationVersion versionAfterUpdate = this.migrater.migrateToNewest( versionBeforeUpdate, @@ -133,8 +133,8 @@ public void migrate(Object objectToMigrate) //Update stored version, if needed if(!versionAfterUpdate.equals(versionBeforeUpdate)) { - currentVersionSetter.accept(versionAfterUpdate); - currentVersionStorer.accept(versionAfterUpdate); + this.currentVersionSetter.accept(versionAfterUpdate); + this.currentVersionStorer.accept(versionAfterUpdate); } } } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 2595e603..0721da17 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -1,11 +1,5 @@ package software.xdev.micromigration.migrater; -import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; -import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; -import software.xdev.micromigration.scripts.Context; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; -import software.xdev.micromigration.version.MigrationVersion; - import java.time.Clock; import java.time.LocalDateTime; import java.util.ArrayList; @@ -14,79 +8,86 @@ import java.util.TreeSet; import java.util.function.Consumer; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + /** - * Provides the basic functionality to apply {@link VersionAgnosticMigrationScript}s to - * a datastore. + * Provides the basic functionality to apply {@link VersionAgnosticMigrationScript}s to a datastore. * * @author Johannes Rabauer */ public abstract class AbstractMigrater implements MicroMigrater -{ - private List> notificationConsumers = new ArrayList<>(); +{ + private final List> notificationConsumers = + new ArrayList<>(); private Clock clock = Clock.systemDefaultZone(); - - - public void registerNotificationConsumer(Consumer notificationConsumer) + + @Override + public void registerNotificationConsumer(final Consumer notificationConsumer) { this.notificationConsumers.add(notificationConsumer); } @Override - public > MigrationVersion migrateToNewest( - MigrationVersion fromVersion , - E storageManager, - Object root + public > MigrationVersion migrateToNewest( + final MigrationVersion fromVersion, + final E storageManager, + final Object root ) { Objects.requireNonNull(fromVersion); Objects.requireNonNull(storageManager); - TreeSet> sortedScripts = getSortedScripts(); + final TreeSet> sortedScripts = this.getSortedScripts(); if(sortedScripts.size() > 0) { - return migrateToVersion( - fromVersion , - getSortedScripts().last().getTargetVersion(), - storageManager , + return this.migrateToVersion( + fromVersion, + this.getSortedScripts().last().getTargetVersion(), + storageManager, root ); } return fromVersion; } - + @SuppressWarnings("unchecked") @Override - public > MigrationVersion migrateToVersion - ( - MigrationVersion fromVersion , - MigrationVersion targetVersion , - E storageManager , - Object objectToMigrate - ) + public > MigrationVersion migrateToVersion + ( + final MigrationVersion fromVersion, + final MigrationVersion targetVersion, + final E storageManager, + final Object objectToMigrate + ) { Objects.requireNonNull(fromVersion); Objects.requireNonNull(targetVersion); Objects.requireNonNull(storageManager); MigrationVersion updateVersionWhichWasExecuted = fromVersion; - for (VersionAgnosticMigrationScript script : this.getSortedScripts()) + for(final VersionAgnosticMigrationScript script : this.getSortedScripts()) { - VersionAgnosticMigrationScript castedScript = (VersionAgnosticMigrationScript)script; + final VersionAgnosticMigrationScript castedScript = (VersionAgnosticMigrationScript)script; if(MigrationVersion.COMPARATOR.compare(fromVersion, script.getTargetVersion()) < 0) { if(MigrationVersion.COMPARATOR.compare(script.getTargetVersion(), targetVersion) <= 0) { LocalDateTime startDate = null; - MigrationVersion versionBeforeUpdate = updateVersionWhichWasExecuted; + final MigrationVersion versionBeforeUpdate = updateVersionWhichWasExecuted; if(!this.notificationConsumers.isEmpty()) { startDate = LocalDateTime.now(this.clock); } - updateVersionWhichWasExecuted = migrateWithScript(castedScript, storageManager, objectToMigrate); + updateVersionWhichWasExecuted = + this.migrateWithScript(castedScript, storageManager, objectToMigrate); if(!this.notificationConsumers.isEmpty()) { - ScriptExecutionNotificationWithScriptReference scriptNotification = + final ScriptExecutionNotificationWithScriptReference scriptNotification = new ScriptExecutionNotificationWithScriptReference( script, versionBeforeUpdate, @@ -104,12 +105,12 @@ public > Migration @SuppressWarnings("unchecked") private > MigrationVersion migrateWithScript( - VersionAgnosticMigrationScript script , - E storageManager , - Object objectToMigrate + final VersionAgnosticMigrationScript script, + final E storageManager, + final Object objectToMigrate ) { - T castedObjectToMigrate = (T) objectToMigrate; + final T castedObjectToMigrate = (T)objectToMigrate; script.migrate(new Context<>(castedObjectToMigrate, storageManager)); return script.getTargetVersion(); } @@ -117,33 +118,38 @@ private > Migrat /** * Checks if the given {@link VersionAgnosticMigrationScript} is not already registered in the * {@link #getSortedScripts()}. - * @throws VersionAlreadyRegisteredException if script is already registered. + * * @param scriptToCheck It's target version is checked, if it is not already registered. + * @throws VersionAlreadyRegisteredException if script is already registered. */ - protected void checkIfVersionIsAlreadyRegistered(VersionAgnosticMigrationScript scriptToCheck) + protected void checkIfVersionIsAlreadyRegistered(final VersionAgnosticMigrationScript scriptToCheck) { - //Check if same version is not already registered - for (VersionAgnosticMigrationScript alreadyRegisteredScript : this.getSortedScripts()) + // Check if same version is not already registered + for(final VersionAgnosticMigrationScript alreadyRegisteredScript : this.getSortedScripts()) { - if(MigrationVersion.COMPARATOR.compare(alreadyRegisteredScript.getTargetVersion(), scriptToCheck.getTargetVersion()) == 0) + if(MigrationVersion.COMPARATOR.compare( + alreadyRegisteredScript.getTargetVersion(), + scriptToCheck.getTargetVersion()) == 0) { - //Two scripts with the same version are not allowed to get registered. + // Two scripts with the same version are not allowed to get registered. throw new VersionAlreadyRegisteredException( - alreadyRegisteredScript.getTargetVersion(), - alreadyRegisteredScript, - scriptToCheck + alreadyRegisteredScript.getTargetVersion(), + alreadyRegisteredScript, + scriptToCheck ); } } } - + /** * Change used clock for notifications from {@link #registerNotificationConsumer(Consumer)}. + * * @param clock is used when a - * {@link software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference} is created + * {@link software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference} + * is created * @return self */ - public AbstractMigrater withClock(Clock clock) + public AbstractMigrater withClock(final Clock clock) { this.clock = clock; return this; diff --git a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java index b5ccdec5..bdc95d37 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java @@ -1,16 +1,16 @@ package software.xdev.micromigration.migrater; +import java.util.TreeSet; + import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; -import java.util.TreeSet; /** * Contains all the available scripts to migrate the datastore to a certain version. *

* This class needs explicit scripts which are then included in the migration process. - * + * * @author Johannes Rabauer - * */ public class ExplicitMigrater extends AbstractMigrater { @@ -22,11 +22,11 @@ public class ExplicitMigrater extends AbstractMigrater * Versions of the scripts must be unique. That means that no version is allowed multiple times in the migrater. * @throws VersionAlreadyRegisteredException if two scripts have the same version */ - public ExplicitMigrater(VersionAgnosticMigrationScript...scripts) throws VersionAlreadyRegisteredException + public ExplicitMigrater(final VersionAgnosticMigrationScript...scripts) throws VersionAlreadyRegisteredException { - for (VersionAgnosticMigrationScript script : scripts) + for (final VersionAgnosticMigrationScript script : scripts) { - checkIfVersionIsAlreadyRegistered(script); + this.checkIfVersionIsAlreadyRegistered(script); this.sortedScripts.add(script); } } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index 8159e1dd..cbdb282b 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,14 +1,14 @@ package software.xdev.micromigration.migrater; +import java.util.TreeSet; +import java.util.function.Consumer; + import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.notification.ScriptExecutionNotificationWithScriptReference; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.util.TreeSet; -import java.util.function.Consumer; - /** * Executes all the available scripts to migrate the datastore to a certain version. @@ -85,11 +85,12 @@ > MigrationVersion E storageManager , Object objectToMigrate ); - + /** * Registers a callback to take action when a script is executed. + * * @param notificationConsumer is executed when a script is used from this migrater. */ - public void registerNotificationConsumer( + void registerNotificationConsumer( Consumer notificationConsumer); } diff --git a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index 3901ccae..df83e904 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.migrater; +import java.util.Objects; + import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Objects; - /** * Exception that should be used if two scripts with the same version exist. @@ -35,9 +35,9 @@ public class VersionAlreadyRegisteredException extends Error * which should be registered as well */ public VersionAlreadyRegisteredException( - MigrationVersion alreadyRegisteredVersion, - VersionAgnosticMigrationScript alreadyRegisteredScript , - VersionAgnosticMigrationScript newScriptToRegister + final MigrationVersion alreadyRegisteredVersion, + final VersionAgnosticMigrationScript alreadyRegisteredScript, + final VersionAgnosticMigrationScript newScriptToRegister ) { super("Version " + alreadyRegisteredVersion.toString() + " is already registered. Versions must be unique within the migrater."); @@ -51,7 +51,7 @@ public VersionAlreadyRegisteredException( */ public MigrationVersion getAlreadyRegisteredVersion() { - return alreadyRegisteredVersion; + return this.alreadyRegisteredVersion; } /** @@ -59,7 +59,7 @@ public MigrationVersion getAlreadyRegisteredVersion() */ public VersionAgnosticMigrationScript getAlreadyRegisteredScript() { - return alreadyRegisteredScript; + return this.alreadyRegisteredScript; } /** @@ -68,6 +68,6 @@ public VersionAgnosticMigrationScript getAlreadyRegisteredScript() */ public VersionAgnosticMigrationScript getNewScriptToRegister() { - return newScriptToRegister; + return this.newScriptToRegister; } } diff --git a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java index c26a7f4d..9275b80e 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java +++ b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.notification; +import java.time.LocalDateTime; + import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.MigrationVersion; -import java.time.LocalDateTime; - /** * Contains data about the execution of a script by a {@link MicroMigrater}. @@ -25,10 +25,10 @@ public abstract class AbstractScriptExecutionNotification * @param endDate time when the script has finished */ public AbstractScriptExecutionNotification( - MigrationVersion sourceVersion , - MigrationVersion targetVersion , - LocalDateTime startDate , - LocalDateTime endDate + final MigrationVersion sourceVersion , + final MigrationVersion targetVersion , + final LocalDateTime startDate , + final LocalDateTime endDate ) { super(); @@ -43,7 +43,7 @@ public AbstractScriptExecutionNotification( */ public MigrationVersion getSourceVersion() { - return sourceVersion; + return this.sourceVersion; } /** @@ -51,7 +51,7 @@ public MigrationVersion getSourceVersion() */ public MigrationVersion getTargetVersion() { - return targetVersion; + return this.targetVersion; } /** @@ -59,7 +59,7 @@ public MigrationVersion getTargetVersion() */ public LocalDateTime getStartDate() { - return startDate; + return this.startDate; } /** @@ -67,6 +67,6 @@ public LocalDateTime getStartDate() */ public LocalDateTime getEndDate() { - return endDate; + return this.endDate; } } diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java index cb21885f..e4490a94 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.notification; +import java.time.LocalDateTime; + import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.time.LocalDateTime; - /** * Contains data about the execution of a script by a {@link MicroMigrater}. * @@ -14,20 +14,20 @@ public class ScriptExecutionNotificationWithScriptReference extends AbstractScriptExecutionNotification { private final VersionAgnosticMigrationScript executedScript; - + /** * @param executedScript script that was executed - * @param sourceVersion original version of the object before executing the script - * @param targetVersion version of the object after executing the script - * @param startDate time when the script was started - * @param endDate time when the script has finished + * @param sourceVersion original version of the object before executing the script + * @param targetVersion version of the object after executing the script + * @param startDate time when the script was started + * @param endDate time when the script has finished */ public ScriptExecutionNotificationWithScriptReference( - VersionAgnosticMigrationScript executedScript, - MigrationVersion sourceVersion , - MigrationVersion targetVersion , - LocalDateTime startDate , - LocalDateTime endDate + final VersionAgnosticMigrationScript executedScript, + final MigrationVersion sourceVersion, + final MigrationVersion targetVersion, + final LocalDateTime startDate, + final LocalDateTime endDate ) { super( @@ -44,7 +44,7 @@ public ScriptExecutionNotificationWithScriptReference( */ public VersionAgnosticMigrationScript getExecutedScript() { - return executedScript; + return this.executedScript; } } diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java index 4f599b39..c0cd327b 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java @@ -18,7 +18,7 @@ public class ScriptExecutionNotificationWithoutScriptReference extends AbstractScriptExecutionNotification { private final String executedScriptName; - + /** * @param originalNotification where the reference to the script is deleted and the class name is extracted. */ @@ -26,8 +26,8 @@ public ScriptExecutionNotificationWithoutScriptReference(final ScriptExecutionNo { super( originalNotification.getSourceVersion(), - originalNotification.getTargetVersion(), - originalNotification.getStartDate() , + originalNotification.getTargetVersion(), + originalNotification.getStartDate(), originalNotification.getEndDate() ); this.executedScriptName = originalNotification.getExecutedScript().getClass().getSimpleName(); diff --git a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java index edf1253c..2e5e3896 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.scripts; +import java.util.ArrayList; + import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; -import java.util.ArrayList; - /** * Script which creates the target version of the script through the class name. @@ -42,7 +42,7 @@ public abstract class ReflectiveVersionMigrationScript> implements VersionAgnosticMigrationScript +public class SimpleTypedMigrationScript> + implements VersionAgnosticMigrationScript { private final MigrationVersion version ; private final Consumer> consumer; @@ -41,7 +40,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { this.consumer.accept(context); } diff --git a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java index 16e63753..d5f92dd2 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java @@ -1,10 +1,10 @@ package software.xdev.micromigration.scripts; +import java.util.Comparator; + import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Comparator; - /** * Interface for scripts to migrate / update datastores. diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java index a1d4b68b..77b2a7f2 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java @@ -1,9 +1,9 @@ package software.xdev.micromigration.version; -import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; - import java.util.List; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; + /** * Interface used by the MigrationManagers for easier versioning of objects diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java index c981bd92..9cd5326f 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.version; -import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; - import java.util.ArrayList; import java.util.List; import java.util.Objects; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; + /** * This class is inserted as the root of the MicroStream datastore and contains only the @@ -21,14 +21,14 @@ public class VersionedObjectWithHistory extends VersionedObject implements Versi /** * @param actualRoot which is stored in the datastore and defined by the user */ - public VersionedObjectWithHistory(Object actualRoot) + public VersionedObjectWithHistory(final Object actualRoot) { super(actualRoot); this.migrationHistory = new ArrayList<>(); } @Override - public void addExecutedScript(ScriptExecutionNotificationWithoutScriptReference executedScriptInformation) + public void addExecutedScript(final ScriptExecutionNotificationWithoutScriptReference executedScriptInformation) { this.migrationHistory.add(Objects.requireNonNull(executedScriptInformation)); } diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java index a0eee3f7..475390e3 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java @@ -3,28 +3,27 @@ import java.util.Objects; /** - * This class is inserted as the root of the MicroStream datastore and contains only the - * current version and the actual root object. - * + * This class is inserted as the root of the MicroStream datastore and contains only the current version and the actual + * root object. + * * @author Johannes Rabauer - * */ -public class VersionedRoot implements Versioned +public class VersionedRoot implements Versioned { private MigrationVersion currentVersion; - private Object actualRoot ; - + private Object actualRoot; + /** * @param actualRoot which is stored in the datastore and defined by the user */ - public VersionedRoot(Object actualRoot) + public VersionedRoot(final Object actualRoot) { - this.actualRoot = actualRoot ; + this.actualRoot = actualRoot; this.currentVersion = new MigrationVersion(0); } @Override - public void setVersion(MigrationVersion version) + public void setVersion(final MigrationVersion version) { Objects.requireNonNull(version); this.currentVersion = version; @@ -35,11 +34,11 @@ public MigrationVersion getVersion() { return this.currentVersion; } - + /** * @param actualRoot which is stored in the datastore and defined by the user */ - public void setRoot(Object actualRoot) + public void setRoot(final Object actualRoot) { this.actualRoot = actualRoot; } diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java index ac4476b0..881afeb9 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java @@ -1,11 +1,11 @@ package software.xdev.micromigration.version; -import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; - import java.util.ArrayList; import java.util.List; import java.util.Objects; +import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; + /** * This class is inserted as the root of the MicroStream datastore and contains only the @@ -21,14 +21,14 @@ public class VersionedRootWithHistory extends VersionedRoot implements Versioned /** * @param actualRoot which is stored in the datastore and defined by the user */ - public VersionedRootWithHistory(Object actualRoot) + public VersionedRootWithHistory(final Object actualRoot) { super(actualRoot); this.migrationHistory = new ArrayList<>(); } @Override - public void addExecutedScript(ScriptExecutionNotificationWithoutScriptReference executedScriptInformation) + public void addExecutedScript(final ScriptExecutionNotificationWithoutScriptReference executedScriptInformation) { this.migrationHistory.add(Objects.requireNonNull(executedScriptInformation)); } diff --git a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index b63f3645..f3b4fa42 100644 --- a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; + import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; @@ -126,7 +127,7 @@ void testInvalildName_v___InvalidClassName() public static class ReflectiveVersionMigrationScriptDummy extends ReflectiveVersionMigrationScript> { @Override - public void migrate(Context> context) { + public void migrate(final Context> context) { //Dummy } } diff --git a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java index a4c502ef..5fb02857 100644 --- a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java +++ b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java @@ -3,45 +3,44 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import org.junit.jupiter.api.Test; -import software.xdev.micromigration.version.MigrationVersion; class MigrationVersionTest { - + @Test - void testToString_v1() + void testToString_v1() { - MigrationVersion version = new MigrationVersion(1); + final MigrationVersion version = new MigrationVersion(1); assertEquals("v1", version.toString()); } @Test - void testToString_v11() + void testToString_v11() { - MigrationVersion version = new MigrationVersion(1,1); + final MigrationVersion version = new MigrationVersion(1, 1); assertEquals("v1.1", version.toString()); } @Test - void testToString_v111() + void testToString_v111() { - MigrationVersion version = new MigrationVersion(1,1,1); + final MigrationVersion version = new MigrationVersion(1, 1, 1); assertEquals("v1.1.1", version.toString()); } @Test - void testToString_v0() + void testToString_v0() { - MigrationVersion version = new MigrationVersion(0); + final MigrationVersion version = new MigrationVersion(0); assertEquals("v0", version.toString()); } @Test - void testToString_vNull() + void testToString_vNull() { - MigrationVersion version = new MigrationVersion(); + final MigrationVersion version = new MigrationVersion(); assertEquals("v0", version.toString()); } - + } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 1a6df553..94dd8572 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.examples.explicit; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; @@ -7,9 +10,6 @@ import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.migrater.ExplicitMigrater; -import java.util.Date; -import java.util.logging.Logger; - /** * The most basic usage of micro migration. @@ -21,7 +21,7 @@ */ public class MainExplicit { - public static void main(String[] args) + public static void main(final String[] args) { final ExplicitMigrater migrater = new ExplicitMigrater( new UpdateToV1_0(), diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 1d18cda5..984730c9 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.examples.explicit.scripts; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Date; -import java.util.logging.Logger; - public class UpdateToV1_0 implements MigrationScript { @@ -18,9 +18,9 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { - Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + this.getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 4ae8bc03..6f9b20f3 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.examples.explicit.scripts; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Date; -import java.util.logging.Logger; - public class UpdateToV1_1 implements MigrationScript { @@ -18,9 +18,9 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { - Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + this.getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index c6fe3bd6..fdec4ccb 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -1,14 +1,14 @@ package software.xdev.micromigration.examples.notification; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Date; -import java.util.logging.Logger; - /** * Shows the basic registration of migration notifications @@ -18,7 +18,7 @@ */ public class MainNotification { - public static void main(String[] args) + public static void main(final String[] args) { final ExplicitMigrater migrater = new ExplicitMigrater( new MainNotification.UpdateToV1_0() @@ -46,7 +46,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 8f1d9ca3..815bcaed 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -1,12 +1,12 @@ package software.xdev.micromigration.examples.practical.embedded; +import java.util.logging.Logger; + import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; -import java.util.logging.Logger; - /** * A practical example of usage in a few steps: @@ -22,11 +22,11 @@ */ public class MainPracticalWithMigrationEmbeddedStorageManager { - public static void main(String[] args) + public static void main(final String[] args) { //V0.0 final ExplicitMigrater emptyMigrater = new ExplicitMigrater(); - try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(emptyMigrater)) + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(emptyMigrater)) { storageManager.setRoot(BusinessBranch.createDummyBranch()); storageManager.storeRoot(); @@ -36,7 +36,7 @@ public static void main(String[] args) //V1.0 final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); - try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV1)) + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV1)) { Logger.getGlobal().info(storageManager.root().toString()); } @@ -47,7 +47,7 @@ public static void main(String[] args) new UpdateToV1_0(), new UpdateToV2_0() ); - try(MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV2)) + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV2)) { Logger.getGlobal().info(storageManager.root().toString()); } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index 4f0b6e50..6b24a5b4 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.practical.embedded; +import java.util.logging.Logger; + import software.xdev.micromigration.examples.practical.v1AndHigher.Address; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; @@ -8,8 +10,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.logging.Logger; - public class UpdateToV1_0 implements MigrationScript { @@ -20,15 +20,15 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { Logger.getGlobal().info("Executing Script for v1.0..."); - software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = context.getMigratingObject(); - BusinessBranch newBranch = + final software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = context.getMigratingObject(); + final BusinessBranch newBranch = new BusinessBranch(); - for (software.xdev.micromigration.examples.practical.v0.Customer oldCustomer : oldBranch.customers) + for (final software.xdev.micromigration.examples.practical.v0.Customer oldCustomer : oldBranch.customers) { - Customer newCustomer = + final Customer newCustomer = new Customer(); newCustomer.name = oldCustomer.name; newCustomer.address = new Address(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index 45475550..90db78a2 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.practical.embedded; +import java.util.logging.Logger; + import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; @@ -7,8 +9,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.logging.Logger; - public class UpdateToV2_0 implements MigrationScript { @@ -19,11 +19,11 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { Logger.getGlobal().info("Executing Script for v2.0..."); final BusinessBranch branch = context.getMigratingObject(); - Customer newCustomer = new Customer(); + final Customer newCustomer = new Customer(); newCustomer.name = "Stevie Nicks"; newCustomer.address.number = 5; newCustomer.address.street = "Fleetwood Street"; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index d1341190..5ede2eca 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.practical.migrationManager; +import java.util.logging.Logger; + import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; @@ -7,8 +9,6 @@ import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.version.VersionedObject; -import java.util.logging.Logger; - /** * A practical example of usage in a few steps: @@ -28,12 +28,12 @@ public class MainPracticalWithMigrationManager * Suppressed Warning "unchecked" because it is given, that the correct object is returned. */ @SuppressWarnings("unchecked") - public static void main(String[] args) + public static void main(final String[] args) { //V0.0 - try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { - VersionedObject versionedBranch = new VersionedObject<>(BusinessBranch.createDummyBranch()); + final VersionedObject versionedBranch = new VersionedObject<>(BusinessBranch.createDummyBranch()); storageManager.setRoot(versionedBranch); storageManager.storeRoot(); Logger.getGlobal().info(storageManager.root().toString()); @@ -41,10 +41,10 @@ public static void main(String[] args) //V1.0 - try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); - VersionedObject versionedBranch = (VersionedObject)storageManager.root(); + final VersionedObject versionedBranch = (VersionedObject)storageManager.root(); new MigrationManager(versionedBranch, migraterWithV1, storageManager) .migrate(versionedBranch); Logger.getGlobal().info(storageManager.root().toString()); @@ -52,10 +52,10 @@ public static void main(String[] args) //V2.0 - try(EmbeddedStorageManager storageManager = EmbeddedStorage.start()) + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { final ExplicitMigrater migraterWithV2 = new ExplicitMigrater(new UpdateToV1_0(), new UpdateToV2_0()); - VersionedObject versionedBranch = (VersionedObject)storageManager.root(); + final VersionedObject versionedBranch = (VersionedObject)storageManager.root(); new MigrationManager(versionedBranch, migraterWithV2, storageManager) .migrate(versionedBranch); Logger.getGlobal().info(storageManager.root().toString()); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index ac9ae492..265d54f4 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.practical.migrationManager; +import java.util.logging.Logger; + import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; @@ -9,8 +11,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -import java.util.logging.Logger; - public class UpdateToV1_0 implements MigrationScript> { @@ -21,17 +21,17 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context, MigrationEmbeddedStorageManager> context) + public void migrate(final Context, MigrationEmbeddedStorageManager> context) { Logger.getGlobal().info("Executing Script for v1.0..."); - VersionedObject versionedBranch = context.getMigratingObject(); - BusinessBranch oldBranch = + final VersionedObject versionedBranch = context.getMigratingObject(); + final BusinessBranch oldBranch = (BusinessBranch) versionedBranch.getObject(); - software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch newBranch = + final software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch newBranch = new software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch(); - for (Customer oldCustomer : oldBranch.customers) + for (final Customer oldCustomer : oldBranch.customers) { - software.xdev.micromigration.examples.practical.v1AndHigher.Customer newCustomer = + final software.xdev.micromigration.examples.practical.v1AndHigher.Customer newCustomer = new software.xdev.micromigration.examples.practical.v1AndHigher.Customer(); newCustomer.name = oldCustomer.name; newCustomer.address = new Address(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 55a63b40..9f46884b 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -1,5 +1,7 @@ package software.xdev.micromigration.examples.practical.migrationManager; +import java.util.logging.Logger; + import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; @@ -8,8 +10,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; -import java.util.logging.Logger; - public class UpdateToV2_0 implements MigrationScript> { @@ -20,12 +20,12 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context, MigrationEmbeddedStorageManager> context) + public void migrate(final Context, MigrationEmbeddedStorageManager> context) { Logger.getGlobal().info("Executing Script for v2.0..."); - VersionedObject versionedBranch = context.getMigratingObject(); + final VersionedObject versionedBranch = context.getMigratingObject(); final BusinessBranch branch = versionedBranch.getObject(); - Customer newCustomer = new Customer(); + final Customer newCustomer = new Customer(); newCustomer.name = "Stevie Nicks"; newCustomer.address.number = 5; newCustomer.address.street = "Fleetwood Street"; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index 4174234e..4b766ded 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.examples.reflective; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ReflectiveMigrater; import software.xdev.micromigration.migrater.ScriptInstantiationException; -import java.util.Date; -import java.util.logging.Logger; - /** * Shows the usage of the {@link ReflectiveMigrater}. Very simple. @@ -16,7 +16,7 @@ */ public class MainReflective { - public static void main(String[] args) + public static void main(final String[] args) { try { final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.examples.reflective.scripts"); @@ -29,7 +29,7 @@ public static void main(String[] args) storageManager.storeRoot(); storageManager.shutdown(); } - catch (IllegalArgumentException | SecurityException | ScriptInstantiationException e) + catch (final IllegalArgumentException | SecurityException | ScriptInstantiationException e) { throw new Error("Could not initiate migration script", e); } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 5872137d..0ffc05c6 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.examples.reflective.scripts; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Date; -import java.util.logging.Logger; - public class UpdateToV1_0 implements MigrationScript { @@ -18,9 +18,9 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { - Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + this.getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.0"); } } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index f6456bd8..a6f7cd95 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -1,13 +1,13 @@ package software.xdev.micromigration.examples.reflective.scripts; +import java.util.Date; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.Date; -import java.util.logging.Logger; - public class UpdateToV1_1 implements MigrationScript { @@ -18,9 +18,9 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { - Logger.getGlobal().info("Update " + getTargetVersion().toString() + " executed."); + Logger.getGlobal().info("Update " + this.getTargetVersion().toString() + " executed."); context.getStorageManager().setRoot("Hello World! @ " + new Date() + " Update 1.1"); } } diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 6eb8cf13..6fd7d636 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -3,12 +3,12 @@ import java.nio.file.Path; import java.util.Objects; -import software.xdev.micromigration.migrater.MicroMigrater; import one.microstream.afs.nio.types.NioFileSystem; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import one.microstream.storage.types.Storage; import one.microstream.storage.types.StorageConfiguration; +import software.xdev.micromigration.migrater.MicroMigrater; /** @@ -29,7 +29,7 @@ public class MigrationEmbeddedStorage * @param migrater which is used as source for the migration scripts * @return the created storage manager with the given migrater */ - public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) + public static final MigrationEmbeddedStorageManager start(final MicroMigrater migrater) { Objects.requireNonNull(migrater); return new MigrationEmbeddedStorageManager( @@ -50,8 +50,8 @@ public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater */ @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start( - Path storageDirectory, - MicroMigrater migrater + final Path storageDirectory, + final MicroMigrater migrater ) { Objects.requireNonNull(migrater); @@ -63,9 +63,9 @@ public static final MigrationEmbeddedStorageManager start( ).start(); } - private static EmbeddedStorageManager createStorageManager(Path storageDirectory) + private static EmbeddedStorageManager createStorageManager(final Path storageDirectory) { - NioFileSystem fileSystem = NioFileSystem.New(); + final NioFileSystem fileSystem = NioFileSystem.New(); return EmbeddedStorageFoundation.New() .setConfiguration( StorageConfiguration.Builder() diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 5967cf58..8365e4a6 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.util.function.Consumer; +import java.util.function.Supplier; + import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; @@ -7,9 +10,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import java.util.function.Consumer; -import java.util.function.Supplier; - /** * Specific implementation of the {@link VersionAgnosticMigrationManager} for one @@ -29,11 +29,11 @@ public class MigrationManager extends VersionAgnosticMigrationManager currentVersionGetter, - Consumer currentVersionSetter, - Consumer currentVersionStorer, - MicroMigrater migrater, - EmbeddedStorageManager storageManager + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater, + final EmbeddedStorageManager storageManager ) { super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); @@ -48,9 +48,9 @@ public MigrationManager( * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. */ public MigrationManager( - Versioned versionedObject, - MicroMigrater migrater , - EmbeddedStorageManager storageManager + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager ) { super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 53c2c1a7..7f1c8713 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.util.Objects; +import java.util.function.Predicate; + import one.microstream.afs.types.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; @@ -22,9 +25,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; -import java.util.Objects; -import java.util.function.Predicate; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 96515851..3496c2ee 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -5,17 +5,17 @@ import java.io.IOException; import java.nio.file.Path; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.migrater.ExplicitMigrater; -import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; -import software.xdev.micromigration.version.MigrationVersion; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; class IntroduceMigrationOnExistingDatastoreTest diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java index e7376d77..49828d09 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java @@ -1,7 +1,12 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -9,10 +14,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class MigrationHistoryTest { diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index e714a112..7bdf97d7 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,10 +1,18 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationManager; @@ -15,17 +23,10 @@ import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedObject; -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.atomic.AtomicBoolean; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - class MigrationScriptAfterScriptTest { @Test - void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException { //First run without any migration script final ExplicitMigrater firstMigrater = new ExplicitMigrater(); @@ -65,7 +66,7 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem } @Test - void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException + void testMigrationWithScriptExecutionNotification(@TempDir final Path storageFolder) throws IOException { final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( new MigrationVersion(1), @@ -89,12 +90,12 @@ void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) t } @Test - void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir final Path storageFolder) throws IOException { //First run without any migration script - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { - VersionedObject firstRoot = new VersionedObject<>(0); + final VersionedObject firstRoot = new VersionedObject<>(0); storageManager.setRoot(firstRoot); storageManager.storeRoot(); assertEquals(Integer.valueOf(0), firstRoot.getObject()); @@ -107,7 +108,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( (Versioned) storageManager.root(), @@ -116,7 +117,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ) .migrate(storageManager.root()); @SuppressWarnings("unchecked") - VersionedObject currentRoot = (VersionedObject)storageManager.root(); + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(1), currentRoot.getObject()); assertEquals(new MigrationVersion(1), currentRoot.getVersion()); } @@ -127,7 +128,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( (Versioned) storageManager.root(), @@ -136,13 +137,13 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ) .migrate(storageManager.root()); @SuppressWarnings("unchecked") - VersionedObject currentRoot = (VersionedObject)storageManager.root(); + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(2), currentRoot.getObject()); assertEquals(new MigrationVersion(2), currentRoot.getVersion()); } } - private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(final Path storageFolder) { return EmbeddedStorage.start(storageFolder); } diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 115ba3bb..86cf6701 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,8 +1,13 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -11,10 +16,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class MultipleScriptsTest { diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index f7f3c9f2..75606f96 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,7 +1,14 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -9,12 +16,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.io.IOException; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - class StoreStuffInMigrationStorageManagerTest { @@ -29,7 +30,7 @@ private static class ChildClass } @Test - void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException + void testStoringSomethingAfterUpdating(@TempDir final Path storageFolder) throws IOException { final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( new MigrationVersion(1), diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index be6360c3..5bf03c79 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,18 +1,19 @@ package software.xdev.micromigration.migrater; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class ExplicitMigraterTest { diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index dcc90d16..c6774487 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.nio.file.Path; +import java.util.Objects; + import one.microstream.afs.nio.types.NioFileSystem; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -7,9 +10,6 @@ import one.microstream.storage.types.StorageConfiguration; import software.xdev.micromigration.migrater.MicroMigrater; -import java.nio.file.Path; -import java.util.Objects; - /** * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 5967cf58..87632fd6 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.util.function.Consumer; +import java.util.function.Supplier; + import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; @@ -7,9 +10,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import java.util.function.Consumer; -import java.util.function.Supplier; - /** * Specific implementation of the {@link VersionAgnosticMigrationManager} for one diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 53c2c1a7..7f1c8713 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.util.Objects; +import java.util.function.Predicate; + import one.microstream.afs.types.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; @@ -22,9 +25,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; -import java.util.Objects; -import java.util.function.Predicate; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index ebd46b8b..9645dba8 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,20 +1,21 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; -import java.io.IOException; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class IntroduceMigrationOnExistingDatastoreTest { diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index e714a112..ac83ff22 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,10 +1,18 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationManager; @@ -15,13 +23,6 @@ import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedObject; -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.atomic.AtomicBoolean; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - class MigrationScriptAfterScriptTest { @Test diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 0c431fbe..469eddef 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,8 +1,13 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -11,10 +16,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class MultipleScriptsTest { diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index f7f3c9f2..7bec51bb 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,7 +1,14 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -9,12 +16,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.io.IOException; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - class StoreStuffInMigrationStorageManagerTest { diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index be6360c3..5bf03c79 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,18 +1,19 @@ package software.xdev.micromigration.migrater; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class ExplicitMigraterTest { diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index dcc90d16..8d0ca1dd 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.nio.file.Path; +import java.util.Objects; + import one.microstream.afs.nio.types.NioFileSystem; import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; import one.microstream.storage.embedded.types.EmbeddedStorageManager; @@ -7,9 +10,6 @@ import one.microstream.storage.types.StorageConfiguration; import software.xdev.micromigration.migrater.MicroMigrater; -import java.nio.file.Path; -import java.util.Objects; - /** * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for @@ -29,7 +29,7 @@ public class MigrationEmbeddedStorage * @param migrater which is used as source for the migration scripts * @return the created storage manager with the given migrater */ - public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater) + public static final MigrationEmbeddedStorageManager start(final MicroMigrater migrater) { Objects.requireNonNull(migrater); return new MigrationEmbeddedStorageManager( @@ -50,8 +50,8 @@ public static final MigrationEmbeddedStorageManager start(MicroMigrater migrater */ @SuppressWarnings("resource") public static final MigrationEmbeddedStorageManager start( - Path storageDirectory, - MicroMigrater migrater + final Path storageDirectory, + final MicroMigrater migrater ) { Objects.requireNonNull(migrater); @@ -63,9 +63,9 @@ public static final MigrationEmbeddedStorageManager start( ).start(); } - private static EmbeddedStorageManager createStorageManager(Path storageDirectory) + private static EmbeddedStorageManager createStorageManager(final Path storageDirectory) { - NioFileSystem fileSystem = NioFileSystem.New(); + final NioFileSystem fileSystem = NioFileSystem.New(); return EmbeddedStorageFoundation.New() .setConfiguration( StorageConfiguration.Builder() diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 5967cf58..8365e4a6 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.util.function.Consumer; +import java.util.function.Supplier; + import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; import software.xdev.micromigration.migrater.MicroMigrater; @@ -7,9 +10,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; -import java.util.function.Consumer; -import java.util.function.Supplier; - /** * Specific implementation of the {@link VersionAgnosticMigrationManager} for one @@ -29,11 +29,11 @@ public class MigrationManager extends VersionAgnosticMigrationManager currentVersionGetter, - Consumer currentVersionSetter, - Consumer currentVersionStorer, - MicroMigrater migrater, - EmbeddedStorageManager storageManager + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater, + final EmbeddedStorageManager storageManager ) { super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); @@ -48,9 +48,9 @@ public MigrationManager( * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. */ public MigrationManager( - Versioned versionedObject, - MicroMigrater migrater , - EmbeddedStorageManager storageManager + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager ) { super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 53c2c1a7..7f1c8713 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,5 +1,8 @@ package software.xdev.micromigration.microstream; +import java.util.Objects; +import java.util.function.Predicate; + import one.microstream.afs.types.AFile; import one.microstream.collections.types.XGettingEnum; import one.microstream.persistence.binary.types.Binary; @@ -22,9 +25,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; -import java.util.Objects; -import java.util.function.Predicate; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index ebd46b8b..9645dba8 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,20 +1,21 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; -import java.io.IOException; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class IntroduceMigrationOnExistingDatastoreTest { diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index e714a112..ac83ff22 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,10 +1,18 @@ package software.xdev.micromigration.integration; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicBoolean; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationManager; @@ -15,13 +23,6 @@ import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedObject; -import java.io.IOException; -import java.nio.file.Path; -import java.util.concurrent.atomic.AtomicBoolean; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - class MigrationScriptAfterScriptTest { @Test diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 0c431fbe..469eddef 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,8 +1,13 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -11,10 +16,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class MultipleScriptsTest { diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index f7f3c9f2..7bec51bb 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,7 +1,14 @@ package software.xdev.micromigration.integration; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; @@ -9,12 +16,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; -import java.io.IOException; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - class StoreStuffInMigrationStorageManagerTest { diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index be6360c3..5bf03c79 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,18 +1,19 @@ package software.xdev.micromigration.migrater; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; -import java.nio.file.Path; - -import static org.junit.jupiter.api.Assertions.assertEquals; - class ExplicitMigraterTest { diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java index 7e2d818c..b7e4dc59 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java @@ -1,72 +1,77 @@ package software.xdev.micromigration.migrater; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Modifier; +import java.util.TreeSet; + import org.reflections.Reflections; import org.reflections.scanners.Scanners; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.reflections.util.FilterBuilder; -import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Modifier; -import java.util.TreeSet; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; /** * Contains all the available scripts to migrate the datastore to a certain version. *

* Searches all implementation of {@link VersionAgnosticMigrationScript} in the specified package * and it's the sub packages. - * + * * @author Johannes Rabauer - * + * */ public class ReflectiveMigrater extends AbstractMigrater { - private final TreeSet> sortedScripts = new TreeSet<>( + private final TreeSet> sortedScripts = new TreeSet<>( VersionAgnosticMigrationScript.COMPARATOR); /** - * @param packagePath defines the package in which {@link VersionAgnosticMigrationScript}s will be searched. - * Also searches through all sub packages of packagePath + * @param packagePath defines the package in which {@link VersionAgnosticMigrationScript}s will be searched. Also + * searches through all sub packages of packagePath * @throws ScriptInstantiationException if a class in the given package could not be instantiated */ @SuppressWarnings("rawtypes") - public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationException + public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationException { - Reflections reflections = new Reflections( + final Reflections reflections = new Reflections( new ConfigurationBuilder() .setUrls(ClasspathHelper.forPackage(packagePath)) .setScanners(Scanners.SubTypes) - //I don't get why you have to filter again, but if you don't, super-packages will get included + // I don't get why you have to filter again, but if you don't, super-packages will get included .filterInputsBy(new FilterBuilder().includePackage(packagePath)) ); - for (Class scriptClass : reflections.getSubTypesOf( + for(final Class scriptClass : reflections.getSubTypesOf( VersionAgnosticMigrationScript.class)) { - //Only instanciate non abstract classes + // Only instanciate non abstract classes if(!Modifier.isAbstract(scriptClass.getModifiers())) { - VersionAgnosticMigrationScript instanciatedScript = instanciateClass(scriptClass); - checkIfVersionIsAlreadyRegistered(instanciatedScript); + final VersionAgnosticMigrationScript instanciatedScript = this.instanciateClass(scriptClass); + this.checkIfVersionIsAlreadyRegistered(instanciatedScript); this.sortedScripts.add(instanciatedScript); } } } - + @SuppressWarnings("rawtypes") - private VersionAgnosticMigrationScript instanciateClass(Class scriptClass) throws ScriptInstantiationException + private VersionAgnosticMigrationScript instanciateClass(final Class scriptClass) + throws ScriptInstantiationException { - try { + try + { return scriptClass.getDeclaredConstructor().newInstance(); - } catch ( - InstantiationException | - IllegalAccessException | - IllegalArgumentException | - InvocationTargetException | - NoSuchMethodException | - SecurityException e - ) { + } + catch( + final InstantiationException | + IllegalAccessException | + IllegalArgumentException | + InvocationTargetException | + NoSuchMethodException | + SecurityException e + ) + { throw new ScriptInstantiationException("Could not instanciate class " + scriptClass.getName(), e); } } diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java b/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java index 306a1439..18c3a3f4 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; + import software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass.v1_ValidScript; import software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage.ValidScriptInSubpackage; import software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid.ValidScript; @@ -13,7 +14,7 @@ class ReflectiveMigraterTest { @Test void testValidScript() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.valid"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.valid"); assertEquals(1, migrater.getSortedScripts().size()); assertEquals( software.xdev.micromigration.migrater.scripts.valid.ValidScript.class, @@ -23,7 +24,7 @@ void testValidScript() throws ScriptInstantiationException { @Test void testValidScriptWithIrrelevantClasses() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid"); assertEquals(1, migrater.getSortedScripts().size()); assertEquals( ValidScript.class, @@ -33,7 +34,7 @@ void testValidScriptWithIrrelevantClasses() throws ScriptInstantiationException @Test void testValidScriptWithSubpackages() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.includeSubPackages"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.includeSubPackages"); assertEquals(2, migrater.getSortedScripts().size()); assertEquals( software.xdev.micromigration.migrater.scripts.includeSubPackages.ValidScript.class, @@ -47,7 +48,7 @@ void testValidScriptWithSubpackages() throws ScriptInstantiationException { @Test void testPackageWithNoScript() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.packageNotExisting"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.packageNotExisting"); assertEquals(0, migrater.getSortedScripts().size()); } @@ -74,7 +75,7 @@ void testNoCorrectConstructor() throws ScriptInstantiationException { @Test void testAbstractSuperClass() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.abstractSuperClass"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.abstractSuperClass"); assertEquals(1, migrater.getSortedScripts().size()); assertEquals( software.xdev.micromigration.migrater.scripts.abstractSuperClass.ValidScript.class, @@ -84,7 +85,7 @@ void testAbstractSuperClass() throws ScriptInstantiationException { @Test void testReflectiveVersion() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.reflectiveVersion"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.reflectiveVersion"); assertEquals(1, migrater.getSortedScripts().size()); assertEquals( software.xdev.micromigration.migrater.scripts.reflectiveVersion.v1_ValidScript.class, @@ -94,7 +95,7 @@ void testReflectiveVersion() throws ScriptInstantiationException { @Test void testReflectiveSuperClass() throws ScriptInstantiationException { - ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass"); + final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass"); assertEquals(1, migrater.getSortedScripts().size()); assertEquals( v1_ValidScript.class, diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java index 7a06c307..c5c7f19e 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -1,18 +1,18 @@ package software.xdev.micromigration.migrater.scripts.noCorrectConstructor; +import java.util.logging.Logger; + import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; -import java.util.logging.Logger; - public class NoCorrectConstructorScript implements software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { private final String argument; - public NoCorrectConstructorScript(String argument) + public NoCorrectConstructorScript(final String argument) { this.argument = argument; } @@ -24,7 +24,7 @@ public MigrationVersion getTargetVersion() } @Override - public void migrate(Context context) + public void migrate(final Context context) { Logger.getGlobal().info(this.argument); } From a060c47147c55b370a564bcb8011c0311f982f9d Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 15:37:05 +0100 Subject: [PATCH 190/306] Delete codeql.yml --- .github/workflows/codeql.yml | 76 ------------------------------------ 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 index 70a157d5..00000000 --- a/.github/workflows/codeql.yml +++ /dev/null @@ -1,76 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - push: - branches: [ "develop", main ] - pull_request: - # The branches below must be a subset of the branches above - branches: [ "develop" ] - schedule: - - cron: '27 16 * * 6' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'java' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Use only 'java' to analyze code written in Java, Kotlin or both - # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - - # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v2 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun - - # If the Autobuild fails above, remove it and uncomment the following three lines. - # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. - - # - run: | - # echo "Run, Build Application using script" - # ./location_of_script_within_repo/buildscript.sh - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - with: - category: "/language:${{matrix.language}}" From b6103ba525416b3b320de4d60f4be5f6ca3f9aa1 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Tue, 17 Jan 2023 15:39:36 +0100 Subject: [PATCH 191/306] Added Licenses in Files --- ...nosticMigrationEmbeddedStorageManager.java | 15 +++++++++ .../VersionAgnosticMigrationManager.java | 15 +++++++++ ...nosticTunnelingEmbeddedStorageManager.java | 15 +++++++++ .../migrater/AbstractMigrater.java | 15 +++++++++ .../migrater/ExplicitMigrater.java | 15 +++++++++ .../migrater/MicroMigrater.java | 15 +++++++++ .../VersionAlreadyRegisteredException.java | 15 +++++++++ .../AbstractScriptExecutionNotification.java | 15 +++++++++ ...cutionNotificationWithScriptReference.java | 15 +++++++++ ...ionNotificationWithoutScriptReference.java | 15 +++++++++ .../xdev/micromigration/scripts/Context.java | 15 +++++++++ .../ReflectiveVersionMigrationScript.java | 15 +++++++++ .../scripts/SimpleMigrationScript.java | 15 +++++++++ .../scripts/SimpleTypedMigrationScript.java | 15 +++++++++ .../VersionAgnosticMigrationScript.java | 15 +++++++++ .../version/MigrationVersion.java | 15 +++++++++ .../micromigration/version/Versioned.java | 15 +++++++++ .../version/VersionedAndKeeperOfHistory.java | 15 +++++++++ .../version/VersionedObject.java | 15 +++++++++ .../version/VersionedObjectWithHistory.java | 15 +++++++++ .../micromigration/version/VersionedRoot.java | 15 +++++++++ .../version/VersionedRootWithHistory.java | 15 +++++++++ .../ReflectiveVersionMigrationScriptTest.java | 15 +++++++++ .../version/MigrationVersionTest.java | 15 +++++++++ .../examples/explicit/MainExplicit.java | 15 +++++++++ .../explicit/scripts/UpdateToV1_0.java | 15 +++++++++ .../explicit/scripts/UpdateToV1_1.java | 15 +++++++++ .../notification/MainNotification.java | 15 +++++++++ ...alWithMigrationEmbeddedStorageManager.java | 15 +++++++++ .../practical/embedded/UpdateToV1_0.java | 15 +++++++++ .../practical/embedded/UpdateToV2_0.java | 15 +++++++++ .../MainPracticalWithMigrationManager.java | 15 +++++++++ .../migrationManager/UpdateToV1_0.java | 15 +++++++++ .../migrationManager/UpdateToV2_0.java | 15 +++++++++ .../examples/practical/v0/BusinessBranch.java | 15 +++++++++ .../examples/practical/v0/Customer.java | 15 +++++++++ .../practical/v1AndHigher/Address.java | 15 +++++++++ .../practical/v1AndHigher/BusinessBranch.java | 15 +++++++++ .../practical/v1AndHigher/Customer.java | 15 +++++++++ .../examples/reflective/MainReflective.java | 15 +++++++++ .../reflective/scripts/UpdateToV1_0.java | 15 +++++++++ .../reflective/scripts/UpdateToV1_1.java | 15 +++++++++ .../microstream/MigrationEmbeddedStorage.java | 15 +++++++++ .../MigrationEmbeddedStorageManager.java | 15 +++++++++ .../microstream/MigrationManager.java | 15 +++++++++ .../microstream/MigrationScript.java | 15 +++++++++ .../TunnelingEmbeddedStorageManager.java | 15 +++++++++ .../microstream/package-info.java | 15 +++++++++ ...oduceMigrationOnExistingDatastoreTest.java | 15 +++++++++ .../integration/MigrationHistoryTest.java | 15 +++++++++ .../MigrationScriptAfterScriptTest.java | 15 +++++++++ .../integration/MultipleScriptsTest.java | 15 +++++++++ ...oreStuffInMigrationStorageManagerTest.java | 15 +++++++++ .../migrater/ExplicitMigraterTest.java | 15 +++++++++ .../testUtil/MicroMigrationScriptDummy.java | 15 +++++++++ .../microstream/MigrationEmbeddedStorage.java | 15 +++++++++ .../MigrationEmbeddedStorageManager.java | 15 +++++++++ .../microstream/MigrationManager.java | 15 +++++++++ .../microstream/MigrationScript.java | 15 +++++++++ .../TunnelingEmbeddedStorageManager.java | 15 +++++++++ .../microstream/package-info.java | 15 +++++++++ ...oduceMigrationOnExistingDatastoreTest.java | 15 +++++++++ .../MigrationScriptAfterScriptTest.java | 15 +++++++++ .../integration/MultipleScriptsTest.java | 15 +++++++++ ...oreStuffInMigrationStorageManagerTest.java | 15 +++++++++ .../migrater/ExplicitMigraterTest.java | 15 +++++++++ .../testUtil/MicroMigrationScriptDummy.java | 15 +++++++++ .../microstream/MigrationEmbeddedStorage.java | 15 +++++++++ .../MigrationEmbeddedStorageManager.java | 15 +++++++++ .../microstream/MigrationManager.java | 15 +++++++++ .../microstream/MigrationScript.java | 15 +++++++++ .../TunnelingEmbeddedStorageManager.java | 15 +++++++++ .../microstream/package-info.java | 15 +++++++++ ...oduceMigrationOnExistingDatastoreTest.java | 15 +++++++++ .../MigrationScriptAfterScriptTest.java | 15 +++++++++ .../integration/MultipleScriptsTest.java | 15 +++++++++ ...oreStuffInMigrationStorageManagerTest.java | 15 +++++++++ .../migrater/ExplicitMigraterTest.java | 15 +++++++++ .../testUtil/MicroMigrationScriptDummy.java | 15 +++++++++ pom.xml | 31 +++++++++++++++++++ .../migrater/ReflectiveMigrater.java | 15 +++++++++ .../ScriptInstantiationException.java | 15 +++++++++ .../migrater/ReflectiveMigraterTest.java | 15 +++++++++ .../AbstractScript.java | 15 +++++++++ .../v1_ValidScript.java | 15 +++++++++ .../abstractSuperClass/AbstractScript.java | 15 +++++++++ .../abstractSuperClass/ValidScript.java | 15 +++++++++ .../errorThrowing/ErrorThrowingScript.java | 15 +++++++++ .../ExceptionThrowingScript.java | 15 +++++++++ .../includeSubPackages/ValidScript.java | 15 +++++++++ .../subpackage/ValidScriptInSubpackage.java | 15 +++++++++ .../IrrelevantClass.java | 15 +++++++++ .../ValidScript.java | 15 +++++++++ .../NoCorrectConstructorScript.java | 15 +++++++++ .../reflectiveVersion/v1_ValidScript.java | 15 +++++++++ .../migrater/scripts/valid/ValidScript.java | 15 +++++++++ 96 files changed, 1456 insertions(+) diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index a129f49d..c02220ae 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream.versionagnostic; import java.util.List; diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index 54cc8c65..aed00af8 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream.versionagnostic; import java.util.Objects; diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java index a36fe1e9..204dfb9d 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream.versionagnostic; /** diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 0721da17..39ba2871 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import java.time.Clock; diff --git a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java index bdc95d37..a0dc8438 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import java.util.TreeSet; diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index cbdb282b..dd81a069 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import java.util.TreeSet; diff --git a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index df83e904..981b2d9f 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import java.util.Objects; diff --git a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java index 9275b80e..9167caad 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java +++ b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.notification; import java.time.LocalDateTime; diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java index e4490a94..e89837e2 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.notification; import java.time.LocalDateTime; diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java index c0cd327b..28982861 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.notification; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/Context.java b/core/src/main/java/software/xdev/micromigration/scripts/Context.java index 49fcfa72..d3a1ae2e 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/Context.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/Context.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.scripts; /** diff --git a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java index 2e5e3896..4c77161a 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.scripts; import java.util.ArrayList; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java index c4a2e8cd..da34941c 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.scripts; import java.util.function.Consumer; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java index 0e9de96b..7ddc77b3 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.scripts; import java.util.Objects; diff --git a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java index d5f92dd2..da7bfb9e 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.scripts; import java.util.Comparator; diff --git a/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java index a6389adf..2793dad9 100644 --- a/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java +++ b/core/src/main/java/software/xdev/micromigration/version/MigrationVersion.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import java.util.Arrays; diff --git a/core/src/main/java/software/xdev/micromigration/version/Versioned.java b/core/src/main/java/software/xdev/micromigration/version/Versioned.java index fa098cee..3e5de7f0 100644 --- a/core/src/main/java/software/xdev/micromigration/version/Versioned.java +++ b/core/src/main/java/software/xdev/micromigration/version/Versioned.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; /** diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java index 77b2a7f2..41801c82 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import java.util.List; diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java index 777ac016..28e837b7 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedObject.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import java.util.Objects; diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java index 9cd5326f..a7b31551 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import java.util.ArrayList; diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java index 475390e3..511ef0ed 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRoot.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import java.util.Objects; diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java index 881afeb9..9df87fd9 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import java.util.ArrayList; diff --git a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java index f3b4fa42..52156a1a 100644 --- a/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java +++ b/core/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.scripts; import org.junit.jupiter.api.Assertions; diff --git a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java index 5fb02857..4ecc1efc 100644 --- a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java +++ b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.version; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 94dd8572..a25c6a30 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.explicit; import java.util.Date; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 984730c9..f45dcbd3 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.explicit.scripts; import java.util.Date; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 6f9b20f3..ce92361f 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.explicit.scripts; import java.util.Date; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index fdec4ccb..f69eb206 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.notification; import java.util.Date; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 815bcaed..3ee5ae99 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.embedded; import java.util.logging.Logger; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index 6b24a5b4..89522bd4 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.embedded; import java.util.logging.Logger; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index 90db78a2..881c1f15 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.embedded; import java.util.logging.Logger; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index 5ede2eca..b400c7d1 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.migrationManager; import java.util.logging.Logger; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index 265d54f4..261053db 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.migrationManager; import java.util.logging.Logger; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 9f46884b..7ceef0a5 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.migrationManager; import java.util.logging.Logger; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java index 8b23e7d0..4c373864 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.v0; import java.util.ArrayList; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java index 7aba0cc2..e4eb6e35 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.v0; public class Customer diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java index 9494accd..8902c9d1 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.v1AndHigher; public class Address diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java index 1937d38d..5f5827c6 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.v1AndHigher; import java.util.ArrayList; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java index b8b7e601..995cf025 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.practical.v1AndHigher; public class Customer diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index 4b766ded..d79cc65c 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.reflective; import java.util.Date; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 0ffc05c6..c979ac1f 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.reflective.scripts; import java.util.Date; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index a6f7cd95..dd755b04 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.examples.reflective.scripts; import java.util.Date; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 6fd7d636..90befea1 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.nio.file.Path; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index fff5347a..9dd783e1 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import one.microstream.storage.embedded.types.EmbeddedStorageManager; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 8365e4a6..f767f2f6 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.util.function.Consumer; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index bb8029f8..eee3c4be 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 7f1c8713..7a1989ed 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.util.Objects; diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java index f152f602..a8d10999 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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. + */ /** * Provides classes to use micro migration for MicroStream v5 */ diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 3496c2ee..de65428e 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java index 49828d09..60e0093d 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index 7bdf97d7..d5b6a8ad 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 86cf6701..d0f3d20c 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 75606f96..954a35e8 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 5bf03c79..155fc92b 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 1f6b8d9a..53e15c3a 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.testUtil; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index c6774487..bee3536a 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.nio.file.Path; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index fff5347a..9dd783e1 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import one.microstream.storage.embedded.types.EmbeddedStorageManager; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 87632fd6..8ff3c6b6 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.util.function.Consumer; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index bb8029f8..eee3c4be 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 7f1c8713..7a1989ed 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.util.Objects; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java index e6ed3bad..a246d186 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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. + */ /** * Provides classes to use micro migration for MicroStream v6 */ diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 9645dba8..ef7d33b0 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index ac83ff22..5c9c99cd 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 469eddef..76ead5d1 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 7bec51bb..c641e870 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 5bf03c79..155fc92b 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 1f6b8d9a..53e15c3a 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.testUtil; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 8d0ca1dd..b455afb8 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.nio.file.Path; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index fff5347a..9dd783e1 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import one.microstream.storage.embedded.types.EmbeddedStorageManager; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 8365e4a6..f767f2f6 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.util.function.Consumer; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index bb8029f8..eee3c4be 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import software.xdev.micromigration.scripts.Context; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 7f1c8713..7a1989ed 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; import java.util.Objects; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java index 0d326173..82c7e384 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/package-info.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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. + */ /** * Provides classes to use micro migration for MicroStream v7 */ diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index 9645dba8..ef7d33b0 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index ac83ff22..5c9c99cd 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 469eddef..76ead5d1 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 7bec51bb..c641e870 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 5bf03c79..155fc92b 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 1f6b8d9a..53e15c3a 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.testUtil; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/pom.xml b/pom.xml index ef91ec0a..ed4b119f 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,7 @@ Multimodule project for Micro Migration pom + 2021 https://github.com/xdev-software/micro-migration @@ -286,6 +287,36 @@ org.apache.maven.plugins maven-resources-plugin + + + + com.mycila + license-maven-plugin + 4.1 + + + ${project.organization.url} + + + +

com/mycila/maven/plugin/license/templates/APACHE-2.txt
+ + src/main/java/** + src/test/java/** + + + + + + + first + + format + + process-sources + + + diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java index b7e4dc59..1b867130 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import java.lang.reflect.InvocationTargetException; diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java index cf1c2836..779b725f 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ScriptInstantiationException.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; /** diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java b/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java index 18c3a3f4..0554c1e8 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/ReflectiveMigraterTest.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; import static org.junit.jupiter.api.Assertions.assertEquals; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java index 2012fb08..db56b1fc 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/AbstractScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java index 8c6f56ae..412dc4be 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractReflectiveSuperClass/v1_ValidScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.abstractReflectiveSuperClass; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java index eee8c95a..aa45495d 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/AbstractScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.abstractSuperClass; import software.xdev.micromigration.version.MigrationVersion; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java index 3c9c569b..64be92e6 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/abstractSuperClass/ValidScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.abstractSuperClass; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java index f7e4dc2b..b62127b8 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.errorThrowing; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java index 61c3eefd..78898682 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.exceptionThrowing; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java index 0cdd5aa0..7bc2895d 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.includeSubPackages; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java index 9dc57f53..3feef58b 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.includeSubPackages.subpackage; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java index 5c49e7f5..18eb5c58 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/IrrelevantClass.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; public class IrrelevantClass { diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java index a59d6207..fb0a069c 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.moreClassesIncludingValid; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java index c5c7f19e..d87a60ef 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/noCorrectConstructor/NoCorrectConstructorScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.noCorrectConstructor; import java.util.logging.Logger; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java index a905aed3..761f3e5e 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/reflectiveVersion/v1_ValidScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.reflectiveVersion; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; diff --git a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java index e9f5052a..f7135061 100644 --- a/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java +++ b/reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java @@ -1,3 +1,18 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater.scripts.valid; import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; From 4a9e0a8eef86f9e97b4837974f6c56a3b7b1af7b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 18 Jan 2023 13:57:24 +0100 Subject: [PATCH 192/306] Added Modernizer to Plugins --- pom.xml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/pom.xml b/pom.xml index ed4b119f..9cabb9ec 100644 --- a/pom.xml +++ b/pom.xml @@ -147,6 +147,32 @@ + + + + org.gaul + modernizer-maven-plugin + 2.4.0 + + ${java.version} + + + + modernizer + verify + + modernizer + + + + + org.apache.maven.plugins From e5eb44b1a87134204c109c0d25055a097f44cc6a Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 18 Jan 2023 14:08:50 +0100 Subject: [PATCH 193/306] Update pom.xml --- pom.xml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 9cabb9ec..38f88d94 100644 --- a/pom.xml +++ b/pom.xml @@ -148,11 +148,12 @@ - From b02d1a6952cc285c8fa37f439a9b786cd6d17e6a Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 18 Jan 2023 14:25:27 +0100 Subject: [PATCH 194/306] Added impsort-plugin --- ...nosticMigrationEmbeddedStorageManager.java | 1 - .../VersionAgnosticMigrationManager.java | 1 - .../migrater/AbstractMigrater.java | 1 - .../migrater/ExplicitMigrater.java | 1 - .../migrater/MicroMigrater.java | 1 - .../VersionAlreadyRegisteredException.java | 1 - .../AbstractScriptExecutionNotification.java | 1 - ...ionNotificationWithoutScriptReference.java | 1 - .../ReflectiveVersionMigrationScript.java | 1 - .../scripts/SimpleMigrationScript.java | 1 - .../scripts/SimpleTypedMigrationScript.java | 1 - .../VersionAgnosticMigrationScript.java | 1 - .../version/VersionedAndKeeperOfHistory.java | 1 - .../version/VersionedObjectWithHistory.java | 1 - .../version/VersionedRootWithHistory.java | 1 - .../version/MigrationVersionTest.java | 1 - .../examples/explicit/MainExplicit.java | 1 - .../explicit/scripts/UpdateToV1_0.java | 1 - .../explicit/scripts/UpdateToV1_1.java | 1 - .../notification/MainNotification.java | 1 - ...alWithMigrationEmbeddedStorageManager.java | 1 - .../practical/embedded/UpdateToV1_0.java | 1 - .../practical/embedded/UpdateToV2_0.java | 1 - .../MainPracticalWithMigrationManager.java | 1 - .../migrationManager/UpdateToV1_0.java | 1 - .../migrationManager/UpdateToV2_0.java | 1 - .../practical/v1AndHigher/BusinessBranch.java | 1 - .../examples/reflective/MainReflective.java | 1 - .../reflective/scripts/UpdateToV1_0.java | 1 - .../reflective/scripts/UpdateToV1_1.java | 1 - .../microstream/MigrationEmbeddedStorage.java | 1 - .../MigrationEmbeddedStorageManager.java | 1 - .../microstream/MigrationManager.java | 1 - .../microstream/MigrationScript.java | 1 - .../TunnelingEmbeddedStorageManager.java | 1 - ...oduceMigrationOnExistingDatastoreTest.java | 1 - .../integration/MigrationHistoryTest.java | 1 - .../integration/MultipleScriptsTest.java | 1 - ...oreStuffInMigrationStorageManagerTest.java | 1 - .../migrater/ExplicitMigraterTest.java | 1 - .../testUtil/MicroMigrationScriptDummy.java | 1 - .../microstream/MigrationEmbeddedStorage.java | 1 - .../MigrationEmbeddedStorageManager.java | 1 - .../microstream/MigrationManager.java | 1 - .../microstream/MigrationScript.java | 1 - .../TunnelingEmbeddedStorageManager.java | 1 - ...oduceMigrationOnExistingDatastoreTest.java | 1 - .../integration/MultipleScriptsTest.java | 1 - ...oreStuffInMigrationStorageManagerTest.java | 1 - .../migrater/ExplicitMigraterTest.java | 1 - .../testUtil/MicroMigrationScriptDummy.java | 1 - .../microstream/MigrationEmbeddedStorage.java | 1 - .../MigrationEmbeddedStorageManager.java | 1 - .../microstream/MigrationManager.java | 1 - .../microstream/MigrationScript.java | 1 - .../TunnelingEmbeddedStorageManager.java | 1 - ...oduceMigrationOnExistingDatastoreTest.java | 1 - .../integration/MultipleScriptsTest.java | 1 - ...oreStuffInMigrationStorageManagerTest.java | 1 - .../migrater/ExplicitMigraterTest.java | 1 - .../testUtil/MicroMigrationScriptDummy.java | 1 - pom.xml | 22 +++++++++++++++++++ .../migrater/ReflectiveMigraterTest.java | 1 - .../AbstractScript.java | 1 - .../v1_ValidScript.java | 1 - .../abstractSuperClass/AbstractScript.java | 1 - .../abstractSuperClass/ValidScript.java | 1 - .../errorThrowing/ErrorThrowingScript.java | 1 - .../ExceptionThrowingScript.java | 1 - .../includeSubPackages/ValidScript.java | 1 - .../subpackage/ValidScriptInSubpackage.java | 1 - .../ValidScript.java | 1 - .../NoCorrectConstructorScript.java | 1 - .../reflectiveVersion/v1_ValidScript.java | 1 - .../migrater/scripts/valid/ValidScript.java | 1 - 75 files changed, 22 insertions(+), 74 deletions(-) diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index c02220ae..6f0286ae 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.version.VersionedRoot; import software.xdev.micromigration.version.VersionedRootWithHistory; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java index aed00af8..7d3a6143 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationManager.java @@ -26,7 +26,6 @@ import software.xdev.micromigration.version.Versioned; import software.xdev.micromigration.version.VersionedAndKeeperOfHistory; - /** * Manages a given object and keeps the version for it. *

diff --git a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java index 39ba2871..03aea7f9 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java @@ -29,7 +29,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - /** * Provides the basic functionality to apply {@link VersionAgnosticMigrationScript}s to a datastore. * diff --git a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java index a0dc8438..68da7c6b 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java @@ -19,7 +19,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; - /** * Contains all the available scripts to migrate the datastore to a certain version. *

diff --git a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java index dd81a069..41317512 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java @@ -24,7 +24,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - /** * Executes all the available scripts to migrate the datastore to a certain version. * diff --git a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java index 981b2d9f..dc6ffb58 100644 --- a/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java +++ b/core/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - /** * Exception that should be used if two scripts with the same version exist. * @author Johannes Rabauer diff --git a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java index 9167caad..eca18a06 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java +++ b/core/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.MigrationVersion; - /** * Contains data about the execution of a script by a {@link MicroMigrater}. * diff --git a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java index 28982861..6adabac2 100644 --- a/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java +++ b/core/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java @@ -17,7 +17,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; - /** * Same as {@link ScriptExecutionNotificationWithScriptReference} but instead of referencing * the {@link VersionAgnosticMigrationScript} directly, only the name of the script is diff --git a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java index 4c77161a..acc76e0b 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; - /** * Script which creates the target version of the script through the class name. *

diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java index da34941c..c8314589 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; - /** * Provides a simple way to create a migration script with the necessary version * and {@link Consumer}. diff --git a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java index 7ddc77b3..025b4e50 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java @@ -21,7 +21,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; - /** * Provides a simple way to create a migration script with the necessary version and {@link Consumer}. * diff --git a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java index da7bfb9e..a0ede143 100644 --- a/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java +++ b/core/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; import software.xdev.micromigration.version.MigrationVersion; - /** * Interface for scripts to migrate / update datastores. *

diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java index 41801c82..4658cc15 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java @@ -19,7 +19,6 @@ import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; - /** * Interface used by the MigrationManagers for easier versioning of objects * and to keep and read the migration history. diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java index a7b31551..51366cdd 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java @@ -21,7 +21,6 @@ import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; - /** * This class is inserted as the root of the MicroStream datastore and contains only the * current version, the actual root object and the history of executed scripts. diff --git a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java index 9df87fd9..85db37b6 100644 --- a/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java +++ b/core/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java @@ -21,7 +21,6 @@ import software.xdev.micromigration.notification.ScriptExecutionNotificationWithoutScriptReference; - /** * This class is inserted as the root of the MicroStream datastore and contains only the * current version, the actual root object and the history of executed scripts. diff --git a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java index 4ecc1efc..ad3a991b 100644 --- a/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java +++ b/core/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java @@ -19,7 +19,6 @@ import org.junit.jupiter.api.Test; - class MigrationVersionTest { diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index a25c6a30..697e7fab 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.migrater.ExplicitMigrater; - /** * The most basic usage of micro migration. * Here two {@link MigrationScript}s are explicitly registered diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index f45dcbd3..6f8f0b37 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -23,7 +23,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - public class UpdateToV1_0 implements MigrationScript { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index ce92361f..3ef34283 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -23,7 +23,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - public class UpdateToV1_1 implements MigrationScript { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index f69eb206..070e38b8 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -24,7 +24,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - /** * Shows the basic registration of migration notifications * ({@link ScriptExecutionNotification}). diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 3ee5ae99..02d05f61 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -22,7 +22,6 @@ import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; - /** * A practical example of usage in a few steps: *

    diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index 89522bd4..e6dc2460 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - public class UpdateToV1_0 implements MigrationScript { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index 881c1f15..c547e70d 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -24,7 +24,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - public class UpdateToV2_0 implements MigrationScript { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index b400c7d1..babc3f32 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -24,7 +24,6 @@ import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.version.VersionedObject; - /** * A practical example of usage in a few steps: *
      diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index 261053db..b75efb99 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -26,7 +26,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; - public class UpdateToV1_0 implements MigrationScript> { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 7ceef0a5..8a1b737c 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; - public class UpdateToV2_0 implements MigrationScript> { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java index 5f5827c6..27f58e79 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.List; - public class BusinessBranch { public final List customers = new ArrayList<>(); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index d79cc65c..c524c0e9 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -23,7 +23,6 @@ import software.xdev.micromigration.migrater.ReflectiveMigrater; import software.xdev.micromigration.migrater.ScriptInstantiationException; - /** * Shows the usage of the {@link ReflectiveMigrater}. Very simple. * diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index c979ac1f..00e83c95 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -23,7 +23,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - public class UpdateToV1_0 implements MigrationScript { @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index dd755b04..17b9d7d7 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -23,7 +23,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; - public class UpdateToV1_1 implements MigrationScript { @Override diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index 90befea1..2f6d436a 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -25,7 +25,6 @@ import one.microstream.storage.types.StorageConfiguration; import software.xdev.micromigration.migrater.MicroMigrater; - /** * Provides static utility calls to create the {@link software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager} for * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 9dd783e1..02ddae53 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; - /** * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one * specific MicroStream version. diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index f767f2f6..5d45118d 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; - /** * Specific implementation of the {@link VersionAgnosticMigrationManager} for one * specific MicroStream version. diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index eee3c4be..c3962de8 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -18,7 +18,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; - /** * Interface for scripts to migrate / update datastores. *

      diff --git a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 7a1989ed..096f3c4f 100644 --- a/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -40,7 +40,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

      diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index de65428e..29861e68 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -32,7 +32,6 @@ import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; - class IntroduceMigrationOnExistingDatastoreTest { final static String ROOT = "OriginalRoot"; diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java index 60e0093d..139a4c53 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java @@ -29,7 +29,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class MigrationHistoryTest { @Test diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index d0f3d20c..7b95013d 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class MultipleScriptsTest { @Test diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index 954a35e8..77e339e4 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class StoreStuffInMigrationStorageManagerTest { private static class RootClass diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 155fc92b..d2c0f154 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -29,7 +29,6 @@ import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; - class ExplicitMigraterTest { diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 53e15c3a..2d75dff3 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index bee3536a..a6337555 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -25,7 +25,6 @@ import one.microstream.storage.types.StorageConfiguration; import software.xdev.micromigration.migrater.MicroMigrater; - /** * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 9dd783e1..02ddae53 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; - /** * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one * specific MicroStream version. diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index 8ff3c6b6..2ff6d52f 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; - /** * Specific implementation of the {@link VersionAgnosticMigrationManager} for one * specific MicroStream version. diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index eee3c4be..c3962de8 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -18,7 +18,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; - /** * Interface for scripts to migrate / update datastores. *

      diff --git a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 7a1989ed..096f3c4f 100644 --- a/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -40,7 +40,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

      diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index ef7d33b0..00118e9a 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; - class IntroduceMigrationOnExistingDatastoreTest { final static String ROOT = "OriginalRoot"; diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 76ead5d1..57964f38 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class MultipleScriptsTest { @Test diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index c641e870..c519a205 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class StoreStuffInMigrationStorageManagerTest { private static class RootClass diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 155fc92b..d2c0f154 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -29,7 +29,6 @@ import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; - class ExplicitMigraterTest { diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 53e15c3a..2d75dff3 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java index b455afb8..ea59546d 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -25,7 +25,6 @@ import one.microstream.storage.types.StorageConfiguration; import software.xdev.micromigration.migrater.MicroMigrater; - /** * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java index 9dd783e1..02ddae53 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.migrater.MicroMigrater; import software.xdev.micromigration.version.Versioned; - /** * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one * specific MicroStream version. diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java index f767f2f6..5d45118d 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -25,7 +25,6 @@ import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.Versioned; - /** * Specific implementation of the {@link VersionAgnosticMigrationManager} for one * specific MicroStream version. diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java index eee3c4be..c3962de8 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -18,7 +18,6 @@ import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; - /** * Interface for scripts to migrate / update datastores. *

      diff --git a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java index 7a1989ed..096f3c4f 100644 --- a/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java +++ b/microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -40,7 +40,6 @@ import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; import software.xdev.micromigration.version.Versioned; - /** * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. *

      diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java index ef7d33b0..00118e9a 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; - class IntroduceMigrationOnExistingDatastoreTest { final static String ROOT = "OriginalRoot"; diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java index 76ead5d1..57964f38 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class MultipleScriptsTest { @Test diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java index c641e870..c519a205 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -31,7 +31,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - class StoreStuffInMigrationStorageManagerTest { private static class RootClass diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java index 155fc92b..d2c0f154 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -29,7 +29,6 @@ import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; import software.xdev.micromigration.version.MigrationVersion; - class ExplicitMigraterTest { diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java index 53e15c3a..2d75dff3 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -20,7 +20,6 @@ import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; import software.xdev.micromigration.version.MigrationVersion; - public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript { private final MigrationVersion version; diff --git a/pom.xml b/pom.xml index 38f88d94..113caa70 100644 --- a/pom.xml +++ b/pom.xml @@ -148,6 +148,28 @@ + + + net.revelc.code + impsort-maven-plugin + 1.8.0 + + java.,javax.,org.,com. + java,* + + + + sort-imports + + sort + + + + + @@ -289,7 +289,7 @@ com.puppycrawl.tools checkstyle - 8.44 + 10.6.0 @@ -313,7 +313,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.8.0 + 3.10.1 ${java.version} ${java.version} From c88d015446bcd3669013b3661c5303eb1d4bc7a6 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 1 Feb 2023 09:09:50 +0100 Subject: [PATCH 197/306] Add Nexus Snapshot url --- .github/workflows/checkBuild.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 07995846..cd32bc60 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -79,4 +79,5 @@ jobs: JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_SNAPSHOT_URL: https://s01.oss.sonatype.org/content/repositories/snapshots/ run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file From c29afd5a9eb2706667453f64aa9559a5b232319c Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 6 Feb 2023 11:51:49 +0100 Subject: [PATCH 198/306] Added Logo --- README.md | 1 + docs/Logo.png | Bin 0 -> 27055 bytes docs/Logo2.png | Bin 0 -> 28242 bytes 3 files changed, 1 insertion(+) create mode 100644 docs/Logo.png create mode 100644 docs/Logo2.png diff --git a/README.md b/README.md index deb261a1..e04d365c 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) # Micro migration +![Logo](./docs/Logo.png) Tiny java library to migrate MicroStream datastores. Applies migration scripts on the datastores to keep them up to date. diff --git a/docs/Logo.png b/docs/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..199eebdcc6876f470637837c18d8cfd0a6ad43b3 GIT binary patch literal 27055 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 literal 0 HcmV?d00001 diff --git a/docs/Logo2.png b/docs/Logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..b154b331ec1f4a3f3e2f3d84abe4b50730dcc881 GIT binary patch literal 28242 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 literal 0 HcmV?d00001 From 414f582e84199fb9a44b9ff040e7dd2ed13e3302 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 6 Feb 2023 11:54:00 +0100 Subject: [PATCH 199/306] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e04d365c..72c93b0c 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) -# Micro migration -![Logo](./docs/Logo.png) + +#![Logo](./docs/Logo.png) Tiny java library to migrate MicroStream datastores. Applies migration scripts on the datastores to keep them up to date. From 8c2ba3a9fb45b72d04c2b8ddd1760c399411b01e Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 6 Feb 2023 12:04:35 +0100 Subject: [PATCH 200/306] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 72c93b0c..c438c503 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) -#![Logo](./docs/Logo.png) +# XDEV MicroMigration Logo Tiny java library to migrate MicroStream datastores. Applies migration scripts on the datastores to keep them up to date. From db1538e6833bc26cc745c8e6ee4a87253e1ff1a5 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Mon, 6 Feb 2023 12:04:52 +0100 Subject: [PATCH 201/306] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c438c503..d06cc824 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) -# XDEV MicroMigration Logo +# XDEV MicroMigration Logo Tiny java library to migrate MicroStream datastores. Applies migration scripts on the datastores to keep them up to date. From 450cfc82bed0675610427e35b7719a639320d952 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Thu, 9 Feb 2023 16:00:55 +0100 Subject: [PATCH 202/306] Added getNativeStorageManager --- CHANGELOG.md | 3 + ...nosticMigrationEmbeddedStorageManager.java | 13 +++- .../MigrationScriptAfterScriptTest.java | 73 ++++++++++++++----- .../MigrationScriptAfterScriptTest.java | 65 +++++++++++++---- .../MigrationScriptAfterScriptTest.java | 65 +++++++++++++---- 5 files changed, 166 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7701a9c4..770ae365 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.0.8 +* Access to the native embedded manager is now possible in the scripts (see ``VersionAgnosticMigrationEmbeddedStorageManager#getNativeStorageManager``) + ## 0.0.7 * A lot of refactoring of the module structure * A migration history is now available and automatically stored diff --git a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java index 6f0286ae..06c30afb 100644 --- a/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java +++ b/core/src/main/java/software/xdev/micromigration/microstream/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java @@ -46,7 +46,6 @@ public abstract class VersionAgnosticMigrationEmbeddedStorageManager { private final MicroMigrater migrater; private VersionedRootWithHistory versionRoot; - private final VersionAgnosticTunnelingEmbeddedStorageManager tunnelingManager; /** @@ -64,7 +63,15 @@ public VersionAgnosticMigrationEmbeddedStorageManager( this.tunnelingManager = Objects.requireNonNull(tunnelingManager); this.migrater = Objects.requireNonNull(migrater); } - + + /** + * @return the native MicroStream EmbeddedStorageManager + */ + public E getNativeStorageManager() + { + return this.getTunnelingManager().getNativeStorageManager(); + } + /** * @return the used {@link VersionAgnosticTunnelingEmbeddedStorageManager} */ @@ -72,7 +79,7 @@ protected VersionAgnosticTunnelingEmbeddedStorageManager getTunnelingManager( { return this.tunnelingManager; } - + /** * Checks if the root object is of the instance of {@link Versioned}. * If it is not, the root will be replaced with the versioned root and the actual root object diff --git a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index d5b6a8ad..02ee7016 100644 --- a/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -20,12 +20,15 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import one.microstream.persistence.types.Storer; import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; @@ -43,9 +46,11 @@ class MigrationScriptAfterScriptTest @Test void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException { - //First run without any migration script + // First run without any migration script final ExplicitMigrater firstMigrater = new ExplicitMigrater(); - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + firstMigrater)) { migrationStorageManager.setRoot(0); migrationStorageManager.storeRoot(); @@ -53,44 +58,76 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem Assertions.assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); } - - //Run with one migration script - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), + // Run with one migration script + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) - ); + ); final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + secondMigrater)) { assertEquals(1, migrationStorageManager.root()); Assertions.assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); } - - //Run with two migration scripts - final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(2), + // Run with two migration scripts + final VersionAgnosticMigrationScript secondScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(2), (context) -> context.getStorageManager().setRoot(2) - ); + ); final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + thirdMigrater)) { assertEquals(2, migrationStorageManager.root()); Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); } } + @Test + void testMigrationAndUseStorer(@TempDir final Path storageFolder) throws IOException + { + final List firstList = new ArrayList<>(); + // Run with one migration script + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> + { + context.getStorageManager().setRoot(firstList); + firstList.add("1"); + final Storer storer = context.getStorageManager().getNativeStorageManager().createStorer(); + storer.store(firstList); + storer.commit(); + } + ); + + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + migrater)) + { + assertEquals(1, ((List)migrationStorageManager.root()).size()); + } + } + @Test void testMigrationWithScriptExecutionNotification(@TempDir final Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) - ); + ); final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); final AtomicBoolean notificationReceived = new AtomicBoolean(false); migrater.registerNotificationConsumer( - notification -> + notification -> { Assertions.assertEquals(firstScript, notification.getExecutedScript()); Assertions.assertEquals(new MigrationVersion(0), notification.getSourceVersion()); diff --git a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index 5c9c99cd..f67ca778 100644 --- a/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -20,12 +20,15 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import one.microstream.persistence.types.Storer; import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; @@ -41,7 +44,7 @@ class MigrationScriptAfterScriptTest { @Test - void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException { //First run without any migration script final ExplicitMigrater firstMigrater = new ExplicitMigrater(); @@ -69,11 +72,13 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(2), - (context) -> context.getStorageManager().setRoot(2) + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) ); final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + thirdMigrater)) { assertEquals(2, migrationStorageManager.root()); Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); @@ -81,12 +86,40 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem } @Test - void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException + void testMigrationAndUseStorer(@TempDir final Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), + final List firstList = new ArrayList<>(); + // Run with one migration script + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> + { + context.getStorageManager().setRoot(firstList); + firstList.add("1"); + final Storer storer = context.getStorageManager().getNativeStorageManager().createStorer(); + storer.store(firstList); + storer.commit(); + } + ); + + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + migrater)) + { + assertEquals(1, ((List)migrationStorageManager.root()).size()); + } + } + + @Test + void testMigrationWithScriptExecutionNotification(@TempDir final Path storageFolder) throws IOException + { + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) - ); + ); final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); final AtomicBoolean notificationReceived = new AtomicBoolean(false); migrater.registerNotificationConsumer( @@ -105,12 +138,12 @@ void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) t } @Test - void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir final Path storageFolder) throws IOException { //First run without any migration script - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { - VersionedObject firstRoot = new VersionedObject<>(0); + final VersionedObject firstRoot = new VersionedObject<>(0); storageManager.setRoot(firstRoot); storageManager.storeRoot(); assertEquals(Integer.valueOf(0), firstRoot.getObject()); @@ -123,7 +156,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( (Versioned) storageManager.root(), @@ -132,7 +165,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ) .migrate(storageManager.root()); @SuppressWarnings("unchecked") - VersionedObject currentRoot = (VersionedObject)storageManager.root(); + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(1), currentRoot.getObject()); assertEquals(new MigrationVersion(1), currentRoot.getVersion()); } @@ -143,7 +176,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( (Versioned) storageManager.root(), @@ -152,13 +185,13 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ) .migrate(storageManager.root()); @SuppressWarnings("unchecked") - VersionedObject currentRoot = (VersionedObject)storageManager.root(); + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(2), currentRoot.getObject()); assertEquals(new MigrationVersion(2), currentRoot.getVersion()); } } - private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(final Path storageFolder) { return EmbeddedStorage.start(storageFolder); } diff --git a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java index 5c9c99cd..f67ca778 100644 --- a/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java +++ b/microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -20,12 +20,15 @@ import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; +import one.microstream.persistence.types.Storer; import one.microstream.storage.embedded.types.EmbeddedStorage; import one.microstream.storage.embedded.types.EmbeddedStorageManager; import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; @@ -41,7 +44,7 @@ class MigrationScriptAfterScriptTest { @Test - void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException { //First run without any migration script final ExplicitMigrater firstMigrater = new ExplicitMigrater(); @@ -69,11 +72,13 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem //Run with two migration scripts final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(2), - (context) -> context.getStorageManager().setRoot(2) + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) ); final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); - try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, thirdMigrater)) + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + thirdMigrater)) { assertEquals(2, migrationStorageManager.root()); Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); @@ -81,12 +86,40 @@ void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@Tem } @Test - void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) throws IOException + void testMigrationAndUseStorer(@TempDir final Path storageFolder) throws IOException { - final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( - new MigrationVersion(1), + final List firstList = new ArrayList<>(); + // Run with one migration script + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> + { + context.getStorageManager().setRoot(firstList); + firstList.add("1"); + final Storer storer = context.getStorageManager().getNativeStorageManager().createStorer(); + storer.store(firstList); + storer.commit(); + } + ); + + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + migrater)) + { + assertEquals(1, ((List)migrationStorageManager.root()).size()); + } + } + + @Test + void testMigrationWithScriptExecutionNotification(@TempDir final Path storageFolder) throws IOException + { + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), (context) -> context.getStorageManager().setRoot(1) - ); + ); final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); final AtomicBoolean notificationReceived = new AtomicBoolean(false); migrater.registerNotificationConsumer( @@ -105,12 +138,12 @@ void testMigrationWithScriptExecutionNotification(@TempDir Path storageFolder) t } @Test - void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir Path storageFolder) throws IOException + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir final Path storageFolder) throws IOException { //First run without any migration script - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { - VersionedObject firstRoot = new VersionedObject<>(0); + final VersionedObject firstRoot = new VersionedObject<>(0); storageManager.setRoot(firstRoot); storageManager.storeRoot(); assertEquals(Integer.valueOf(0), firstRoot.getObject()); @@ -123,7 +156,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem new MigrationVersion(1), (context) -> context.getMigratingObject().setObject(1) ); - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( (Versioned) storageManager.root(), @@ -132,7 +165,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ) .migrate(storageManager.root()); @SuppressWarnings("unchecked") - VersionedObject currentRoot = (VersionedObject)storageManager.root(); + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(1), currentRoot.getObject()); assertEquals(new MigrationVersion(1), currentRoot.getVersion()); } @@ -143,7 +176,7 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem new MigrationVersion(2), (context) -> context.getMigratingObject().setObject(2) ); - try(final EmbeddedStorageManager storageManager = startEmbeddedStorageManagerWithPath(storageFolder)) + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) { new MigrationManager( (Versioned) storageManager.root(), @@ -152,13 +185,13 @@ void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@Tem ) .migrate(storageManager.root()); @SuppressWarnings("unchecked") - VersionedObject currentRoot = (VersionedObject)storageManager.root(); + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); assertEquals(Integer.valueOf(2), currentRoot.getObject()); assertEquals(new MigrationVersion(2), currentRoot.getVersion()); } } - private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(Path storageFolder) + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(final Path storageFolder) { return EmbeddedStorage.start(storageFolder); } From 38cd1f62c87bc09f67d29d8b241241a8630eb608 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 10 Feb 2023 06:57:03 +0100 Subject: [PATCH 203/306] Update release.yml --- .github/workflows/release.yml | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 96e5823d..33d6d261 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,6 +2,14 @@ name: Publish package to the Maven Central Repository on: push: branches: [ main ] + +env: + PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }} + +permissions: + contents: write + pull-requests: write + jobs: check_build: runs-on: ubuntu-latest @@ -47,14 +55,15 @@ jobs: - name: Create Release id: create_release - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: shogo82148/actions-create-release@v1 with: tag_name: v${{ steps.version.outputs.release }} - name: v${{ steps.version.outputs.release }} - target_commitish: main + release_name: v${{ steps.version.outputs.release }} + commitish: main body: | + ## [Changelog](https://github.com/xdev-software/${{ env.PRIMARY_MAVEN_MODULE }}/blob/develop/CHANGELOG.md#${{ steps.version.outputs.releasenumber }}) + See [Changelog#v${{ steps.version.outputs.release }}](https://github.com/xdev-software/${{ env.PRIMARY_MAVEN_MODULE }}/blob/develop/CHANGELOG.md#${{ steps.version.outputs.releasenumber }}) for more information. + ## Installation Add the following lines to your pom: ```XML @@ -64,8 +73,6 @@ jobs: ${{ steps.version.outputs.release }} ``` - draft: false - prerelease: false publish_central: runs-on: ubuntu-latest needs: [prepare_release] From 06f9a02005ff1d88fb11283ad4189af3bce478d6 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 10 Feb 2023 05:59:02 +0000 Subject: [PATCH 204/306] Release 0.0.8 --- core/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 0cef7405..cc74f068 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-core - 0.0.8-SNAPSHOT + 0.0.8 MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.8-SNAPSHOT + 0.0.8 diff --git a/examples/pom.xml b/examples/pom.xml index 57dad20f..7c76e7d5 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.8-SNAPSHOT + 0.0.8 MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.8-SNAPSHOT + 0.0.8 micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 908393b6..98e84aa6 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.8-SNAPSHOT + 0.0.8 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8-SNAPSHOT + 0.0.8 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index c77ffd87..2efd0089 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.8-SNAPSHOT + 0.0.8 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8-SNAPSHOT + 0.0.8 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 656ea3c7..2e59be32 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.8-SNAPSHOT + 0.0.8 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8-SNAPSHOT + 0.0.8 diff --git a/pom.xml b/pom.xml index f61bd6e2..55dc4675 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.8-SNAPSHOT + 0.0.8 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 25cf2a2c..2739a85e 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.8-SNAPSHOT + 0.0.8 MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8-SNAPSHOT + 0.0.8 From d24c85ab534d894fb14056f92dd4dbd2bc795eab Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Fri, 10 Feb 2023 06:03:12 +0000 Subject: [PATCH 205/306] Preparing for next development iteration --- core/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index cc74f068..fd5026c2 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-core - 0.0.8 + 0.0.9-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.8 + 0.0.9-SNAPSHOT diff --git a/examples/pom.xml b/examples/pom.xml index 7c76e7d5..900476c8 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.8 + 0.0.9-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.8 + 0.0.9-SNAPSHOT micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 98e84aa6..4512bc8c 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.8 + 0.0.9-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8 + 0.0.9-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 2efd0089..d15b1851 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.8 + 0.0.9-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8 + 0.0.9-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 2e59be32..e392b730 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.8 + 0.0.9-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8 + 0.0.9-SNAPSHOT diff --git a/pom.xml b/pom.xml index 55dc4675..e07a6504 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.8 + 0.0.9-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index 2739a85e..d9457a3b 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.8 + 0.0.9-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.8 + 0.0.9-SNAPSHOT From 8c670240d547d37059bb4ddbf8f31ff2793c9ad0 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Fri, 10 Feb 2023 07:15:56 +0100 Subject: [PATCH 206/306] Update README.md --- README.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d06cc824..a78c3ab6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/versions) +[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.com/artifact/software.xdev/micro-migration/0.0.4/versions) [![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/micro-migration/checkBuild.yml?branch=develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) @@ -39,11 +39,13 @@ the version, suited to the current code. ### Maven Simply add the dependency to your `pom.xml`: + ```xml + - software.xdev - micro-migration-microstream-v7 - 0.0.7 + software.xdev + micro-migration-microstream-v7 + 0.0.8 ``` @@ -129,11 +131,13 @@ final ReflectiveMigrater migrater = new ReflectiveMigrater("software.xdev.microm Since the `ReflectiveMigrater` uses the [Reflections library](https://github.com/ronmamo/reflections) it is extracted to its [own module](https://github.com/xdev-software/micro-migration/tree/main/reflection). To use this, you need to add the following dependency to your `pom.xml`: + ```xml + - software.xdev - micro-migration-reflection - 0.0.7 + software.xdev + micro-migration-reflection + 0.0.8 ``` @@ -151,9 +155,9 @@ then use `micro-migration-microstream-v7`) and exclude the dependent version of ```xml software.xdev - micro-migration-microstream-v7 - 0.0.7 - + micro-migration-microstream-v7 + 0.0.8 + one.microstream microstream-storage-embedded From af1082a0afed4f22f8766c9b1d4e9b15bd90c4f6 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 22 Feb 2023 14:16:55 +0100 Subject: [PATCH 207/306] Added definition of annotation processor of microstream --- microstream-v5/pom.xml | 27 +++++++++++++++++++++++++++ microstream-v6/pom.xml | 27 +++++++++++++++++++++++++++ microstream-v7/pom.xml | 27 +++++++++++++++++++++++++++ pom.xml | 16 ++++++++++------ 4 files changed, 91 insertions(+), 6 deletions(-) diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 4512bc8c..630e4584 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -18,6 +18,33 @@ 0.0.9-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + UTF-8 + + + + one.microstream + microstream-base + ${microstream.version} + + + + + + + software.xdev diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index d15b1851..30becc43 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -18,6 +18,33 @@ 0.0.9-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + UTF-8 + + + + one.microstream + microstream-base + ${microstream.version} + + + + + + + software.xdev diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index e392b730..8a1e7132 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -18,6 +18,33 @@ 0.0.9-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + UTF-8 + + + + one.microstream + microstream-base + ${microstream.version} + + + + + + + software.xdev diff --git a/pom.xml b/pom.xml index e07a6504..e4e77741 100644 --- a/pom.xml +++ b/pom.xml @@ -143,6 +143,16 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + ${java.version} + ${java.version} + UTF-8 + + @@ -313,12 +323,6 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 - - ${java.version} - ${java.version} - UTF-8 - maven-surefire-plugin From 25b6c85dcfe402b8053ed0e17d6124cfae6b950c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 13:08:24 +0000 Subject: [PATCH 208/306] Bump maven-compiler-plugin from 3.10.1 to 3.11.0 in /reflection Bumps [maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.10.1 to 3.11.0. - [Release notes](https://github.com/apache/maven-compiler-plugin/releases) - [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.10.1...maven-compiler-plugin-3.11.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-compiler-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..cb68b678 100644 --- a/pom.xml +++ b/pom.xml @@ -146,7 +146,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.10.1 + 3.11.0 ${java.version} ${java.version} From 825afbf9c349a4f17a1a5f75eec6afb2927d806c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 13:08:52 +0000 Subject: [PATCH 209/306] Bump maven-javadoc-plugin from 3.4.1 to 3.5.0 in /microstream-v6 Bumps [maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.4.1...maven-javadoc-plugin-3.5.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..062a98d3 100644 --- a/pom.xml +++ b/pom.xml @@ -89,7 +89,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.4.1 + 3.5.0 ${java.version} UTF-8 From d4e3ada882b4027e429b27394ef1b108ef3c9c53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 13:07:26 +0000 Subject: [PATCH 210/306] Bump jreleaser-maven-plugin from 1.4.0 to 1.5.1 in /core Bumps [jreleaser-maven-plugin](https://github.com/jreleaser/jreleaser) from 1.4.0 to 1.5.1. - [Release notes](https://github.com/jreleaser/jreleaser/releases) - [Changelog](https://github.com/jreleaser/jreleaser/blob/main/jreleaser.yml) - [Commits](https://github.com/jreleaser/jreleaser/compare/v1.4.0...v1.5.1) --- updated-dependencies: - dependency-name: org.jreleaser:jreleaser-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..ee5fc481 100644 --- a/pom.xml +++ b/pom.xml @@ -120,7 +120,7 @@ org.jreleaser jreleaser-maven-plugin - 1.4.0 + 1.5.1 From 46a06d016c45525e6cc5bd4cf314b4037f149e95 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 13:42:35 +0000 Subject: [PATCH 211/306] Bump checkstyle from 10.6.0 to 10.9.3 in /microstream-v5 Bumps [checkstyle](https://github.com/checkstyle/checkstyle) from 10.6.0 to 10.9.3. - [Release notes](https://github.com/checkstyle/checkstyle/releases) - [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-10.6.0...checkstyle-10.9.3) --- updated-dependencies: - dependency-name: com.puppycrawl.tools:checkstyle dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..bde98243 100644 --- a/pom.xml +++ b/pom.xml @@ -299,7 +299,7 @@ com.puppycrawl.tools checkstyle - 10.6.0 + 10.9.3 From 6826886d322ece9923d5a8fdef28ce45b83564e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 13:47:39 +0000 Subject: [PATCH 212/306] Bump modernizer-maven-plugin from 2.5.0 to 2.6.0 in /reflection Bumps [modernizer-maven-plugin](https://github.com/gaul/modernizer-maven-plugin) from 2.5.0 to 2.6.0. - [Release notes](https://github.com/gaul/modernizer-maven-plugin/releases) - [Commits](https://github.com/gaul/modernizer-maven-plugin/compare/modernizer-maven-plugin-2.5.0...modernizer-maven-plugin-2.6.0) --- updated-dependencies: - dependency-name: org.gaul:modernizer-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..3324be21 100644 --- a/pom.xml +++ b/pom.xml @@ -191,7 +191,7 @@ org.gaul modernizer-maven-plugin - 2.5.0 + 2.6.0 ${java.version} From a576d1c6c08f6b56525541d3b8dc974d72c5940e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 13:02:13 +0000 Subject: [PATCH 213/306] Bump maven-enforcer-plugin from 3.1.0 to 3.3.0 in /microstream-v5 Bumps [maven-enforcer-plugin](https://github.com/apache/maven-enforcer) from 3.1.0 to 3.3.0. - [Release notes](https://github.com/apache/maven-enforcer/releases) - [Commits](https://github.com/apache/maven-enforcer/compare/enforcer-3.1.0...enforcer-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-enforcer-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..5129da0d 100644 --- a/pom.xml +++ b/pom.xml @@ -210,7 +210,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.1.0 + 3.3.0 From 7fb45623a5ab0baa1cee6b554cef51043c3f7957 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 13:05:09 +0000 Subject: [PATCH 214/306] Bump maven-checkstyle-plugin from 3.1.2 to 3.2.2 in /core Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.1.2 to 3.2.2. - [Release notes](https://github.com/apache/maven-checkstyle-plugin/releases) - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.1.2...maven-checkstyle-plugin-3.2.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e4e77741..44c38f33 100644 --- a/pom.xml +++ b/pom.xml @@ -294,7 +294,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.2 + 3.2.2 com.puppycrawl.tools From caa47772e3a6c486fc80186db9b1b847c59fac52 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Mon, 17 Jul 2023 08:50:55 +0200 Subject: [PATCH 215/306] Added support for MicroStream v8 --- .github/workflows/release.yml | 2 +- README.md | 24 +- examples/pom.xml | 2 +- microstream-v8/pom.xml | 65 +++ .../microstream/MigrationEmbeddedStorage.java | 104 +++++ .../MigrationEmbeddedStorageManager.java | 49 +++ .../microstream/MigrationManager.java | 72 ++++ .../microstream/MigrationScript.java | 34 ++ .../TunnelingEmbeddedStorageManager.java | 382 ++++++++++++++++++ .../microstream/package-info.java | 19 + ...oduceMigrationOnExistingDatastoreTest.java | 56 +++ .../MigrationScriptAfterScriptTest.java | 199 +++++++++ .../integration/MultipleScriptsTest.java | 90 +++++ ...oreStuffInMigrationStorageManagerTest.java | 74 ++++ .../migrater/ExplicitMigraterTest.java | 88 ++++ .../testUtil/MicroMigrationScriptDummy.java | 42 ++ pom.xml | 1 + 17 files changed, 1292 insertions(+), 11 deletions(-) create mode 100644 microstream-v8/pom.xml create mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java create mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java create mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java create mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java create mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java create mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/package-info.java create mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java create mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java create mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java create mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java create mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java create mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 33d6d261..0e2cd585 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,7 +69,7 @@ jobs: ```XML software.xdev - micro-migration-microstream-v7 + micro-migration-microstream-v8 ${{ steps.version.outputs.release }} ``` diff --git a/README.md b/README.md index a78c3ab6..904063dc 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Simply add the dependency to your `pom.xml`: software.xdev - micro-migration-microstream-v7 + micro-migration-microstream-v8 0.0.8 ``` @@ -142,16 +142,22 @@ To use this, you need to add the following dependency to your `pom.xml`: ``` ## Supported MicroStream versions + Micro migration currently supports the following MicroStream versions: -| MicroStream Version | Micro migration artifact Id | +| MicroStream Version | Micro migration artifact Id | | --- | --- | -| [05.00.02-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | -| [06.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | -| [07.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | - -If you are using a different, not listed version of MicroStream, this shouldn't be a problem. -Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `07.00.00-MS-GA`, -then use `micro-migration-microstream-v7`) and exclude the dependent version of MicroStream vom Micro migration: +| [05.00.02-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | +micro-migration-microstream-v5 | +| [06.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | +micro-migration-microstream-v6 | +| [07.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | +micro-migration-microstream-v7 | +| [08.01.01-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/08.01.01-MS-GA) | +micro-migration-microstream-v8 | + +If you are using a different, not listed version of MicroStream, this shouldn't be a problem. +Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `08.00.00-MS-GA`, +then use `micro-migration-microstream-v8`) and exclude the dependent version of MicroStream vom Micro migration: ```xml software.xdev diff --git a/examples/pom.xml b/examples/pom.xml index 900476c8..555af8d2 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -17,7 +17,7 @@ software.xdev - micro-migration-microstream-v7 + micro-migration-microstream-v8 ${project.version} diff --git a/microstream-v8/pom.xml b/microstream-v8/pom.xml new file mode 100644 index 00000000..1d206c6f --- /dev/null +++ b/microstream-v8/pom.xml @@ -0,0 +1,65 @@ + + 4.0.0 + software.xdev + micro-migration-microstream-v8 + 0.0.9-SNAPSHOT + MicroMigration-for-MicroStreamV8 + Provides the micro migration support for MicroStream version 8 + + + 08.01.01-MS-GA + + + + software.xdev + micro-migration + 0.0.9-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + UTF-8 + + + + one.microstream + microstream-base + ${microstream.version} + + + + + + + + + + software.xdev + micro-migration-core + ${project.version} + + + one.microstream + microstream-storage-embedded + ${microstream.version} + + + one.microstream + microstream-configuration + ${microstream.version} + + + diff --git a/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java new file mode 100644 index 00000000..ea59546d --- /dev/null +++ b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java @@ -0,0 +1,104 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; + +import java.nio.file.Path; +import java.util.Objects; + +import one.microstream.afs.nio.types.NioFileSystem; +import one.microstream.storage.embedded.types.EmbeddedStorageFoundation; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.types.Storage; +import one.microstream.storage.types.StorageConfiguration; +import software.xdev.micromigration.migrater.MicroMigrater; + +/** + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link one.microstream.storage.embedded.types.EmbeddedStorage}. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorage +{ + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

      Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + public static final MigrationEmbeddedStorageManager start(final MicroMigrater migrater) + { + Objects.requireNonNull(migrater); + return new MigrationEmbeddedStorageManager( + createStorageManager(), + migrater + ).start(); + } + + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

      Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param storageDirectory is used as the base directory for the datastore + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start( + final Path storageDirectory, + final MicroMigrater migrater + ) + { + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageDirectory); + + return new MigrationEmbeddedStorageManager( + createStorageManager(storageDirectory), + migrater + ).start(); + } + + private static EmbeddedStorageManager createStorageManager(final Path storageDirectory) + { + final NioFileSystem fileSystem = NioFileSystem.New(); + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder() + .setStorageFileProvider( + Storage.FileProviderBuilder(fileSystem) + .setDirectory(fileSystem.ensureDirectoryPath(storageDirectory.toAbsolutePath().toString())) + .createFileProvider() + ) + .createConfiguration() + ) + .createEmbeddedStorageManager(); + } + + private static EmbeddedStorageManager createStorageManager() + { + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder().createConfiguration() + ) + .createEmbeddedStorageManager(); + } +} diff --git a/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..02ddae53 --- /dev/null +++ b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java @@ -0,0 +1,49 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; + +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.Versioned; + +/** + * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationEmbeddedStorageManager + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorageManager + extends VersionAgnosticMigrationEmbeddedStorageManager +{ + /** + * @param nativeManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ + public MigrationEmbeddedStorageManager( + EmbeddedStorageManager nativeManager, + MicroMigrater migrater + ) + { + super(new TunnelingEmbeddedStorageManager(nativeManager), migrater); + } +} diff --git a/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java new file mode 100644 index 00000000..5d45118d --- /dev/null +++ b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java @@ -0,0 +1,72 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; + +/** + * Specific implementation of the {@link VersionAgnosticMigrationManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationManager + */ +public class MigrationManager extends VersionAgnosticMigrationManager +{ + /** + * Much more complicated constructor than {@link MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManager( + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater, + final EmbeddedStorageManager storageManager + ) + { + super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } + + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManager( + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } +} diff --git a/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java new file mode 100644 index 00000000..c3962de8 --- /dev/null +++ b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java @@ -0,0 +1,34 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; + +/** + * Interface for scripts to migrate / update datastores. + *

      + * One script is supposed to bring a datastore from a lower version to the target version. + * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, + * the target version is reached. + *

      + * This is a shorthand for {@link VersionAgnosticMigrationScript} for this specific MicroStream version. + * + * @author Johannes Rabauer + * + */ +public interface MigrationScript extends VersionAgnosticMigrationScript +{} diff --git a/microstream-v8/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..29f3b6d9 --- /dev/null +++ b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java @@ -0,0 +1,382 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.microstream; + +import java.nio.ByteBuffer; +import java.util.Objects; +import java.util.function.Predicate; + +import one.microstream.afs.types.AFile; +import one.microstream.collections.types.XGettingEnum; +import one.microstream.persistence.binary.types.Binary; +import one.microstream.persistence.types.PersistenceManager; +import one.microstream.persistence.types.PersistenceRootsView; +import one.microstream.persistence.types.PersistenceTypeDictionaryExporter; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import one.microstream.storage.exceptions.StorageException; +import one.microstream.storage.types.Database; +import one.microstream.storage.types.StorageConfiguration; +import one.microstream.storage.types.StorageConnection; +import one.microstream.storage.types.StorageEntityCacheEvaluator; +import one.microstream.storage.types.StorageEntityTypeExportFileProvider; +import one.microstream.storage.types.StorageEntityTypeExportStatistics; +import one.microstream.storage.types.StorageEntityTypeHandler; +import one.microstream.storage.types.StorageLiveFileProvider; +import one.microstream.storage.types.StorageRawFileStatistics; +import one.microstream.storage.types.StorageTypeDictionary; +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; + +/** + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. + *

      + * It simply relays all the commands to the contained {@link EmbeddedStorageManager}. + * + * @see VersionAgnosticTunnelingEmbeddedStorageManager + * + * @author Johannes Rabauer + * + */ +public class TunnelingEmbeddedStorageManager + implements + EmbeddedStorageManager, + VersionAgnosticTunnelingEmbeddedStorageManager +{ + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ + protected final EmbeddedStorageManager nativeManager; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + */ + public TunnelingEmbeddedStorageManager( + final EmbeddedStorageManager nativeManager + ) + { + Objects.requireNonNull(nativeManager); + this.nativeManager = nativeManager; + } + + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#start} + */ + @Override + public TunnelingEmbeddedStorageManager start() + { + this.nativeManager.start(); + return this; + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#root} + */ + @Override + public Object root() { + return this.nativeManager.root(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#setRoot(Object)} + */ + @Override + public Object setRoot(final Object newRoot) { + return this.nativeManager.setRoot(newRoot); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#storeRoot()} + */ + @Override + public long storeRoot() { + return this.nativeManager.storeRoot(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#configuration()} + */ + @Override + public StorageConfiguration configuration() + { + return this.nativeManager.configuration(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#typeDictionary()} + */ + @Override + public StorageTypeDictionary typeDictionary() + { + return this.nativeManager.typeDictionary(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#shutdown()} + */ + @Override + public boolean shutdown() + { + return this.nativeManager.shutdown(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#close()} + */ + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createConnection()} + */ + @Override + public StorageConnection createConnection() + { + return this.nativeManager.createConnection(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#viewRoots()} + */ + @Override + public PersistenceRootsView viewRoots() + { + return this.nativeManager.viewRoots(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#database()} + */ + @Override + public Database database() + { + return this.nativeManager.database(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isAcceptingTasks()} + */ + @Override + public boolean isAcceptingTasks() + { + return this.nativeManager.isAcceptingTasks(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isRunning()} + */ + @Override + public boolean isRunning() + { + return this.nativeManager.isRunning(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isStartingUp()} + */ + @Override + public boolean isStartingUp() + { + return this.nativeManager.isStartingUp(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isShuttingDown()} + */ + @Override + public boolean isShuttingDown() + { + return this.nativeManager.isShuttingDown(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#checkAcceptingTasks()} + */ + @Override + public void checkAcceptingTasks() + { + this.nativeManager.checkAcceptingTasks(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#initializationTime()} + */ + @Override + public long initializationTime() + { + return this.nativeManager.initializationTime(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#operationModeTime()} + */ + @Override + public long operationModeTime() + { + return this.nativeManager.operationModeTime(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isActive()} + */ + @Override + public boolean isActive() + { + return this.nativeManager.isActive(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueGarbageCollection(long)} + */ + @Override + public boolean issueGarbageCollection(final long nanoTimeBudget) + { + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFileCheck(long)} + */ + @Override + public boolean issueFileCheck(final long nanoTimeBudget) + { + return this.nativeManager.issueFileCheck(nanoTimeBudget); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueCacheCheck(long, StorageEntityCacheEvaluator)} + */ + @Override + public boolean issueCacheCheck(final long nanoTimeBudget, final StorageEntityCacheEvaluator entityEvaluator) + { + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createStorageStatistics} + */ + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.nativeManager.createStorageStatistics(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportChannels(StorageLiveFileProvider)} + */ + @Override + public void exportChannels(final StorageLiveFileProvider fileProvider, final boolean performGarbageCollection) + { + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportTypes(StorageEntityTypeExportFileProvider)} + */ + @Override + public StorageEntityTypeExportStatistics exportTypes( + final StorageEntityTypeExportFileProvider exportFileProvider, + final Predicate isExportType) + { + return this.nativeManager.exportTypes(exportFileProvider, isExportType); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#importFiles(XGettingEnum)} + */ + @Override + public void importFiles(final XGettingEnum importFiles) + { + this.nativeManager.importFiles(importFiles); + } + + @Override + public void importData(final XGettingEnum xGettingEnum) + { + this.nativeManager.importData(xGettingEnum); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#persistenceManager()} + */ + @Override + public PersistenceManager persistenceManager() + { + return this.nativeManager.persistenceManager(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#store(Object)} + */ + @Override + public long store(final Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFullBackup(StorageLiveFileProvider, PersistenceTypeDictionaryExporter)} + */ + @Override + public void issueFullBackup( + final StorageLiveFileProvider targetFileProvider, + final PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } +} diff --git a/microstream-v8/src/main/java/software/xdev/micromigration/microstream/package-info.java b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/package-info.java new file mode 100644 index 00000000..82c7e384 --- /dev/null +++ b/microstream-v8/src/main/java/software/xdev/micromigration/microstream/package-info.java @@ -0,0 +1,19 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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. + */ +/** + * Provides classes to use micro migration for MicroStream v7 + */ + diff --git a/microstream-v8/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/microstream-v8/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java new file mode 100644 index 00000000..00118e9a --- /dev/null +++ b/microstream-v8/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -0,0 +1,56 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; + +class IntroduceMigrationOnExistingDatastoreTest +{ + final static String ROOT = "OriginalRoot"; + + @Test + void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) throws IOException + { + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) + { + storageManager.setRoot(ROOT); + storageManager.storeRoot(); + } + + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(ROOT, migrationStorageManager.root()); + assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + } + } +} diff --git a/microstream-v8/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/microstream-v8/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java new file mode 100644 index 00000000..f67ca778 --- /dev/null +++ b/microstream-v8/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -0,0 +1,199 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import one.microstream.persistence.types.Storer; +import one.microstream.storage.embedded.types.EmbeddedStorage; +import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.microstream.MigrationManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedObject; + +class MigrationScriptAfterScriptTest +{ + @Test + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException + { + //First run without any migration script + final ExplicitMigrater firstMigrater = new ExplicitMigrater(); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) + { + migrationStorageManager.setRoot(0); + migrationStorageManager.storeRoot(); + assertEquals(0, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); + } + + + //Run with one migration script + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + assertEquals(1, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); + } + + + //Run with two migration scripts + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + thirdMigrater)) + { + assertEquals(2, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationAndUseStorer(@TempDir final Path storageFolder) throws IOException + { + final List firstList = new ArrayList<>(); + // Run with one migration script + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> + { + context.getStorageManager().setRoot(firstList); + firstList.add("1"); + final Storer storer = context.getStorageManager().getNativeStorageManager().createStorer(); + storer.store(firstList); + storer.commit(); + } + ); + + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + migrater)) + { + assertEquals(1, ((List)migrationStorageManager.root()).size()); + } + } + + @Test + void testMigrationWithScriptExecutionNotification(@TempDir final Path storageFolder) throws IOException + { + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + final AtomicBoolean notificationReceived = new AtomicBoolean(false); + migrater.registerNotificationConsumer( + notification -> + { + Assertions.assertEquals(firstScript, notification.getExecutedScript()); + Assertions.assertEquals(new MigrationVersion(0), notification.getSourceVersion()); + Assertions.assertEquals(new MigrationVersion(1), notification.getTargetVersion()); + notificationReceived.set(true); + } + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertTrue(notificationReceived.get()); + } + } + + @Test + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir final Path storageFolder) throws IOException + { + //First run without any migration script + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) + { + final VersionedObject firstRoot = new VersionedObject<>(0); + storageManager.setRoot(firstRoot); + storageManager.storeRoot(); + assertEquals(Integer.valueOf(0), firstRoot.getObject()); + assertEquals(new MigrationVersion(0), firstRoot.getVersion()); + } + + + //Run with one migration script + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getMigratingObject().setObject(1) + ); + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManager( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(1), currentRoot.getObject()); + assertEquals(new MigrationVersion(1), currentRoot.getVersion()); + } + + + //Run with two migration scripts + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getMigratingObject().setObject(2) + ); + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManager( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript, secondScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(2), currentRoot.getObject()); + assertEquals(new MigrationVersion(2), currentRoot.getVersion()); + } + } + + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(final Path storageFolder) + { + return EmbeddedStorage.start(storageFolder); + } + +} diff --git a/microstream-v8/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/microstream-v8/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java new file mode 100644 index 00000000..57964f38 --- /dev/null +++ b/microstream-v8/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -0,0 +1,90 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +class MultipleScriptsTest +{ + @Test + void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(2, migrationStorageManager.root()); + assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithTwoScriptsWithSameVersion(@TempDir Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(2) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript) + ); + } + + @Test + void testMigrationWithThreeScriptsWithSameVersion(@TempDir Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(3) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript, thirdScript) + ); + } +} diff --git a/microstream-v8/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/microstream-v8/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java new file mode 100644 index 00000000..c519a205 --- /dev/null +++ b/microstream-v8/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -0,0 +1,74 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +class StoreStuffInMigrationStorageManagerTest +{ + private static class RootClass + { + private final ChildClass child = new ChildClass(); + } + + private static class ChildClass + { + private int i = 0; + } + + @Test + void testStoringSomethingAfterUpdating(@TempDir Path storageFolder) throws IOException + { + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> {} + ); + final ExplicitMigrater migrater = new ExplicitMigrater(script); + //Create new store and change stored object + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + migrationStorageManager.setRoot(new RootClass()); + migrationStorageManager.storeRoot(); + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertEquals(0, storedRoot.child.i); + ((RootClass)migrationStorageManager.root()).child.i = 1; + migrationStorageManager.store(storedRoot.child); + assertEquals(1, storedRoot.child.i); + } + //Check if stored object is correct + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertNotNull(storedRoot); + assertEquals(1, storedRoot.child.i); + } + } + +} diff --git a/microstream-v8/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/microstream-v8/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java new file mode 100644 index 00000000..d2c0f154 --- /dev/null +++ b/microstream-v8/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -0,0 +1,88 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; + +class ExplicitMigraterTest +{ + + @Test + void testGetSortedScripts_empty() + { + final ExplicitMigrater migrater = new ExplicitMigrater(); + assertEquals(0,migrater.getSortedScripts().size()); + } + + @Test + void testGetSortedScripts_sorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)), + new MicroMigrationScriptDummy(new MigrationVersion(2)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testGetSortedScripts_unsorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(2)), + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testWrongTypedVersionedScript(@TempDir Path storageFolder) + { + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(storageFolder, new ExplicitMigrater())) + { + storageManager.setRoot("SomeString"); + storageManager.storeRoot(); + } + final ExplicitMigrater migrater = new ExplicitMigrater( + new SimpleTypedMigrationScript( + new MigrationVersion(1), + (context) -> { + context.getStorageManager().setRoot(context.getMigratingObject() + 1); + } + ) + ); + Assertions.assertThrows(ClassCastException.class, () -> + { + MigrationEmbeddedStorage.start(storageFolder, migrater); + } + ); + + } + +} diff --git a/microstream-v8/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/microstream-v8/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java new file mode 100644 index 00000000..2d75dff3 --- /dev/null +++ b/microstream-v8/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -0,0 +1,42 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.testUtil; + +import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript +{ + private final MigrationVersion version; + + public MicroMigrationScriptDummy(MigrationVersion version) + { + this.version = version; + } + + @Override + public MigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void migrate(Context context) { + // Don't do anything. + } +} diff --git a/pom.xml b/pom.xml index a33810fe..6f9477b8 100644 --- a/pom.xml +++ b/pom.xml @@ -58,6 +58,7 @@ microstream-v5 microstream-v6 microstream-v7 + microstream-v8 From 7f8b919274f013e7df64b2d36861d9176c95c6af Mon Sep 17 00:00:00 2001 From: Johannes Rabauer <8188460+JohannesRabauer@users.noreply.github.com> Date: Mon, 17 Jul 2023 08:55:14 +0200 Subject: [PATCH 216/306] Fix README --- .idea/saveactions_settings.xml | 1 - README.md | 14 +++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml index 71a42c42..42b6fc4f 100644 --- a/.idea/saveactions_settings.xml +++ b/.idea/saveactions_settings.xml @@ -5,7 +5,6 @@ From 047a37030c74e5946399154cc2527e2747cdd618 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:37:26 +0000 Subject: [PATCH 232/306] Bump maven-surefire-plugin from 2.22.2 to 3.1.2 in /core Bumps [maven-surefire-plugin](https://github.com/apache/maven-surefire) from 2.22.2 to 3.1.2. - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-2.22.2...surefire-3.1.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..cef98c5e 100644 --- a/pom.xml +++ b/pom.xml @@ -327,7 +327,7 @@ maven-surefire-plugin - 2.22.2 + 3.1.2 org.apache.maven.plugins From 21bc0ba02a8790b058a383fb8ca41937f89874b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:37:42 +0000 Subject: [PATCH 233/306] Bump maven-checkstyle-plugin from 3.2.2 to 3.3.0 in /core Bumps [maven-checkstyle-plugin](https://github.com/apache/maven-checkstyle-plugin) from 3.2.2 to 3.3.0. - [Commits](https://github.com/apache/maven-checkstyle-plugin/compare/maven-checkstyle-plugin-3.2.2...maven-checkstyle-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-checkstyle-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..50e96308 100644 --- a/pom.xml +++ b/pom.xml @@ -295,7 +295,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.2.2 + 3.3.0 com.puppycrawl.tools From 82d899200b2541857be866aff3cfb96ea5e1f9fd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:37:50 +0000 Subject: [PATCH 234/306] Bump impsort-maven-plugin from 1.8.0 to 1.9.0 in /core Bumps [impsort-maven-plugin](https://github.com/revelc/impsort-maven-plugin) from 1.8.0 to 1.9.0. - [Commits](https://github.com/revelc/impsort-maven-plugin/compare/impsort-maven-plugin-1.8.0...impsort-maven-plugin-1.9.0) --- updated-dependencies: - dependency-name: net.revelc.code:impsort-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..3eb2b25c 100644 --- a/pom.xml +++ b/pom.xml @@ -166,7 +166,7 @@ net.revelc.code impsort-maven-plugin - 1.8.0 + 1.9.0 java.,javax.,org.,com. java,* From ad671efe3e3c5c4cbc5645e1305c8b2e6add6255 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:49:40 +0000 Subject: [PATCH 235/306] Bump maven-source-plugin from 3.2.1 to 3.3.0 in /reflection Bumps [maven-source-plugin](https://github.com/apache/maven-source-plugin) from 3.2.1 to 3.3.0. - [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.2.1...maven-source-plugin-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-source-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..6aa9543e 100644 --- a/pom.xml +++ b/pom.xml @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-source-plugin - 3.2.1 + 3.3.0 attach-source From 4ce68f2bb376f273918a5d4a3f0e6e9d898f25e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:50:06 +0000 Subject: [PATCH 236/306] Bump impsort-maven-plugin from 1.8.0 to 1.9.0 in /reflection Bumps [impsort-maven-plugin](https://github.com/revelc/impsort-maven-plugin) from 1.8.0 to 1.9.0. - [Commits](https://github.com/revelc/impsort-maven-plugin/compare/impsort-maven-plugin-1.8.0...impsort-maven-plugin-1.9.0) --- updated-dependencies: - dependency-name: net.revelc.code:impsort-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..3eb2b25c 100644 --- a/pom.xml +++ b/pom.xml @@ -166,7 +166,7 @@ net.revelc.code impsort-maven-plugin - 1.8.0 + 1.9.0 java.,javax.,org.,com. java,* From b1f07ac5b91864d901caf07702a94af54c1ae7e7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 12:06:10 +0000 Subject: [PATCH 237/306] Bump org.junit.jupiter:junit-jupiter-engine in /reflection Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..62f3bf5f 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.2 + 5.10.0 test From 8785f0b86439a7a25a44295c5061ea1aebb4e12e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 12:17:19 +0000 Subject: [PATCH 238/306] Bump org.junit.jupiter:junit-jupiter-engine in /microstream-v7 Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..62f3bf5f 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.2 + 5.10.0 test From 6976fc00b0c3b95c4d41ce04be75431cd5c5047d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 12:17:44 +0000 Subject: [PATCH 239/306] Bump org.junit.jupiter:junit-jupiter-api in /microstream-v7 Bumps [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..d39c454d 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.2 + 5.10.0 test From f96ca10160cb4472c53a1b15ec3bd1ab070e8e9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 12:20:31 +0000 Subject: [PATCH 240/306] Bump org.junit.jupiter:junit-jupiter-api in /microstream-v5 Bumps [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..d39c454d 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,7 @@ org.junit.jupiter junit-jupiter-api - 5.9.2 + 5.10.0 test From dce36bbe387a18addb0f379821973659cf06a102 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 12:35:46 +0000 Subject: [PATCH 241/306] Bump org.junit.jupiter:junit-jupiter-engine in /microstream-v6 Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.9.2 to 5.10.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.9.2...r5.10.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..62f3bf5f 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ org.junit.jupiter junit-jupiter-engine - 5.9.2 + 5.10.0 test From 3bc41fd0a82a220d62fedcaf39cacad9cd58b6a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 12:10:09 +0000 Subject: [PATCH 242/306] Bump org.jreleaser:jreleaser-maven-plugin from 1.4.0 to 1.8.0 in /core Bumps [org.jreleaser:jreleaser-maven-plugin](https://github.com/jreleaser/jreleaser) from 1.4.0 to 1.8.0. - [Release notes](https://github.com/jreleaser/jreleaser/releases) - [Changelog](https://github.com/jreleaser/jreleaser/blob/main/jreleaser.yml) - [Commits](https://github.com/jreleaser/jreleaser/compare/v1.4.0...v1.8.0) --- updated-dependencies: - dependency-name: org.jreleaser:jreleaser-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..40022d01 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.jreleaser jreleaser-maven-plugin - 1.4.0 + 1.8.0 From 0fa05af37ec6982c24b684d97b44c565d8d9a578 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 12:27:20 +0000 Subject: [PATCH 243/306] Bump org.jreleaser:jreleaser-maven-plugin in /microstream-v5 Bumps [org.jreleaser:jreleaser-maven-plugin](https://github.com/jreleaser/jreleaser) from 1.4.0 to 1.8.0. - [Release notes](https://github.com/jreleaser/jreleaser/releases) - [Changelog](https://github.com/jreleaser/jreleaser/blob/main/jreleaser.yml) - [Commits](https://github.com/jreleaser/jreleaser/compare/v1.4.0...v1.8.0) --- updated-dependencies: - dependency-name: org.jreleaser:jreleaser-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..40022d01 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.jreleaser jreleaser-maven-plugin - 1.4.0 + 1.8.0 From 2760bd047943694be5cda9f8e37ba311e5bbd283 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 12:30:17 +0000 Subject: [PATCH 244/306] Bump org.jreleaser:jreleaser-maven-plugin in /reflection Bumps [org.jreleaser:jreleaser-maven-plugin](https://github.com/jreleaser/jreleaser) from 1.4.0 to 1.8.0. - [Release notes](https://github.com/jreleaser/jreleaser/releases) - [Changelog](https://github.com/jreleaser/jreleaser/blob/main/jreleaser.yml) - [Commits](https://github.com/jreleaser/jreleaser/compare/v1.4.0...v1.8.0) --- updated-dependencies: - dependency-name: org.jreleaser:jreleaser-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..40022d01 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.jreleaser jreleaser-maven-plugin - 1.4.0 + 1.8.0 From f58d201e7d50a0faaaeac2d3523d38209c70c3ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 12:39:20 +0000 Subject: [PATCH 245/306] Bump org.jreleaser:jreleaser-maven-plugin in /examples Bumps [org.jreleaser:jreleaser-maven-plugin](https://github.com/jreleaser/jreleaser) from 1.4.0 to 1.8.0. - [Release notes](https://github.com/jreleaser/jreleaser/releases) - [Changelog](https://github.com/jreleaser/jreleaser/blob/main/jreleaser.yml) - [Commits](https://github.com/jreleaser/jreleaser/compare/v1.4.0...v1.8.0) --- updated-dependencies: - dependency-name: org.jreleaser:jreleaser-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..40022d01 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.jreleaser jreleaser-maven-plugin - 1.4.0 + 1.8.0 From 37965926552edfe43a4cc1025675c8600eaa9d3d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Sep 2023 12:55:57 +0000 Subject: [PATCH 246/306] Bump org.jreleaser:jreleaser-maven-plugin in /microstream-v6 Bumps [org.jreleaser:jreleaser-maven-plugin](https://github.com/jreleaser/jreleaser) from 1.4.0 to 1.8.0. - [Release notes](https://github.com/jreleaser/jreleaser/releases) - [Changelog](https://github.com/jreleaser/jreleaser/blob/main/jreleaser.yml) - [Commits](https://github.com/jreleaser/jreleaser/compare/v1.4.0...v1.8.0) --- updated-dependencies: - dependency-name: org.jreleaser:jreleaser-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..40022d01 100644 --- a/pom.xml +++ b/pom.xml @@ -121,7 +121,7 @@ org.jreleaser jreleaser-maven-plugin - 1.4.0 + 1.8.0 From b1cdd20df93d546f7941ee572923cbcf8c088e27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:13:22 +0000 Subject: [PATCH 247/306] Bump de.thetaphi:forbiddenapis from 3.4 to 3.6 in /core Bumps [de.thetaphi:forbiddenapis](https://github.com/policeman-tools/forbidden-apis) from 3.4 to 3.6. - [Commits](https://github.com/policeman-tools/forbidden-apis/compare/3.4...3.6) --- updated-dependencies: - dependency-name: de.thetaphi:forbiddenapis dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..94b5d2fb 100644 --- a/pom.xml +++ b/pom.xml @@ -264,7 +264,7 @@ de.thetaphi forbiddenapis - 3.4 + 3.6 From 0e19aede40bebd988a735c6c454776f5620b0f2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:21:14 +0000 Subject: [PATCH 248/306] Bump com.mycila:license-maven-plugin from 4.1 to 4.3 in /microstream-v7 Bumps com.mycila:license-maven-plugin from 4.1 to 4.3. --- updated-dependencies: - dependency-name: com.mycila:license-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..077d5477 100644 --- a/pom.xml +++ b/pom.xml @@ -346,7 +346,7 @@ com.mycila license-maven-plugin - 4.1 + 4.3 ${project.organization.url} From 85fb6e5e393dbffb7fbf39b69e40880db67bf982 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:35:29 +0000 Subject: [PATCH 249/306] Bump de.thetaphi:forbiddenapis from 3.4 to 3.6 in /reflection Bumps [de.thetaphi:forbiddenapis](https://github.com/policeman-tools/forbidden-apis) from 3.4 to 3.6. - [Commits](https://github.com/policeman-tools/forbidden-apis/compare/3.4...3.6) --- updated-dependencies: - dependency-name: de.thetaphi:forbiddenapis dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..94b5d2fb 100644 --- a/pom.xml +++ b/pom.xml @@ -264,7 +264,7 @@ de.thetaphi forbiddenapis - 3.4 + 3.6 From 1d39aba446fa95e2c3907023bdaa6e8ac6078686 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:40:21 +0000 Subject: [PATCH 250/306] Bump de.thetaphi:forbiddenapis from 3.4 to 3.6 in /microstream-v5 Bumps [de.thetaphi:forbiddenapis](https://github.com/policeman-tools/forbidden-apis) from 3.4 to 3.6. - [Commits](https://github.com/policeman-tools/forbidden-apis/compare/3.4...3.6) --- updated-dependencies: - dependency-name: de.thetaphi:forbiddenapis dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..94b5d2fb 100644 --- a/pom.xml +++ b/pom.xml @@ -264,7 +264,7 @@ de.thetaphi forbiddenapis - 3.4 + 3.6 From 7e097b59baa4cbba2e82f019e710ec3f3c243cf3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 13:05:23 +0000 Subject: [PATCH 251/306] Bump de.thetaphi:forbiddenapis from 3.4 to 3.6 in /examples Bumps [de.thetaphi:forbiddenapis](https://github.com/policeman-tools/forbidden-apis) from 3.4 to 3.6. - [Commits](https://github.com/policeman-tools/forbidden-apis/compare/3.4...3.6) --- updated-dependencies: - dependency-name: de.thetaphi:forbiddenapis dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 3ae0a6cc..94b5d2fb 100644 --- a/pom.xml +++ b/pom.xml @@ -264,7 +264,7 @@ de.thetaphi forbiddenapis - 3.4 + 3.6 From 9068ee3c999c7fb2368356a9ac86756e29865c1e Mon Sep 17 00:00:00 2001 From: AB Date: Fri, 19 Jan 2024 09:43:03 +0100 Subject: [PATCH 252/306] Rework workflows + secrets --- .github/workflows/checkBuild.yml | 24 ----------------------- .github/workflows/publish-dry-run.yml | 28 +++++++++++++++++++++++++++ .github/workflows/release.yml | 7 +++---- 3 files changed, 31 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/publish-dry-run.yml diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index cd32bc60..981cbffa 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -57,27 +57,3 @@ jobs: with: name: jars-java-${{ matrix.java }} path: target/*.jar - - publish-dry-run: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 0 - - name: Set up Java - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'temurin' - cache: 'maven' - - name: Publish project - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_SNAPSHOT_URL: https://s01.oss.sonatype.org/content/repositories/snapshots/ - run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy \ No newline at end of file diff --git a/.github/workflows/publish-dry-run.yml b/.github/workflows/publish-dry-run.yml new file mode 100644 index 00000000..37c31721 --- /dev/null +++ b/.github/workflows/publish-dry-run.yml @@ -0,0 +1,28 @@ +name: Publish dry run + +on: + workflow_dispatch: + +jobs: + publish-dry-run: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Set up Java + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + cache: 'maven' + - name: Publish project + env: + JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} + JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_SNAPSHOT_URL: https://s01.oss.sonatype.org/content/repositories/snapshots/ + run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e2cd585..44a44cc3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,9 +97,8 @@ jobs: JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.MAVEN_CENTRAL_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.MAVEN_CENTRAL_PASSWORD }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} + JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy after_release: runs-on: ubuntu-latest @@ -128,4 +127,4 @@ jobs: github_token: ${{ secrets.GITHUB_TOKEN }} destination_branch: "develop" pr_title: "Sync back" - pr_body: "An automated PR to sync changes back" \ No newline at end of file + pr_body: "An automated PR to sync changes back" From 47ab37b6fd3fb237b4330ff06a062914708c5033 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 08:15:14 +0100 Subject: [PATCH 253/306] EclipseStore support implemented --- CHANGELOG.md | 4 + README.md | 59 +-- SECURITY.md | 26 +- core/pom.xml | 4 +- eclipse-store-v1/pom.xml | 52 +++ .../store/MigrationEmbeddedStorage.java | 106 +++++ .../MigrationEmbeddedStorageManager.java | 50 +++ .../eclipse/store/MigrationManager.java | 73 ++++ .../eclipse/store/MigrationScript.java | 34 ++ .../TunnelingEmbeddedStorageManager.java | 389 ++++++++++++++++++ .../eclipse/store/package-info.java | 19 + ...oduceMigrationOnExistingDatastoreTest.java | 56 +++ .../MigrationScriptAfterScriptTest.java | 199 +++++++++ .../integration/MultipleScriptsTest.java | 90 ++++ ...oreStuffInMigrationStorageManagerTest.java | 74 ++++ .../migrater/ExplicitMigraterTest.java | 88 ++++ .../testUtil/MicroMigrationScriptDummy.java | 42 ++ examples/pom.xml | 4 +- microstream-v5/pom.xml | 4 +- microstream-v6/pom.xml | 4 +- microstream-v7/pom.xml | 4 +- microstream-v8/pom.xml | 4 +- pom.xml | 3 +- reflection/README.md | 4 +- reflection/pom.xml | 4 +- .../migrater/ReflectiveMigrater.java | 2 +- 26 files changed, 1342 insertions(+), 56 deletions(-) create mode 100644 eclipse-store-v1/pom.xml create mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorage.java create mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorageManager.java create mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationManager.java create mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationScript.java create mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/TunnelingEmbeddedStorageManager.java create mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/package-info.java create mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java create mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java create mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java create mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java create mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java create mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java diff --git a/CHANGELOG.md b/CHANGELOG.md index f0aafabd..5d049278 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0 +* Added support for EclipseStore v1 +* Updated plenty of libraries + ## 0.0.9 * Added support for MicroStream v8 diff --git a/README.md b/README.md index b175a45f..846f6156 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # XDEV MicroMigration Logo -Tiny java library to migrate MicroStream datastores. +Tiny java library to migrate MicroStream and EclipseStore datastores. Applies migration scripts on the datastores to keep them up to date. ## Intro @@ -13,12 +13,12 @@ When you think about default database setup, you probably imagine something like ![Imaginative system layout](./docs/MigrationSequence_1.png "Imaginative system layout") -Yet in reality most workflows involve different systems like test systems and prodution systems. +Yet in reality most workflows involve different systems like test systems and production systems. In code this workflow is represented with version-control systems and different branches. ![Code workflow](./docs/MigrationSequence_2.png "Code workflow") -For this code workflow to behave correctly, for each system a seperate datastore is needed. +For this code workflow to behave correctly, for each system a separate datastore is needed. To keep these datastores to represent the correspondend data for the code is a hassle. ![Code workflow with datastore](./docs/MigrationSequence_3.png "Code workflow with datastore") @@ -27,9 +27,9 @@ That's why migration frameworks like [Flyway](https://flywaydb.org) and [Liquiba Unfortunately both these frameworks are designed to support any type of SQL databases but no NoSQL databases like [MicroStream](https://microstream.one/). This led to the creation of this library. -This library delivers an easy concept to keep your MicroStream datastore versioned +This library delivers an easy concept to keep your MicroStream / EclipseStore datastore versioned with migration scripts written in plain java. -It's easy to create code, that automatically brings an datastore with an older version to +It's easy to create code, that automatically brings a datastore with an older version to the version, suited to the current code. ![Migrate datastore to new version](./docs/MigrationSequence_4.png "Migrate datastore to new version") @@ -44,8 +44,8 @@ Simply add the dependency to your `pom.xml`: software.xdev - micro-migration-microstream-v8 - 0.0.9 + micro-migration-eclipse-store-v1 + 1.0.0 ``` @@ -53,7 +53,7 @@ Simply add the dependency to your `pom.xml`: There are two possible usages with the Micro migration library: The **first**, easier approach is to use the `MigrationEmbeddedStorageManager`. -It can be used on a brand new datastore or introduced later, after a MicroStream datastore is already in use. +It can be used on a brand new datastore or introduced later, after a MicroStream/EclipseStore datastore is already in use. Only the storage manager (`MigrationEmbeddedStorageManager`) knows about the versioning. The rest of application does not know about the version and can have no regards about it. @@ -137,38 +137,43 @@ To use this, you need to add the following dependency to your `pom.xml`: software.xdev micro-migration-reflection - 0.0.9 + 1.0.0 ``` -## Supported MicroStream versions +## Supported MicroStream / EclipseStore versions + +Micro migration currently supports the following MicroStream / EclipseStore versions: -Micro migration currently supports the following MicroStream versions: | MicroStream Version | Micro migration artifact Id | | --- | --- | -| [05.00.02-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | -| [06.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | -| [07.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | -| [08.01.01-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/08.01.01-MS-GA) | micro-migration-microstream-v8 | +| [05.00.02-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | +| [06.01.00-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | +| [07.01.00-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | +| [08.01.01-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/08.01.01-MS-GA) | micro-migration-microstream-v8 | + +| EclipseStore Version | Micro migration artifact Id | +|------------------------------------------------------------------------------------------------------------|----------------------------------| +| [1.1.0](https://central.sonatype.com/artifact/org.eclipse.store/storage/1.1.0) | micro-migration-eclipse-store-v1 | If you are using a different, not listed version of MicroStream, this shouldn't be a problem. Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `08.00.00-MS-GA`, then use `micro-migration-microstream-v8`) and exclude the dependent version of MicroStream vom Micro migration: ```xml - software.xdev - micro-migration-microstream-v8 - 0.0.9 + software.xdev + micro-migration-eclipse-store-v1 + 1.0.0 - - one.microstream - microstream-storage-embedded - - - one.microstream - microstream-configuration - - + + org.eclipse.store + storage-embedded + + + org.eclipse.store + storage-embedded-configuration + + ``` Since there is rarely a breaking change, this works 90% of times. diff --git a/SECURITY.md b/SECURITY.md index 811f773c..4bd09db8 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,19 +2,23 @@ ## Supported Versions -| Version | Supported | -| ------- | ------------------ | -| < 0.0.6 | :x: | -| > 0.0.6 | :white_check_mark: | +| Version | Supported | +|-----------| ------------------ | +| < 1.0.0 | :x: | +| \>= 1.0.0 | :white_check_mark: | -## Supported MicroStream versions -Micro migration currently supports the following MicroStream versions: -| MicroStream Version | Micro migration artifact Id | +Micro migration currently supports the following MicroStream / EclipseStore versions: + +| MicroStream Version | Micro migration artifact Id | | --- | --- | -| [05.00.02-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | -| [06.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | -| [07.01.00-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | -| [08.01.01-MS-GA](https://central.sonatype.dev/artifact/one.microstream/microstream-storage/08.01.01-MS-GA) | micro-migration-microstream-v8 | +| [05.00.02-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/05.00.02-MS-GA) | micro-migration-microstream-v5 | +| [06.01.00-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/06.01.00-MS-GA) | micro-migration-microstream-v6 | +| [07.01.00-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/07.01.00-MS-GA) | micro-migration-microstream-v7 | +| [08.01.01-MS-GA](https://central.sonatype.com/artifact/one.microstream/microstream-storage/08.01.01-MS-GA) | micro-migration-microstream-v8 | + +| EclipseStore Version | Micro migration artifact Id | +|------------------------------------------------------------------------------------------------------------|----------------------------------| +| [1.1.0](https://central.sonatype.com/artifact/org.eclipse.store/storage/1.1.0) | micro-migration-eclipse-store-v1 | ## Reporting a Vulnerability diff --git a/core/pom.xml b/core/pom.xml index 4dd8d73c..75c4da31 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-core - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream software.xdev micro-migration - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT diff --git a/eclipse-store-v1/pom.xml b/eclipse-store-v1/pom.xml new file mode 100644 index 00000000..5c617caf --- /dev/null +++ b/eclipse-store-v1/pom.xml @@ -0,0 +1,52 @@ + + 4.0.0 + software.xdev + micro-migration-eclipse-store-v1 + 1.0.0-SNAPSHOT + MicroMigration-for-EclipseStoreV1 + Provides the micro migration support for EclipseStore version 1 + + + 1.1.0 + + + + software.xdev + micro-migration + 1.0.0-SNAPSHOT + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + UTF-8 + + + + + + + + software.xdev + micro-migration-core + ${project.version} + + + org.eclipse.store + storage-embedded + ${org.eclipse.store.version} + + + org.eclipse.store + storage-embedded-configuration + ${org.eclipse.store.version} + + + diff --git a/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorage.java b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorage.java new file mode 100644 index 00000000..7c805cac --- /dev/null +++ b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorage.java @@ -0,0 +1,106 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.eclipse.store; + +import java.nio.file.Path; +import java.util.Objects; + +import org.eclipse.store.afs.nio.types.NioFileSystem; +import org.eclipse.store.storage.embedded.types.EmbeddedStorage; +import org.eclipse.store.storage.embedded.types.EmbeddedStorageFoundation; +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; +import org.eclipse.store.storage.types.Storage; +import org.eclipse.store.storage.types.StorageConfiguration; + +import software.xdev.micromigration.migrater.MicroMigrater; + +/** + * Provides static utility calls to create the {@link MigrationEmbeddedStorageManager} for + * updateable datastores. Basically a wrapper for the utility class {@link EmbeddedStorage}. + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorage +{ + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

      Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + public static final MigrationEmbeddedStorageManager start(final MicroMigrater migrater) + { + Objects.requireNonNull(migrater); + return new MigrationEmbeddedStorageManager( + createStorageManager(), + migrater + ).start(); + } + + /** + * Creates a {@link MigrationEmbeddedStorageManager} with the given {@link MicroMigrater}. + * Uses the MicroStream {@link EmbeddedStorageFoundation#New()} configuration for the actual + * {@link EmbeddedStorageManager}. + *

      Warning "resource" is suppressed because it is used and closed in the {@link MigrationEmbeddedStorageManager}. + * + * @param storageDirectory is used as the base directory for the datastore + * @param migrater which is used as source for the migration scripts + * @return the created storage manager with the given migrater + */ + @SuppressWarnings("resource") + public static final MigrationEmbeddedStorageManager start( + final Path storageDirectory, + final MicroMigrater migrater + ) + { + Objects.requireNonNull(migrater); + Objects.requireNonNull(storageDirectory); + + return new MigrationEmbeddedStorageManager( + createStorageManager(storageDirectory), + migrater + ).start(); + } + + private static EmbeddedStorageManager createStorageManager(final Path storageDirectory) + { + final NioFileSystem fileSystem = NioFileSystem.New(); + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder() + .setStorageFileProvider( + Storage.FileProviderBuilder(fileSystem) + .setDirectory(fileSystem.ensureDirectoryPath(storageDirectory.toAbsolutePath().toString())) + .createFileProvider() + ) + .createConfiguration() + ) + .createEmbeddedStorageManager(); + } + + private static EmbeddedStorageManager createStorageManager() + { + return EmbeddedStorageFoundation.New() + .setConfiguration( + StorageConfiguration.Builder().createConfiguration() + ) + .createEmbeddedStorageManager(); + } +} diff --git a/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorageManager.java b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorageManager.java new file mode 100644 index 00000000..62af29ca --- /dev/null +++ b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationEmbeddedStorageManager.java @@ -0,0 +1,50 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.eclipse.store; + +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.version.Versioned; + +/** + * Specific implementation of the {@link VersionAgnosticMigrationEmbeddedStorageManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationEmbeddedStorageManager + * + * @author Johannes Rabauer + * + */ +public class MigrationEmbeddedStorageManager + extends VersionAgnosticMigrationEmbeddedStorageManager +{ + /** + * @param nativeManager which will be used as the underlying storage manager. + * Almost all methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + * @param migrater which is used as source for the migration scripts + */ + public MigrationEmbeddedStorageManager( + final EmbeddedStorageManager nativeManager, + final MicroMigrater migrater + ) + { + super(new TunnelingEmbeddedStorageManager(nativeManager), migrater); + } +} diff --git a/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationManager.java b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationManager.java new file mode 100644 index 00000000..692221b0 --- /dev/null +++ b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationManager.java @@ -0,0 +1,73 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.eclipse.store; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticMigrationManager; +import software.xdev.micromigration.migrater.MicroMigrater; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; + +/** + * Specific implementation of the {@link VersionAgnosticMigrationManager} for one + * specific MicroStream version. + * + * @see VersionAgnosticMigrationManager + */ +public class MigrationManager extends VersionAgnosticMigrationManager +{ + /** + * Much more complicated constructor than {@link MigrationManager(Versioned, MicroMigrater, EmbeddedStorageManager)}. + * + * @param currentVersionGetter which supplies the current version of the object to update. + * @param currentVersionSetter which sets the new version of the object in some membervariable. This Consumer is not supposed to store the version, but only save it in some membervariable to be stored after. + * @param currentVersionStorer which is supposed to store the new version of the object somewhere in the datastore. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManager( + final Supplier currentVersionGetter, + final Consumer currentVersionSetter, + final Consumer currentVersionStorer, + final MicroMigrater migrater, + final EmbeddedStorageManager storageManager + ) + { + super(currentVersionGetter, currentVersionSetter, currentVersionStorer, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } + + /** + * Simple Constructor. + * + * @param versionedObject which provides getter and setter for the current version. + * This object will be stored after the {@link VersionAgnosticMigrationScript}s are executed. + * @param migrater does the actual migration with the given {@link VersionAgnosticMigrationScript} + * @param storageManager for the {@link VersionAgnosticMigrationScript}s to use. Is not used for the storing of the new version. + */ + public MigrationManager( + final Versioned versionedObject, + final MicroMigrater migrater , + final EmbeddedStorageManager storageManager + ) + { + super(versionedObject, migrater, new MigrationEmbeddedStorageManager(storageManager, migrater)); + } +} diff --git a/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationScript.java b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationScript.java new file mode 100644 index 00000000..7e09f59b --- /dev/null +++ b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationScript.java @@ -0,0 +1,34 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.eclipse.store; + +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; + +/** + * Interface for scripts to migrate / update datastores. + *

      + * One script is supposed to bring a datastore from a lower version to the target version. + * After the {@link VersionAgnosticMigrationScript#migrate(Context)} method is called, + * the target version is reached. + *

      + * This is a shorthand for {@link VersionAgnosticMigrationScript} for this specific MicroStream version. + * + * @author Johannes Rabauer + * + */ +public interface MigrationScript extends VersionAgnosticMigrationScript +{} diff --git a/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/TunnelingEmbeddedStorageManager.java b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/TunnelingEmbeddedStorageManager.java new file mode 100644 index 00000000..f55ede2c --- /dev/null +++ b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/TunnelingEmbeddedStorageManager.java @@ -0,0 +1,389 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.eclipse.store; + +import java.nio.ByteBuffer; +import java.util.Objects; +import java.util.function.Predicate; + +import org.eclipse.serializer.afs.types.AFile; +import org.eclipse.serializer.collections.types.XGettingEnum; +import org.eclipse.serializer.persistence.binary.types.Binary; +import org.eclipse.serializer.persistence.types.PersistenceManager; +import org.eclipse.serializer.persistence.types.PersistenceRootsView; +import org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryExporter; +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; +import org.eclipse.store.storage.exceptions.StorageException; +import org.eclipse.store.storage.types.Database; +import org.eclipse.store.storage.types.StorageConfiguration; +import org.eclipse.store.storage.types.StorageConnection; +import org.eclipse.store.storage.types.StorageEntityCacheEvaluator; +import org.eclipse.store.storage.types.StorageEntityTypeExportFileProvider; +import org.eclipse.store.storage.types.StorageEntityTypeExportStatistics; +import org.eclipse.store.storage.types.StorageEntityTypeHandler; +import org.eclipse.store.storage.types.StorageLiveFileProvider; +import org.eclipse.store.storage.types.StorageRawFileStatistics; +import org.eclipse.store.storage.types.StorageTypeDictionary; + +import software.xdev.micromigration.microstream.versionagnostic.VersionAgnosticTunnelingEmbeddedStorageManager; +import software.xdev.micromigration.version.Versioned; + +/** + * Wrapper class for the MicroStream {@code one.microstream.storage.embedded.types.EmbeddedStorageManager} interface. + *

      + * It simply relays all the commands to the contained {@link EmbeddedStorageManager}. + * + * @see VersionAgnosticTunnelingEmbeddedStorageManager + * + * @author Johannes Rabauer + * + */ +public class TunnelingEmbeddedStorageManager + implements + EmbeddedStorageManager, + VersionAgnosticTunnelingEmbeddedStorageManager +{ + /** + * The underlying, actual MicroStream EmbeddedStorageManager + */ + protected final EmbeddedStorageManager nativeManager; + + /** + * @param nativeManager which will be used as the underlying storage manager. + * All methods are only rerouted to this native manager. + * Only {@link #start()}, {@link #root()} and {@link #setRoot(Object)} are intercepted + * and a {@link Versioned} is placed between the requests. + */ + public TunnelingEmbeddedStorageManager( + final EmbeddedStorageManager nativeManager + ) + { + Objects.requireNonNull(nativeManager); + this.nativeManager = nativeManager; + } + + //////////////////////////////////////////////////////////////// + // Simply forward all the methods + //////////////////////////////////////////////////////////////// + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#start} + */ + @Override + public TunnelingEmbeddedStorageManager start() + { + this.nativeManager.start(); + return this; + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#root} + */ + @Override + public Object root() { + return this.nativeManager.root(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#setRoot(Object)} + */ + @Override + public Object setRoot(final Object newRoot) { + return this.nativeManager.setRoot(newRoot); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#storeRoot()} + */ + @Override + public long storeRoot() { + return this.nativeManager.storeRoot(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#configuration()} + */ + @Override + public StorageConfiguration configuration() + { + return this.nativeManager.configuration(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#typeDictionary()} + */ + @Override + public StorageTypeDictionary typeDictionary() + { + return this.nativeManager.typeDictionary(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#shutdown()} + */ + @Override + public boolean shutdown() + { + return this.nativeManager.shutdown(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#close()} + */ + @Override + public void close() throws StorageException + { + this.nativeManager.close(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createConnection()} + */ + @Override + public StorageConnection createConnection() + { + return this.nativeManager.createConnection(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#viewRoots()} + */ + @Override + public PersistenceRootsView viewRoots() + { + return this.nativeManager.viewRoots(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#database()} + */ + @Override + public Database database() + { + return this.nativeManager.database(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isAcceptingTasks()} + */ + @Override + public boolean isAcceptingTasks() + { + return this.nativeManager.isAcceptingTasks(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isRunning()} + */ + @Override + public boolean isRunning() + { + return this.nativeManager.isRunning(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isStartingUp()} + */ + @Override + public boolean isStartingUp() + { + return this.nativeManager.isStartingUp(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isShuttingDown()} + */ + @Override + public boolean isShuttingDown() + { + return this.nativeManager.isShuttingDown(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#checkAcceptingTasks()} + */ + @Override + public void checkAcceptingTasks() + { + this.nativeManager.checkAcceptingTasks(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#initializationTime()} + */ + @Override + public long initializationTime() + { + return this.nativeManager.initializationTime(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#operationModeTime()} + */ + @Override + public long operationModeTime() + { + return this.nativeManager.operationModeTime(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#isActive()} + */ + @Override + public boolean isActive() + { + return this.nativeManager.isActive(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueGarbageCollection(long)} + */ + @Override + public boolean issueGarbageCollection(final long nanoTimeBudget) + { + return this.nativeManager.issueGarbageCollection(nanoTimeBudget); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFileCheck(long)} + */ + @Override + public boolean issueFileCheck(final long nanoTimeBudget) + { + return this.nativeManager.issueFileCheck(nanoTimeBudget); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueCacheCheck(long, StorageEntityCacheEvaluator)} + */ + @Override + public boolean issueCacheCheck(final long nanoTimeBudget, final StorageEntityCacheEvaluator entityEvaluator) + { + return this.nativeManager.issueCacheCheck(nanoTimeBudget, entityEvaluator); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#createStorageStatistics} + */ + @Override + public StorageRawFileStatistics createStorageStatistics() + { + return this.nativeManager.createStorageStatistics(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportChannels(StorageLiveFileProvider)} + */ + @Override + public void exportChannels(final StorageLiveFileProvider fileProvider, final boolean performGarbageCollection) + { + this.nativeManager.exportChannels(fileProvider, performGarbageCollection); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#exportTypes(StorageEntityTypeExportFileProvider)} + */ + @Override + public StorageEntityTypeExportStatistics exportTypes( + final StorageEntityTypeExportFileProvider exportFileProvider, + final Predicate isExportType) + { + return this.nativeManager.exportTypes(exportFileProvider, isExportType); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#importFiles(XGettingEnum)} + */ + @Override + public void importFiles(final XGettingEnum importFiles) + { + this.nativeManager.importFiles(importFiles); + } + + @Override + public void importData(final XGettingEnum xGettingEnum) + { + this.nativeManager.importData(xGettingEnum); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#persistenceManager()} + */ + @Override + public PersistenceManager persistenceManager() + { + return this.nativeManager.persistenceManager(); + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#store(Object)} + */ + @Override + public long store(final Object instance) + { + return EmbeddedStorageManager.super.store(instance); + } + + @Override public EmbeddedStorageManager getNativeStorageManager() + { + return this.nativeManager; + } + + /** + * Simply tunneling the call through to the {@link EmbeddedStorageManager} given through the constructor. + * Please see {@link EmbeddedStorageManager#issueFullBackup(StorageLiveFileProvider, PersistenceTypeDictionaryExporter)} + */ + @Override + public void issueFullBackup( + final StorageLiveFileProvider targetFileProvider, + final PersistenceTypeDictionaryExporter typeDictionaryExporter) { + this.nativeManager.issueFullBackup(targetFileProvider, typeDictionaryExporter); + } + + @Override + public void issueTransactionsLogCleanup() + { + this.nativeManager.issueTransactionsLogCleanup(); + } +} diff --git a/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/package-info.java b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/package-info.java new file mode 100644 index 00000000..82c7e384 --- /dev/null +++ b/eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/package-info.java @@ -0,0 +1,19 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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. + */ +/** + * Provides classes to use micro migration for MicroStream v7 + */ + diff --git a/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java new file mode 100644 index 00000000..5bda1090 --- /dev/null +++ b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java @@ -0,0 +1,56 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Path; + +import org.eclipse.store.storage.embedded.types.EmbeddedStorage; +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; + +class IntroduceMigrationOnExistingDatastoreTest +{ + final static String ROOT = "OriginalRoot"; + + @Test + void testIntroducingMigrationOnExistingDatastore_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException + { + try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start(storageFolder)) + { + storageManager.setRoot(ROOT); + storageManager.storeRoot(); + } + + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(ROOT, migrationStorageManager.root()); + assertEquals(1, migrationStorageManager.getCurrentVersion().getVersions()[0]); + } + } +} diff --git a/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java new file mode 100644 index 00000000..fe0d8717 --- /dev/null +++ b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java @@ -0,0 +1,199 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +import org.eclipse.serializer.persistence.types.Storer; +import org.eclipse.store.storage.embedded.types.EmbeddedStorage; +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; +import software.xdev.micromigration.version.Versioned; +import software.xdev.micromigration.version.VersionedObject; + +class MigrationScriptAfterScriptTest +{ + @Test + void testMigrationWithThreeDifferenMigrater_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) throws IOException + { + //First run without any migration script + final ExplicitMigrater firstMigrater = new ExplicitMigrater(); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, firstMigrater)) + { + migrationStorageManager.setRoot(0); + migrationStorageManager.storeRoot(); + assertEquals(0, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(0), migrationStorageManager.getCurrentVersion()); + } + + + //Run with one migration script + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater secondMigrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, secondMigrater)) + { + assertEquals(1, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(1), migrationStorageManager.getCurrentVersion()); + } + + + //Run with two migration scripts + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater thirdMigrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + thirdMigrater)) + { + assertEquals(2, migrationStorageManager.root()); + Assertions.assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationAndUseStorer(@TempDir final Path storageFolder) throws IOException + { + final List firstList = new ArrayList<>(); + // Run with one migration script + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> + { + context.getStorageManager().setRoot(firstList); + firstList.add("1"); + final Storer storer = context.getStorageManager().getNativeStorageManager().createStorer(); + storer.store(firstList); + storer.commit(); + } + ); + + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start( + storageFolder, + migrater)) + { + assertEquals(1, ((List)migrationStorageManager.root()).size()); + } + } + + @Test + void testMigrationWithScriptExecutionNotification(@TempDir final Path storageFolder) throws IOException + { + final VersionAgnosticMigrationScript firstScript = + new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript); + final AtomicBoolean notificationReceived = new AtomicBoolean(false); + migrater.registerNotificationConsumer( + notification -> + { + Assertions.assertEquals(firstScript, notification.getExecutedScript()); + Assertions.assertEquals(new MigrationVersion(0), notification.getSourceVersion()); + Assertions.assertEquals(new MigrationVersion(1), notification.getTargetVersion()); + notificationReceived.set(true); + } + ); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertTrue(notificationReceived.get()); + } + } + + @Test + void testMigrationWithThreeDifferenMigrater_StandaloneMicroMigrationManager(@TempDir final Path storageFolder) throws IOException + { + //First run without any migration script + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) + { + final VersionedObject firstRoot = new VersionedObject<>(0); + storageManager.setRoot(firstRoot); + storageManager.storeRoot(); + assertEquals(Integer.valueOf(0), firstRoot.getObject()); + assertEquals(new MigrationVersion(0), firstRoot.getVersion()); + } + + + //Run with one migration script + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getMigratingObject().setObject(1) + ); + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManager( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(1), currentRoot.getObject()); + assertEquals(new MigrationVersion(1), currentRoot.getVersion()); + } + + + //Run with two migration scripts + final VersionAgnosticMigrationScript, MigrationEmbeddedStorageManager> secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getMigratingObject().setObject(2) + ); + try(final EmbeddedStorageManager storageManager = this.startEmbeddedStorageManagerWithPath(storageFolder)) + { + new MigrationManager( + (Versioned) storageManager.root(), + new ExplicitMigrater(firstScript, secondScript), + storageManager + ) + .migrate(storageManager.root()); + @SuppressWarnings("unchecked") + final VersionedObject currentRoot = (VersionedObject)storageManager.root(); + assertEquals(Integer.valueOf(2), currentRoot.getObject()); + assertEquals(new MigrationVersion(2), currentRoot.getVersion()); + } + } + + private EmbeddedStorageManager startEmbeddedStorageManagerWithPath(final Path storageFolder) + { + return EmbeddedStorage.start(storageFolder); + } + +} diff --git a/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java new file mode 100644 index 00000000..1eb21db0 --- /dev/null +++ b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java @@ -0,0 +1,90 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.migrater.VersionAlreadyRegisteredException; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +class MultipleScriptsTest +{ + @Test + void testMigrationWithTwoScriptsAtOnce_MigrationEmbeddedStorageManager(@TempDir final Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final ExplicitMigrater migrater = new ExplicitMigrater(firstScript, secondScript); + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + assertEquals(2, migrationStorageManager.root()); + assertEquals(new MigrationVersion(2), migrationStorageManager.getCurrentVersion()); + } + } + + @Test + void testMigrationWithTwoScriptsWithSameVersion(@TempDir final Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(2) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript) + ); + } + + @Test + void testMigrationWithThreeScriptsWithSameVersion(@TempDir final Path storageFolder) + { + final VersionAgnosticMigrationScript firstScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(1) + ); + final VersionAgnosticMigrationScript secondScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(2), + (context) -> context.getStorageManager().setRoot(2) + ); + final VersionAgnosticMigrationScript thirdScript = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> context.getStorageManager().setRoot(3) + ); + Assertions.assertThrows(VersionAlreadyRegisteredException.class, () -> + new ExplicitMigrater(firstScript, secondScript, thirdScript) + ); + } +} diff --git a/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java new file mode 100644 index 00000000..f00d94a0 --- /dev/null +++ b/eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java @@ -0,0 +1,74 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.integration; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import java.io.IOException; +import java.nio.file.Path; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.migrater.ExplicitMigrater; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +class StoreStuffInMigrationStorageManagerTest +{ + private static class RootClass + { + private final ChildClass child = new ChildClass(); + } + + private static class ChildClass + { + private int i = 0; + } + + @Test + void testStoringSomethingAfterUpdating(@TempDir final Path storageFolder) throws IOException + { + final VersionAgnosticMigrationScript script = new SimpleTypedMigrationScript<>( + new MigrationVersion(1), + (context) -> {} + ); + final ExplicitMigrater migrater = new ExplicitMigrater(script); + //Create new store and change stored object + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + migrationStorageManager.setRoot(new RootClass()); + migrationStorageManager.storeRoot(); + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertEquals(0, storedRoot.child.i); + ((RootClass)migrationStorageManager.root()).child.i = 1; + migrationStorageManager.store(storedRoot.child); + assertEquals(1, storedRoot.child.i); + } + //Check if stored object is correct + try(final MigrationEmbeddedStorageManager migrationStorageManager = MigrationEmbeddedStorage.start(storageFolder, migrater)) + { + final RootClass storedRoot = ((RootClass)migrationStorageManager.root()); + assertNotNull(storedRoot); + assertEquals(1, storedRoot.child.i); + } + } + +} diff --git a/eclipse-store-v1/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java b/eclipse-store-v1/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java new file mode 100644 index 00000000..3b16c300 --- /dev/null +++ b/eclipse-store-v1/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java @@ -0,0 +1,88 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.migrater; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.file.Path; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.SimpleTypedMigrationScript; +import software.xdev.micromigration.testUtil.MicroMigrationScriptDummy; +import software.xdev.micromigration.version.MigrationVersion; + +class ExplicitMigraterTest +{ + + @Test + void testGetSortedScripts_empty() + { + final ExplicitMigrater migrater = new ExplicitMigrater(); + assertEquals(0,migrater.getSortedScripts().size()); + } + + @Test + void testGetSortedScripts_sorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(1)), + new MicroMigrationScriptDummy(new MigrationVersion(2)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testGetSortedScripts_unsorted() + { + final ExplicitMigrater migrater = new ExplicitMigrater( + new MicroMigrationScriptDummy(new MigrationVersion(2)), + new MicroMigrationScriptDummy(new MigrationVersion(1)) + ); + assertEquals(1, migrater.getSortedScripts().first().getTargetVersion().getVersions()[0]); + assertEquals(2, migrater.getSortedScripts().last().getTargetVersion().getVersions()[0]); + } + + @Test + void testWrongTypedVersionedScript(@TempDir final Path storageFolder) + { + try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(storageFolder, new ExplicitMigrater())) + { + storageManager.setRoot("SomeString"); + storageManager.storeRoot(); + } + final ExplicitMigrater migrater = new ExplicitMigrater( + new SimpleTypedMigrationScript( + new MigrationVersion(1), + (context) -> { + context.getStorageManager().setRoot(context.getMigratingObject() + 1); + } + ) + ); + Assertions.assertThrows(ClassCastException.class, () -> + { + MigrationEmbeddedStorage.start(storageFolder, migrater); + } + ); + + } + +} diff --git a/eclipse-store-v1/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java b/eclipse-store-v1/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java new file mode 100644 index 00000000..7a82664c --- /dev/null +++ b/eclipse-store-v1/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java @@ -0,0 +1,42 @@ +/* + * Copyright © 2021 XDEV Software GmbH (https://xdev.software) + * + * 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 software.xdev.micromigration.testUtil; + +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.scripts.Context; +import software.xdev.micromigration.scripts.VersionAgnosticMigrationScript; +import software.xdev.micromigration.version.MigrationVersion; + +public class MicroMigrationScriptDummy implements VersionAgnosticMigrationScript +{ + private final MigrationVersion version; + + public MicroMigrationScriptDummy(final MigrationVersion version) + { + this.version = version; + } + + @Override + public MigrationVersion getTargetVersion() + { + return this.version; + } + + @Override + public void migrate(final Context context) { + // Don't do anything. + } +} diff --git a/examples/pom.xml b/examples/pom.xml index 2f30f616..5e65f823 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,13 +4,13 @@ 4.0.0 software.xdev micro-migration-examples - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with MicroStream v7 software.xdev - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 7c1f4885..3cb1a7c2 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 6b44d282..999b6ea0 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 6b4b018e..5e6c385f 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT diff --git a/microstream-v8/pom.xml b/microstream-v8/pom.xml index fd5a0284..c9b67c1b 100644 --- a/microstream-v8/pom.xml +++ b/microstream-v8/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v8 - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV8 Provides the micro migration support for MicroStream version 8 @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT diff --git a/pom.xml b/pom.xml index 32d9d1bc..d16f74f8 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT software.xdev micro-migration MicroMigration @@ -59,6 +59,7 @@ microstream-v6 microstream-v7 microstream-v8 + eclipse-store-v1 diff --git a/reflection/README.md b/reflection/README.md index c2ad3b86..eb3d6ef2 100644 --- a/reflection/README.md +++ b/reflection/README.md @@ -16,6 +16,6 @@ Simply add the dependency to your `pom.xml`: software.xdev micro-migration-reflection - 0.0.2 + 1.0.0 -``` \ No newline at end of file +``` diff --git a/reflection/pom.xml b/reflection/pom.xml index fa05f55a..58448aee 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection @@ -15,7 +15,7 @@ software.xdev micro-migration - 0.0.10-SNAPSHOT + 1.0.0-SNAPSHOT diff --git a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java index 1b867130..db60fc70 100644 --- a/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java +++ b/reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java @@ -60,7 +60,7 @@ public ReflectiveMigrater(final String packagePath) throws ScriptInstantiationEx for(final Class scriptClass : reflections.getSubTypesOf( VersionAgnosticMigrationScript.class)) { - // Only instanciate non abstract classes + // Only instanciate non-abstract classes if(!Modifier.isAbstract(scriptClass.getModifiers())) { final VersionAgnosticMigrationScript instanciatedScript = this.instanciateClass(scriptClass); From 2396718a3df7ed0d78886580d3204776b67c4571 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 08:29:03 +0100 Subject: [PATCH 254/306] Updated example to eclipse store --- examples/pom.xml | 2 +- .../examples/explicit/MainExplicit.java | 16 +++++----- .../explicit/scripts/UpdateToV1_0.java | 10 +++--- .../explicit/scripts/UpdateToV1_1.java | 8 ++--- .../notification/MainNotification.java | 19 ++++++------ ...alWithMigrationEmbeddedStorageManager.java | 19 +++++------- .../practical/embedded/UpdateToV1_0.java | 22 +++++++------ .../practical/embedded/UpdateToV2_0.java | 8 ++--- .../MainPracticalWithMigrationManager.java | 31 ++++++++++--------- .../migrationManager/UpdateToV1_0.java | 18 +++++------ .../migrationManager/UpdateToV2_0.java | 8 ++--- .../examples/reflective/MainReflective.java | 4 +-- .../reflective/scripts/UpdateToV1_0.java | 8 ++--- .../reflective/scripts/UpdateToV1_1.java | 8 ++--- 14 files changed, 91 insertions(+), 90 deletions(-) diff --git a/examples/pom.xml b/examples/pom.xml index 5e65f823..67b9b8c8 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -17,7 +17,7 @@ software.xdev - micro-migration-microstream-v8 + micro-migration-eclipse-store-v1 ${project.version} diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java index 697e7fab..c4811f9b 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java @@ -18,28 +18,26 @@ import java.util.Date; import java.util.logging.Logger; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_0; import software.xdev.micromigration.examples.explicit.scripts.UpdateToV1_1; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.migrater.ExplicitMigrater; /** - * The most basic usage of micro migration. - * Here two {@link MigrationScript}s are explicitly registered - * and subsequently executed. Easy. + * The most basic usage of micro migration. Here two {@link MigrationScript}s are explicitly registered and subsequently + * executed. Easy. * * @author Johannes Rabauer - * */ public class MainExplicit { public static void main(final String[] args) { final ExplicitMigrater migrater = new ExplicitMigrater( - new UpdateToV1_0(), - new UpdateToV1_1() + new UpdateToV1_0(), + new UpdateToV1_1() ); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); Logger.getGlobal().info(storageManager.root().toString()); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java index 6f8f0b37..9dba4671 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java @@ -18,19 +18,19 @@ import java.util.Date; import java.util.logging.Logger; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; public class UpdateToV1_0 implements MigrationScript { @Override - public MigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,0); + return new MigrationVersion(1, 0); } - + @Override public void migrate(final Context context) { diff --git a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java index 3ef34283..6e0ff6b9 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java @@ -18,17 +18,17 @@ import java.util.Date; import java.util.logging.Logger; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; public class UpdateToV1_1 implements MigrationScript { @Override - public MigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,1); + return new MigrationVersion(1, 1); } @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java index 070e38b8..4bc12886 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java @@ -18,15 +18,14 @@ import java.util.Date; import java.util.logging.Logger; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; /** - * Shows the basic registration of migration notifications - * ({@link ScriptExecutionNotification}). + * Shows the basic registration of migration notifications ({@link ScriptExecutionNotification}). * * @author Johannes Rabauer */ @@ -35,10 +34,12 @@ public class MainNotification public static void main(final String[] args) { final ExplicitMigrater migrater = new ExplicitMigrater( - new MainNotification.UpdateToV1_0() + new MainNotification.UpdateToV1_0() ); migrater.registerNotificationConsumer( - scriptExecutionNotification -> Logger.getGlobal().info("Script " + scriptExecutionNotification.getExecutedScript().getClass().getSimpleName() + " executed.") + scriptExecutionNotification -> Logger.getGlobal() + .info("Script " + scriptExecutionNotification.getExecutedScript().getClass().getSimpleName() + + " executed.") ); final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migrater); Logger.getGlobal().info(storageManager.root().toString()); @@ -49,16 +50,16 @@ public static void main(final String[] args) storageManager.storeRoot(); storageManager.shutdown(); } - + static class UpdateToV1_0 implements software.xdev.micromigration.scripts.VersionAgnosticMigrationScript { @Override public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,0); + return new MigrationVersion(1, 0); } - + @Override public void migrate(final Context context) { diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java index 02d05f61..243b1401 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java @@ -17,9 +17,9 @@ import java.util.logging.Logger; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ExplicitMigrater; /** @@ -31,14 +31,14 @@ *

    • v2.0: A new customer is added through the {@link UpdateToV2_0} script. *
    * The storage is restarted after every update to simulate a complete lifecycle of the datastore. - * @author Johannes Rabauer * + * @author Johannes Rabauer */ public class MainPracticalWithMigrationEmbeddedStorageManager { public static void main(final String[] args) { - //V0.0 + // V0.0 final ExplicitMigrater emptyMigrater = new ExplicitMigrater(); try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(emptyMigrater)) { @@ -47,19 +47,17 @@ public static void main(final String[] args) Logger.getGlobal().info(storageManager.root().toString()); } - - //V1.0 + // V1.0 final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV1)) { Logger.getGlobal().info(storageManager.root().toString()); } - - //V2.0 + // V2.0 final ExplicitMigrater migraterWithV2 = new ExplicitMigrater( - new UpdateToV1_0(), - new UpdateToV2_0() + new UpdateToV1_0(), + new UpdateToV2_0() ); try(final MigrationEmbeddedStorageManager storageManager = MigrationEmbeddedStorage.start(migraterWithV2)) { @@ -67,5 +65,4 @@ public static void main(final String[] args) } } - } diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java index e6dc2460..00aecf51 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java @@ -17,38 +17,40 @@ import java.util.logging.Logger; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; public class UpdateToV1_0 implements MigrationScript { @Override - public MigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,0); + return new MigrationVersion(1, 0); } @Override - public void migrate(final Context context) + public void migrate(final Context context) { Logger.getGlobal().info("Executing Script for v1.0..."); - final software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = context.getMigratingObject(); + final software.xdev.micromigration.examples.practical.v0.BusinessBranch oldBranch = + context.getMigratingObject(); final BusinessBranch newBranch = - new BusinessBranch(); - for (final software.xdev.micromigration.examples.practical.v0.Customer oldCustomer : oldBranch.customers) + new BusinessBranch(); + for(final software.xdev.micromigration.examples.practical.v0.Customer oldCustomer : oldBranch.customers) { final Customer newCustomer = - new Customer(); + new Customer(); newCustomer.name = oldCustomer.name; newCustomer.address = new Address(); newCustomer.address.number = oldCustomer.number; newCustomer.address.street = oldCustomer.street; - newCustomer.address.city = oldCustomer.city ; + newCustomer.address.city = oldCustomer.city; newBranch.customers.add(newCustomer); } context.getStorageManager().setRoot(newBranch); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java index c547e70d..bbdfbd8d 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java @@ -17,19 +17,19 @@ import java.util.logging.Logger; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; public class UpdateToV2_0 implements MigrationScript { @Override - public MigrationVersion getTargetVersion() + public MigrationVersion getTargetVersion() { - return new MigrationVersion(2,0); + return new MigrationVersion(2, 0); } @Override diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java index babc3f32..e9054525 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java @@ -17,10 +17,11 @@ import java.util.logging.Logger; -import one.microstream.storage.embedded.types.EmbeddedStorage; -import one.microstream.storage.embedded.types.EmbeddedStorageManager; +import org.eclipse.store.storage.embedded.types.EmbeddedStorage; +import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager; + +import software.xdev.micromigration.eclipse.store.MigrationManager; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; -import software.xdev.micromigration.microstream.MigrationManager; import software.xdev.micromigration.migrater.ExplicitMigrater; import software.xdev.micromigration.version.VersionedObject; @@ -28,15 +29,16 @@ * A practical example of usage in a few steps: *
      *
    • v0.0: Storage is created without any updates. Only stores a new {@link BusinessBranch} - *
    • v1.0: The BusinessBranch has a new implementation {@link software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch}. + *
    • v1.0: The BusinessBranch has a new implementation + * {@link software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch}. * The old branch is converted to the new implementation through the {@link UpdateToV1_0} script. *
    • v2.0: A new customer is added through the {@link UpdateToV2_0} script. *
    * The storage is restarted after every update to simulate a complete lifecycle of the datastore. - * @author Johannes Rabauer * + * @author Johannes Rabauer */ -public class MainPracticalWithMigrationManager +public class MainPracticalWithMigrationManager { /** * Suppressed Warning "unchecked" because it is given, that the correct object is returned. @@ -44,32 +46,33 @@ public class MainPracticalWithMigrationManager @SuppressWarnings("unchecked") public static void main(final String[] args) { - //V0.0 + // V0.0 try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { - final VersionedObject versionedBranch = new VersionedObject<>(BusinessBranch.createDummyBranch()); + final VersionedObject versionedBranch = + new VersionedObject<>(BusinessBranch.createDummyBranch()); storageManager.setRoot(versionedBranch); storageManager.storeRoot(); Logger.getGlobal().info(storageManager.root().toString()); } - - //V1.0 + // V1.0 try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { final ExplicitMigrater migraterWithV1 = new ExplicitMigrater(new UpdateToV1_0()); - final VersionedObject versionedBranch = (VersionedObject)storageManager.root(); + final VersionedObject versionedBranch = + (VersionedObject)storageManager.root(); new MigrationManager(versionedBranch, migraterWithV1, storageManager) .migrate(versionedBranch); Logger.getGlobal().info(storageManager.root().toString()); } - - //V2.0 + // V2.0 try(final EmbeddedStorageManager storageManager = EmbeddedStorage.start()) { final ExplicitMigrater migraterWithV2 = new ExplicitMigrater(new UpdateToV1_0(), new UpdateToV2_0()); - final VersionedObject versionedBranch = (VersionedObject)storageManager.root(); + final VersionedObject versionedBranch = + (VersionedObject)storageManager.root(); new MigrationManager(versionedBranch, migraterWithV2, storageManager) .migrate(versionedBranch); Logger.getGlobal().info(storageManager.root().toString()); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java index b75efb99..ebfd2272 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java @@ -17,11 +17,11 @@ import java.util.logging.Logger; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.examples.practical.v0.BusinessBranch; import software.xdev.micromigration.examples.practical.v0.Customer; import software.xdev.micromigration.examples.practical.v1AndHigher.Address; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; @@ -31,27 +31,27 @@ public class UpdateToV1_0 implements MigrationScript> @Override public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,0); + return new MigrationVersion(1, 0); } - + @Override public void migrate(final Context, MigrationEmbeddedStorageManager> context) { Logger.getGlobal().info("Executing Script for v1.0..."); final VersionedObject versionedBranch = context.getMigratingObject(); final BusinessBranch oldBranch = - (BusinessBranch) versionedBranch.getObject(); + (BusinessBranch)versionedBranch.getObject(); final software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch newBranch = - new software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch(); - for (final Customer oldCustomer : oldBranch.customers) + new software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch(); + for(final Customer oldCustomer : oldBranch.customers) { final software.xdev.micromigration.examples.practical.v1AndHigher.Customer newCustomer = - new software.xdev.micromigration.examples.practical.v1AndHigher.Customer(); + new software.xdev.micromigration.examples.practical.v1AndHigher.Customer(); newCustomer.name = oldCustomer.name; newCustomer.address = new Address(); newCustomer.address.number = oldCustomer.number; newCustomer.address.street = oldCustomer.street; - newCustomer.address.city = oldCustomer.city ; + newCustomer.address.city = oldCustomer.city; newBranch.customers.add(newCustomer); } versionedBranch.setObject(newBranch); diff --git a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java index 8a1b737c..b4aff4a5 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java @@ -17,10 +17,10 @@ import java.util.logging.Logger; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.examples.practical.v1AndHigher.BusinessBranch; import software.xdev.micromigration.examples.practical.v1AndHigher.Customer; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; import software.xdev.micromigration.version.VersionedObject; @@ -30,9 +30,9 @@ public class UpdateToV2_0 implements MigrationScript, MigrationEmbeddedStorageManager> context) { diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java index c524c0e9..ca069891 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java @@ -18,8 +18,8 @@ import java.util.Date; import java.util.logging.Logger; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorage; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorage; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; import software.xdev.micromigration.migrater.ReflectiveMigrater; import software.xdev.micromigration.migrater.ScriptInstantiationException; diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java index 00e83c95..0e5568d6 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java @@ -18,8 +18,8 @@ import java.util.Date; import java.util.logging.Logger; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; @@ -28,9 +28,9 @@ public class UpdateToV1_0 implements MigrationScript @Override public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,0); + return new MigrationVersion(1, 0); } - + @Override public void migrate(final Context context) { diff --git a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java index 17b9d7d7..129c9aa0 100644 --- a/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java +++ b/examples/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java @@ -18,8 +18,8 @@ import java.util.Date; import java.util.logging.Logger; -import software.xdev.micromigration.microstream.MigrationEmbeddedStorageManager; -import software.xdev.micromigration.microstream.MigrationScript; +import software.xdev.micromigration.eclipse.store.MigrationEmbeddedStorageManager; +import software.xdev.micromigration.eclipse.store.MigrationScript; import software.xdev.micromigration.scripts.Context; import software.xdev.micromigration.version.MigrationVersion; @@ -28,9 +28,9 @@ public class UpdateToV1_1 implements MigrationScript @Override public MigrationVersion getTargetVersion() { - return new MigrationVersion(1,1); + return new MigrationVersion(1, 1); } - + @Override public void migrate(final Context context) { From 55a04a940d3c360fb9aaa6c3d239ff143e104e10 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 08:30:14 +0100 Subject: [PATCH 255/306] Updated secrets in env --- .github/workflows/publish-dry-run.yml | 1 + .github/workflows/release.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/publish-dry-run.yml b/.github/workflows/publish-dry-run.yml index 37c31721..bf33ecbe 100644 --- a/.github/workflows/publish-dry-run.yml +++ b/.github/workflows/publish-dry-run.yml @@ -25,4 +25,5 @@ jobs: JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} JRELEASER_NEXUS2_MAVEN_CENTRAL_SNAPSHOT_URL: https://s01.oss.sonatype.org/content/repositories/snapshots/ + JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 44a44cc3..cb3fb081 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -99,6 +99,7 @@ jobs: JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} + JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy after_release: runs-on: ubuntu-latest From 9a04df0713de5fbae27062dff33455c6a92bcd13 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 08:49:09 +0100 Subject: [PATCH 256/306] Added URLs to each module to appease maven central --- core/pom.xml | 1 + eclipse-store-v1/pom.xml | 1 + examples/pom.xml | 3 ++- microstream-v5/pom.xml | 1 + microstream-v6/pom.xml | 1 + microstream-v7/pom.xml | 1 + microstream-v8/pom.xml | 1 + reflection/pom.xml | 1 + 8 files changed, 9 insertions(+), 1 deletion(-) diff --git a/core/pom.xml b/core/pom.xml index 75c4da31..c254421a 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream + https://github.com/xdev-software/micro-migration software.xdev diff --git a/eclipse-store-v1/pom.xml b/eclipse-store-v1/pom.xml index 5c617caf..5c0d73bd 100644 --- a/eclipse-store-v1/pom.xml +++ b/eclipse-store-v1/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-for-EclipseStoreV1 Provides the micro migration support for EclipseStore version 1 + https://github.com/xdev-software/micro-migration 1.1.0 diff --git a/examples/pom.xml b/examples/pom.xml index 67b9b8c8..2c1d3ddc 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -6,7 +6,8 @@ micro-migration-examples 1.0.0-SNAPSHOT MicroMigration-Examples - Examples for the MicroMigration-Library with MicroStream v7 + Examples for the MicroMigration-Library with EclipseStore + https://github.com/xdev-software/micro-migration software.xdev diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 3cb1a7c2..ece3eacb 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 + https://github.com/xdev-software/micro-migration 05.00.02-MS-GA diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 999b6ea0..04853ecd 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 + https://github.com/xdev-software/micro-migration 06.01.00-MS-GA diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 5e6c385f..48295d02 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 + https://github.com/xdev-software/micro-migration 07.01.00-MS-GA diff --git a/microstream-v8/pom.xml b/microstream-v8/pom.xml index c9b67c1b..8ff49a8a 100644 --- a/microstream-v8/pom.xml +++ b/microstream-v8/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-for-MicroStreamV8 Provides the micro migration support for MicroStream version 8 + https://github.com/xdev-software/micro-migration 08.01.01-MS-GA diff --git a/reflection/pom.xml b/reflection/pom.xml index 58448aee..e97bf4a8 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -7,6 +7,7 @@ 1.0.0-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection + https://github.com/xdev-software/micro-migration 05.00.02-MS-GA From 58b5470a9cca7016a1dc3512f130d21356403b82 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 12 Feb 2024 08:16:26 +0000 Subject: [PATCH 257/306] Release 1.0.0 --- core/pom.xml | 4 ++-- eclipse-store-v1/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- microstream-v8/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index c254421a..103ab355 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-core - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-Core Migration Lib for MicroStream https://github.com/xdev-software/micro-migration @@ -12,6 +12,6 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 diff --git a/eclipse-store-v1/pom.xml b/eclipse-store-v1/pom.xml index 5c0d73bd..6d30ed4e 100644 --- a/eclipse-store-v1/pom.xml +++ b/eclipse-store-v1/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-eclipse-store-v1 - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-for-EclipseStoreV1 Provides the micro migration support for EclipseStore version 1 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 diff --git a/examples/pom.xml b/examples/pom.xml index 2c1d3ddc..f76125fc 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-examples - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-Examples Examples for the MicroMigration-Library with EclipseStore https://github.com/xdev-software/micro-migration software.xdev - 1.0.0-SNAPSHOT + 1.0.0 micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index ece3eacb..6c76370e 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index 04853ecd..ad2206a3 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index 48295d02..fe22cab2 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 diff --git a/microstream-v8/pom.xml b/microstream-v8/pom.xml index 8ff49a8a..143d26eb 100644 --- a/microstream-v8/pom.xml +++ b/microstream-v8/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v8 - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-for-MicroStreamV8 Provides the micro migration support for MicroStream version 8 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 diff --git a/pom.xml b/pom.xml index d16f74f8..3fcc54b9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 1.0.0-SNAPSHOT + 1.0.0 software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index e97bf4a8..ed63152e 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 1.0.0-SNAPSHOT + 1.0.0 MicroMigration-Reflection Provides a migrater based on reflection https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0-SNAPSHOT + 1.0.0 From 6d94c9f0b3f8d874c4370545fae31312175f8ab7 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 12 Feb 2024 08:26:11 +0000 Subject: [PATCH 258/306] Preparing for next development iteration --- core/pom.xml | 4 ++-- eclipse-store-v1/pom.xml | 4 ++-- examples/pom.xml | 4 ++-- microstream-v5/pom.xml | 4 ++-- microstream-v6/pom.xml | 4 ++-- microstream-v7/pom.xml | 4 ++-- microstream-v8/pom.xml | 4 ++-- pom.xml | 2 +- reflection/pom.xml | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index 103ab355..5c2dbc6e 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-core - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-Core Migration Lib for MicroStream https://github.com/xdev-software/micro-migration @@ -12,6 +12,6 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT diff --git a/eclipse-store-v1/pom.xml b/eclipse-store-v1/pom.xml index 6d30ed4e..bdc33494 100644 --- a/eclipse-store-v1/pom.xml +++ b/eclipse-store-v1/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-eclipse-store-v1 - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-for-EclipseStoreV1 Provides the micro migration support for EclipseStore version 1 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT diff --git a/examples/pom.xml b/examples/pom.xml index f76125fc..0a3e20c8 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -4,14 +4,14 @@ 4.0.0 software.xdev micro-migration-examples - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-Examples Examples for the MicroMigration-Library with EclipseStore https://github.com/xdev-software/micro-migration software.xdev - 1.0.0 + 1.0.1-SNAPSHOT micro-migration diff --git a/microstream-v5/pom.xml b/microstream-v5/pom.xml index 6c76370e..8ae86ce9 100644 --- a/microstream-v5/pom.xml +++ b/microstream-v5/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v5 - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-for-MicroStreamV5 Provides the micro migration support for MicroStream version 5 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT diff --git a/microstream-v6/pom.xml b/microstream-v6/pom.xml index ad2206a3..9276b364 100644 --- a/microstream-v6/pom.xml +++ b/microstream-v6/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v6 - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-for-MicroStreamV6 Provides the micro migration support for MicroStream version 6 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT diff --git a/microstream-v7/pom.xml b/microstream-v7/pom.xml index fe22cab2..cf9e25a8 100644 --- a/microstream-v7/pom.xml +++ b/microstream-v7/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v7 - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-for-MicroStreamV7 Provides the micro migration support for MicroStream version 7 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT diff --git a/microstream-v8/pom.xml b/microstream-v8/pom.xml index 143d26eb..ec92ed0a 100644 --- a/microstream-v8/pom.xml +++ b/microstream-v8/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-microstream-v8 - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-for-MicroStreamV8 Provides the micro migration support for MicroStream version 8 https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index 3fcc54b9..9847d0c3 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - 1.0.0 + 1.0.1-SNAPSHOT software.xdev micro-migration MicroMigration diff --git a/reflection/pom.xml b/reflection/pom.xml index ed63152e..2ada23a2 100644 --- a/reflection/pom.xml +++ b/reflection/pom.xml @@ -4,7 +4,7 @@ 4.0.0 software.xdev micro-migration-reflection - 1.0.0 + 1.0.1-SNAPSHOT MicroMigration-Reflection Provides a migrater based on reflection https://github.com/xdev-software/micro-migration @@ -16,7 +16,7 @@ software.xdev micro-migration - 1.0.0 + 1.0.1-SNAPSHOT From 5ebb87bb7e1021435c78e8530c961766fa91d493 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 09:36:25 +0100 Subject: [PATCH 259/306] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cb3fb081..c5fa0cc4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,7 +69,7 @@ jobs: ```XML software.xdev - micro-migration-microstream-v8 + micro-migration-eclipse-store-v1 ${{ steps.version.outputs.release }} ``` From 5d59a93834269a06a44bf8623f43006668b0ad31 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 09:49:28 +0100 Subject: [PATCH 260/306] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 846f6156..c354079d 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ To keep these datastores to represent the correspondend data for the code is a h That's why migration frameworks like [Flyway](https://flywaydb.org) and [Liquibase](https://www.liquibase.org/) exist. Unfortunately both these frameworks are designed to support any type of SQL databases but no NoSQL -databases like [MicroStream](https://microstream.one/). This led to the creation of this library. +databases like [MicroStream](https://microstream.one/) / [EclipseStore](https://eclipsestore.io/). This led to the creation of this library. This library delivers an easy concept to keep your MicroStream / EclipseStore datastore versioned with migration scripts written in plain java. @@ -90,7 +90,7 @@ public class UpdateToV1_0 implements MigrationScript ### MigrationManager Although the approach with the `MigrationEmbeddedStorageManager` is pretty easy to handle, it is intrusive -in the way, that it replaces the root entry point of the MicroStream datastore and inserts its own `VersionedRoot` as root. Some users might find this too entrusive. +in the way, that it replaces the root entry point of the MicroStream/EclipseStore datastore and inserts its own `VersionedRoot` as root. Some users might find this too entrusive. That's why a second approach can be used, where the `MigrationManager` is used. This class is also used internally by the `MigrationEmbeddedStorageManager`. @@ -156,7 +156,7 @@ Micro migration currently supports the following MicroStream / EclipseStore vers |------------------------------------------------------------------------------------------------------------|----------------------------------| | [1.1.0](https://central.sonatype.com/artifact/org.eclipse.store/storage/1.1.0) | micro-migration-eclipse-store-v1 | -If you are using a different, not listed version of MicroStream, this shouldn't be a problem. +If you are using a different, not listed version of MicroStream/EclipseStore, this shouldn't be a problem. Usually you can simply use the closest Micro migration version (f.e. you are using MicroStream `08.00.00-MS-GA`, then use `micro-migration-microstream-v8`) and exclude the dependent version of MicroStream vom Micro migration: ```xml From 518cb58643a2a2b8015161079ccdfcd4d0ba7e22 Mon Sep 17 00:00:00 2001 From: JohannesRabauer Date: Mon, 12 Feb 2024 09:52:05 +0100 Subject: [PATCH 261/306] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c354079d..8cbaef85 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.com/artifact/software.xdev/micro-migration/0.0.4/versions) +[![Latest version](https://img.shields.io/maven-central/v/software.xdev/micro-migration)](https://central.sonatype.com/artifact/software.xdev/micro-migration/) [![Build](https://img.shields.io/github/actions/workflow/status/xdev-software/micro-migration/checkBuild.yml?branch=develop)](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop) [![javadoc core](https://javadoc.io/badge2/software.xdev/micro-migration-core/javadoc.svg)](https://javadoc.io/doc/software.xdev/micro-migration-core) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/6816/badge)](https://bestpractices.coreinfrastructure.org/projects/6816) From 9daa2965b7dce803995df1c7cbdb7ca3ee7f3996 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 10:13:32 +0200 Subject: [PATCH 262/306] Create update-from-template.yml #228 --- .github/workflows/update-from-template.yml | 93 ++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 .github/workflows/update-from-template.yml diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml new file mode 100644 index 00000000..3d35a5cd --- /dev/null +++ b/.github/workflows/update-from-template.yml @@ -0,0 +1,93 @@ +name: Update from Template + +# This workflow keeps the repo up to date with changes from the template repo (REMOTE_URL) +# It duplicates the REMOTE_BRANCH (into UPDATE_BRANCH) and tries to merge it into the +# this repos default branch (which is checked out here) +# Note that this requires a PAT (Personal Access Token) - at best from a servicing account +# Also note that you should have at least once merged the template repo into the current repo manually +# otherwise a "refusing to merge unrelated histories" error might occur. + +on: + schedule: + - cron: '55 2 * * 1' + workflow_dispatch: + +env: + UPDATE_BRANCH: update-from-template + REMOTE_URL: https://github.com/xdev-software/base-template.git + REMOTE_BRANCH: master + +permissions: + contents: write + pull-requests: write + +jobs: + update: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + # Required because otherwise there are always changes detected when executing diff/rev-list + fetch-depth: 0 + # If no PAT is used the following error occurs on a push: + # refusing to allow a GitHub App to create or update workflow `.github/workflows/xxx.yml` without `workflows` permission + token: ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }} + + - name: Init Git + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + + - name: Main workflow + id: main + run: | + echo "Adding remote template-repo" + git remote add template ${{ env.REMOTE_URL }} + + echo "Fetching remote template repo" + git fetch template + + echo "Deleting local branch that will contain the updates - if present" + git branch -D ${{ env.UPDATE_BRANCH }} || true + + echo "Checking if the remote template repo has new commits" + git rev-list ..template/${{ env.REMOTE_BRANCH }} + + if [ $(git rev-list --count ..template/${{ env.REMOTE_BRANCH }}) -eq 0 ]; then + echo "There are no commits new commits on the template repo" + + echo "Deleting origin branch that contains the updates - if present" + git push -f origin --delete ${{ env.UPDATE_BRANCH }} || true + + echo "abort=1" >> $GITHUB_OUTPUT + exit 0 + fi + + echo "Found new commits on the template repo" + + echo "Creating update branch" + git branch ${{ env.UPDATE_BRANCH }} template/${{ env.REMOTE_BRANCH }} + git branch --unset-upstream ${{ env.UPDATE_BRANCH }} + + echo "Pushing update branch" + git push -f -u origin ${{ env.UPDATE_BRANCH }} + + echo "Getting current branch" + current_branch=$(git branch --show-current) + echo "Current branch is $current_branch" + echo "current_branch=$current_branch" >> $GITHUB_OUTPUT + + echo "abort=0" >> $GITHUB_OUTPUT + + - name: pull-request + if: steps.main.outputs.abort == 0 + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh_pr_up() { + gh pr create -H "${{ env.UPDATE_BRANCH }}" "$@" || (git checkout "${{ env.UPDATE_BRANCH }}" && gh pr edit "$@") + } + gh_pr_up -B "${{ steps.main.outputs.current_branch }}" \ + --title "Update from template" \ + --body "An automated PR to sync changes from the template into this repo" From 3498e28fc0d22a211e177ffd2ca3f0475affdbc2 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 10:21:20 +0200 Subject: [PATCH 263/306] Sync https://github.com/xdev-software/standard-maven-template --- CODE_OF_CONDUCT.md | 133 --------------------------------------- CONTRIBUTING.md | 69 ++++++++++---------- README.md | 39 +----------- pull_request_template.md | 4 -- 4 files changed, 38 insertions(+), 207 deletions(-) delete mode 100644 CODE_OF_CONDUCT.md delete mode 100644 pull_request_template.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 30529370..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,133 +0,0 @@ - -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -opensource@xdev-software.de. -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9d779ac9..2045b684 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,47 +1,48 @@ -# Contributing to Micro migration +## Contributing -We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's: +We would absolutely love to get the community involved, and we welcome any form of contributions – comments and questions on different communication channels, issues and pull request and anything that you build and share using our components. -- **Reporting a bug**: File issues on GitHub. -- **Send pull requests**: If you want to contribute code, check out the development instructions below. -- **Discussing the current state of the code** -- **Submitting a fix** -- **Proposing new features** -- **Becoming a maintainer** +### Communication channels +* Communication is primarily done using issues. +* If you need support as soon as possible and you can't wait for any pull request, feel free to use [our support](https://xdev.software/en/services/support). +* As a last resort measure or on otherwise important matter you may also [contact us directly](https://xdev.software/en/about-us/contact). -We encourage you to read the [contribution instructions by GitHub](https://guides.github.com/activities/contributing-to-open-source/#contributing) also. +### Ways to help +* **Report bugs**
    Create an issue or send a pull request +* **Send pull requests**
    If you want to contribute code, check out the development instructions below. + * However when contributing new features, please first discuss the change you wish to make via issue with the owners of this repository before making a change. Otherwise your work might be rejected and your effort was pointless. -## We Develop with Github +We also encourage you to read the [contribution instructions by GitHub](https://docs.github.com/en/get-started/quickstart/contributing-to-projects). -We use GitHub to host code, to track issues and feature requests, as well as accept pull requests. +## Developing -## All Code Changes Happen Through Pull Requests +### Software Requirements +You should have the following things installed: +* Git +* Java 21 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/)) +* Maven (Note that the [Maven Wrapper](https://maven.apache.org/wrapper/) is shipped with the repo) -Pull requests are the best way to propose changes to the codebase. We actively welcome your pull requests: +### Recommended setup +* Install ``IntelliJ`` (Community Edition is sufficient) + * Install the following plugins: + * [Save Actions](https://plugins.jetbrains.com/plugin/22113) - Provides save actions, like running the formatter or adding ``final`` to fields + * [SonarLint](https://plugins.jetbrains.com/plugin/7973-sonarlint) - CodeStyle/CodeAnalysis + * [Checkstyle-IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea) - CodeStyle/CodeAnalysis + * Import the project + * Ensure that everything is encoded in ``UTF-8`` + * Ensure that the JDK/Java-Version is correct -1. Fork the repo and create your branch from `main`. -2. If you've added code that should be tested, add tests. -3. If you've changed APIs, update the documentation. -4. Ensure the test suite passes. -5. Issue that pull request! -## Any contributions you make will be under the Apache-2.0 license +## Releasing -In short, when you submit code changes, your submissions are understood to be under the same [Apache-2.0 license](https://github.com/xdev-software/micro-migration/blob/main/LICENSE) that covers the project. Feel free to contact the maintainers if that's a concern. +Before releasing: -## Report bugs using Github's [issues](https://github.com/xdev-software/micro-migration/issues) +* Check if the [Check Build](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop)-Action was successful. +* Check the [changelog](CHANGELOG.md) -We use GitHub issues to track public bugs. Report a bug by opening a new issue, it's that easy! +If the ``develop`` is ready for release, create a pull request to the ``main``-Branch and merge the changes -### Get in touch with the team - -Twitter: https://twitter.com/xdevsoftware -Mail: opensource@xdev-software.de - -## License - -By contributing, you agree that your contributions will be licensed under its Apache-2.0 license. - -## Code of Conduct - -Please follow our [Code of Conduct](CODE_OF_CONDUCT.md). \ No newline at end of file +When the release is finished do the following: +* Merge the auto-generated PR (with the incremented version number) back into the ``develop`` +* Login to the [Sonatype repository manager](https://s01.oss.sonatype.org/), check the staged libraries, + close the repository and publish it (after a few minutes). diff --git a/README.md b/README.md index 8cbaef85..795825ba 100644 --- a/README.md +++ b/README.md @@ -178,41 +178,8 @@ then use `micro-migration-microstream-v8`) and exclude the dependent version of ``` Since there is rarely a breaking change, this works 90% of times. -## Releasing - -Before releasing: - -* Check if the [Check Build](https://github.com/xdev-software/micro-migration/actions/workflows/checkBuild.yml?query=branch%3Adevelop)-Action was successful. -* Check the [changelog](CHANGELOG.md) - -If the ``develop`` is ready for release, create a pull request to the ``main``-Branch and merge the changes - -When the release is finished do the following: -* Merge the auto-generated PR (with the incremented version number) back into the ``develop`` -* Login to the [Sonatype repository manager](https://s01.oss.sonatype.org/), check the staged libraries, - close the repository and publish it (after a few minutes). - -## Developing - -### Software Requirements -You should have the following things installed: -* Git -* Java 9 -* Maven - -### Recommended setup -* Install ``IntelliJ`` (Community Edition is sufficient) - * Install the following plugins: - * [Save Actions](https://plugins.jetbrains.com/plugin/7642-save-actions) - Provides save actions, like running the formatter or adding ``final`` to fields - * [SonarLint](https://plugins.jetbrains.com/plugin/7973-sonarlint) - CodeStyle/CodeAnalysis - * [Checkstyle-IDEA](https://plugins.jetbrains.com/plugin/1065-checkstyle-idea) - CodeStyle/CodeAnalysis. Uses this [checkstyle](config/checkstyle.xml). - * Import the project - * Ensure that everything is encoded in ``UTF-8`` - * Ensure that the JDK/Java-Version is correct - -## Links -- [Javadoc](https://javadoc.io/doc/software.xdev/micro-migration-core/latest/index.html) -- [Maven central repository](https://central.sonatype.dev/artifact/software.xdev/micro-migration/0.0.4/version) +## Support +If you need support as soon as possible and you can't wait for any pull request, feel free to use [our support](https://xdev.software/en/services/support). ## Contributing -We would love your input in any way. More about contributing: [CONTRIBUTING.md](CONTRIBUTING.md) +See the [contributing guide](./CONTRIBUTING.md) for detailed instructions on how to get started with our project. diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 149f9339..00000000 --- a/pull_request_template.md +++ /dev/null @@ -1,4 +0,0 @@ -## What does this PR do? - -## Checklist before merging -- [ ] If its a core feature, I have added through test. \ No newline at end of file From 98aaf0c5d733af388a06b9af42ed9379da60f57d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:13 +0000 Subject: [PATCH 264/306] Update dependency org.apache.maven.plugins:maven-checkstyle-plugin to v3.3.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..b5f04aa1 100644 --- a/pom.xml +++ b/pom.xml @@ -296,7 +296,7 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.3.0 + 3.3.1 com.puppycrawl.tools From c96797221e62de5a8ac82b2159157d595ffefd77 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:15 +0000 Subject: [PATCH 265/306] Update dependency org.apache.maven.plugins:maven-source-plugin to v3.3.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..ac821dde 100644 --- a/pom.xml +++ b/pom.xml @@ -109,7 +109,7 @@ org.apache.maven.plugins maven-source-plugin - 3.3.0 + 3.3.1 attach-source From a81ce9f25a50b9e39657f5d07a61d460e5d1b9f2 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:20 +0000 Subject: [PATCH 266/306] Update microstream.version to v08.01.02-MS-GA --- microstream-v8/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microstream-v8/pom.xml b/microstream-v8/pom.xml index ec92ed0a..a918f7fa 100644 --- a/microstream-v8/pom.xml +++ b/microstream-v8/pom.xml @@ -10,7 +10,7 @@ https://github.com/xdev-software/micro-migration - 08.01.01-MS-GA + 08.01.02-MS-GA From 1d758af46e3f09c837ebd8ba50b77cc2350557a8 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:22 +0000 Subject: [PATCH 267/306] Update dependency com.puppycrawl.tools:checkstyle to v10.15.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..348e32e0 100644 --- a/pom.xml +++ b/pom.xml @@ -301,7 +301,7 @@ com.puppycrawl.tools checkstyle - 10.9.3 + 10.15.0 From 00f0bdecb2e8e01e4041a1cec32a4065e97de7a1 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:26 +0000 Subject: [PATCH 268/306] Update dependency de.thetaphi:forbiddenapis to v3.7 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..af32432e 100644 --- a/pom.xml +++ b/pom.xml @@ -265,7 +265,7 @@ de.thetaphi forbiddenapis - 3.6 + 3.7 From 5e0d80a817b33a3e697a5571619efa10f41f4ca3 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:28 +0000 Subject: [PATCH 269/306] Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.13.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..28f15742 100644 --- a/pom.xml +++ b/pom.xml @@ -148,7 +148,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.11.0 + 3.13.0 ${java.version} ${java.version} From b5a695fe96eedfe3c29c67bb7b82f90983f630be Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:30 +0000 Subject: [PATCH 270/306] Update dependency org.apache.maven.plugins:maven-enforcer-plugin to v3.4.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..9eb02d87 100644 --- a/pom.xml +++ b/pom.xml @@ -212,7 +212,7 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.3.0 + 3.4.1 From bb04e66675f39b13da0fd921f5ed1eff3579d300 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:32:31 +0000 Subject: [PATCH 271/306] Update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.6.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 9847d0c3..0fab6a05 100644 --- a/pom.xml +++ b/pom.xml @@ -91,7 +91,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.5.0 + 3.6.3 ${java.version} UTF-8 From 7647474f61e9a0af72bbe4c8077682be3431a305 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 10:36:00 +0200 Subject: [PATCH 272/306] Consolidate junit --- pom.xml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index b0dc12b8..16f50a81 100644 --- a/pom.xml +++ b/pom.xml @@ -65,14 +65,8 @@ org.junit.jupiter - junit-jupiter-api - 5.10.0 - test - - - org.junit.jupiter - junit-jupiter-engine - 5.10.0 + junit-jupiter + 5.10.2 test From cbeb49f188f657f08669fb31002d9c6b5df14263 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:37:15 +0000 Subject: [PATCH 273/306] Update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.2.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 16f50a81..d1bc48bb 100644 --- a/pom.xml +++ b/pom.xml @@ -322,7 +322,7 @@ maven-surefire-plugin - 3.1.2 + 3.2.5 org.apache.maven.plugins From e069d0961de2d3465545859f008aa038b822e92d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:37:17 +0000 Subject: [PATCH 274/306] Update dependency org.codehaus.mojo:extra-enforcer-rules to v1.8.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 16f50a81..b08c51f0 100644 --- a/pom.xml +++ b/pom.xml @@ -247,7 +247,7 @@ org.codehaus.mojo extra-enforcer-rules - 1.7.0 + 1.8.0 From 628c5c980f1e71e255649fa744ef39864204fe33 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:37:24 +0000 Subject: [PATCH 275/306] Update org.eclipse.store.version to v1.3.1 --- eclipse-store-v1/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eclipse-store-v1/pom.xml b/eclipse-store-v1/pom.xml index bdc33494..7d7cbcf3 100644 --- a/eclipse-store-v1/pom.xml +++ b/eclipse-store-v1/pom.xml @@ -10,7 +10,7 @@ https://github.com/xdev-software/micro-migration - 1.1.0 + 1.3.1 From f593cc87b9be224562342f87a1b4e1c77ea59008 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:37:26 +0000 Subject: [PATCH 276/306] Update actions/checkout action to v4 --- .github/workflows/checkBuild.yml | 2 +- .github/workflows/publish-dry-run.yml | 2 +- .github/workflows/release.yml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 981cbffa..448fcf5e 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -22,7 +22,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v3 diff --git a/.github/workflows/publish-dry-run.yml b/.github/workflows/publish-dry-run.yml index bf33ecbe..3df21019 100644 --- a/.github/workflows/publish-dry-run.yml +++ b/.github/workflows/publish-dry-run.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Java diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c5fa0cc4..7f581e81 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v3 with: @@ -30,7 +30,7 @@ jobs: outputs: upload_url: ${{ steps.create_draft.outputs.upload_url }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Configure Git run: | @@ -78,7 +78,7 @@ jobs: needs: [prepare_release] steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 # This might seem strange, but in order to see the Version update from the previous step, # we must pull this change from git. - name: Init Git and pull @@ -105,7 +105,7 @@ jobs: runs-on: ubuntu-latest needs: [publish_central] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Init Git and pull run: | From d8d591297ec61c18e4a66d9965583ee5518e2784 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:37:28 +0000 Subject: [PATCH 277/306] Update actions/setup-java action to v4 --- .github/workflows/checkBuild.yml | 2 +- .github/workflows/publish-dry-run.yml | 2 +- .github/workflows/release.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 981cbffa..82fff95a 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -25,7 +25,7 @@ jobs: - uses: actions/checkout@v3 - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: distribution: ${{ matrix.distribution }} java-version: ${{ matrix.java }} diff --git a/.github/workflows/publish-dry-run.yml b/.github/workflows/publish-dry-run.yml index bf33ecbe..1076e014 100644 --- a/.github/workflows/publish-dry-run.yml +++ b/.github/workflows/publish-dry-run.yml @@ -12,7 +12,7 @@ jobs: with: fetch-depth: 0 - name: Set up Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c5fa0cc4..e068f202 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 - name: Set up Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' @@ -87,7 +87,7 @@ jobs: git config --global user.name "GitHub Actions" git pull - name: Set up Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: '11' distribution: 'temurin' From 12baf9dd08cba41c850706c017a0464d0437865b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 08:37:30 +0000 Subject: [PATCH 278/306] Update actions/upload-artifact action to v4 --- .github/workflows/checkBuild.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index 981cbffa..2d6519d9 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -53,7 +53,7 @@ jobs: exit 1 fi - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: jars-java-${{ matrix.java }} path: target/*.jar From d62d5796b859f3490faa842b998bd8e4e40fffd4 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 10:48:25 +0200 Subject: [PATCH 279/306] Reconfigure microstream --- renovate.json5 | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 11a77b2a..1bead5c3 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -1,4 +1,17 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "rebaseWhen": "behind-base-branch" + "rebaseWhen": "behind-base-branch", + "packageRules": [ + { + "description": "Ignore MicroStream < 8", + "matchPackagePatterns": [ + "^one.microstream" + ], + "datasources": [ + "maven" + ], + "matchCurrentVersion": "<8", + "enabled": false + } + ] } From 89b320ee441eb7659cb28194ed72fb6494a3405f Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 11:10:52 +0200 Subject: [PATCH 280/306] Update renovate.json5 --- renovate.json5 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 1bead5c3..1335d2c4 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -5,7 +5,7 @@ { "description": "Ignore MicroStream < 8", "matchPackagePatterns": [ - "^one.microstream" + "^one.microstream:*" ], "datasources": [ "maven" From a58a99dee640ce5298dea2a79b353eea23ec4494 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 11:18:26 +0200 Subject: [PATCH 281/306] Update renovate.json5 --- renovate.json5 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/renovate.json5 b/renovate.json5 index 1335d2c4..43709cc3 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -5,12 +5,11 @@ { "description": "Ignore MicroStream < 8", "matchPackagePatterns": [ - "^one.microstream:*" + "^one.microstream" ], "datasources": [ "maven" ], - "matchCurrentVersion": "<8", "enabled": false } ] From 3c24262cd00db121ae926bb907196834e065a69d Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 11 Apr 2024 11:26:01 +0200 Subject: [PATCH 282/306] Update renovate.json5 --- renovate.json5 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/renovate.json5 b/renovate.json5 index 43709cc3..f1e6bb50 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -3,13 +3,15 @@ "rebaseWhen": "behind-base-branch", "packageRules": [ { - "description": "Ignore MicroStream < 8", + "description": "Ignore MicroStream != 8", "matchPackagePatterns": [ "^one.microstream" ], "datasources": [ "maven" ], + // matchCurrentVersion does not work as MicroStream doesn't use SEMVER + "matchCurrentValue": "!/^08\\./", "enabled": false } ] From 96cd60d046cfe80b976640253ddce9f83467982d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 11 Apr 2024 09:27:19 +0000 Subject: [PATCH 283/306] Update dependency org.jreleaser:jreleaser-maven-plugin to v1.11.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c635eff9..f0bb3772 100644 --- a/pom.xml +++ b/pom.xml @@ -116,7 +116,7 @@ org.jreleaser jreleaser-maven-plugin - 1.8.0 + 1.11.0 From 362bc02eee29067984b771c0b1edc818553d0307 Mon Sep 17 00:00:00 2001 From: Alex B <45384811+AB-xdev@users.noreply.github.com> Date: Mon, 15 Apr 2024 17:09:29 +0200 Subject: [PATCH 284/306] Delete .github/dependabot.yml --- .github/dependabot.yml | 38 -------------------------------------- 1 file changed, 38 deletions(-) delete mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 9c7f53a0..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,38 +0,0 @@ -version: 2 -updates: -- package-ecosystem: maven - directory: "/core" - schedule: - interval: "weekly" -- package-ecosystem: maven - directory: "/examples" - schedule: - interval: "weekly" -- package-ecosystem: maven - directory: "/reflection" - schedule: - interval: "weekly" - # Ignore the version, because it is only used for testing - ignore: - - dependency-name: "one.microstream:microstream-storage-embedded" - - dependency-name: "one.microstream:microstream-storage-configuration" -- package-ecosystem: maven - directory: "/microstream-v5" - schedule: - interval: "weekly" - # Ignore the version, because this is supposed to be for old MicroStream versions - ignore: - - dependency-name: "one.microstream:microstream-storage-embedded" - - dependency-name: "one.microstream:microstream-storage-configuration" -- package-ecosystem: maven - directory: "/microstream-v6" - schedule: - interval: "weekly" - # Ignore the version, because this is supposed to be for old MicroStream versions - ignore: - - dependency-name: "one.microstream:microstream-storage-embedded" - - dependency-name: "one.microstream:microstream-storage-configuration" -- package-ecosystem: maven - directory: "/microstream-v7" - schedule: - interval: "weekly" \ No newline at end of file From c8cb7973f906ea0ca07351f3daf0cef7f50cc1eb Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 23 Apr 2024 09:49:15 +0200 Subject: [PATCH 285/306] Rename I --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 34b9514d..ad1a2fce 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,4 +2,4 @@ ## Reporting a Vulnerability -Please report a security vulnerability [on GitHub Security Advisories](https://github.com/xdev-software/template-placeholder/security/advisories/new). +Please report a security vulnerability [on GitHub Security Advisories](https://github.com/xdev-software/micro-migration/security/advisories/new). From 09d7391f08b782b86389d84caeeba5e0551cc8c0 Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 8 May 2024 14:58:04 +0200 Subject: [PATCH 286/306] Update to v2 --- .gitattributes | 7 + .github/ISSUE_TEMPLATE/bug_report.md | 35 -- .github/ISSUE_TEMPLATE/feature_request.md | 20 - .github/workflows/checkBuild.yml | 52 +- .github/workflows/publish-dry-run.yml | 29 -- .github/workflows/release.yml | 186 ++++--- .github/workflows/sonar.yml | 65 +++ .github/workflows/test-deploy.yml | 32 ++ .github/workflows/update-from-template.yml | 2 +- .gitignore | 143 ++---- .idea/checkstyle-idea.xml | 2 +- .idea/saveactions_settings.xml | 2 +- .mvn/wrapper/maven-wrapper.properties | 17 + CHANGELOG.md | 9 +- CONTRIBUTING.md | 10 +- README.md | 105 +--- {docs => assets}/Logo.png | Bin {docs => assets}/Logo2.png | Bin {docs => assets}/MigrationSequence.drawio | 0 {docs => assets}/MigrationSequence_1.png | Bin {docs => assets}/MigrationSequence_2.png | Bin {docs => assets}/MigrationSequence_3.png | Bin {docs => assets}/MigrationSequence_4.png | Bin config/checkstyle.xml | 311 ------------ core/.idea/.gitignore | 10 - core/.idea/checkstyle-idea.xml | 16 - core/.idea/encodings.xml | 8 - core/pom.xml | 17 - .../migrater/MicroMigrater.java | 110 ----- eclipse-store-v1/pom.xml | 53 -- .../eclipse/store/MigrationScript.java | 34 -- .../eclipse/store/package-info.java | 19 - .../MigrationScriptAfterScriptTest.java | 199 -------- ...oreStuffInMigrationStorageManagerTest.java | 74 --- .../migrater/ExplicitMigraterTest.java | 88 ---- examples/pom.xml | 49 -- {examples => micro-migration-demo}/README.md | 0 micro-migration-demo/pom.xml | 88 ++++ .../examples/explicit/MainExplicit.java | 22 +- .../explicit/scripts/UpdateToV1_0.java | 14 +- .../explicit/scripts/UpdateToV1_1.java | 13 +- .../notification/MainNotification.java | 18 +- ...alWithMigrationEmbeddedStorageManager.java | 23 +- .../practical/embedded/UpdateToV1_0.java | 11 +- .../practical/embedded/UpdateToV2_0.java | 6 +- .../MainPracticalWithMigrationManager.java | 23 +- .../migrationManager/UpdateToV1_0.java | 15 +- .../migrationManager/UpdateToV2_0.java | 15 +- .../examples/practical/v0/BusinessBranch.java | 31 +- .../examples/practical/v0/Customer.java | 10 +- .../practical/v1AndHigher/Address.java | 8 +- .../practical/v1AndHigher/BusinessBranch.java | 17 +- .../practical/v1AndHigher/Customer.java | 4 +- .../examples/reflective/MainReflective.java | 31 +- .../reflective/scripts/UpdateToV1_0.java | 14 +- .../reflective/scripts/UpdateToV1_1.java | 14 +- micro-migration/pom.xml | 285 +++++++++++ .../MigrationEmbeddedStorage.java | 49 +- .../MigrationEmbeddedStorageManager.java | 24 +- .../eclipsestore}/MigrationManager.java | 49 +- .../eclipsestore}/MigrationScript.java | 14 +- .../TunnelingEmbeddedStorageManager.java | 242 +++++---- .../eclipsestore}/package-info.java | 2 +- .../migrater/AbstractMigrater.java | 64 ++- .../migrater/ExplicitMigrater.java | 21 +- .../migrater/MicroMigrater.java | 103 ++++ .../VersionAlreadyRegisteredException.java | 46 +- .../reflection/ReflectiveMigrater.java | 149 ++++++ .../ScriptInstantiationException.java | 18 +- .../AbstractScriptExecutionNotification.java | 53 +- ...cutionNotificationWithScriptReference.java | 20 +- ...ionNotificationWithoutScriptReference.java | 2 - .../xdev/micromigration/scripts/Context.java | 22 +- .../ReflectiveVersionMigrationScript.java | 69 +-- .../scripts/SimpleMigrationScript.java | 20 +- .../scripts/SimpleTypedMigrationScript.java | 21 +- .../VersionAgnosticMigrationScript.java | 23 +- .../version/MigrationVersion.java | 60 +-- .../micromigration/version/Versioned.java | 8 +- .../version/VersionedAndKeeperOfHistory.java | 3 - .../version/VersionedObject.java | 28 +- .../version/VersionedObjectWithHistory.java | 14 +- .../micromigration/version/VersionedRoot.java | 2 - .../version/VersionedRootWithHistory.java | 3 - ...nosticMigrationEmbeddedStorageManager.java | 55 ++- .../VersionAgnosticMigrationManager.java | 121 ++--- ...nosticTunnelingEmbeddedStorageManager.java | 46 +- ...oduceMigrationOnExistingDatastoreTest.java | 22 +- .../MigrationScriptAfterScriptTest.java | 59 ++- .../integration/MultipleScriptsTest.java | 66 +-- ...oreStuffInMigrationStorageManagerTest.java | 42 +- .../migrater/ExplicitMigraterTest.java | 48 +- .../util}/MicroMigrationScriptDummy.java | 15 +- .../reflection}/ReflectiveMigraterTest.java | 90 ++-- .../AbstractScript.java | 5 +- .../v1_ValidScript.java | 10 +- .../abstractSuperClass/AbstractScript.java | 10 +- .../abstractSuperClass/ValidScript.java | 9 +- .../errorThrowing/ErrorThrowingScript.java | 24 +- .../ExceptionThrowingScript.java | 24 +- .../includeSubPackages/ValidScript.java | 23 +- .../subpackage/ValidScriptInSubpackage.java | 37 ++ .../IrrelevantClass.java | 5 +- .../ValidScript.java | 37 ++ .../NoCorrectConstructorScript.java | 14 +- .../reflectiveVersion/v1_ValidScript.java | 10 +- .../reflection/scripts/valid/ValidScript.java | 37 ++ .../ReflectiveVersionMigrationScriptTest.java | 175 ++++--- .../version/MigrationVersionTest.java | 13 +- microstream-v5/pom.xml | 66 --- .../microstream/MigrationEmbeddedStorage.java | 104 ---- .../MigrationEmbeddedStorageManager.java | 49 -- .../microstream/MigrationManager.java | 72 --- .../microstream/MigrationScript.java | 34 -- .../TunnelingEmbeddedStorageManager.java | 386 --------------- .../microstream/package-info.java | 19 - ...oduceMigrationOnExistingDatastoreTest.java | 57 --- .../integration/MigrationHistoryTest.java | 53 -- .../integration/MultipleScriptsTest.java | 90 ---- ...oreStuffInMigrationStorageManagerTest.java | 74 --- microstream-v6/pom.xml | 66 --- .../microstream/MigrationEmbeddedStorage.java | 104 ---- .../MigrationEmbeddedStorageManager.java | 49 -- .../microstream/MigrationManager.java | 72 --- .../microstream/MigrationScript.java | 34 -- .../TunnelingEmbeddedStorageManager.java | 386 --------------- .../microstream/package-info.java | 19 - ...oduceMigrationOnExistingDatastoreTest.java | 56 --- .../MigrationScriptAfterScriptTest.java | 199 -------- .../integration/MultipleScriptsTest.java | 90 ---- ...oreStuffInMigrationStorageManagerTest.java | 74 --- .../migrater/ExplicitMigraterTest.java | 88 ---- microstream-v7/pom.xml | 66 --- .../microstream/MigrationEmbeddedStorage.java | 104 ---- .../MigrationEmbeddedStorageManager.java | 49 -- .../microstream/MigrationManager.java | 72 --- .../TunnelingEmbeddedStorageManager.java | 386 --------------- ...oduceMigrationOnExistingDatastoreTest.java | 56 --- .../MigrationScriptAfterScriptTest.java | 199 -------- .../integration/MultipleScriptsTest.java | 90 ---- .../migrater/ExplicitMigraterTest.java | 88 ---- microstream-v8/pom.xml | 66 --- .../microstream/MigrationEmbeddedStorage.java | 104 ---- .../MigrationEmbeddedStorageManager.java | 49 -- .../microstream/MigrationManager.java | 72 --- .../microstream/MigrationScript.java | 34 -- .../TunnelingEmbeddedStorageManager.java | 382 --------------- .../microstream/package-info.java | 19 - ...oduceMigrationOnExistingDatastoreTest.java | 56 --- .../MigrationScriptAfterScriptTest.java | 199 -------- .../integration/MultipleScriptsTest.java | 90 ---- ...oreStuffInMigrationStorageManagerTest.java | 74 --- .../migrater/ExplicitMigraterTest.java | 88 ---- .../testUtil/MicroMigrationScriptDummy.java | 42 -- mvnw | 250 ++++++++++ mvnw.cmd | 146 ++++++ pom.xml | 462 ++---------------- reflection/README.md | 21 - reflection/pom.xml | 40 -- .../migrater/ReflectiveMigrater.java | 99 ---- .../errorThrowing/ErrorThrowingScript.java | 41 -- .../ExceptionThrowingScript.java | 41 -- .../includeSubPackages/ValidScript.java | 36 -- .../subpackage/ValidScriptInSubpackage.java | 36 -- .../ValidScript.java | 36 -- .../migrater/scripts/valid/ValidScript.java | 36 -- renovate.json5 | 16 +- 167 files changed, 2667 insertions(+), 7711 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/workflows/publish-dry-run.yml create mode 100644 .github/workflows/sonar.yml create mode 100644 .github/workflows/test-deploy.yml create mode 100644 .mvn/wrapper/maven-wrapper.properties rename {docs => assets}/Logo.png (100%) rename {docs => assets}/Logo2.png (100%) rename {docs => assets}/MigrationSequence.drawio (100%) rename {docs => assets}/MigrationSequence_1.png (100%) rename {docs => assets}/MigrationSequence_2.png (100%) rename {docs => assets}/MigrationSequence_3.png (100%) rename {docs => assets}/MigrationSequence_4.png (100%) delete mode 100644 config/checkstyle.xml delete mode 100644 core/.idea/.gitignore delete mode 100644 core/.idea/checkstyle-idea.xml delete mode 100644 core/.idea/encodings.xml delete mode 100644 core/pom.xml delete mode 100644 core/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java delete mode 100644 eclipse-store-v1/pom.xml delete mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/MigrationScript.java delete mode 100644 eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store/package-info.java delete mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java delete mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java delete mode 100644 eclipse-store-v1/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java delete mode 100644 examples/pom.xml rename {examples => micro-migration-demo}/README.md (100%) create mode 100644 micro-migration-demo/pom.xml rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/explicit/MainExplicit.java (78%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_0.java (74%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/explicit/scripts/UpdateToV1_1.java (75%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/notification/MainNotification.java (81%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/embedded/MainPracticalWithMigrationEmbeddedStorageManager.java (78%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV1_0.java (85%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/embedded/UpdateToV2_0.java (89%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/MainPracticalWithMigrationManager.java (86%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV1_0.java (84%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/migrationManager/UpdateToV2_0.java (80%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/v0/BusinessBranch.java (69%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/v0/Customer.java (84%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Address.java (88%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/BusinessBranch.java (77%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/practical/v1AndHigher/Customer.java (92%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/reflective/MainReflective.java (61%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_0.java (74%) rename {examples => micro-migration-demo}/src/main/java/software/xdev/micromigration/examples/reflective/scripts/UpdateToV1_1.java (74%) create mode 100644 micro-migration/pom.xml rename {eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store => micro-migration/src/main/java/software/xdev/micromigration/eclipsestore}/MigrationEmbeddedStorage.java (72%) rename {eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store => micro-migration/src/main/java/software/xdev/micromigration/eclipsestore}/MigrationEmbeddedStorageManager.java (68%) rename {eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store => micro-migration/src/main/java/software/xdev/micromigration/eclipsestore}/MigrationManager.java (55%) rename {microstream-v7/src/main/java/software/xdev/micromigration/microstream => micro-migration/src/main/java/software/xdev/micromigration/eclipsestore}/MigrationScript.java (82%) rename {eclipse-store-v1/src/main/java/software/xdev/micromigration/eclipse/store => micro-migration/src/main/java/software/xdev/micromigration/eclipsestore}/TunnelingEmbeddedStorageManager.java (67%) rename {microstream-v7/src/main/java/software/xdev/micromigration/microstream => micro-migration/src/main/java/software/xdev/micromigration/eclipsestore}/package-info.java (93%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/migrater/AbstractMigrater.java (77%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/migrater/ExplicitMigrater.java (73%) create mode 100644 micro-migration/src/main/java/software/xdev/micromigration/migrater/MicroMigrater.java rename {core => micro-migration}/src/main/java/software/xdev/micromigration/migrater/VersionAlreadyRegisteredException.java (62%) create mode 100644 micro-migration/src/main/java/software/xdev/micromigration/migrater/reflection/ReflectiveMigrater.java rename {reflection/src/main/java/software/xdev/micromigration/migrater => micro-migration/src/main/java/software/xdev/micromigration/migrater/reflection}/ScriptInstantiationException.java (68%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/notification/AbstractScriptExecutionNotification.java (63%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithScriptReference.java (87%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/notification/ScriptExecutionNotificationWithoutScriptReference.java (98%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/scripts/Context.java (79%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScript.java (59%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/scripts/SimpleMigrationScript.java (70%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/scripts/SimpleTypedMigrationScript.java (74%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/scripts/VersionAgnosticMigrationScript.java (77%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/MigrationVersion.java (70%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/Versioned.java (93%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/VersionedAndKeeperOfHistory.java (97%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/VersionedObject.java (80%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/VersionedObjectWithHistory.java (92%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/VersionedRoot.java (98%) rename {core => micro-migration}/src/main/java/software/xdev/micromigration/version/VersionedRootWithHistory.java (98%) rename {core/src/main/java/software/xdev/micromigration/microstream => micro-migration/src/main/java/software/xdev/micromigration}/versionagnostic/VersionAgnosticMigrationEmbeddedStorageManager.java (84%) rename {core/src/main/java/software/xdev/micromigration/microstream => micro-migration/src/main/java/software/xdev/micromigration}/versionagnostic/VersionAgnosticMigrationManager.java (53%) rename {core/src/main/java/software/xdev/micromigration/microstream => micro-migration/src/main/java/software/xdev/micromigration}/versionagnostic/VersionAgnosticTunnelingEmbeddedStorageManager.java (90%) rename {eclipse-store-v1/src/test/java/software/xdev/micromigration => micro-migration/src/test/java/software/xdev/micromigration/eclipsestore}/integration/IntroduceMigrationOnExistingDatastoreTest.java (71%) rename {microstream-v5/src/test/java/software/xdev/micromigration => micro-migration/src/test/java/software/xdev/micromigration/eclipsestore}/integration/MigrationScriptAfterScriptTest.java (80%) rename {eclipse-store-v1/src/test/java/software/xdev/micromigration => micro-migration/src/test/java/software/xdev/micromigration/eclipsestore}/integration/MultipleScriptsTest.java (69%) rename {microstream-v7/src/test/java/software/xdev/micromigration => micro-migration/src/test/java/software/xdev/micromigration/eclipsestore}/integration/StoreStuffInMigrationStorageManagerTest.java (73%) rename {microstream-v5/src/test/java/software/xdev/micromigration => micro-migration/src/test/java/software/xdev/micromigration/eclipsestore}/migrater/ExplicitMigraterTest.java (70%) rename {eclipse-store-v1/src/test/java/software/xdev/micromigration/testUtil => micro-migration/src/test/java/software/xdev/micromigration/eclipsestore/util}/MicroMigrationScriptDummy.java (79%) rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/ReflectiveMigraterTest.java (57%) rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/abstractReflectiveSuperClass/AbstractScript.java (82%) rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/abstractReflectiveSuperClass/v1_ValidScript.java (70%) rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/abstractSuperClass/AbstractScript.java (64%) rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/abstractSuperClass/ValidScript.java (73%) rename microstream-v5/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection/scripts/errorThrowing/ErrorThrowingScript.java (64%) rename microstream-v6/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection/scripts/exceptionThrowing/ExceptionThrowingScript.java (64%) rename microstream-v7/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection/scripts/includeSubPackages/ValidScript.java (64%) create mode 100644 micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/moreClassesIncludingValid/IrrelevantClass.java (83%) create mode 100644 micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection/scripts/moreClassesIncludingValid/ValidScript.java rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/noCorrectConstructor/NoCorrectConstructorScript.java (72%) rename {reflection/src/test/java/software/xdev/micromigration/migrater => micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection}/scripts/reflectiveVersion/v1_ValidScript.java (74%) create mode 100644 micro-migration/src/test/java/software/xdev/micromigration/migrater/reflection/scripts/valid/ValidScript.java rename {core => micro-migration}/src/test/java/software/xdev/micromigration/scripts/ReflectiveVersionMigrationScriptTest.java (53%) rename {core => micro-migration}/src/test/java/software/xdev/micromigration/version/MigrationVersionTest.java (91%) delete mode 100644 microstream-v5/pom.xml delete mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java delete mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java delete mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java delete mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java delete mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java delete mode 100644 microstream-v5/src/main/java/software/xdev/micromigration/microstream/package-info.java delete mode 100644 microstream-v5/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java delete mode 100644 microstream-v5/src/test/java/software/xdev/micromigration/integration/MigrationHistoryTest.java delete mode 100644 microstream-v5/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java delete mode 100644 microstream-v5/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java delete mode 100644 microstream-v6/pom.xml delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java delete mode 100644 microstream-v6/src/main/java/software/xdev/micromigration/microstream/package-info.java delete mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java delete mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java delete mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java delete mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java delete mode 100644 microstream-v6/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java delete mode 100644 microstream-v7/pom.xml delete mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java delete mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java delete mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java delete mode 100644 microstream-v7/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java delete mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java delete mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java delete mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java delete mode 100644 microstream-v7/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java delete mode 100644 microstream-v8/pom.xml delete mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorage.java delete mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationEmbeddedStorageManager.java delete mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationManager.java delete mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/MigrationScript.java delete mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/TunnelingEmbeddedStorageManager.java delete mode 100644 microstream-v8/src/main/java/software/xdev/micromigration/microstream/package-info.java delete mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/IntroduceMigrationOnExistingDatastoreTest.java delete mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/MigrationScriptAfterScriptTest.java delete mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/MultipleScriptsTest.java delete mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/integration/StoreStuffInMigrationStorageManagerTest.java delete mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/migrater/ExplicitMigraterTest.java delete mode 100644 microstream-v8/src/test/java/software/xdev/micromigration/testUtil/MicroMigrationScriptDummy.java create mode 100644 mvnw create mode 100644 mvnw.cmd delete mode 100644 reflection/README.md delete mode 100644 reflection/pom.xml delete mode 100644 reflection/src/main/java/software/xdev/micromigration/migrater/ReflectiveMigrater.java delete mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/errorThrowing/ErrorThrowingScript.java delete mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/exceptionThrowing/ExceptionThrowingScript.java delete mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/ValidScript.java delete mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/includeSubPackages/subpackage/ValidScriptInSubpackage.java delete mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/moreClassesIncludingValid/ValidScript.java delete mode 100644 reflection/src/test/java/software/xdev/micromigration/migrater/scripts/valid/ValidScript.java diff --git a/.gitattributes b/.gitattributes index dfe07704..9c74e428 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,9 @@ # Auto detect text files and perform LF normalization * text=auto + +# Force sh files to have LF +*.sh text eol=lf + +# Force MVN Wrapper Linux files LF +mvnw text eol=lf +.mvn/wrapper/maven-wrapper.properties text eol=lf diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index d9cdd08a..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: bug -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Implemented Micro migration like this... -2. Started datastore... -3. Restarted datastore... - - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Environment (please complete the following information):** - - OS: [e.g. Windows 10, Ubuntu] - - Java version [e.g. Java 11] - - IDE [e.g. eclipse, intellij] - - MicroStream version [e.g. 07.01.00-MS-GA] - - Micro migration version [e.g. 22] - - Maven pom.xml [relevant parts] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7d..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/workflows/checkBuild.yml b/.github/workflows/checkBuild.yml index d958e655..fa9b7f5d 100644 --- a/.github/workflows/checkBuild.yml +++ b/.github/workflows/checkBuild.yml @@ -6,10 +6,22 @@ on: branches: [ develop ] paths-ignore: - '**.md' + - '.config/**' + - '.github/**' + - '.idea/**' + - 'assets/**' pull_request: branches: [ develop ] paths-ignore: - '**.md' + - '.config/**' + - '.github/**' + - '.idea/**' + - 'assets/**' + +env: + PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }} + DEMO_MAVEN_MODULE: ${{ github.event.repository.name }}-demo jobs: build: @@ -17,8 +29,7 @@ jobs: strategy: matrix: - java: [11, 17] - java-package: [jdk] + java: [17, 21] distribution: [temurin] steps: @@ -29,11 +40,10 @@ jobs: with: distribution: ${{ matrix.distribution }} java-version: ${{ matrix.java }} - java-package: ${{ matrix.java-package }} cache: 'maven' - - name: Build with maven - run: mvn -B clean verify + - name: Build with Maven + run: ./mvnw -B clean package - name: Check for uncommited changes run: | @@ -49,11 +59,35 @@ jobs: echo ---------------------------------------- echo Troubleshooting echo ---------------------------------------- - echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && mvn -B clean verify" + echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && ./mvnw -B clean package" exit 1 fi - - uses: actions/upload-artifact@v4 + - name: Upload demo files + uses: actions/upload-artifact@v4 + with: + name: demo-files-java-${{ matrix.java }} + path: ${{ env.DEMO_MAVEN_MODULE }}/target/${{ env.DEMO_MAVEN_MODULE }}.jar + if-no-files-found: error + + code-style: + runs-on: ubuntu-latest + if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }} + + strategy: + matrix: + java: [17] + distribution: [temurin] + + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 with: - name: jars-java-${{ matrix.java }} - path: target/*.jar + distribution: ${{ matrix.distribution }} + java-version: ${{ matrix.java }} + cache: 'maven' + + - name: Run Checkstyle + run: ./mvnw -B checkstyle:check -P checkstyle -T2C diff --git a/.github/workflows/publish-dry-run.yml b/.github/workflows/publish-dry-run.yml deleted file mode 100644 index 290b48d4..00000000 --- a/.github/workflows/publish-dry-run.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Publish dry run - -on: - workflow_dispatch: - -jobs: - publish-dry-run: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Java - uses: actions/setup-java@v4 - with: - java-version: '11' - distribution: 'temurin' - cache: 'maven' - - name: Publish project - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_SNAPSHOT_URL: https://s01.oss.sonatype.org/content/repositories/snapshots/ - JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -Djreleaser.dry.run -DaltDeploymentRepository=local::default::file:./target/staging-deploy diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 330f4071..4ad042f4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,8 @@ -name: Publish package to the Maven Central Repository +name: Release + on: push: - branches: [ main ] + branches: [ master ] env: PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }} @@ -11,24 +12,44 @@ permissions: pull-requests: write jobs: - check_build: + check_code: # Validates the code runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Set up Java - uses: actions/setup-java@v4 - with: - java-version: '11' - distribution: 'temurin' - cache: 'maven' - - name: Build with Maven - run: mvn -B clean verify + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Build with Maven + run: ./mvnw -B clean package + + - name: Check for uncommited changes + run: | + if [[ "$(git status --porcelain)" != "" ]]; then + echo ---------------------------------------- + echo git status + echo ---------------------------------------- + git status + echo ---------------------------------------- + echo git diff + echo ---------------------------------------- + git diff + echo ---------------------------------------- + echo Troubleshooting + echo ---------------------------------------- + echo "::error::Unstaged changes detected. Locally try running: git clean -ffdx && ./mvnw -B clean package" + exit 1 + fi + prepare_release: runs-on: ubuntu-latest - needs: [check_build] + needs: [check_code] outputs: - upload_url: ${{ steps.create_draft.outputs.upload_url }} + upload_url: ${{ steps.create_release.outputs.upload_url }} steps: - uses: actions/checkout@v4 @@ -36,14 +57,25 @@ jobs: run: | git config --global user.email "actions@github.com" git config --global user.name "GitHub Actions" - + - name: Un-SNAP - run: mvn -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false + run: | + mvnwPath=$(readlink -f ./mvnw) + modules=("") # root + modules+=($(grep -ozP '(?<=module>)[^<]+' 'pom.xml' | tr -d '\0')) + for i in "${modules[@]}" + do + echo "Processing $i/pom.xml" + (cd "$i" && $mvnwPath -B versions:set -DremoveSnapshot -DgenerateBackupPoms=false) + done - name: Get version id: version run: | - echo "release=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_OUTPUT + version=$(../mvnw help:evaluate -Dexpression=project.version -q -DforceStdout) + echo "release=$version" >> $GITHUB_OUTPUT + echo "releasenumber=${version//[!0-9]/}" >> $GITHUB_OUTPUT + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} - name: Commit and Push run: | @@ -59,7 +91,7 @@ jobs: with: tag_name: v${{ steps.version.outputs.release }} release_name: v${{ steps.version.outputs.release }} - commitish: main + commitish: master body: | ## [Changelog](https://github.com/xdev-software/${{ env.PRIMARY_MAVEN_MODULE }}/blob/develop/CHANGELOG.md#${{ steps.version.outputs.releasenumber }}) See [Changelog#v${{ steps.version.outputs.release }}](https://github.com/xdev-software/${{ env.PRIMARY_MAVEN_MODULE }}/blob/develop/CHANGELOG.md#${{ steps.version.outputs.releasenumber }}) for more information. @@ -69,38 +101,71 @@ jobs: ```XML software.xdev - micro-migration-eclipse-store-v1 + ${{ env.PRIMARY_MAVEN_MODULE }} ${{ steps.version.outputs.release }} ``` - publish_central: + + publish_central: # Publish the code to central + runs-on: ubuntu-latest + needs: [prepare_release] + steps: + - uses: actions/checkout@v4 + + - name: Init Git and pull + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git pull + + - name: Set up JDK Apache Maven Central + uses: actions/setup-java@v4 + with: # running setup-java again overwrites the settings.xml + java-version: '17' + distribution: 'temurin' + server-id: ossrh + server-username: MAVEN_CENTRAL_USERNAME + server-password: MAVEN_CENTRAL_TOKEN + gpg-passphrase: MAVEN_GPG_PASSPHRASE + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + + - name: Publish to Apache Maven Central + run: ../mvnw -B deploy -Possrh + env: + MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} + + publish-pages: runs-on: ubuntu-latest needs: [prepare_release] steps: - - name: Checkout - uses: actions/checkout@v4 - # This might seem strange, but in order to see the Version update from the previous step, - # we must pull this change from git. - - name: Init Git and pull - run: | - git config --global user.email "actions@github.com" - git config --global user.name "GitHub Actions" - git pull - - name: Set up Java - uses: actions/setup-java@v4 - with: - java-version: '11' - distribution: 'temurin' - cache: 'maven' - - name: Publish - env: - JRELEASER_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.MAVEN_GPG_PUBLIC_KEY }} - JRELEASER_GPG_SECRET_KEY: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} - JRELEASER_NEXUS2_MAVEN_CENTRAL_PASSWORD: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} - JRELEASER_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B -pl !examples -Prelease deploy org.jreleaser:jreleaser-maven-plugin:deploy -DaltDeploymentRepository=local::default::file:./target/staging-deploy + - uses: actions/checkout@v4 + + - name: Init Git and pull + run: | + git config --global user.email "actions@github.com" + git config --global user.name "GitHub Actions" + git pull + + - name: Setup - Java + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: 'maven' + + - name: Build site + run: ../mvnw -B site + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} + + - name: Deploy to Github pages + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./${{ env.PRIMARY_MAVEN_MODULE }}/target/site + after_release: runs-on: ubuntu-latest needs: [publish_central] @@ -112,10 +177,18 @@ jobs: git config --global user.email "actions@github.com" git config --global user.name "GitHub Actions" git pull - - - name: Inc Version and SNAP root - run: mvn -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true - + + - name: Inc Version and SNAP + run: | + mvnwPath=$(readlink -f ./mvnw) + modules=("") # root + modules+=($(grep -ozP '(?<=module>)[^<]+' 'pom.xml' | tr -d '\0')) + for i in "${modules[@]}" + do + echo "Processing $i/pom.xml" + (cd "$i" && $mvnwPath -B build-helper:parse-version versions:set -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.nextIncrementalVersion} -DgenerateBackupPoms=false -DnextSnapshot=true) + done + - name: Git Commit and Push run: | git add -A @@ -123,9 +196,12 @@ jobs: git push origin - name: pull-request - uses: repo-sync/pull-request@v2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - destination_branch: "develop" - pr_title: "Sync back" - pr_body: "An automated PR to sync changes back" + env: + GH_TOKEN: ${{ github.token }} + run: | + gh_pr_up() { + gh pr create "$@" || gh pr edit "$@" + } + gh_pr_up -B "develop" \ + --title "Sync back" \ + --body "An automated PR to sync changes back" diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml new file mode 100644 index 00000000..1c9b0f8d --- /dev/null +++ b/.github/workflows/sonar.yml @@ -0,0 +1,65 @@ +name: Sonar + +on: + workflow_dispatch: + push: + branches: [ develop ] + paths-ignore: + - '**.md' + - '.config/**' + - '.github/**' + - '.idea/**' + - 'assets/**' + pull_request: + types: [opened, synchronize, reopened] + paths-ignore: + - '**.md' + - '.config/**' + - '.github/**' + - '.idea/**' + - 'assets/**' + +env: + SONARCLOUD_ORG: ${{ github.event.organization.login }} + SONARCLOUD_HOST: https://sonarcloud.io + +jobs: + sonar: + name: SonarCloud Scan + runs-on: ubuntu-latest + if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: 17 + + - name: Cache SonarCloud packages + uses: actions/cache@v4 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + + - name: Cache Maven packages + uses: actions/cache@v4 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 + + - name: Build with Maven + run: | + ./mvnw -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \ + -DskipTests \ + -Dsonar.projectKey=${{ env.SONARCLOUD_ORG }}_${{ github.event.repository.name }} \ + -Dsonar.organization=${{ env.SONARCLOUD_ORG }} \ + -Dsonar.host.url=${{ env.SONARCLOUD_HOST }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml new file mode 100644 index 00000000..cdd96cc1 --- /dev/null +++ b/.github/workflows/test-deploy.yml @@ -0,0 +1,32 @@ +name: Test Deployment + +on: + workflow_dispatch: + +env: + PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }} + +jobs: + publish_central: # Publish the code to central + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK OSSRH + uses: actions/setup-java@v4 + with: # running setup-java again overwrites the settings.xml + distribution: 'temurin' + java-version: '17' + server-id: ossrh + server-username: MAVEN_CENTRAL_USERNAME + server-password: MAVEN_CENTRAL_TOKEN + gpg-passphrase: MAVEN_GPG_PASSPHRASE + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} + + - name: Publish to OSSRH + run: ../mvnw -B deploy -Possrh + working-directory: ${{ env.PRIMARY_MAVEN_MODULE }} + env: + MAVEN_CENTRAL_USERNAME: ${{ secrets.S01_OSS_SONATYPE_MAVEN_USERNAME }} + MAVEN_CENTRAL_TOKEN: ${{ secrets.S01_OSS_SONATYPE_MAVEN_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index 41a1bcd6..a325e2b9 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -14,7 +14,7 @@ on: env: UPDATE_BRANCH: update-from-template - REMOTE_URL: https://github.com/xdev-software/java-template.git + REMOTE_URL: https://github.com/xdev-software/standard-maven-template.git REMOTE_BRANCH: master permissions: diff --git a/.gitignore b/.gitignore index 57e69122..d0e81bf1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,74 +1,17 @@ +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +# https://github.com/takari/maven-wrapper#usage-without-binary-jar +.mvn/wrapper/maven-wrapper.jar -# Created by https://www.toptal.com/developers/gitignore/api/maven,java,eclipse,windows -# Edit at https://www.toptal.com/developers/gitignore?templates=maven,java,eclipse,windows - -### Eclipse ### -.metadata -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.settings/ -.loadpath -.recommenders - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# CDT- autotools -.autotools - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Annotation Processing -.apt_generated/ -.apt_generated_test/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -# Uncomment this line if you wish to ignore the project description file. -# Typically, this file would be tracked if it contains build/dependency configurations: -.project - -### Eclipse Patch ### -# Spring Boot Tooling -.sts4-cache/ -### Java ### # Compiled class file *.class @@ -81,7 +24,7 @@ local.properties # Mobile Tools for Java (J2ME) .mtj.tmp/ -# Package Files # +# Package/Binary Files don't belong into a git repo *.jar *.war *.nar @@ -89,53 +32,39 @@ local.properties *.zip *.tar.gz *.rar +*.dll +*.exe +*.bin # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -### Maven ### -target/ -pom.xml.tag -pom.xml.releaseBackup -pom.xml.versionsBackup -pom.xml.next -release.properties -dependency-reduced-pom.xml -buildNumber.properties -.mvn/timing.properties -# https://github.com/takari/maven-wrapper#usage-without-binary-jar -.mvn/wrapper/maven-wrapper.jar - -### Windows ### -# Windows thumbnail cache files -Thumbs.db -Thumbs.db:encryptable -ehthumbs.db -ehthumbs_vista.db -# Dump file -*.stackdump +# bin / compiled stuff +target/ -# Folder config file -[Dd]esktop.ini -# Recycle Bin used on file shares -$RECYCLE.BIN/ +# JRebel +**/resources/rebel.xml +**/resources/rebel-remote.xml -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp +# eclispe stuff for root +/.settings/ +/.classpath +/.project -# Windows shortcuts -*.lnk -# End of https://www.toptal.com/developers/gitignore/api/maven,java,eclipse,windows +# eclispe stuff for modules +/*/.metadata/ +/*/.apt_generated_tests/ +/*/.settings/ +/*/.classpath +/*/.project +/*/RemoteSystemsTempFiles/ -#MicroStream Datastore default directory -/storage/ +#custom +.flattened-pom.xml +.tern-project # == IntelliJ == *.iml @@ -155,4 +84,4 @@ $RECYCLE.BIN/ !.idea/codeStyles/ .idea/codeStyles/* !.idea/codeStyles/codeStyleConfig.xml -!.idea/codeStyles/Project.xml \ No newline at end of file +!.idea/codeStyles/Project.xml diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml index 7ec678f6..eb3fcd83 100644 --- a/.idea/checkstyle-idea.xml +++ b/.idea/checkstyle-idea.xml @@ -17,4 +17,4 @@ - + \ No newline at end of file diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml index 2909df41..71a42c42 100644 --- a/.idea/saveactions_settings.xml +++ b/.idea/saveactions_settings.xml @@ -18,4 +18,4 @@