You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2022/11/28 14:10:56 UTC
[sis] 03/03: Merge branch 'geoapi-3.1'. This is documentation, ISO 19115 amendment 1 and minor bug fixes.
This is an automated email from the ASF dual-hosted git repository.
desruisseaux pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sis.git
commit 1a8e38fd88929aa07d235ed7e47e761882dc8b00
Merge: f77cfeed91 0d88ef7e00
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Mon Nov 28 15:10:01 2022 +0100
Merge branch 'geoapi-3.1'.
This is documentation, ISO 19115 amendment 1 and minor bug fixes.
.../apache/sis/gui/coverage/CoverageExplorer.java | 2 +-
.../org/apache/sis/gui/map/GestureFollower.java | 2 +-
.../gui/referencing/RecentReferenceSystems.java | 1 +
.../apache/sis/feature/AbstractAssociation.java | 4 +-
.../org/apache/sis/feature/AbstractAttribute.java | 4 +-
.../java/org/apache/sis/feature/AttributeView.java | 9 +-
.../main/java/org/apache/sis/feature/Field.java | 9 +-
.../apache/sis/feature/MultiValuedAssociation.java | 4 +-
.../apache/sis/feature/MultiValuedAttribute.java | 4 +-
.../java/org/apache/sis/feature/PropertyView.java | 5 +-
.../sis/feature/builder/AttributeTypeBuilder.java | 4 +-
.../sis/feature/builder/FeatureTypeBuilder.java | 2 +-
.../org/apache/sis/filter/ArithmeticFunction.java | 8 ++
.../org/apache/sis/filter/AssociationValue.java | 5 +
.../java/org/apache/sis/filter/BinaryFunction.java | 2 +
.../apache/sis/filter/BinaryGeometryFilter.java | 2 +
.../org/apache/sis/filter/BinarySpatialFilter.java | 8 +-
.../org/apache/sis/filter/ComparisonFilter.java | 14 +++
.../org/apache/sis/filter/ConvertFunction.java | 1 +
.../org/apache/sis/filter/DefaultSortProperty.java | 1 +
.../java/org/apache/sis/filter/DistanceFilter.java | 1 +
.../java/org/apache/sis/filter/LeafExpression.java | 10 +-
.../java/org/apache/sis/filter/LikeFilter.java | 1 +
.../java/org/apache/sis/filter/LogicalFilter.java | 8 ++
.../java/org/apache/sis/filter/PropertyValue.java | 6 ++
.../java/org/apache/sis/filter/TemporalFilter.java | 30 +++++-
.../java/org/apache/sis/filter/UnaryFunction.java | 5 +
.../jaxb/metadata/MI_RangeElementDescription.java | 29 +++++-
.../metadata/replace}/SensorType.java | 6 +-
.../sis/internal/metadata/RecordSchemaSIS.java | 36 +++++--
.../apache/sis/internal/metadata/Resources.java | 15 +++
.../sis/internal/metadata/Resources.properties | 3 +
.../sis/internal/metadata/Resources_fr.properties | 3 +
.../iso/DefaultApplicationSchemaInformation.java | 4 +-
.../iso/DefaultExtendedElementInformation.java | 6 +-
.../apache/sis/metadata/iso/DefaultIdentifier.java | 6 +-
.../apache/sis/metadata/iso/DefaultMetadata.java | 6 +-
.../iso/DefaultMetadataExtensionInformation.java | 4 +-
.../sis/metadata/iso/DefaultMetadataScope.java | 2 +-
.../iso/DefaultPortrayalCatalogueReference.java | 4 +-
.../org/apache/sis/metadata/iso/ISOMetadata.java | 2 +-
.../acquisition/DefaultAcquisitionInformation.java | 4 +-
.../acquisition/DefaultEnvironmentalRecord.java | 6 +-
.../sis/metadata/iso/acquisition/DefaultEvent.java | 6 +-
.../iso/acquisition/DefaultInstrument.java | 6 +-
.../metadata/iso/acquisition/DefaultObjective.java | 6 +-
.../metadata/iso/acquisition/DefaultOperation.java | 6 +-
.../sis/metadata/iso/acquisition/DefaultPlan.java | 6 +-
.../metadata/iso/acquisition/DefaultPlatform.java | 6 +-
.../iso/acquisition/DefaultPlatformPass.java | 6 +-
.../iso/acquisition/DefaultRequestedDate.java | 6 +-
.../iso/acquisition/DefaultRequirement.java | 6 +-
.../sis/metadata/iso/acquisition/package-info.java | 2 +-
.../sis/metadata/iso/citation/AbstractParty.java | 47 ++++++++-
.../sis/metadata/iso/citation/DefaultAddress.java | 6 +-
.../sis/metadata/iso/citation/DefaultCitation.java | 6 +-
.../metadata/iso/citation/DefaultCitationDate.java | 6 +-
.../sis/metadata/iso/citation/DefaultContact.java | 6 +-
.../metadata/iso/citation/DefaultIndividual.java | 2 +-
.../iso/citation/DefaultOnlineResource.java | 6 +-
.../metadata/iso/citation/DefaultOrganisation.java | 2 +-
.../iso/citation/DefaultResponsibility.java | 2 +-
.../iso/citation/DefaultResponsibleParty.java | 6 +-
.../sis/metadata/iso/citation/DefaultSeries.java | 6 +-
.../metadata/iso/citation/DefaultTelephone.java | 6 +-
.../sis/metadata/iso/citation/package-info.java | 4 +-
.../iso/constraint/DefaultConstraints.java | 6 +-
.../iso/constraint/DefaultLegalConstraints.java | 6 +-
.../iso/constraint/DefaultReleasability.java | 2 +-
.../iso/constraint/DefaultSecurityConstraints.java | 6 +-
.../sis/metadata/iso/constraint/package-info.java | 2 +-
.../iso/content/AbstractContentInformation.java | 6 +-
.../iso/content/DefaultAttributeGroup.java | 2 +-
.../sis/metadata/iso/content/DefaultBand.java | 6 +-
.../iso/content/DefaultCoverageDescription.java | 6 +-
.../DefaultFeatureCatalogueDescription.java | 4 +-
.../iso/content/DefaultFeatureTypeInfo.java | 2 +-
.../iso/content/DefaultImageDescription.java | 6 +-
.../iso/content/DefaultRangeDimension.java | 6 +-
.../content/DefaultRangeElementDescription.java | 6 +-
.../iso/content/DefaultSampleDimension.java | 41 +++++++-
.../sis/metadata/iso/content/package-info.java | 4 +-
.../metadata/iso/distribution/DefaultDataFile.java | 6 +-
.../DefaultDigitalTransferOptions.java | 4 +-
.../iso/distribution/DefaultDistribution.java | 6 +-
.../iso/distribution/DefaultDistributor.java | 6 +-
.../metadata/iso/distribution/DefaultFormat.java | 6 +-
.../metadata/iso/distribution/DefaultMedium.java | 6 +-
.../distribution/DefaultStandardOrderProcess.java | 6 +-
.../metadata/iso/distribution/package-info.java | 2 +-
.../iso/extent/AbstractGeographicExtent.java | 6 +-
.../iso/extent/DefaultBoundingPolygon.java | 6 +-
.../sis/metadata/iso/extent/DefaultExtent.java | 6 +-
.../iso/extent/DefaultGeographicBoundingBox.java | 6 +-
.../iso/extent/DefaultGeographicDescription.java | 6 +-
.../iso/extent/DefaultSpatialTemporalExtent.java | 6 +-
.../metadata/iso/extent/DefaultTemporalExtent.java | 6 +-
.../metadata/iso/extent/DefaultVerticalExtent.java | 6 +-
.../sis/metadata/iso/extent/package-info.java | 2 +-
.../iso/identification/AbstractIdentification.java | 6 +-
.../DefaultAggregateInformation.java | 6 +-
.../identification/DefaultAssociatedResource.java | 2 +-
.../iso/identification/DefaultBrowseGraphic.java | 6 +-
.../iso/identification/DefaultCoupledResource.java | 2 +-
.../identification/DefaultDataIdentification.java | 6 +-
.../iso/identification/DefaultKeywordClass.java | 2 +-
.../iso/identification/DefaultKeywords.java | 6 +-
.../DefaultOperationChainMetadata.java | 2 +-
.../identification/DefaultOperationMetadata.java | 2 +-
.../DefaultRepresentativeFraction.java | 2 +-
.../iso/identification/DefaultResolution.java | 6 +-
.../DefaultServiceIdentification.java | 6 +-
.../metadata/iso/identification/DefaultUsage.java | 6 +-
.../metadata/iso/identification/package-info.java | 2 +-
.../sis/metadata/iso/lineage/DefaultAlgorithm.java | 6 +-
.../sis/metadata/iso/lineage/DefaultLineage.java | 6 +-
.../iso/lineage/DefaultNominalResolution.java | 6 +-
.../metadata/iso/lineage/DefaultProcessStep.java | 6 +-
.../iso/lineage/DefaultProcessStepReport.java | 6 +-
.../metadata/iso/lineage/DefaultProcessing.java | 6 +-
.../sis/metadata/iso/lineage/DefaultSource.java | 6 +-
.../sis/metadata/iso/lineage/package-info.java | 2 +-
.../maintenance/DefaultMaintenanceInformation.java | 4 +-
.../sis/metadata/iso/maintenance/DefaultScope.java | 6 +-
.../iso/maintenance/DefaultScopeDescription.java | 6 +-
.../sis/metadata/iso/maintenance/package-info.java | 2 +-
.../org/apache/sis/metadata/iso/package-info.java | 2 +-
.../metadata/iso/quality/AbstractCompleteness.java | 6 +-
.../iso/quality/AbstractDataEvaluation.java | 4 +-
.../sis/metadata/iso/quality/AbstractElement.java | 4 +-
.../iso/quality/AbstractLogicalConsistency.java | 6 +-
.../metadata/iso/quality/AbstractMetaquality.java | 2 +-
.../iso/quality/AbstractPositionalAccuracy.java | 6 +-
.../sis/metadata/iso/quality/AbstractResult.java | 4 +-
.../iso/quality/AbstractTemporalAccuracy.java | 6 +-
.../iso/quality/AbstractTemporalQuality.java | 4 +-
.../iso/quality/AbstractThematicAccuracy.java | 6 +-
.../DefaultAbsoluteExternalPositionalAccuracy.java | 4 +-
.../quality/DefaultAccuracyOfATimeMeasurement.java | 4 +-
.../iso/quality/DefaultAggregationDerivation.java | 2 +-
.../metadata/iso/quality/DefaultBasicMeasure.java | 2 +-
.../iso/quality/DefaultCompletenessCommission.java | 4 +-
.../iso/quality/DefaultCompletenessOmission.java | 4 +-
.../iso/quality/DefaultConceptualConsistency.java | 4 +-
.../metadata/iso/quality/DefaultConfidence.java | 2 +-
.../iso/quality/DefaultConformanceResult.java | 6 +-
.../iso/quality/DefaultCoverageResult.java | 6 +-
.../metadata/iso/quality/DefaultDataQuality.java | 6 +-
.../metadata/iso/quality/DefaultDescription.java | 2 +-
.../iso/quality/DefaultDescriptiveResult.java | 2 +-
.../iso/quality/DefaultDomainConsistency.java | 6 +-
.../iso/quality/DefaultEvaluationMethod.java | 2 +-
.../iso/quality/DefaultFormatConsistency.java | 6 +-
.../iso/quality/DefaultFullInspection.java | 2 +-
.../DefaultGriddedDataPositionalAccuracy.java | 4 +-
.../metadata/iso/quality/DefaultHomogeneity.java | 2 +-
.../iso/quality/DefaultIndirectEvaluation.java | 2 +-
.../sis/metadata/iso/quality/DefaultMeasure.java | 2 +-
.../iso/quality/DefaultMeasureReference.java | 2 +-
.../DefaultNonQuantitativeAttributeAccuracy.java | 4 +-
...DefaultNonQuantitativeAttributeCorrectness.java | 4 +-
.../DefaultQuantitativeAttributeAccuracy.java | 4 +-
.../iso/quality/DefaultQuantitativeResult.java | 6 +-
.../DefaultRelativeInternalPositionalAccuracy.java | 4 +-
.../iso/quality/DefaultRepresentativity.java | 2 +-
.../iso/quality/DefaultSampleBasedInspection.java | 10 +-
.../sis/metadata/iso/quality/DefaultScope.java | 6 +-
.../iso/quality/DefaultSourceReference.java | 2 +-
.../DefaultStandaloneQualityReportInformation.java | 2 +-
.../iso/quality/DefaultTemporalConsistency.java | 6 +-
.../iso/quality/DefaultTemporalValidity.java | 6 +-
.../DefaultThematicClassificationCorrectness.java | 4 +-
.../iso/quality/DefaultTopologicalConsistency.java | 4 +-
.../sis/metadata/iso/quality/DefaultUsability.java | 6 +-
.../iso/quality/DefaultUsabilityElement.java | 4 +-
.../sis/metadata/iso/quality/package-info.java | 2 +-
.../spatial/AbstractGeolocationInformation.java | 4 +-
.../iso/spatial/AbstractSpatialRepresentation.java | 44 +++++++-
.../sis/metadata/iso/spatial/DefaultDimension.java | 6 +-
.../sis/metadata/iso/spatial/DefaultGCP.java | 6 +-
.../metadata/iso/spatial/DefaultGCPCollection.java | 6 +-
.../iso/spatial/DefaultGeometricObjects.java | 6 +-
.../metadata/iso/spatial/DefaultGeorectified.java | 6 +-
.../iso/spatial/DefaultGeoreferenceable.java | 6 +-
.../spatial/DefaultGridSpatialRepresentation.java | 6 +-
.../DefaultVectorSpatialRepresentation.java | 4 +-
.../sis/metadata/iso/spatial/package-info.java | 4 +-
.../org/apache/sis/util/iso/DefaultMemberName.java | 2 +-
.../apache/sis/util/iso/DefaultNameFactory.java | 2 +-
.../apache/sis/util/iso/DefaultRecordSchema.java | 22 +++-
.../org/apache/sis/util/iso/DefaultRecordType.java | 13 ++-
.../main/java/org/apache/sis/util/iso/Names.java | 14 +++
.../main/java/org/apache/sis/util/iso/Types.java | 2 +-
.../iso/quality/DefaultQuantitativeResultTest.java | 116 +++++++++++++++++++++
.../sis/test/xml/AnnotationConsistencyCheck.java | 5 +-
.../sis/xml/CharSequenceSubstitutionTest.java | 2 +-
.../sis/parameter/DefaultParameterValueGroup.java | 2 +-
.../sis/referencing/AbstractIdentifiedObject.java | 6 +-
.../sis/referencing/ImmutableIdentifier.java | 2 +-
.../apache/sis/referencing/NamedIdentifier.java | 4 +-
.../apache/sis/referencing/crs/AbstractCRS.java | 4 +-
.../org/apache/sis/referencing/cs/AbstractCS.java | 4 +-
.../sis/referencing/datum/AbstractDatum.java | 2 +-
.../operation/AbstractCoordinateOperation.java | 4 +-
.../operation/DefaultConcatenatedOperation.java | 2 +-
.../referencing/operation/DefaultConversion.java | 4 +-
.../operation/DefaultPassThroughOperation.java | 2 +-
.../operation/DefaultTransformation.java | 2 +-
.../main/java/org/apache/sis/math/ArrayVector.java | 5 +-
.../org/apache/sis/measure/ConventionalUnit.java | 5 +-
.../java/org/apache/sis/measure/DerivedScalar.java | 6 +-
.../main/java/org/apache/sis/measure/Scalar.java | 3 +-
.../org/apache/sis/measure/ScalarFallback.java | 5 +-
.../org/apache/sis/util/collection/DerivedMap.java | 21 ++++
.../org/apache/sis/util/collection/DerivedSet.java | 3 +
.../sis/util/collection/FrequencySortedSet.java | 3 +
.../org/apache/sis/util/collection/RangeSet.java | 3 +
.../org/apache/sis/util/collection/TreeTable.java | 2 +-
.../apache/sis/util/resources/package-info.java | 10 +-
ide-project/NetBeans/nbproject/project.properties | 2 +-
pom.xml | 4 +-
.../storage/aggregate/AggregatedFeatureSet.java | 9 +-
.../sis/storage/aggregate/CoverageAggregator.java | 1 +
.../apache/sis/internal/storage/gpx/Copyright.java | 23 ++--
224 files changed, 933 insertions(+), 464 deletions(-)
diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java
index 7fd9ce8b02,136c58ec32..848d091e67
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AbstractAssociation.java
@@@ -145,10 -148,10 +145,10 @@@ public abstract class AbstractAssociati
* <p>The default implementation returns a collection which will delegate its work to
* {@link #getValue()} and {@link #setValue(Object)}.</p>
*
- * @return the features in a <cite>live</cite> collection.
+ * @return the features in a <em>live</em> collection.
*/
@Override
- public Collection<Feature> getValues() {
+ public Collection<AbstractFeature> getValues() {
return super.getValues();
}
diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/AttributeView.java
index c93e657d39,be0758cde5..399c2dcd34
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/AttributeView.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/AttributeView.java
@@@ -36,10 -38,14 +36,14 @@@ import java.util.Objects
*
* @author Martin Desruisseaux (Geomatys)
* @version 0.8
- * @since 0.8
+ *
+ * @param <V> the type of attribute values. If the attribute supports multi-occurrences,
+ * then this is the type of elements (not the collection type).
+ *
+ * @since 0.8
* @module
*/
-class AttributeView<V> extends PropertyView<V> implements Attribute<V> {
+class AttributeView<V> extends AbstractAttribute<V> {
/**
* For cross-version compatibility.
*/
diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/Field.java
index df704eece4,53c280d8bf..40d410060c
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/Field.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/Field.java
@@@ -29,10 -35,13 +29,13 @@@ import org.apache.sis.util.Deprecable
*
* @author Martin Desruisseaux (Geomatys)
* @version 0.8
- * @since 0.5
+ *
+ * @param <V> the type of property values.
+ *
+ * @since 0.5
* @module
*/
-abstract class Field<V> implements Property {
+abstract class Field<V> extends Property {
/**
* For subclass constructors.
*/
diff --cc core/sis-feature/src/main/java/org/apache/sis/feature/PropertyView.java
index 04e191eba5,732776ed54..26807d750f
--- a/core/sis-feature/src/main/java/org/apache/sis/feature/PropertyView.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/feature/PropertyView.java
@@@ -39,14 -48,39 +39,17 @@@ import org.apache.sis.internal.feature.
*
* @author Martin Desruisseaux (Geomatys)
* @version 0.8
- * @since 0.8
+ *
+ * @param <V> the type of property values.
+ *
+ * @since 0.8
* @module
*/
-abstract class PropertyView<V> extends Field<V> implements Property, Serializable {
- /**
- * For cross-version compatibility.
- */
- private static final long serialVersionUID = -5605415150581699255L;
-
+final class PropertyView {
/**
- * The feature from which to read and where to write the attribute or association value.
- */
- @SuppressWarnings("serial") // Not statically typed as Serializable.
- final Feature feature;
-
- /**
- * The string representation of the property name. This is the value to be given in calls to
- * {@link Feature#getPropertyValue(String)} and {@link Feature#setPropertyValue(String, Object)}.
- */
- final String name;
-
- /**
- * Creates a new property which will delegate its work to the given feature.
- *
- * @param feature the feature from which to read and where to write the property value.
- * @param name the string representation of the property name.
+ * Do not allow instantiation of this class.
*/
- PropertyView(final Feature feature, final String name) {
- this.feature = feature;
- this.name = name;
+ private PropertyView() {
}
/**
diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/AssociationValue.java
index ae65d82973,67914b95d6..ee0652794e
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/AssociationValue.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/AssociationValue.java
@@@ -51,12 -51,17 +51,17 @@@ import org.apache.sis.internal.geoapi.f
* @since 1.2
* @module
*/
-final class AssociationValue<V> extends LeafExpression<Feature, V>
- implements ValueReference<Feature, V>, Optimization.OnExpression<Feature, V>
+final class AssociationValue<V> extends LeafExpression<AbstractFeature, V>
+ implements ValueReference<AbstractFeature, V>, Optimization.OnExpression<AbstractFeature, V>
{
+ /**
+ * For cross-version compatibility.
+ */
+ private static final long serialVersionUID = 2082322712413854288L;
+
/**
* Path to the property from which to retrieve the value.
- * Each element in the array is an argument to give in a call to {@link Feature#getProperty(String)}.
+ * Each element in the array is an argument to give in a call to {@code Feature.getProperty(String)}.
* This array should be considered read-only because it may be shared.
*/
private final String[] path;
diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java
index ac7287a3bf,741ebfc587..c1c497e70b
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/BinaryGeometryFilter.java
@@@ -59,12 -65,18 +59,14 @@@ abstract class BinaryGeometryFilter<R,G
/**
* The first of the two expressions to be used by this function.
- *
- * @see BinarySpatialOperator#getOperand1()
*/
+ @SuppressWarnings("serial") // Not statically typed as Serializable.
protected final Expression<? super R, GeometryWrapper<G>> expression1;
/**
* The second of the two expressions to be used by this function.
- *
- * @see BinarySpatialOperator#getOperand2()
*/
+ @SuppressWarnings("serial") // Not statically typed as Serializable.
protected final Expression<? super R, GeometryWrapper<G>> expression2;
/**
diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/LeafExpression.java
index bff8fae7b9,76dd982fc1..db1ed31b08
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/LeafExpression.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/LeafExpression.java
@@@ -76,8 -77,11 +76,11 @@@ abstract class LeafExpression<R,V> exte
/**
* A constant, literal value that can be used in expressions.
* The {@link #apply(Object)} method ignores the argument and always returns {@link #getValue()}.
+ *
+ * @param <R> the type of resources used as inputs.
+ * @param <V> the type of value computed by the expression.
*/
- static class Literal<R,V> extends LeafExpression<R,V> implements org.opengis.filter.Literal<R,V> {
+ static class Literal<R,V> extends LeafExpression<R,V> implements org.apache.sis.internal.geoapi.filter.Literal<R,V> {
/** For cross-version compatibility. */
private static final long serialVersionUID = -8383113218490957822L;
diff --cc core/sis-feature/src/main/java/org/apache/sis/filter/UnaryFunction.java
index fcf3f88e9a,62b0d4c76f..a8ac6ffa9c
--- a/core/sis-feature/src/main/java/org/apache/sis/filter/UnaryFunction.java
+++ b/core/sis-feature/src/main/java/org/apache/sis/filter/UnaryFunction.java
@@@ -95,10 -99,12 +96,12 @@@ class UnaryFunction<R,V> extends Node
* Filter operator that checks if an expression's value is {@code null}. A {@code null}
* is equivalent to no value present. The value 0 is a valid value and is not considered
* {@code null}.
+ *
+ * @param <R> the type of resources used as inputs.
*/
static final class IsNull<R> extends UnaryFunction<R,Object>
- implements NullOperator<R>, Optimization.OnFilter<R>
- {
+ implements Filter<R>, Optimization.OnFilter<R>
+ {
/** For cross-version compatibility. */
private static final long serialVersionUID = 2960285515924533419L;
@@@ -132,9 -134,11 +135,11 @@@
* Filter operator that checks if an expression's value is nil.
* The difference with {@link IsNull} is that a value should exist but
* cannot be provided for the reason given by {@link #getNilReason()}.
+ *
+ * @param <R> the type of resources used as inputs.
*/
static final class IsNil<R> extends UnaryFunction<R,Object>
- implements NilOperator<R>, Optimization.OnFilter<R>
+ implements Filter<R>, Optimization.OnFilter<R>
{
/** For cross-version compatibility. */
private static final long serialVersionUID = -7540765433296725888L;
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
index d8acf195c1,1b53fcf885..af084ce29f
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/AbstractParty.java
@@@ -22,17 -22,17 +22,20 @@@ import javax.xml.bind.annotation.XmlEle
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
import org.opengis.util.InternationalString;
+ import org.opengis.metadata.Identifier;
import org.opengis.metadata.citation.Contact;
-import org.opengis.metadata.citation.Individual;
-import org.opengis.metadata.citation.Organisation;
-import org.opengis.metadata.citation.Party;
import org.apache.sis.metadata.iso.ISOMetadata;
import org.apache.sis.metadata.TitleProperty;
import org.apache.sis.util.iso.Types;
+ import org.apache.sis.xml.IdentifierSpace;
+ import org.apache.sis.internal.jaxb.NonMarshalledAuthority;
+// Branch-specific imports
+import org.opengis.annotation.UML;
+import static org.opengis.annotation.Obligation.OPTIONAL;
+import static org.opengis.annotation.Obligation.CONDITIONAL;
+import static org.opengis.annotation.Specification.ISO_19115;
+
/**
* Information about the individual and / or organization of the party.
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
index 3ee470f80a,dc9359aa13..2b9c948b1e
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/citation/DefaultResponsibleParty.java
@@@ -125,8 -112,8 +125,8 @@@ public class DefaultResponsibleParty ex
* <li>Otherwise if the given object is already an instance of
* {@code DefaultResponsibleParty}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code DefaultResponsibleParty} instance is created using the
- * {@linkplain #DefaultResponsibleParty(ResponsibleParty) copy constructor}
- * and returned. Note that this is a <dfn>shallow</dfn> copy operation, because the other
- * {@linkplain #DefaultResponsibleParty(Responsibility) copy constructor} and returned.
++ * {@linkplain #DefaultResponsibleParty(ResponsibleParty) copy constructor} and returned.
+ * Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
index 35d121ae94,eab7d2ddfb..bb2f5f29d9
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultSampleDimension.java
@@@ -23,8 -24,10 +24,9 @@@ import javax.xml.bind.annotation.XmlSee
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import org.opengis.metadata.content.Band;
-import org.opengis.metadata.content.SampleDimension;
import org.opengis.metadata.content.CoverageContentType;
import org.opengis.metadata.content.TransferFunctionType;
+ import org.opengis.metadata.content.RangeElementDescription;
import org.opengis.util.Record;
import org.opengis.util.RecordType;
import org.apache.sis.measure.ValueRange;
@@@ -481,6 -485,32 +491,31 @@@ public class DefaultSampleDimension ext
}
}
+ /**
+ * Provides the description and values of the specific range elements of a sample dimension.
+ * Example: missing data.
+ *
+ * @return description and values of the specific range elements.
+ *
+ * @since 1.3
+ */
- @Override
+ @XmlElement(name = "rangeElementDescription")
+ @XmlJavaTypeAdapter(MI_RangeElementDescription.Since2014.class)
+ public Collection<RangeElementDescription> getRangeElementDescriptions() {
+ return rangeElementDescriptions = nonNullCollection(rangeElementDescriptions, RangeElementDescription.class);
+ }
+
+ /**
+ * Sets the description and values of the specific range elements of a sample dimension.
+ *
+ * @param newValues the new range element description.
+ *
+ * @since 1.3
+ */
+ public void setRangeElementDescriptions(final Collection<? extends RangeElementDescription> newValues) {
+ rangeElementDescriptions = writeCollection(newValues, rangeElementDescriptions, RangeElementDescription.class);
+ }
+
/**
* Returns the smallest distance between which separate points can be distinguished,
* as specified in instrument design.
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAggregateInformation.java
index a279870e63,6f644b555a..c1478819c1
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAggregateInformation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAggregateInformation.java
@@@ -91,18 -89,9 +91,18 @@@ public class DefaultAggregateInformatio
public DefaultAggregateInformation() {
}
+ /**
+ * Constructs a new instance initialized with the values from the specified metadata object.
+ *
+ * @param object The metadata to copy values from.
+ */
+ DefaultAggregateInformation(final DefaultAssociatedResource object) {
+ super(object);
+ }
+
/**
* Constructs a new instance initialized with the values from the specified metadata object.
- * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the
+ * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
* given object are not recursively copied.
*
* @param object the metadata to copy values from, or {@code null} if none.
@@@ -124,8 -111,8 +124,8 @@@
* <li>Otherwise if the given object is already an instance of
* {@code DefaultAggregateInformation}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code DefaultAggregateInformation} instance is created using the
- * {@linkplain #DefaultAggregateInformation(AggregateInformation) copy constructor}
- * and returned. Note that this is a <dfn>shallow</dfn> copy operation, because the other
- * {@linkplain #DefaultAggregateInformation(AssociatedResource) copy constructor} and returned.
++ * {@linkplain #DefaultAggregateInformation(AggregateInformation) copy constructor} and returned.
+ * Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAssociatedResource.java
index 8ab487335e,6e6d8b7bac..f801fa3593
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAssociatedResource.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultAssociatedResource.java
@@@ -121,22 -113,9 +121,22 @@@ public class DefaultAssociatedResource
this.associationType = associationType;
}
+ /**
+ * Constructs a new instance initialized with the values from the specified metadata object.
+ * This is a constructor for {@link DefaultAggregateInformation} constructor only.
+ *
+ * @param object The metadata to copy values from.
+ */
+ DefaultAssociatedResource(final DefaultAssociatedResource object) {
+ this.associationType = object.associationType;
+ this.initiativeType = object.initiativeType;
+ this.name = object.name;
+ this.metadataReference = object.metadataReference;
+ }
+
/**
* Constructs a new instance initialized with the values from the specified metadata object.
- * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the
+ * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
* given object are not recursively copied.
*
* @param object the metadata to copy values from, or {@code null} if none.
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultOperationMetadata.java
index 1728155a94,e0bab1129b..ff4b6a1d1d
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultOperationMetadata.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultOperationMetadata.java
@@@ -137,9 -121,25 +137,9 @@@ public class DefaultOperationMetadata e
public DefaultOperationMetadata() {
}
- /**
- * Constructs a new operation metadata initialized to the specified values.
- *
- * @param operationName an unique identifier for this interface.
- * @param platform distributed computing platforms on which the operation has been implemented.
- * @param connectPoint handle for accessing the service interface.
- */
- public DefaultOperationMetadata(final String operationName,
- final DistributedComputingPlatform platform,
- final OnlineResource connectPoint)
- {
- this.operationName = operationName;
- this.distributedComputingPlatforms = singleton(platform, DistributedComputingPlatform.class);
- this.connectPoints = singleton(connectPoint, OnlineResource.class);
- }
-
/**
* Constructs a new instance initialized with the values from the specified metadata object.
- * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the
+ * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
* given object are not recursively copied.
*
* @param object the metadata to copy values from, or {@code null} if none.
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractDataEvaluation.java
index 78b60fd1dc,0421e47f54..4edc07846a
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractDataEvaluation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractDataEvaluation.java
@@@ -48,11 -48,10 +48,11 @@@ import static org.opengis.annotation.Sp
@XmlRootElement(name = "AbstractDQ_DataEvaluation")
@XmlSeeAlso({
DefaultFullInspection.class,
- DefaultIndirectEvaluation .class,
+ DefaultIndirectEvaluation.class,
DefaultSampleBasedInspection.class
})
-public class AbstractDataEvaluation extends DefaultEvaluationMethod implements DataEvaluation {
+@UML(identifier="DQ_DataEvaluation", specification=UNSPECIFIED)
+public class AbstractDataEvaluation extends DefaultEvaluationMethod {
/**
* Serial number for inter-operability with different versions.
*/
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
index 4bf707b888,3144d1d2b0..4a6eda966f
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/AbstractTemporalQuality.java
@@@ -100,8 -95,8 +100,8 @@@ public class AbstractTemporalQuality ex
* <li>Otherwise if the given object is already an instance of
* {@code AbstractTemporalQuality}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code AbstractTemporalQuality} instance is created using the
- * {@linkplain #AbstractTemporalQuality(TemporalQuality) copy constructor} and returned.
+ * {@linkplain #AbstractTemporalQuality(TemporalAccuracy) copy constructor} and returned.
- * Note that this is a <dfn>shallow</dfn> copy operation, because the other
+ * Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
index 0e9364294d,a6f1f1a4f5..6051e556c0
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultNonQuantitativeAttributeCorrectness.java
@@@ -91,8 -87,8 +91,8 @@@ public class DefaultNonQuantitativeAttr
* <li>Otherwise if the given object is already an instance of
* {@code DefaultNonQuantitativeAttributeCorrectness}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code DefaultNonQuantitativeAttributeCorrectness} instance is created using the
- * {@linkplain #DefaultNonQuantitativeAttributeCorrectness(NonQuantitativeAttributeCorrectness) copy constructor}
+ * {@linkplain #DefaultNonQuantitativeAttributeCorrectness(NonQuantitativeAttributeAccuracy) copy constructor}
- * and returned. Note that this is a <dfn>shallow</dfn> copy operation, because the other
+ * and returned. Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java
index 96366fbb99,eeb2268fc9..bb5649054b
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultSampleBasedInspection.java
@@@ -89,9 -83,9 +89,9 @@@ public class DefaultSampleBasedInspecti
public DefaultSampleBasedInspection() {
}
-- /**
++ /**
* Constructs a new instance initialized with the values from the specified metadata object.
- * This is a <dfn>shallow</dfn> copy constructor, because the other metadata contained in the
+ * This is a <em>shallow</em> copy constructor, because the other metadata contained in the
* given object are not recursively copied.
*
* @param object the metadata to copy values from, or {@code null} if none.
@@@ -105,7 -101,32 +105,7 @@@
}
}
- /**
+ /**
- * Returns a SIS metadata implementation with the values of the given arbitrary implementation.
- * This method performs the first applicable action in the following choices:
- *
- * <ul>
- * <li>If the given object is {@code null}, then this method returns {@code null}.</li>
- * <li>Otherwise if the given object is already an instance of
- * {@code DefaultSampleBasedInspection}, then it is returned unchanged.</li>
- * <li>Otherwise a new {@code DefaultSampleBasedInspection} instance is created using the
- * {@linkplain #DefaultSampleBasedInspection(SampleBasedInspection) copy constructor} and returned.
- * Note that this is a <em>shallow</em> copy operation, because the other
- * metadata contained in the given object are not recursively copied.</li>
- * </ul>
- *
- * @param object the object to get as a SIS implementation, or {@code null} if none.
- * @return a SIS implementation containing the values of the given object (may be the
- * given object itself), or {@code null} if the argument was null.
- */
- public static DefaultSampleBasedInspection castOrCopy(final SampleBasedInspection object) {
- if (object == null || object instanceof DefaultSampleBasedInspection) {
- return (DefaultSampleBasedInspection) object;
- }
- return new DefaultSampleBasedInspection(object);
- }
-
- /**
* Returns the information of the type of sampling scheme and description of the sampling procedure.
*
* @return sampling scheme and sampling procedure.
@@@ -126,7 -147,7 +126,7 @@@
samplingScheme = newValue;
}
-- /**
++ /**
* Returns the information of how lots are defined.
*
* @return information on lots.
@@@ -147,7 -168,7 +147,7 @@@
lotDescription = newValue;
}
-- /**
++ /**
* Returns the information on how many samples on average are extracted for inspection from each lot of population.
*
* @return average number of samples extracted for inspection.
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java
index b93e3fba3d,5d104a9e3c..82f62c996f
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/quality/DefaultUsabilityElement.java
@@@ -89,8 -84,8 +89,8 @@@ public class DefaultUsabilityElement ex
* <li>Otherwise if the given object is already an instance of
* {@code DefaultUsabilityElement}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code DefaultUsabilityElement} instance is created using the
- * {@linkplain #DefaultUsabilityElement(UsabilityElement) copy constructor} and returned.
+ * {@linkplain #DefaultUsabilityElement(Usability) copy constructor} and returned.
- * Note that this is a <dfn>shallow</dfn> copy operation, because the other
+ * Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractSpatialRepresentation.java
index bba38d3bf6,6ac5fbe269..5d3bc0b9d8
--- a/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractSpatialRepresentation.java
+++ b/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/spatial/AbstractSpatialRepresentation.java
@@@ -18,7 -18,10 +18,10 @@@ package org.apache.sis.metadata.iso.spa
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlSeeAlso;
+ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
-import org.opengis.metadata.maintenance.Scope;
++import org.opengis.metadata.quality.Scope;
import org.opengis.metadata.spatial.SpatialRepresentation;
import org.opengis.metadata.spatial.GridSpatialRepresentation;
import org.opengis.metadata.spatial.VectorSpatialRepresentation;
@@@ -73,6 -83,32 +83,34 @@@ public class AbstractSpatialRepresentat
*/
public AbstractSpatialRepresentation(final SpatialRepresentation object) {
super(object);
++ if (object instanceof AbstractSpatialRepresentation) {
++ scope = ((AbstractSpatialRepresentation) object).getScope();
++ }
+ }
+
+ /**
+ * Returns the level and extent of the spatial representation.
+ *
+ * @return level and extent of the spatial representation, or {@code null} if none.
+ *
+ * @since 1.3
+ */
- @Override
+ @XmlElement(name = "scope")
+ @XmlJavaTypeAdapter(MD_Scope.Since2014.class)
+ public Scope getScope() {
+ return scope;
+ }
+
+ /**
+ * Sets the level and extent of the spatial representation.
+ *
+ * @param newValue the new type of resource.
+ *
+ * @since 1.3
+ */
+ public void setScope(final Scope newValue) {
+ checkWritePermission(scope);
+ scope = newValue;
}
/**
diff --cc core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
index d24c5ebac8,78f21b9fbd..ba7284fead
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/quality/DefaultQuantitativeResultTest.java
@@@ -47,4 -62,105 +62,105 @@@ public final strictfp class DefaultQuan
r.setErrorStatistic(new SimpleInternationalString("a description"));
assertFalse(r.isEmpty());
}
+
+ /**
+ * Creates a {@code DefaultQuantitativeResult} instance wrapped in an element.
+ * The returned element is as below:
+ *
+ * {@preformat text
+ * Quantitative attribute accuracy
+ * ├─Measure
+ * │ └─Name of measure…………………… Some quality flag
+ * └─Quantitative result
+ * ├─Value……………………………………………… The quality is okay
+ * └─Value record type……………… CharacterSequence
+ * }
+ */
+ @SuppressWarnings("deprecation")
+ private static Element createResultInsideElement() {
+ /*
+ * The `RecordType` constructor invoked at unmarshalling time sets the name
+ * to the hard-coded "Multiline record" string. We need to use the same name.
+ */
+ final RecordType recordType = RecordSchemaSIS.INSTANCE.createRecordType(
+ RecordSchemaSIS.MULTILINE.toInternationalString(),
+ Collections.singletonMap("Result of quality measurement", String.class));
+ /*
+ * The `Record` constructor invoked at unmarshalling time sets the type
+ * to the hard-coded "Single text" value. We need to use the same type.
+ */
+ final RecordType singleText = RecordSchemaSIS.STRING;
+ final DefaultRecord record = new DefaultRecord(singleText);
+ record.set(TestUtilities.getSingleton(singleText.getMembers()), "The quality is okay");
+ /*
+ * Record type and record value are set independently in two properties.
+ * In current implementation, `record.type` is not equal to `recordType`.
+ */
+ assertNotEquals(recordType, record.getRecordType()); // Actually a limitation, not an intended behavior.
+ final DefaultQuantitativeResult result = new DefaultQuantitativeResult();
+ result.setValues(Collections.singletonList(record));
+ result.setValueType(recordType);
+ /*
+ * Opportunistically test the redirection implemented in deprecated methods.
+ */
+ final DefaultQuantitativeAttributeAccuracy element = new DefaultQuantitativeAttributeAccuracy();
+ element.setNamesOfMeasure(Collections.singleton(new SimpleInternationalString("Some quality flag")));
+ element.setResults(Collections.singleton(result));
+ return element;
+ }
+
+ /**
+ * Tests unmarshalling of an XML element containing result records.
+ *
+ * @throws JAXBException if an error occurred during unmarshalling.
+ */
+ @Test
+ public void testUnmarshallingLegacy() throws JAXBException {
+ final String xml = // Following XML shall match the object built by `createResultInsideElement()`.
+ "<gmd:DQ_QuantitativeAttributeAccuracy xmlns:gmd=\"" + LegacyNamespaces.GMD + '"'
+ + " xmlns:gco=\"" + LegacyNamespaces.GCO + "\">\n" +
+ " <gmd:nameOfMeasure>\n" +
+ " <gco:CharacterString>Some quality flag</gco:CharacterString>\n" +
+ " </gmd:nameOfMeasure>\n" +
+ " <gmd:result>\n" +
+ " <gmd:DQ_QuantitativeResult>\n" +
+ " <gmd:value>\n" +
+ " <gco:Record>The quality is okay</gco:Record>\n" +
+ " </gmd:value>\n" +
+ " <gmd:valueType>\n" +
+ " <gco:RecordType>Result of quality measurement</gco:RecordType>\n" +
+ " </gmd:valueType>\n" +
+ " </gmd:DQ_QuantitativeResult>\n" +
+ " </gmd:result>\n" +
+ "</gmd:DQ_QuantitativeAttributeAccuracy>";
+
+ final Element unmarshalled = (Element) XML.unmarshal(xml);
+ final Element programmatic = createResultInsideElement();
+ /*
+ * Before to compare the two `Element`, compare some individual components.
+ * The intent is to identify which metadata is not equal in case of test failure.
+ */
+ final QuantitativeResult uResult = (QuantitativeResult) TestUtilities.getSingleton(unmarshalled.getResults());
+ final QuantitativeResult pResult = (QuantitativeResult) TestUtilities.getSingleton(programmatic.getResults());
+ final RecordType uType = uResult.getValueType();
+ final RecordType pType = pResult.getValueType();
- final Map<MemberName,Type> uFields = uType.getFieldTypes();
- final Map<MemberName,Type> pFields = pType.getFieldTypes();
++ final Map<MemberName,Type> uFields = uType.getMemberTypes();
++ final Map<MemberName,Type> pFields = pType.getMemberTypes();
+ final Iterator<MemberName> uIter = uFields.keySet().iterator();
+ final Iterator<MemberName> pIter = pFields.keySet().iterator();
+ assertEquals(uFields.size(), pFields.size());
+ while (uIter.hasNext() | pIter.hasNext()) {
+ final MemberName uName = uIter.next();
+ final MemberName pName = pIter.next();
+ assertEquals(uName.scope(), pName.scope());
+ assertEquals(uName, pName);
+ assertEquals(uFields.get(uName), pFields.get(pName));
+ }
+ assertEquals(uFields, pFields);
+ assertEquals(uType.getMembers(), pType.getMembers());
+ assertEquals(uType.getTypeName(), pType.getTypeName());
+ assertEquals(uType, pType);
+ assertEquals(uResult, pResult);
+ assertEquals(unmarshalled, programmatic);
+ }
}
diff --cc core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java
index 0040bba469,b9dedd91e2..8b67c34e96
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/AnnotationConsistencyCheck.java
@@@ -324,17 -323,25 +324,18 @@@ public abstract strictfp class Annotati
* General cases (after we processed all the special cases)
* based on which standard defines the type or property.
*/
- final short version = uml.version();
+ final Specification specification = uml.specification();
- if (version != 0 && version < specification.defaultVersion()) {
+ if (/*uml.version()*/ 0 != 0) {
- switch (uml.specification()) {
+ switch (specification) {
case ISO_19115: return LegacyNamespaces.GMD;
case ISO_19115_2: return LegacyNamespaces.GMI;
}
}
- switch (uml.specification()) {
+ switch (specification) {
case ISO_19115:
- case ISO_19115_2:
- case ISO_19115_3: return CodeListUID.METADATA_ROOT;
+ case ISO_19115_2: return CodeListUID.METADATA_ROOT;
case ISO_19139: return LegacyNamespaces.GMX;
case ISO_19108: return LegacyNamespaces.GMD;
- case ISO_19157: {
- // Case for a method. By contrast, above `identifier.startsWith(…)` checks were for types.
- final UML parent = TestUtilities.getSingleton(impl.getInterfaces()).getAnnotation(UML.class);
- return parent.identifier().startsWith("DQM_") ? Namespaces.DQM : Namespaces.MDQ;
- }
default: throw new IllegalArgumentException(uml.toString());
}
}
diff --cc core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
index 4dc4213918,8614382ce0..ae3947bc1b
--- a/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
@@@ -21,10 -21,10 +21,10 @@@ import org.opengis.metadata.citation.Ad
import org.opengis.metadata.acquisition.Instrument;
import org.opengis.metadata.identification.DataIdentification;
import org.opengis.metadata.identification.InitiativeType;
+import org.apache.sis.metadata.iso.DefaultIdentifier;
import org.apache.sis.internal.jaxb.metadata.replace.ReferenceSystemMetadata;
+ import org.apache.sis.internal.jaxb.metadata.replace.SensorType;
import org.apache.sis.internal.xml.LegacyNamespaces;
- import org.apache.sis.internal.metadata.SensorType;
import org.apache.sis.util.iso.Types;
import org.apache.sis.test.DependsOnMethod;
import org.apache.sis.test.xml.TestCase;
diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
index 812d0ecfbb,8fe3a505dc..83c6fceb19
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/ImmutableIdentifier.java
@@@ -338,8 -327,8 +338,8 @@@ public class ImmutableIdentifier extend
* <li>Otherwise if the given object is already an instance of
* {@code ImmutableIdentifier}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code ImmutableIdentifier} instance is created using the
- * {@linkplain #ImmutableIdentifier(Identifier) copy constructor} and returned.
+ * {@linkplain #ImmutableIdentifier(ReferenceIdentifier) copy constructor} and returned.
- * Note that this is a <dfn>shallow</dfn> copy operation, because the other
+ * Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
index 02745661c1,f50f3172ef..eeab97e536
--- a/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
+++ b/core/sis-referencing/src/main/java/org/apache/sis/referencing/NamedIdentifier.java
@@@ -340,8 -340,8 +340,8 @@@ public class NamedIdentifier extends Im
* <li>Otherwise if the given object is already an instance of
* {@code NamedIdentifier}, then it is returned unchanged.</li>
* <li>Otherwise a new {@code NamedIdentifier} instance is created using the
- * {@linkplain #NamedIdentifier(Identifier) copy constructor} and returned.
+ * {@linkplain #NamedIdentifier(ReferenceIdentifier) copy constructor} and returned.
- * Note that this is a <dfn>shallow</dfn> copy operation, because the other
+ * Note that this is a <em>shallow</em> copy operation, because the other
* metadata contained in the given object are not recursively copied.</li>
* </ul>
*
diff --cc storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java
index 4cdf96d007,a544011381..f493afd918
--- a/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java
+++ b/storage/sis-xmlstore/src/main/java/org/apache/sis/internal/storage/gpx/Copyright.java
@@@ -229,21 -247,20 +229,31 @@@ resp: for (final DefaultResponsibilit
* @return name of the party, or {@code null} if none.
*/
@Override
- public InternationalString getName() {
- return (author != null) ? new SimpleInternationalString(author) : null;
+ public String getIndividualName() {
+ return author;
+ }
+
+ /**
+ * ISO 19115 metadata property not specified by GPX.
+ * This is part of the properties returned by {@code getParties()}.
+ *
+ * @return contact information for the party.
+ */
+ @Override
+ public Contact getContactInfo() {
+ return null;
}
+ /**
+ * Returns citation or party identifiers, which is an empty list.
+ *
+ * @return empty.
+ */
+ @Override
+ public Collection<Identifier> getIdentifiers() {
+ return Collections.emptyList();
+ }
+
/* -----------------------------------------------------------------------------------
* Implementation of the Citation object returned by LegalConstraints.getReferences().
@@@ -311,52 -317,7 +321,41 @@@
*/
@Override
public DateType getDateType() {
- return DateType.IN_FORCE;
+ return DateType.valueOf("IN_FORCE");
+ }
+
+ /**
+ * ISO 19115 metadata property not specified by GPX.
+ * This is part of the properties returned by {@code getReferences()}.
+ *
+ * @return the license version, or {@code null} if none.
+ */
+ @Override
+ public InternationalString getEdition() {
+ return null;
+ }
+
+ /**
+ * ISO 19115 metadata property not specified by GPX.
+ * This is part of the properties returned by {@code getReferences()}.
+ *
+ * @return the license edition date, or {@code null} if none.
+ */
+ @Override
+ public Date getEditionDate() {
+ return null;
+ }
+
+ /**
+ * ISO 19115 metadata property not specified by GPX.
+ * This is part of the properties returned by {@code getReferences()}.
- *
- * @return the identifiers of the license.
- */
- @Override
- public Collection<Identifier> getIdentifiers() {
- return Collections.emptySet();
- }
-
- /**
- * ISO 19115 metadata property not specified by GPX.
- * This is part of the properties returned by {@code getReferences()}.
+ * It would be the license author if that information was provided.
+ *
+ * @return the information for individuals or organisations that are responsible for the license.
+ */
+ @Override
+ public Collection<ResponsibleParty> getCitedResponsibleParties() {
+ return Collections.emptySet();
}
/**