diff --git a/src/main/java/com/corundumstudio/socketio/Configuration.java b/src/main/java/com/corundumstudio/socketio/Configuration.java index de67595..240fe7c 100644 --- a/src/main/java/com/corundumstudio/socketio/Configuration.java +++ b/src/main/java/com/corundumstudio/socketio/Configuration.java @@ -46,6 +46,7 @@ public class Configuration { private int maxHttpContentLength = 64 * 1024; + private String packagePrefix; private String hostname; private int port = -1; @@ -80,6 +81,7 @@ public class Configuration { setKeyStore(conf.getKeyStore()); setTransports(conf.getTransports()); setMaxHttpContentLength(conf.getMaxHttpContentLength()); + setPackagePrefix(conf.getPackagePrefix()); } private String join(Transport[] transports) { @@ -298,4 +300,22 @@ public class Configuration { return transports; } + /** + * Package prefix for sending json-object from client + * without full class name. + * + * With defined package prefix socket.io client + * just need to define '@class: 'SomeType'' in json object + * instead of '@class: 'com.full.package.name.SomeType'' + * + * @param packagePrefix - prefix string + * + */ + public void setPackagePrefix(String packagePrefix) { + this.packagePrefix = packagePrefix; + } + public String getPackagePrefix() { + return packagePrefix; + } + } diff --git a/src/main/java/com/corundumstudio/socketio/parser/JacksonJsonSupport.java b/src/main/java/com/corundumstudio/socketio/parser/JacksonJsonSupport.java index e7ed148..48bb941 100644 --- a/src/main/java/com/corundumstudio/socketio/parser/JacksonJsonSupport.java +++ b/src/main/java/com/corundumstudio/socketio/parser/JacksonJsonSupport.java @@ -74,6 +74,9 @@ public class JacksonJsonSupport implements JsonSupport { if (node != null) { try { String typeName = node.asText(); + if (configuration.getPackagePrefix() != null) { + typeName = configuration.getPackagePrefix() + "." + typeName; + } Class supportClazz = Class.forName(typeName); if (classes.contains(supportClazz)) { clazz = supportClazz;