Skip to content

[IDEA] Keep Migratable and  MigratableConverter up to date for each new release. #211

@sbraconnier

Description

@sbraconnier

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions