package flex.messaging.io;
import java.util.List;
import com.grendelscan.commons.flex.AmfUtils;
import com.grendelscan.commons.flex.complexTypes.AmfServerSideObject;
import com.grendelscan.commons.http.dataHandling.references.NameOrValueReference;
public class ServerSideObjectProxy extends AbstractProxy
{
/**
*
*/
private static final long serialVersionUID = 1L;
public ServerSideObjectProxy()
{
this(null);
}
protected ServerSideObjectProxy(final Object defaultInstance)
{
super(defaultInstance);
}
@Override
public String getAlias(final Object instance)
{
return AmfServerSideObject.class.getName();
}
@Override
public List getPropertyNames(final Object instance)
{
return ((AmfServerSideObject) instance).getPropertyNames();
}
@Override
public Class getType(final Object instance, final String propertyName)
{
AmfServerSideObject sso = (AmfServerSideObject) instance;
Object property = sso.getProperty(propertyName);
if (property == null)
{
return Object.class;
}
else
{
return property.getClass();
}
}
@Override
public Object getValue(final Object instance, final String propertyName)
{
AmfServerSideObject sso = (AmfServerSideObject) instance;
return sso.getProperty(propertyName);
}
@Override
public void setValue(final Object instance, final String propertyName, final Object value)
{
AmfServerSideObject sso = (AmfServerSideObject) instance;
sso.setProperty(propertyName, AmfUtils.parseAmfData(value, sso, NameOrValueReference.VALUE, -3));
}
}