package org.aplikator.client.shared.rpc.marshaller; import org.aplikator.client.shared.data.FunctionResult; import org.aplikator.client.shared.data.FunctionResultType; 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(FunctionResult.class) @ServerMarshaller(FunctionResult.class) public class FunctionResultMarshaller extends AbstractNullableMarshaller<FunctionResult> { @Override public FunctionResult[] getEmptyArray() { return new FunctionResult[0]; } @Override public FunctionResult doNotNullDemarshall(EJValue o, MarshallingSession ctx) { if (o.isObject() != null) { EJObject ejObject = o.isObject(); String message = ejObject.get("message").isString().stringValue(); boolean success = ejObject.get("success").isBoolean().booleanValue(); String type = ejObject.get("type").isString().stringValue(); return new FunctionResult(message, success, FunctionResultType.valueOf(type)); } else return null; } @Override public String doNotNullMarshall(FunctionResult o, MarshallingSession ctx) { StringBuilder builder = new StringBuilder().append('{'); MarshallingUtils.string("message", o.getMessage(), builder); builder.append(','); MarshallingUtils.bool("success", o.isSuccess(), builder); builder.append(','); MarshallingUtils.string("type", o.getType().name(), builder); builder.append('}'); return builder.toString(); } }