package org.marketcetera.util.ws.wrappers;
import org.apache.commons.lang.ArrayUtils;
import org.marketcetera.util.misc.ClassVersion;
/**
* A generic wrapper for marshalling a data value via JAXB. This class
* provides only a protected getter/setter because the raw form
* (namely the standard class used to represent that value in Java)
* may not be suitable for JAXB marshalling; but that raw form is
* suitable for (and is, in fact used by this class) to override
* certain standard {@link Object} methods.
*
* @author tlerios@marketcetera.com
* @since 1.0.0
* @version $Id: BaseWrapper.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
@ClassVersion("$Id: BaseWrapper.java 16154 2012-07-14 16:34:05Z colin $")
public abstract class BaseWrapper<T>
{
// INSTANCE DATA.
private T mValue;
// CONSTRUCTORS.
/**
* Creates a new wrapper with the given value.
*
* @param value The value, which may be null.
*/
public BaseWrapper
(T value)
{
setValue(value);
}
/**
* Creates a new wrapper. This empty constructor is intended for
* use by JAXB.
*/
protected BaseWrapper() {}
// INSTANCE METHODS.
/**
* Sets the receiver's data to the given value.
*
* @param value The value, which may be null.
*/
protected void setValue
(T value)
{
mValue=value;
}
/**
* Returns the receiver's data.
*
* @return The data, which may be null.
*/
protected T getValue()
{
return mValue;
}
// Object.
@Override
public String toString()
{
return ArrayUtils.toString(getValue());
}
@Override
public int hashCode()
{
return ArrayUtils.hashCode(getValue());
}
@Override
public boolean equals
(Object other)
{
if (this==other) {
return true;
}
if ((other==null) || !getClass().equals(other.getClass())) {
return false;
}
BaseWrapper<?> o=(BaseWrapper<?>)other;
return ArrayUtils.isEquals(getValue(),o.getValue());
}
}