removed crazy shit

This commit is contained in:
Sander Hautvast 2020-06-10 21:21:09 +02:00
parent e3a38a86ad
commit 0aa4a93582
5 changed files with 30 additions and 61 deletions

View file

@ -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;
} }
} }

View file

@ -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;
}
} }

View file

@ -1,5 +0,0 @@
package nl.jssl.jsontoy.serialize;
public interface SerializerFactory {
public <T> JSONSerializer<T> createSerializer(Class<T> beanjavaClass);
}

View file

@ -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) {

View file

@ -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;