From cf266bc738cc206f84f59604ca5f6d4d27a6f473 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 12 Feb 2015 10:55:05 +0300 Subject: [PATCH] Jackson lib absence correct handling. #213 --- .../corundumstudio/socketio/Configuration.java | 18 ++++++++++++++++-- .../socketio/protocol/JacksonJsonSupport.java | 8 ++++---- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/corundumstudio/socketio/Configuration.java b/src/main/java/com/corundumstudio/socketio/Configuration.java index 63e59bd..1ff407e 100644 --- a/src/main/java/com/corundumstudio/socketio/Configuration.java +++ b/src/main/java/com/corundumstudio/socketio/Configuration.java @@ -22,7 +22,6 @@ import java.util.List; import com.corundumstudio.socketio.handler.SuccessAuthorizationListener; import com.corundumstudio.socketio.listener.DefaultExceptionListener; import com.corundumstudio.socketio.listener.ExceptionListener; -import com.corundumstudio.socketio.protocol.JacksonJsonSupport; import com.corundumstudio.socketio.protocol.JsonSupport; import com.corundumstudio.socketio.store.MemoryStoreFactory; import com.corundumstudio.socketio.store.StoreFactory; @@ -68,7 +67,7 @@ public class Configuration { private StoreFactory storeFactory = new MemoryStoreFactory(); - private JsonSupport jsonSupport = new JacksonJsonSupport(); + private JsonSupport jsonSupport; private AuthorizationListener authorizationListener = new SuccessAuthorizationListener(); @@ -97,6 +96,21 @@ public class Configuration { setHostname(conf.getHostname()); setPort(conf.getPort()); + if (conf.getJsonSupport() == null) { + try { + getClass().getClassLoader().loadClass("com.fasterxml.jackson.databind.ObjectMapper"); + try { + Class jjs = getClass().getClassLoader().loadClass("com.corundumstudio.socketio.protocol.JacksonJsonSupport"); + JsonSupport js = (JsonSupport) jjs.getConstructor().newInstance(); + conf.setJsonSupport(js); + } catch (Exception e) { + throw new IllegalArgumentException(e); + } + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException("Can't find jackson lib in classpath", e); + } + } + setJsonSupport(new JsonSupportWrapper(conf.getJsonSupport())); setContext(conf.getContext()); setAllowCustomRequests(conf.isAllowCustomRequests()); diff --git a/src/main/java/com/corundumstudio/socketio/protocol/JacksonJsonSupport.java b/src/main/java/com/corundumstudio/socketio/protocol/JacksonJsonSupport.java index 10832c1..feb826d 100644 --- a/src/main/java/com/corundumstudio/socketio/protocol/JacksonJsonSupport.java +++ b/src/main/java/com/corundumstudio/socketio/protocol/JacksonJsonSupport.java @@ -28,7 +28,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,9 +41,6 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonToken; -import com.fasterxml.jackson.core.SerializableString; -import com.fasterxml.jackson.core.io.CharacterEscapes; -import com.fasterxml.jackson.core.io.SerializedString; import com.fasterxml.jackson.databind.BeanDescription; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -301,6 +297,10 @@ public class JacksonJsonSupport implements JsonSupport { private final Logger log = LoggerFactory.getLogger(getClass()); + public JacksonJsonSupport() { + this(new Module[] {}); + } + public JacksonJsonSupport(Module... modules) { if (modules != null && modules.length > 0) { objectMapper.registerModules(modules);