package org.aplikator.client.shared.rpc.marshaller; import java.util.List; import java.util.Map; import org.aplikator.client.shared.descriptor.ClientDescriptorBase; import org.jboss.errai.marshalling.client.api.Marshaller; import org.jboss.errai.marshalling.client.api.MarshallingSession; import org.jboss.errai.marshalling.client.util.MarshallUtil; public class MarshallingUtils { /*public static StringBuilder marshallData(StringBuilder input, Serializable value) { DataType lookpup = DataMarshallingUtils.DataType.lookup(value); if (lookpup != null) { return lookpup.marshall(input, value); } else throw new UnsupportedOperationException("unsupported type !"); }*/ /** * marshall default map */ public static StringBuilder mapMarshall(StringBuilder input, @SuppressWarnings("rawtypes") Map o, MarshallingSession ctx, String encName) { input.append('{'); Marshaller<Object> marshaller = ctx.getMarshallerInstance(encName); Object[] keys = o.keySet().toArray(); for (int i = 0, ll = keys.length; i < ll; i++) { if (i > 0) input.append(','); key(keys[i].toString(), input).append(':').append(marshaller.marshall(o.get(keys[i]), ctx)); } input.append('}'); return input; } /** * marshall default list */ public static StringBuilder listMarshall(StringBuilder input, @SuppressWarnings("rawtypes") List o, MarshallingSession ctx, String encName) { input.append('['); Marshaller<Object> marshaller = ctx.getMarshallerInstance(encName); for (int i = 0, ll = o.size(); i < ll; i++) { if (i > 0) input.append(','); input.append(marshaller.marshall(o.get(i), ctx)); } input.append(']'); return input; } public static StringBuilder clientDescriptorBase(StringBuilder input, ClientDescriptorBase cdb) { StringBuilder m = string("id", cdb.getId(), input).append(','); m = string("localizedName", cdb.getLocalizedName(), input); return m; } public static StringBuilder key(String key, StringBuilder input) { return input.append('"').append(key).append('"'); } public static StringBuilder number(String key, Number number, StringBuilder input) { return key(key, input).append(':').append(number); } public static String escape(String val) { return MarshallUtil.jsonStringEscape(val); } public static StringBuilder string(String key, String str, StringBuilder input) { if (str != null) { return key(key, input).append(':').append('"').append(escape(str)).append('"'); } else { return key(key, input).append(':').append("null"); } } public static StringBuilder bool(String key, boolean val, StringBuilder input) { return key(key, input).append(':').append(val); } public static StringBuilder nullval(String key, StringBuilder input) { return key(key, input).append(':').append("null"); } public static void main(String[] args) { StringBuilder builder = new StringBuilder("prvniradek \n " + "druhyradek \"\n" + "treti radek \n"); System.out.println(escape(builder.toString())); } }