package liquibase.snapshot; import liquibase.database.Database; import liquibase.exception.DatabaseException; import liquibase.servicelocator.PrioritizedService; import liquibase.structure.DatabaseObject; public interface SnapshotGenerator { final int PRIORITY_NONE = -1; final int PRIORITY_DEFAULT = 1; final int PRIORITY_DATABASE = 5; final int PRIORITY_ADDITIONAL = 50; int getPriority(Class<? extends DatabaseObject> objectType, Database database); <T extends DatabaseObject> T snapshot(T example, DatabaseSnapshot snapshot, SnapshotGeneratorChain chain) throws DatabaseException, InvalidExampleException; Class<? extends DatabaseObject>[] addsTo(); /** * Returns classes (and superclasses) that this SnapshotGenerator replaces. Return null or empty array to not affect the SnapshotGeneratorChain. */ Class<? extends SnapshotGenerator>[] replaces(); }