removed crazy shit
This commit is contained in:
parent
e3a38a86ad
commit
0aa4a93582
5 changed files with 30 additions and 61 deletions
|
|
@ -2,11 +2,15 @@ package nl.jssl.jsontoy.deserialize;
|
||||||
|
|
||||||
public class Deserializer {
|
public class Deserializer {
|
||||||
|
|
||||||
public static Object deserialize(String json) {
|
private int position;
|
||||||
if (json.equals("{}")) {
|
private final String jsonString;
|
||||||
return null;
|
|
||||||
} else
|
private Deserializer( String jsonString,int position) {
|
||||||
return "test";
|
this.position = position;
|
||||||
|
this.jsonString = jsonString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package nl.jssl.jsontoy.serialize;
|
package nl.jssl.jsontoy.serialize;
|
||||||
|
|
||||||
public class Serializer {
|
public class Serializer {
|
||||||
private static SerializerFactory instance = new SynthSerializerFactory();
|
private static SynthSerializerFactory instance = new SynthSerializerFactory();
|
||||||
|
|
||||||
public static String toJSONString(boolean b) {
|
public static String toJSONString(boolean b) {
|
||||||
return Boolean.toString(b);
|
return Boolean.toString(b);
|
||||||
|
|
@ -28,7 +28,7 @@ public class Serializer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String toJSONString(char c) {
|
public static String toJSONString(char c) {
|
||||||
return "\"" + Character.toString(c) + "\"";
|
return "\"" + c + "\"";
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
@ -39,7 +39,5 @@ public class Serializer {
|
||||||
return instance.createSerializer((Class<T>) o.getClass()).toJSONString(o);
|
return instance.createSerializer((Class<T>) o.getClass()).toJSONString(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setInstance(SerializerFactory instance) {
|
|
||||||
Serializer.instance = instance;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
package nl.jssl.jsontoy.serialize;
|
|
||||||
|
|
||||||
public interface SerializerFactory {
|
|
||||||
public <T> JSONSerializer<T> createSerializer(Class<T> beanjavaClass);
|
|
||||||
}
|
|
||||||
|
|
@ -17,7 +17,7 @@ import javassist.CtNewMethod;
|
||||||
import javassist.Modifier;
|
import javassist.Modifier;
|
||||||
import javassist.NotFoundException;
|
import javassist.NotFoundException;
|
||||||
|
|
||||||
public class SynthSerializerFactory implements SerializerFactory {
|
class SynthSerializerFactory {
|
||||||
private static final String STRING = "java.lang.String";
|
private static final String STRING = "java.lang.String";
|
||||||
private static final String BOOLEAN = "java.lang.Boolean";
|
private static final String BOOLEAN = "java.lang.Boolean";
|
||||||
private static final String CHARACTER = "java.lang.Character";
|
private static final String CHARACTER = "java.lang.Character";
|
||||||
|
|
@ -28,7 +28,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
private static final String SHORT = "java.lang.Short";
|
private static final String SHORT = "java.lang.Short";
|
||||||
private static final String INTEGER = "java.lang.Integer";
|
private static final String INTEGER = "java.lang.Integer";
|
||||||
|
|
||||||
private final static Set<String> wrappersAndString = new HashSet<String>(Arrays.asList(BOOLEAN, CHARACTER, BYTE, DOUBLE, FLOAT, LONG, SHORT, INTEGER,
|
private final static Set<String> wrappersAndString = new HashSet<>(Arrays.asList(BOOLEAN, CHARACTER, BYTE, DOUBLE, FLOAT, LONG, SHORT, INTEGER,
|
||||||
STRING));
|
STRING));
|
||||||
|
|
||||||
private static final String COLLECTION = "java.util.Collection";
|
private static final String COLLECTION = "java.util.Collection";
|
||||||
|
|
@ -41,7 +41,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
|
|
||||||
private final ClassPool pool = ClassPool.getDefault();
|
private final ClassPool pool = ClassPool.getDefault();
|
||||||
private CtClass serializerBase;
|
private CtClass serializerBase;
|
||||||
private final Map<String, CtClass> primitiveWrappers = new HashMap<String, CtClass>();
|
|
||||||
|
|
||||||
public SynthSerializerFactory() {
|
public SynthSerializerFactory() {
|
||||||
init();
|
init();
|
||||||
|
|
@ -50,34 +50,23 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
void init() {
|
void init() {
|
||||||
try {
|
try {
|
||||||
serializerBase = pool.get(JSONSerializer.class.getName());
|
serializerBase = pool.get(JSONSerializer.class.getName());
|
||||||
|
|
||||||
primitiveWrappers.put("int", pool.get(INTEGER));
|
|
||||||
primitiveWrappers.put("short", pool.get(SHORT));
|
|
||||||
primitiveWrappers.put("byte", pool.get(BYTE));
|
|
||||||
primitiveWrappers.put("long", pool.get(LONG));
|
|
||||||
primitiveWrappers.put("float", pool.get(FLOAT));
|
|
||||||
primitiveWrappers.put("double", pool.get(DOUBLE));
|
|
||||||
primitiveWrappers.put("boolean", pool.get(BOOLEAN));
|
|
||||||
primitiveWrappers.put("char", pool.get(CHARACTER));
|
|
||||||
} catch (NotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
throw new SerializerCreationException(e);
|
throw new SerializerCreationException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> JSONSerializer<T> createSerializer(Class<T> beanjavaClass) {
|
<T> JSONSerializer<T> createSerializer(Class<T> beanjavaClass) {
|
||||||
try {
|
try {
|
||||||
CtClass beanClass = pool.get(beanjavaClass.getName());
|
CtClass beanClass = pool.get(beanjavaClass.getName());
|
||||||
|
|
||||||
JSONSerializer<T> jsonSerializer = createSerializer(beanClass);
|
return createSerializer2(beanClass);
|
||||||
|
|
||||||
return jsonSerializer;
|
|
||||||
} catch (NotFoundException e) {
|
} catch (NotFoundException e) {
|
||||||
throw new SerializerCreationException(e);
|
throw new SerializerCreationException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private <T> JSONSerializer<T> createSerializer(CtClass beanClass) {
|
private <T> JSONSerializer<T> createSerializer2(CtClass beanClass) {
|
||||||
if (serializers.containsKey(createSerializerName(beanClass))) {
|
if (serializers.containsKey(createSerializerName(beanClass))) {
|
||||||
return (JSONSerializer<T>) serializers.get(createSerializerName(beanClass));
|
return (JSONSerializer<T>) serializers.get(createSerializerName(beanClass));
|
||||||
}
|
}
|
||||||
|
|
@ -201,11 +190,11 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String createSerializerName(String name) {
|
public String createSerializerName(String name) {
|
||||||
return ROOT_PACKAGE + name.replaceAll("\\[\\]", "Array") + "Serializer";
|
return ROOT_PACKAGE + name.replaceAll("\\[]", "Array") + "Serializer";
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isCollection(CtClass beanClass) throws NotFoundException {
|
private boolean isCollection(CtClass beanClass) throws NotFoundException {
|
||||||
List<CtClass> interfaces = new ArrayList<CtClass>(Arrays.asList(beanClass.getInterfaces()));
|
List<CtClass> interfaces = new ArrayList<>(Arrays.asList(beanClass.getInterfaces()));
|
||||||
interfaces.add(beanClass);
|
interfaces.add(beanClass);
|
||||||
for (CtClass interfaze : interfaces) {
|
for (CtClass interfaze : interfaces) {
|
||||||
if (interfaze.getName().equals(COLLECTION) || interfaze.getName().equals(LIST) || interfaze.getName().equals(SET)) {
|
if (interfaze.getName().equals(COLLECTION) || interfaze.getName().equals(LIST) || interfaze.getName().equals(SET)) {
|
||||||
|
|
@ -216,7 +205,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMap(CtClass beanClass) throws NotFoundException {
|
private boolean isMap(CtClass beanClass) throws NotFoundException {
|
||||||
List<CtClass> interfaces = new ArrayList<CtClass>(Arrays.asList(beanClass.getInterfaces()));
|
List<CtClass> interfaces = new ArrayList<>(Arrays.asList(beanClass.getInterfaces()));
|
||||||
interfaces.add(beanClass);
|
interfaces.add(beanClass);
|
||||||
for (CtClass interfaze : interfaces) {
|
for (CtClass interfaze : interfaces) {
|
||||||
if (interfaze.getName().equals(MAP)) {
|
if (interfaze.getName().equals(MAP)) {
|
||||||
|
|
@ -284,7 +273,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
* Retrieves getter methods from a class
|
* Retrieves getter methods from a class
|
||||||
*/
|
*/
|
||||||
private List<CtMethod> getGetters(CtClass beanClass) {
|
private List<CtMethod> getGetters(CtClass beanClass) {
|
||||||
List<CtMethod> methods = new ArrayList<CtMethod>();
|
List<CtMethod> methods = new ArrayList<>();
|
||||||
List<CtField> fields = getAllFields(beanClass);
|
List<CtField> fields = getAllFields(beanClass);
|
||||||
for (CtField field : fields) {
|
for (CtField field : fields) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -305,10 +294,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
|
|
||||||
private List<CtField> getAllFields(CtClass beanClass) {
|
private List<CtField> getAllFields(CtClass beanClass) {
|
||||||
try {
|
try {
|
||||||
List<CtField> allfields = new ArrayList<>();
|
List<CtField> allfields = new ArrayList<>(Arrays.asList(beanClass.getDeclaredFields()));
|
||||||
for (CtField field : beanClass.getDeclaredFields()) {
|
|
||||||
allfields.add(field);
|
|
||||||
}
|
|
||||||
if (beanClass.getSuperclass() != null) {
|
if (beanClass.getSuperclass() != null) {
|
||||||
return getAllFields(beanClass.getSuperclass(), allfields);
|
return getAllFields(beanClass.getSuperclass(), allfields);
|
||||||
}
|
}
|
||||||
|
|
@ -320,9 +306,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<CtField> getAllFields(CtClass beanClass, List<CtField> allfields) {
|
private List<CtField> getAllFields(CtClass beanClass, List<CtField> allfields) {
|
||||||
for (CtField field : beanClass.getDeclaredFields()) {
|
allfields.addAll(Arrays.asList(beanClass.getDeclaredFields()));
|
||||||
allfields.add(field);
|
|
||||||
}
|
|
||||||
|
|
||||||
return allfields;
|
return allfields;
|
||||||
}
|
}
|
||||||
|
|
@ -368,7 +352,7 @@ public class SynthSerializerFactory implements SerializerFactory {
|
||||||
}
|
}
|
||||||
|
|
||||||
String innerClassName(String name) {
|
String innerClassName(String name) {
|
||||||
return "L" + name.replaceAll("\\.", "/").replaceAll("\\[\\]", "");
|
return "L" + name.replaceAll("\\.", "/").replaceAll("\\[]", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean isPrimitiveOrWrapperOrString(CtClass beanClass) {
|
static boolean isPrimitiveOrWrapperOrString(CtClass beanClass) {
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,17 @@
|
||||||
package nl.jssl.jsontoy.serialize.collections;
|
package nl.jssl.jsontoy.serialize.collections;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertTrue;
|
import nl.jssl.jsontoy.serialize.Serializer;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import nl.jssl.jsontoy.serialize.SerializerCreationException;
|
import static org.junit.Assert.assertTrue;
|
||||||
import nl.jssl.jsontoy.serialize.Serializer;
|
|
||||||
import nl.jssl.jsontoy.serialize.SynthSerializerFactory;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
public class MapTest {
|
public class MapTest {
|
||||||
@Test
|
@Test
|
||||||
public void testValue() {
|
public void testValue() {
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<>();
|
||||||
map.put("key1", "value1");
|
map.put("key1", "value1");
|
||||||
map.put("key2", "value2");
|
map.put("key2", "value2");
|
||||||
String jsonString = Serializer.toJSONString(map);
|
String jsonString = Serializer.toJSONString(map);
|
||||||
|
|
@ -24,7 +21,7 @@ public class MapTest {
|
||||||
@Test
|
@Test
|
||||||
public void testPropertyValue() {
|
public void testPropertyValue() {
|
||||||
Bean object = new Bean();
|
Bean object = new Bean();
|
||||||
Map<String, String> map = new HashMap<String, String>();
|
Map<String, String> map = new HashMap<>();
|
||||||
map.put("key1", "value1");
|
map.put("key1", "value1");
|
||||||
map.put("key2", "value2");
|
map.put("key2", "value2");
|
||||||
object.setMap(map);
|
object.setMap(map);
|
||||||
|
|
@ -33,15 +30,6 @@ public class MapTest {
|
||||||
|| "{\"map\": {\"key2\": \"value2\", \"key1\": \"value1\"}}".equals(jsonString));
|
|| "{\"map\": {\"key2\": \"value2\", \"key1\": \"value1\"}}".equals(jsonString));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void pumpUpTheVolume() {
|
|
||||||
Serializer.setInstance(new SynthSerializerFactory());
|
|
||||||
try {
|
|
||||||
throw new SerializerCreationException(new Exception());
|
|
||||||
} catch (Exception e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Bean {
|
public class Bean {
|
||||||
|
|
||||||
private Map<String, String> map;
|
private Map<String, String> map;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue