Revision 2606 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.util/org.gvsig.tools.util.impl/src/main/java/org/gvsig/json/JsonManagerImpl.java
JsonManagerImpl.java | ||
---|---|---|
1 | 1 |
package org.gvsig.json; |
2 | 2 |
|
3 |
import com.jayway.jsonpath.JsonPath; |
|
4 | 3 |
import java.io.ByteArrayInputStream; |
5 | 4 |
import java.io.StringWriter; |
6 | 5 |
import java.math.BigDecimal; |
... | ... | |
20 | 19 |
import javax.json.JsonWriter; |
21 | 20 |
import javax.json.JsonWriterFactory; |
22 | 21 |
import javax.json.stream.JsonGenerator; |
22 |
import org.apache.commons.codec.digest.DigestUtils; |
|
23 | 23 |
import static org.gvsig.json.JsonManager.ATTRIBUTE_NAME_CLASS; |
24 | 24 |
import org.gvsig.json.serializers.DataTypeSerializer; |
25 | 25 |
import org.gvsig.json.serializers.DefaultObjectSerializer; |
... | ... | |
52 | 52 |
this.dynObjectSerializer = new DynObjectSerializer(); |
53 | 53 |
this.serializers1 = new HashMap<>(); |
54 | 54 |
this.serializers2 = new HashMap<>(); |
55 |
this.registerDefaultSerializers(); |
|
56 |
} |
|
57 |
|
|
58 |
private void registerDefaultSerializers() { |
|
55 | 59 |
this.registerSerializer(new FileSerializer()); |
56 | 60 |
this.registerSerializer(new UrlSerializer()); |
57 | 61 |
this.registerSerializer(new UriSerializer()); |
... | ... | |
61 | 65 |
this.registerSerializer(new DataTypeSerializer()); |
62 | 66 |
// this.registerSerializer(this.dynObjectSerializer); |
63 | 67 |
} |
64 |
|
|
68 |
|
|
69 |
public static String createSerializerKey(Class aClass) { |
|
70 |
String key = aClass.getName(); |
|
71 |
// String key = "0-" + DigestUtils.sha256Hex(aClass.getName()); |
|
72 |
return key; |
|
73 |
} |
|
74 |
|
|
75 |
public static String createSerializerKey(String className) { |
|
76 |
String key = className; |
|
77 |
// String key = "0-"+ DigestUtils.sha256Hex(className); |
|
78 |
return key; |
|
79 |
} |
|
80 |
|
|
65 | 81 |
@Override |
66 | 82 |
public void registerSerializer(Class<?extends SupportFromJson> theClass) { |
67 | 83 |
if (theClass == null) { |
... | ... | |
70 | 86 |
if (!SupportFromJson.class.isAssignableFrom(theClass)) { |
71 | 87 |
throw new IllegalArgumentException("the class '" + theClass.getName() + "'must implement SupportFromJson"); |
72 | 88 |
} |
73 |
this.serializers1.put(theClass.getName(), new DefaultObjectSerializer(theClass)); |
|
89 |
String key = createSerializerKey(theClass); |
|
90 |
this.serializers1.put(key, new DefaultObjectSerializer(theClass)); |
|
74 | 91 |
} |
75 | 92 |
|
76 | 93 |
@Override |
77 | 94 |
public void registerSerializer(JsonSerializer serializer) { |
78 |
this.serializers1.put(serializer.getObjectClass().getName(), serializer); |
|
95 |
String key = createSerializerKey(serializer.getObjectClass()); |
|
96 |
this.serializers1.put(key, serializer); |
|
79 | 97 |
if( serializer instanceof IsApplicable ) { |
80 |
this.serializers2.put(serializer.getObjectClass().getName(), (IsApplicable) serializer);
|
|
98 |
this.serializers2.put(key, (IsApplicable) serializer);
|
|
81 | 99 |
} |
82 | 100 |
} |
83 | 101 |
|
84 | 102 |
@Override |
85 | 103 |
public JsonSerializer getSerializer(Object value) { |
86 |
JsonSerializer serializer1 = this.serializers1.get(value.getClass().getName()); |
|
104 |
String key = createSerializerKey(value.getClass()); |
|
105 |
JsonSerializer serializer1 = this.serializers1.get(key); |
|
87 | 106 |
if( serializer1!=null ) { |
88 | 107 |
return serializer1; |
89 | 108 |
} |
... | ... | |
101 | 120 |
@Override |
102 | 121 |
public JsonSerializer getSerializer(JsonObject json) { |
103 | 122 |
String className = json.getString(ATTRIBUTE_NAME_CLASS, null); |
104 |
JsonSerializer serializer1 = this.serializers1.get(className); |
|
123 |
String key = createSerializerKey(className); |
|
124 |
JsonSerializer serializer1 = this.serializers1.get(key); |
|
105 | 125 |
if( serializer1!=null ) { |
106 | 126 |
return serializer1; |
107 | 127 |
} |
Also available in: Unified diff