Author: desruisseaux
Date: Thu Feb  1 20:03:14 2018
New Revision: 1822899

URL: http://svn.apache.org/viewvc?rev=1822899&view=rev
Log:
Fix more JAXB annotations.

Modified:
    
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
    
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
    
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
    
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
    
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
    
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
    
sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
    
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/TM_Primitive.java
    
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/internal/metadata/MetadataUtilities.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -54,7 +54,7 @@ public final class MetadataUtilities ext
     }
 
     /**
-     * Returns the given milliseconds time to a date object, or returns null
+     * Converts the given milliseconds time to a date object, or returns null
      * if the given time is {@link Long#MIN_VALUE}.
      *
      * @param  value  the time in milliseconds.

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultEnvironmentalRecord.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -57,7 +57,7 @@ import static org.apache.sis.internal.me
     "averageAirTemperature",
     "maxRelativeHumidity",
     "maxAltitude",
-    "meterologicalConditions"       // Really spelled that way in XSD file.
+    "meteorologicalConditions"
 })
 @XmlRootElement(name = "MI_EnvironmentalRecord")
 public class DefaultEnvironmentalRecord extends ISOMetadata implements 
EnvironmentalRecord {

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/acquisition/DefaultRequirement.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -78,7 +78,7 @@ import static org.apache.sis.internal.me
     "priority",
     "requestedDate",
     "expiryDate",
-    "satisifiedPlan"        // Really spelled that way in XSD file.
+    "satisfiedPlans"
 })
 @XmlRootElement(name = "MI_Requirement")
 public class DefaultRequirement extends ISOMetadata implements Requirement {

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/content/DefaultBand.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -66,10 +66,7 @@ import static org.apache.sis.internal.me
     "boundMin",
     "boundUnits",
     "peakResponse",
-    "bitsPerValue",
     "toneGradation",
-    "scaleFactor",
-    "offset",
     "bandBoundaryDefinition",
     "nominalSpatialResolution",
     "transferFunctionType",

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/identification/DefaultDataIdentification.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -218,7 +218,7 @@ public class DefaultDataIdentification e
      * @return character coding standard(s) used.
      */
     @Override
-    @XmlElement(name = "characterSet")
+    @XmlElement(name = "characterSet", namespace = LegacyNamespaces.GMD)
     public Collection<Charset> getCharacterSets() {
         return characterSets = nonNullCollection(characterSets, Charset.class);
     }

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/main/java/org/apache/sis/metadata/iso/lineage/DefaultProcessStep.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -24,6 +24,7 @@ import javax.xml.bind.annotation.XmlElem
 import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 import org.opengis.util.InternationalString;
+import org.opengis.temporal.TemporalPrimitive;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.citation.Responsibility;
 import org.opengis.metadata.maintenance.Scope;
@@ -34,12 +35,11 @@ import org.opengis.metadata.lineage.Proc
 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.Namespaces;
 import org.apache.sis.internal.jaxb.FilterByVersion;
+import org.apache.sis.internal.jaxb.LegacyNamespaces;
+import org.apache.sis.internal.jaxb.gml.TM_Primitive;
 import org.apache.sis.internal.jaxb.metadata.MD_Scope;
-
-import static org.apache.sis.internal.metadata.MetadataUtilities.toDate;
-import static 
org.apache.sis.internal.metadata.MetadataUtilities.toMilliseconds;
+import org.apache.sis.internal.util.TemporalUtilities;
 
 
 /**
@@ -73,7 +73,8 @@ import static org.apache.sis.internal.me
 @XmlType(name = "LI_ProcessStep_Type", propOrder = {
     "description",
     "rationale",
-    "date",
+    "stepDateTime",             // New in ISO 19115:2014
+    "date",                     // Legacy ISO 19115:2003
     "processors",
     "reference",                // New in ISO 19115:2014
     "scope",                    // New in ISO 19115:2014
@@ -88,7 +89,7 @@ public class DefaultProcessStep extends
     /**
      * Serial number for inter-operability with different versions.
      */
-    private static final long serialVersionUID = -535020568951006598L;
+    private static final long serialVersionUID = -2338712901907082970L;
 
     /**
      * Description of the event, including related parameters or tolerances.
@@ -101,11 +102,9 @@ public class DefaultProcessStep extends
     private InternationalString rationale;
 
     /**
-     * Date and time or range of date and time on or over which the process 
step occurred,
-     * in milliseconds elapsed since January 1st, 1970. If there is no such 
date, then this
-     * field is set to the special value {@link Long#MIN_VALUE}.
+     * Date, time or range of date and time over which the process step 
occurred.
      */
-    private long date = Long.MIN_VALUE;
+    private TemporalPrimitive stepDateTime;
 
     /**
      * Identification of, and means of communication with, person(s) and
@@ -174,7 +173,7 @@ public class DefaultProcessStep extends
         if (object != null) {
             description           = object.getDescription();
             rationale             = object.getRationale();
-            date                  = toMilliseconds(object.getDate());
+            stepDateTime          = 
TemporalUtilities.createInstant(object.getDate());
             processors            = copyCollection(object.getProcessors(), 
Responsibility.class);
             references            = copyCollection(object.getReferences(), 
Citation.class);
             sources               = copyCollection(object.getSources(), 
Source.class);
@@ -253,24 +252,54 @@ public class DefaultProcessStep extends
     }
 
     /**
+     * Returns the date, time or range of date and time over which the process 
step occurred.
+     *
+     * @return date, time or period over which the process step occurred, or 
{@code null}.
+     *
+     * @since 1.0
+     */
+    @XmlElement(name = "stepDateTime")
+    @XmlJavaTypeAdapter(TM_Primitive.Since2014.class)
+    public TemporalPrimitive getStepDateTime() {
+        return stepDateTime;
+    }
+
+    /**
+     * Sets the date, time or range of date and time over which the process 
step occurred.
+     *
+     * @param  newValue  the new date, time or period.
+     *
+     * @since 1.0
+     */
+    public void setStepDateTime(final TemporalPrimitive newValue) {
+        checkWritePermission();
+        stepDateTime = newValue;
+    }
+
+    /**
      * Returns the date and time or range of date and time on or over which 
the process step occurred.
      *
      * @return date on or over which the process step occurred, or {@code 
null}.
+     *
+     * @deprecated As of ISO 19115-1:2014, replaced by {@link 
#getStepDateTime()}.
      */
     @Override
-    @XmlElement(name = "dateTime")
+    @Deprecated
+    @XmlElement(name = "dateTime", namespace = LegacyNamespaces.GMD)
     public Date getDate() {
-        return toDate(date);
+        return FilterByVersion.LEGACY_METADATA.accept() ? 
TemporalUtilities.getDate(getStepDateTime()) : null;
     }
 
     /**
      * Sets the date and time or range of date and time on or over which the 
process step occurred.
      *
      * @param  newValue  the new date.
+     *
+     * @deprecated As of ISO 19115-1:2014, replaced by {@link 
#setStepDateTime(TemporalPrimitive)}.
      */
+    @Deprecated
     public void setDate(final Date newValue) {
-        checkWritePermission();
-        date = toMilliseconds(newValue);
+        setStepDateTime(TemporalUtilities.createInstant(newValue));
     }
 
     /**
@@ -371,7 +400,7 @@ public class DefaultProcessStep extends
      * @return product generated as a result of the process step.
      */
     @Override
-    @XmlElement(name = "output", namespace = Namespaces.GMI)
+    @XmlElement(name = "output")
     public Collection<Source> getOutputs() {
         return outputs = nonNullCollection(outputs, Source.class);
     }
@@ -393,7 +422,7 @@ public class DefaultProcessStep extends
      * @return procedure by which the algorithm was applied to derive 
geographic data, or {@code null}.
      */
     @Override
-    @XmlElement(name = "processingInformation", namespace = Namespaces.GMI)
+    @XmlElement(name = "processingInformation")
     public Processing getProcessingInformation() {
         return processingInformation;
     }
@@ -416,7 +445,7 @@ public class DefaultProcessStep extends
      * @return report generated by the process step.
      */
     @Override
-    @XmlElement(name = "report", namespace = Namespaces.GMI)
+    @XmlElement(name = "report")
     public Collection<ProcessStepReport> getReports() {
         return reports = nonNullCollection(reports, ProcessStepReport.class);
     }

Modified: 
sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-metadata/src/test/java/org/apache/sis/test/xml/SchemaCompliance.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -33,7 +33,6 @@ import java.util.Arrays;
 import java.util.Objects;
 import java.util.Collections;
 import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
 import javax.xml.XMLConstants;
 import javax.xml.bind.annotation.XmlNs;
 import javax.xml.bind.annotation.XmlType;
@@ -94,6 +93,7 @@ public final strictfp class SchemaCompli
     private static final Map<String,String> TYPES_TO_MERGE;
     static {
         final Map<String,String> m = new HashMap<>();
+        m.put("LE_ProcessStep_Type",         "LI_ProcessStep_Type");
         m.put("MI_Band_Type",                "MD_Band_Type");
         m.put("MI_CoverageDescription_Type", "MD_CoverageDescription_Type");
         m.put("AbstractMX_File_Type",        "MX_DataFile_Type");
@@ -680,10 +680,8 @@ public final strictfp class SchemaCompli
                         final String name = element.name();
                         final String ns = element.namespace();
                         isDeprecated = DEPRECATED_NAMESPACES.contains(ns);
-                        if (isDeprecated != 
method.isAnnotationPresent(Deprecated.class)) {
-                            if (!Modifier.isPrivate(method.getModifiers())) {
-                                throw new SchemaException("Unexpected 
deprecation status of " + className + '.' + name);
-                            }
+                        if (!isDeprecated && 
method.isAnnotationPresent(Deprecated.class)) {
+                            throw new SchemaException("Unexpected deprecation 
status of " + className + '.' + name);
                         }
                         final Info info = properties.get(name);
                         if (info == null) {

Modified: 
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/TM_Primitive.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/TM_Primitive.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/TM_Primitive.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/jaxb/gml/TM_Primitive.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -34,11 +34,11 @@ import org.apache.sis.util.resources.Err
  *
  * @author  Guilhem Legal (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.4
+ * @version 1.0
  * @since   0.3
  * @module
  */
-public final class TM_Primitive extends PropertyType<TM_Primitive, 
TemporalPrimitive> {
+public class TM_Primitive extends PropertyType<TM_Primitive, 
TemporalPrimitive> {
     /**
      * Empty constructor for JAXB.
      */
@@ -71,7 +71,7 @@ public final class TM_Primitive extends
      * @return {@code TemporalPrimitive.class}
      */
     @Override
-    protected Class<TemporalPrimitive> getBoundType() {
+    protected final Class<TemporalPrimitive> getBoundType() {
         return TemporalPrimitive.class;
     }
 
@@ -82,7 +82,7 @@ public final class TM_Primitive extends
      * @return the time period, or {@code null}.
      */
     @XmlElement(name = "TimePeriod")
-    public TimePeriod getTimePeriod() {
+    public final TimePeriod getTimePeriod() {
         final TemporalPrimitive metadata = this.metadata;
         return (metadata instanceof Period) ? new TimePeriod((Period) 
metadata) : null;
     }
@@ -94,7 +94,7 @@ public final class TM_Primitive extends
      * @return the time instant, or {@code null}.
      */
     @XmlElement(name = "TimeInstant")
-    public TimeInstant getTimeInstant() {
+    public final TimeInstant getTimeInstant() {
         final TemporalPrimitive metadata = this.metadata;
         return (metadata instanceof Instant) ? new TimeInstant((Instant) 
metadata) : null;
     }
@@ -105,7 +105,7 @@ public final class TM_Primitive extends
      *
      * @param  period  the wrapper to set.
      */
-    public void setTimePeriod(final TimePeriod period) {
+    public final void setTimePeriod(final TimePeriod period) {
         metadata = null;                                        // Cleaned 
first in case of failure.
         if (period != null) {
             final Context context = Context.current();
@@ -137,7 +137,7 @@ public final class TM_Primitive extends
      *
      * @param  instant  the wrapper to set.
      */
-    public void setTimeInstant(final TimeInstant instant) {
+    public final void setTimeInstant(final TimeInstant instant) {
         metadata = null;                                        // Cleaned 
first in case of failure.
         if (instant != null) {
             final Date position = XmlUtilities.toDate(Context.current(), 
instant.timePosition);
@@ -168,4 +168,23 @@ public final class TM_Primitive extends
             Context.warningOccured(Context.current(), TM_Primitive.class, 
method, e, true);
         }
     }
+
+    /**
+     * Wraps the value only if marshalling ISO 19115-3 element.
+     * Otherwise (i.e. if marshalling a legacy ISO 19139:2007 document), omit 
the element.
+     */
+    public static final class Since2014 extends TM_Primitive {
+        /** Empty constructor used only by JAXB. */
+        private Since2014() {
+        }
+
+        /**
+         * Wraps the given value in an ISO 19115-3 element, unless we are 
marshalling an older document.
+         *
+         * @return a non-null value only if marshalling ISO 19115-3 or newer.
+         */
+        @Override protected TM_Primitive wrap(final TemporalPrimitive value) {
+            return accept2014() ? super.wrap(value) : null;
+        }
+    }
 }

Modified: 
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java
URL: 
http://svn.apache.org/viewvc/sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java?rev=1822899&r1=1822898&r2=1822899&view=diff
==============================================================================
--- 
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java
 [UTF-8] (original)
+++ 
sis/branches/ISO-19115-3/core/sis-utility/src/main/java/org/apache/sis/internal/util/TemporalUtilities.java
 [UTF-8] Thu Feb  1 20:03:14 2018
@@ -20,6 +20,7 @@ import java.util.Date;
 import org.opengis.temporal.Instant;
 import org.opengis.temporal.Period;
 import org.opengis.temporal.TemporalFactory;
+import org.opengis.temporal.TemporalPrimitive;
 import org.apache.sis.util.Static;
 import org.apache.sis.util.resources.Errors;
 import org.apache.sis.internal.system.DefaultFactories;
@@ -31,7 +32,7 @@ import org.apache.sis.internal.system.De
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @author  Guilhem Legal (Geomatys)
- * @version 0.8
+ * @version 1.0
  * @since   0.3
  * @module
  */
@@ -99,4 +100,28 @@ public final class TemporalUtilities ext
         final TemporalFactory factory = getTemporalFactory();
         return factory.createPeriod(createInstant(factory, begin), 
createInstant(factory, end));
     }
+
+    /**
+     * Infers a value from the extent as a {@link Date} object.
+     * This method is used for compatibility with legacy API and may disappear 
in future SIS version.
+     *
+     * @param  time  the instant or period for which to get a date, or {@code 
null}.
+     * @return the requested time as a Java date, or {@code null} if none.
+     *
+     * @since 1.0
+     */
+    public static Date getDate(final TemporalPrimitive time) {
+        Instant instant;
+        if (time instanceof Instant) {
+            instant = (Instant) time;
+        } else if (time instanceof Period) {
+            instant = ((Period) time).getEnding();
+            if (instant == null) {
+                instant = ((Period) time).getBeginning();
+            }
+        } else {
+            return null;
+        }
+        return instant.getDate();
+    }
 }


Reply via email to