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(); } }