-
Notifications
You must be signed in to change notification settings - Fork 43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow alternative serde for extensions #3122
Open
olperr1
wants to merge
10
commits into
main
Choose a base branch
from
extension_alternative_serde
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
…originalExtensionName Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
Signed-off-by: Olivier Perrin <[email protected]>
olperr1
changed the title
[WIP] Allow alternative serde for extensions
Allow alternative serde for extensions
Aug 28, 2024
Quality Gate passedIssues Measures |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please check if the PR fulfills these requirements
Does this PR already have an issue describing the problem?
No
What kind of change does this PR introduce?
Feature
What is the current behavior?
When an extension is added in
powsybl-core
, it sometimes cover the same functional perimeter as an existing extension declared in a custom project. A good practice is then to use the open-source extension instead of the custom one.To allow working with previously generated IIDM files (containing the old extension name), a compatibility deserializer can
easily be written (it should read the data of the old extension tag and create the new extension on the network being imported).
But at this time there is no way to export the open-source extension using the old extension name, which could be needed for compatibility with other softwares.
What is the new behavior (if this is a feature change)?
Introduce a mechanism to provide an alternative SerDe for an extension.
Does this PR introduce a breaking change or deprecate an API?
If yes, please check if the following requirements are fulfilled
What changes might users need to make in their application due to this PR? (migration steps)
Other information:
To use an alternative SerDe, you need to create a new SerDe class:
@AutoService({AlternativeExtensionSerDe.class, ExtensionSerDe.class})
.AbstractAlternativeExtensionSerDe
, for a non-versioned SerDe;AbstractAlternativeVersionableNetworkExtensionSerDe
, for a versioned SerDe.By default, the importer is always active, but the exporter is disable.
To use the alternative SerDe at export, you should specify the version
"alternative"
(orExportOptions.ALTERNATIVE_VERSION
) in your export options for the real extension.If your SerDe is versioned, the used extension version will be the default for the IIDM version. If you want another version, you should also add this version associated with the alternative extension name.
For instance, if the original extension name is "foo" and the alternative extension name is "altFoo", the configuration will look like:
You can find examples in this PR:
ActivePowerControlSerDe
LegacyActivePowerControlSerDe
OperatingStatusSerDe
LegacyOperatingStatusSerDe
They are both used by the test class
AlternativeExtensionXmlTest
.