Skip to content
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

Add support for metadata instance classes #725

Merged
merged 2 commits into from
Jul 11, 2020

Conversation

kevin-bates
Copy link
Member

@kevin-bates kevin-bates commented Jul 9, 2020

This pull request adds the ability for custom class implementations to be tied to metadata instances of the same schema.

Schemas that contain the system-level property metadata_class_name will have instances containing their metadata properties of that class. These instances, which are subclasses of Metadata (enforced), can then override methods post_load(), pre_save() and pre_delete() to allow the implementations to adjust their values, perform actions on behalf of the instance, etc.

The pre_save() method is called after validation, while post_load() is called prior to validation of the object against its schema. (Validation is not performed on deletes, so call order relative to validation is not applicable.)

Use of this feature is optional, but the metadata tests show how this can behave.

Developer's Certificate of Origin 1.1

   By making a contribution to this project, I certify that:

   (a) The contribution was created in whole or in part by me and I
       have the right to submit it under the Apache License 2.0; or

   (b) The contribution is based upon previous work that, to the best
       of my knowledge, is covered under an appropriate open source
       license and I have the right under that license to submit that
       work with modifications, whether created in whole or in part
       by me, under the same open source license (unless I am
       permitted to submit under a different license), as indicated
       in the file; or

   (c) The contribution was provided directly to me by some other
       person who certified (a), (b) or (c) and I have not modified
       it.

   (d) I understand and agree that this project and the contribution
       are public and that a record of the contribution (including all
       personal information I submit with it, including my sign-off) is
       maintained indefinitely and may be redistributed consistent with
       this project or the open source license(s) involved.

@kevin-bates kevin-bates force-pushed the metadata-instance-classes branch from d9f97a6 to 636e425 Compare July 9, 2020 13:13
@lresende
Copy link
Member

LGTM. @kevin-bates could you please rebase this.

Schemas that contain the system-level property `metadata_class_name`
will have instances containing their metadata properties of that class.
These instances, which are subclasses of Metadata (enforced), can
then override methods `post_load()`, `pre_save()` and `pre_delete()`
to allow the implementations to adjust their values, perform actions, etc.

The pre_save() method is called after validation, while post_load() is
called prior to validation of the object against its schema.

Use of this feature is optional, but the metadata tests show how
this can behave.
@kevin-bates kevin-bates force-pushed the metadata-instance-classes branch from 7d0a50d to 40a9ad2 Compare July 10, 2020 18:00
@lresende lresende merged commit a52f270 into elyra-ai:master Jul 11, 2020
@kevin-bates kevin-bates deleted the metadata-instance-classes branch August 3, 2020 18:50
This was referenced Aug 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants