public
Created

GWT Map

  • Download Gist
map.java
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
/**
* Map
*
* @author jldupont
*/
package com.cdf.front.types.client;
 
import java.util.Iterator;
import java.util.Set;
 
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
 
public class Map {
 
JSONObject jso=new JSONObject();
public Map() {}
public void putFromJso(JSONObject jso) {
Set<String> keys=jso.keySet();
Iterator<String> it=keys.iterator();
while(it.hasNext()) {
String key=it.next();
this.store(key, jso.get(key).toString());
}
}
public void store(String key, String value) {
jso.put(key, new JSONString(value));
}
public String retrieve(String key) {
return jso.get(key).isString().stringValue();
}
/*
* @todo write native method
*/
public final void iterate(IMapVisitor<String> visitor) {
Set<String> keys=jso.keySet();
Iterator<String> it=keys.iterator();
while (it.hasNext()) {
String key=it.next();
visitor.visit(key, this.retrieve(key));
}
}
}///

Why extend JSONObject when you can wrap it? Also, "doing" things in a constructor is generally seen as bad practice (use a factory method or a distinct putAll(JSONObject) method instead).
Oh, and if you're going to "store" directly into a JSONObject, then I'd rather use JSNI (rather than wrapping everything in JSONValue-s, which adds unnecessary overhead; have a look at how JsoSplittable –which backs AutoBean on the client-side– works)

1) Updated the gist based on your comment - Thanks!
2) I am not using JSNI because it was causing me grief with regards to the generic IMapVisitor. Anyhow this class doesn't need to be very optimized.

Thanks :)

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.