package org.aplikator.client.shared.rpc.marshaller; import java.util.List; import java.util.Map; import java.util.Set; import org.aplikator.client.shared.descriptor.ApplicationDTO; import org.aplikator.client.shared.descriptor.MenuDTO; 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(ApplicationDTO.class) @ServerMarshaller(ApplicationDTO.class) public class ApplicationDTOMarshaller extends AbstractNullableMarshaller<ApplicationDTO> { public ApplicationDTOMarshaller() { super(); } /*@Override public Class<ApplicationDTO> getTypeHandled() { return ApplicationDTO.class; }*/ @Override public ApplicationDTO[] getEmptyArray() { return new ApplicationDTO[0]; } @Override public ApplicationDTO doNotNullDemarshall(EJValue o, MarshallingSession ctx) { if (o.isObject() != null) { EJObject object = o.isObject(); String username = null; if (object.containsKey("username") && object.get("username").isString() != null) { username = object.get("username").isString().stringValue(); } String locale = null; if (object.containsKey("locale") && object.get("locale").isString() != null) { locale = object.get("locale").isString().stringValue(); } ApplicationDTO retval = new ApplicationDTO(username, locale); if (object.get("brand").isString() != null) { retval.setBrand(object.get("brand").isString().stringValue()); } if (object.get("showNavigation").isBoolean() != null) { retval.setShowNavigation(object.get("showNavigation").isBoolean().booleanValue()); } if (object.containsKey("defaultActionToken") && object.get("defaultActionToken").isString() != null) { retval.setDefaultAction(object.get("defaultActionToken").isString().stringValue()); } if (object.get("config").isObject() != null) { Map map = DemarshallingUtils.mapUnMarshall(object.get("config"), ctx, String.class.getName()); Set keySet = map.keySet(); for (Object ob : keySet) { retval.setConfigString(ob.toString(), map.get(ob).toString()); } } if (object.get("menus").isArray() != null) { List list = DemarshallingUtils.listUnMarshall(object.get("menus"), ctx, MenuDTO.class.getName()); for (Object ob : list) { MenuDTO mdto = (MenuDTO) ob; retval.addMenu(mdto); } } return retval; } else return null; } @Override public String doNotNullMarshall(ApplicationDTO o, MarshallingSession ctx) { StringBuilder builder = new StringBuilder("{"); MarshallingUtils.string("brand", o.getBrand(), builder).append(','); MarshallingUtils.bool("showNavigation", o.isShowNavigation(), builder).append(','); MarshallingUtils.key("menus", builder).append(':'); MarshallingUtils.listMarshall(builder, o.getMenus(), ctx, MenuDTO.class.getName()).append(','); MarshallingUtils.key("config", builder).append(':'); MarshallingUtils.mapMarshall(builder, o.getConfig(), ctx, String.class.getName()); //defaultActionToken if (o.getDefaultActionToken() != null) { builder.append(','); MarshallingUtils.string("defaultActionToken", o.getDefaultActionToken(), builder); } if (o.getUsername() != null) { builder.append(','); MarshallingUtils.string("username", o.getUsername(), builder); } if (o.getLocale() != null) { builder.append(','); MarshallingUtils.string("locale", o.getLocale(), builder); } builder.append("}"); return builder.toString(); } }