package org.marketcetera.util.ws.wrappers; import java.util.Date; import org.marketcetera.util.misc.ClassVersion; /** * A dual-form wrapper for marshalling a date. The raw form is {@link * Date}, and the marshalled form is {@link Long}. A wrapper is * necessary because date objects are not marshalled correctly under * certain time zones, including GMT. * * @author tlerios@marketcetera.com * @since 1.5.0 * @version $Id: DateWrapper.java 16154 2012-07-14 16:34:05Z colin $ */ /* $License$ */ @ClassVersion("$Id: DateWrapper.java 16154 2012-07-14 16:34:05Z colin $") public class DateWrapper extends DualWrapper<Date,Long> implements Comparable<DateWrapper> { // CLASS DATA. private static final long serialVersionUID=1L; // CONSTRUCTORS. /** * Creates a new wrapper for the given date. * * @param date The date, which may be null. */ public DateWrapper (Date date) { super(date); } /** * Creates a new wrapper. This empty constructor is intended for * use by JAXB and Java serialization. */ public DateWrapper() {} // DualWrapper. @Override protected void toRaw() { setRawOnly(new Date(getMarshalled())); } @Override protected void toMarshalled() { setMarshalledOnly(getRaw().getTime()); } // Comparable. @Override public int compareTo (DateWrapper other) { if (getRaw()==null) { throw new NullPointerException (Messages.RECEIVER_WRAPS_NULL.getText()); } if (other==null) { throw new NullPointerException (Messages.ARGUMENT_IS_NULL.getText()); } if (other.getRaw()==null) { throw new NullPointerException (Messages.ARGUMENT_WRAPS_NULL.getText()); } return getRaw().compareTo(other.getRaw()); } }