Details
-
Sub-task
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
Add JAXB annotations on DefaultParameterDescriptor and DefaultParameterValue for allowing them to read and write <gml:OperationParameter> and <gml:ParameterValue> respectively.
The main difficulties in this task are:
- ParameterDescriptor.getValueClass() is mandatory for SIS, but GML has no notion of "value class".
- Solution: we can infer this information from the value given by the enclosing <gml:ParameterValue>.
- Limitation: above solution does not work if the <gml:OperationParameter> is inside a <gml:OperationParameterGroup> or <gml:OperationMethod> because there is no enclosing <gml:ParameterValue> in such cases.
- Solution to limitation: see point below.
- ParameterValue.getDescriptor() is supposed to be the same instance (not just an object equals in the sense of Object.equals(Object) than the descriptors listed in ParameterDescriptorGroup. GML can support that by declaring each descriptor only once then using xlink:href attribute, but not all GML documents do that.
- Solution: after unmarshalling of GeneralParameterValue[], map each GeneralParameterValue.getDescriptor() to the descriptor of the same name in the ParameterDescriptorGroup. If they do not have the same properties (alias, identifiers, description, remarks, minimum/maximum occurrences, value class, value domain, valid values), merge the two descriptors in an implementation dependent way. Then ensure that the same descriptor instance is used.
Attachments
Issue Links
- is depended upon by
-
SIS-291 Complete JAXB annotations for SingleOperation
- Closed