package org.aplikator.client.shared.rpc.marshaller;
import java.util.ArrayList;
import java.util.List;
import org.aplikator.client.shared.data.ContainerNodeDTO;
import org.aplikator.client.shared.data.RecordContainerDTO;
import org.jboss.errai.marshalling.client.api.MarshallingSession;
import org.jboss.errai.marshalling.client.api.annotations.ClientMarshaller;
import org.jboss.errai.marshalling.client.api.annotations.ServerMarshaller;
import org.jboss.errai.marshalling.client.api.json.EJObject;
import org.jboss.errai.marshalling.client.api.json.EJValue;
import org.jboss.errai.marshalling.client.marshallers.AbstractNullableMarshaller;
@ClientMarshaller(RecordContainerDTO.class)
@ServerMarshaller(RecordContainerDTO.class)
@SuppressWarnings("unchecked")
public class RecordContainerDTOMarshaller extends AbstractNullableMarshaller<RecordContainerDTO> {
/*@Override
public Class<RecordContainer> getTypeHandled() {
return RecordContainer.class;
}*/
@Override
public RecordContainerDTO[] getEmptyArray() {
return new RecordContainerDTO[0];
}
@Override
public RecordContainerDTO doNotNullDemarshall(EJValue o, MarshallingSession ctx) {
if (o.isObject() != null) {
EJObject ejObject = o.isObject();
List<ContainerNodeDTO> cnodes = new ArrayList<ContainerNodeDTO>();
if (DemarshallingUtils.containsAndNotNull(ejObject, "nodes")) {
cnodes = DemarshallingUtils.listUnMarshall(ejObject.get("nodes"), ctx, ContainerNodeDTO.class.getName());
}
RecordContainerDTO container = new RecordContainerDTO();
container.setContainerNodes(cnodes);
return container;
} else
return null;
}
@Override
public String doNotNullMarshall(RecordContainerDTO o, MarshallingSession ctx) {
StringBuilder builder = new StringBuilder().append('{');
MarshallingUtils.key("nodes", builder).append(':');
MarshallingUtils.listMarshall(builder, o.getRecords(), ctx, ContainerNodeDTO.class.getName());
builder.append('}');
return builder.toString();
}
}