-
Notifications
You must be signed in to change notification settings - Fork 41
Description
Is your feature request related to a problem? Please describe.
When developing complex custom plugins (take the SSL plugin as example, which adds some configuration within a channel/connector serialized configuration), we need to be able to count on something when it is time to migrate model classes during deserialization to a newer version of the plugin. You can implement the com.mirth.connect.donkey.util.migration.Migratable interface for that, but unfortunately it wasn't properly maintain by the Mirth developers team. They added a new version to this class only when they needed it.
Describe your use case
When developing custom plugins with model classes that could potentially have to be migrated at some point, it would be nice to have a strategy we can count on for each OpenIntegrationEngine release.
Describe the solution you'd like
Integrate in the release TODOs list the task to update the com.mirth.connect.donkey.util.migration.Migratable and com.mirth.connect.model.converters.MigratableConverter classes with the missing code required for the serializer to update a model class on deserialization, even if it's not required for any model classes of the engine release. It would offer plugin developers a way to update their model classes on OIE upgrade.
Describe alternatives you've considered
I didn't consider anything else. Maybe using a com.mirth.connect.server.migration.Migrator class configured in a plugin.xml file, but it would be a PITA (if a use again the example of the SSL plugin) to update the XML of all the channels by parsing the XML as a String. Probably not the best way to to it.
Additional context
I wonder how this migration stuff will evolve for plugin developers with multiple mirth branches in the mix. It will be hard to count on that strategy if you want to be able to support both OpenIntegrationEngine and BridgeLink, for example.
Maybe someone knows a better way to handle this.