In a bulk API request, does the repository check the request for consistency w.r.t. the language?
This relates to:
- classifier of node exists
- if node is an annotation: node's classifier can annotate parent's classifier
- if node's classifier is not an annotation: node can exist as child in its parent's classifier
- if node is used as a partition: node's classifier is marked as partition
- if node is not used as a partition: node's classifier is not marked as partition
- nodes mentioned in
annotations are annotations
- metapointers of properties are part of the node's classifier
- property values adhere to its classifier type
- all required properties are set
- metapointers of containments are part of the node's classifier
- nodes mentioned in
containments are not annotations
- nodes mentioned in
containments fit the metapointer of the containment
- all containments adhere to their cardinality (required ones are present, only multiple ones have more than one child)
- metapointers of references are part of the node's classifier
- nodes mentioned in
references fit the metapointer of the reference
- all references adhere to their cardinality
Pro:
- All participants can assume valid models (after initial validation)
Con:
- The repository has to check the validity on every request. This might be expensive (we have to care for all concept inheritance and polymorphism)
- We can never change a language without changing its version (useful during development)
- If there is an issue with the model, we need a "backdoor" to the repository to fix it
- For required children (including transitive) and references, we can only store the model once we've created the whole required subtree
- Parser-based clients can only store valid ASTs, or have to use extremely leniently designed languages. Especially for interactive editors, the AST is invalid most of the time.
In a bulk API request, does the repository check the request for consistency w.r.t. the language?
This relates to:
annotationsare annotationscontainmentsare not annotationscontainmentsfit the metapointer of the containmentreferencesfit the metapointer of the referencePro:
Con: