package fr.lteconsulting.hexa.client.application.archi; import com.google.gwt.json.client.JSONNumber; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; import fr.lteconsulting.hexa.client.comm.GenericJSO; public class JsonTokenizer { JSONObject values = null; // encoding part public void init() { values = new JSONObject(); } public void add( String name, String value ) { values.put( name, new JSONString( value ) ); } public void add( String name, int value ) { values.put( name, new JSONNumber( value ) ); } public void add( String name, GenericJSO jso ) { values.put( name, new JSONObject( jso.cast() ) ); } public String getToken() { return values.toString(); } // decoding part public void initToken( String token ) { try { values = JSONParser.parseStrict( token ).isObject(); } catch( Exception e ) { values = new JSONObject(); } } public String getTokenValue( String name ) { JSONValue value = values.get( name ); if( value == null ) return ""; JSONString string = value.isString(); if( string == null ) return ""; String res = string.stringValue(); if( res == null ) return ""; return res; } public Integer getTokenValueInt( String name ) { JSONValue value = values.get( name ); if( value == null ) return null; JSONNumber number = value.isNumber(); if( number == null ) return null; return (int) (number.doubleValue()); } public GenericJSO getTokenValueJSO( String name ) { JSONValue value = values.get( name ); if( value == null ) return null; JSONObject obj = value.isObject(); if( obj == null ) return null; return obj.getJavaScriptObject().cast(); } }