Martin Desruisseaux created SIS-290:
---------------------------------------
Summary: Complete JAXB annotations for OperationParameter and
ParameterValue
Key: SIS-290
URL: https://issues.apache.org/jira/browse/SIS-290
Project: Spatial Information Systems
Issue Type: Sub-task
Components: Referencing
Reporter: Martin Desruisseaux
Assignee: Martin Desruisseaux
Fix For: 0.6
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 {{gml:idref}} 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.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)