Open
Description
There are issues creating libraries/tools that implement as you need to do quite a bit of additional reflection to determine which "item" datatype to use. This problem is compound where one item is a primitive (e.g., string) and another an object (struct).
I plan to update this issue with all the cases that are (especially) problematic.
- "environmentVars": mixing a
string
type with anobject
type is esp. problematic in coding implementations as not concrete structures (work around using structure that aggregates all fields from both types) can be created and code always must use reflection to determine which is cumbersome.
"environmentVars": {
"title": "Environment variables",
"description": "Inputs that have the form of parameters with names and values.",
"type": "array",
"uniqueItems": true,
"items": {
"oneOf": [
{
"$ref": "#/definitions/property"
},
{
"type": "string"
}
]
}
- "serviceData": mixing 2 named type. Thankfully, both resolve to "string" for now; however, the "bomLinkElementType" if changed to an "object" could cause typeing problems in impls.
"source": {
"type": "array",
"items": {
"anyOf": [
{
"title": "URL",
"type": "string",
"format": "iri-reference"
},
{
"title": "BOM-Link Element",
"$ref": "#/definitions/bomLinkElementType"
}
]
},
Another issue concerns as "legacy" objects can be removed; however, again we have an array
of object vs. a single object with arrays in it.
- Tools: One of
- (single object) Creation Tools
- despite allowing arrays (and links/refs) fully including all fields of "component" and/or "service" seems like overkill
- (array of object) Creation Tools (legacy)
- remove "legacy"
- (single object) Creation Tools