package org.marketcetera.util.ws.types;
import javax.xml.bind.annotation.XmlTransient;
import org.apache.commons.lang.ObjectUtils;
import org.marketcetera.util.ws.wrappers.BaseWrapper;
/**
* @author tlerios@marketcetera.com
* @since 1.0.0
* @version $Id: InnerObject.java 16154 2012-07-14 16:34:05Z colin $
*/
/* $License$ */
public class InnerObject
implements Comparable<InnerObject>
{
public static class Base<T>
extends BaseWrapper<T>
{
protected Base() {}
public Base
(T base)
{
super(base);
}
public void setBase
(T base)
{
setValue(base);
}
public T getBase()
{
return getValue();
}
}
public static class InnerStatic
extends Base<Integer>
{
@SuppressWarnings("unused")
private InnerStatic() {}
public InnerStatic
(int value)
{
super(value);
}
}
public class InnerNonstatic
extends Base<Long>
{
@SuppressWarnings("unused")
private InnerNonstatic() {}
public InnerNonstatic
(long value)
{
super(value);
}
}
private InnerStatic mIs;
private InnerNonstatic mIns;
private int mRank;
@SuppressWarnings("unused")
private InnerObject() {}
public InnerObject
(int isValue,
long insValue)
{
mIs=new InnerStatic(isValue);
mIns=new InnerNonstatic(insValue);
setRank(isValue*100+(int)insValue);
}
public void setInnerStatic
(InnerStatic is)
{
mIs=is;
}
public InnerStatic getInnerStatic()
{
return mIs;
}
public void setInnerNonstatic
(InnerNonstatic ins)
{
mIns=ins;
}
/*
* LIMITATION: JAXB cannot support non-static inner classes. To
* get the test to pass, this property is marked transient.
*/
@XmlTransient
public InnerNonstatic getInnerNonstatic()
{
return mIns;
}
public void setRank
(int rank)
{
mRank=rank;
}
public int getRank()
{
return mRank;
}
@Override
public int compareTo
(InnerObject o)
{
return getRank()-o.getRank();
}
@Override
public int hashCode()
{
return ObjectUtils.hashCode(getInnerStatic());
}
@Override
public boolean equals
(Object other)
{
if (this==other) {
return true;
}
if ((other==null) || !getClass().equals(other.getClass())) {
return false;
}
InnerObject o=(InnerObject)other;
return ObjectUtils.equals(getInnerStatic(),o.getInnerStatic());
}
}