Purpose
liquibase.serializer.ChangeLogSerializer implementation are used by the generateChangeLog command and other functions that need to convert a DatabaseChangeLog object into a state that can be saved to disk (and re-executed at a future date).
Examples
- A way to store a DatabaseChangeLog object into a DSL changelog format
How to Create
Create new ChangeLogSerializers by implementing the liquibase.serializer.ChangeLogSerializer interface_._ The following methods are required:
String[] getValidFileExtensions();
Used to determine which serializer to use when a particular output filename is selected.
String serialize(DatabaseChangeLog databaseChangeLog); String serialize(ChangeSet changeSet); String serialize(Change change); String serialize(ColumnConfig columnConfig);
Converts the given LiquiBase internal objects into a string.
Registering Custom ChangeLogSerializers
There are two ways to register a custom ChangeLogSerialzer:
- Create the class as a sub-package of "liquibase.serializer.ext". LiquiBase automatically registers ChangeLogSerialzer it finds in that package
- Call liquibase.serializer.ChangeLogSerialzerFactory.getInstance().register(serializer)
Threading/Singleton notes
ChangeLogSerialzer implementations should be created thread safe. Once an instance of a ChangeLogSerialzer is registered, ChangeLogSerialzerFactory will continue to use the return instance.