/* * Geotoolkit - An Open Source Java GIS Toolkit * http://www.geotoolkit.org * * (C) 2008, Open Source Geospatial Foundation (OSGeo) * (C) 2014, Geomatys * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotoolkit.temporal.reference.xmlAdapter; import javax.xml.bind.annotation.XmlElement; import org.apache.sis.internal.jaxb.gco.PropertyType; import org.apache.sis.xml.Namespaces; import org.geotoolkit.temporal.object.DefaultInstant; import org.opengis.temporal.Instant; /** * JAXB adapter mapping implementing class to the GeoAPI interface. See * package documentation for more information about JAXB and interface. * * @author Remi Marechal (Geomatys). * @version 4.0 * @since 4.0 */ public class InstantAdapter extends PropertyType<InstantAdapter, Instant> { /** * Empty constructor for JAXB only. */ public InstantAdapter() { } /** * Returns the GeoAPI interface which is bound by this adapter. * This method is indirectly invoked by the private constructor * below, so it shall not depend on the state of this object. * * @return {@code Instant.class} */ @Override protected Class<Instant> getBoundType() { return Instant.class; } /** * Constructor for the {@link #wrap} method only. */ private InstantAdapter(final Instant instant) { super(instant); } /** * Invoked by {@link PropertyType} at marshalling time for wrapping the given value * in a {@code <gml:Instant>} XML element. * * @param instant The element to marshall. * @return A {@code PropertyType} wrapping the given the element. */ @Override protected InstantAdapter wrap(final Instant instant) { return new InstantAdapter(instant); } /** * Invoked by JAXB at marshalling time for getting the actual element to write * inside the {@code <gml:Instant>} XML element. * This is the value or a copy of the value given in argument to the {@code wrap} method. * * @return The element to be marshalled. */ @XmlElement(name = "TimeInstant", namespace = Namespaces.GML) public DefaultInstant getElement() { return DefaultInstant.castOrCopy(metadata); } /** * Invoked by JAXB at unmarshalling time for storing the result temporarily. * * @param instant The unmarshalled element. */ public void setElement(final DefaultInstant instant) { metadata = instant; } }