diff --git a/java/pom.xml b/java/pom.xml
index eb7930d..beec503 100755
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -28,6 +28,16 @@
junit
4.8.1
test
+
+
+ org.slf4j
+ slf4j-api
+ 1.4.3
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.4.3
javassist
diff --git a/java/src/main/java/org/msgpack/CustomConverter.java b/java/src/main/java/org/msgpack/CustomConverter.java
index abbc88a..a82e3e1 100644
--- a/java/src/main/java/org/msgpack/CustomConverter.java
+++ b/java/src/main/java/org/msgpack/CustomConverter.java
@@ -19,11 +19,17 @@ package org.msgpack;
import java.util.concurrent.ConcurrentHashMap;
-// FIXME package private?
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class CustomConverter {
+ private static Logger LOG = LoggerFactory.getLogger(CustomConverter.class);
+
private static ConcurrentHashMap, MessageConverter> map = new ConcurrentHashMap, MessageConverter>();
public static void register(Class> target, MessageConverter converter) {
+ LOG.debug("register a MessageConverter object for the type: "
+ + target.getName());
map.putIfAbsent(target, converter);
}
diff --git a/java/src/main/java/org/msgpack/CustomMessage.java b/java/src/main/java/org/msgpack/CustomMessage.java
index 53f8323..959c9cd 100644
--- a/java/src/main/java/org/msgpack/CustomMessage.java
+++ b/java/src/main/java/org/msgpack/CustomMessage.java
@@ -29,7 +29,7 @@ public class CustomMessage {
CustomConverter.register(target, tmpl);
}
- static boolean isAnnotated(Class> target, Class extends Annotation> with) {
+ public static boolean isAnnotated(Class> target, Class extends Annotation> with) {
return target.getAnnotation(with) != null;
}
}
diff --git a/java/src/main/java/org/msgpack/CustomPacker.java b/java/src/main/java/org/msgpack/CustomPacker.java
index 743a52b..6a65fc3 100644
--- a/java/src/main/java/org/msgpack/CustomPacker.java
+++ b/java/src/main/java/org/msgpack/CustomPacker.java
@@ -19,10 +19,17 @@ package org.msgpack;
import java.util.concurrent.ConcurrentHashMap;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class CustomPacker {
+ private static Logger LOG = LoggerFactory.getLogger(CustomPacker.class);
+
private static ConcurrentHashMap, MessagePacker> map = new ConcurrentHashMap, MessagePacker>();
public static void register(Class> target, MessagePacker packer) {
+ LOG.debug("register a MessagePacker object for the type: "
+ + target.getName());
map.putIfAbsent(target, packer);
}
diff --git a/java/src/main/java/org/msgpack/CustomUnpacker.java b/java/src/main/java/org/msgpack/CustomUnpacker.java
index b45292b..8e80115 100644
--- a/java/src/main/java/org/msgpack/CustomUnpacker.java
+++ b/java/src/main/java/org/msgpack/CustomUnpacker.java
@@ -19,11 +19,17 @@ package org.msgpack;
import java.util.concurrent.ConcurrentHashMap;
-// FIXME package private?
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class CustomUnpacker {
+ private static Logger LOG = LoggerFactory.getLogger(CustomUnpacker.class);
+
private static ConcurrentHashMap, MessageUnpacker> map = new ConcurrentHashMap, MessageUnpacker>();
public static void register(Class> target, MessageUnpacker converter) {
+ LOG.debug("register a MessageUnpacker object for the type: "
+ + target.getName());
map.putIfAbsent(target, converter);
}
diff --git a/java/src/main/java/org/msgpack/MessageTypeException.java b/java/src/main/java/org/msgpack/MessageTypeException.java
index 698ef6d..7a06a3e 100644
--- a/java/src/main/java/org/msgpack/MessageTypeException.java
+++ b/java/src/main/java/org/msgpack/MessageTypeException.java
@@ -23,5 +23,9 @@ public class MessageTypeException extends RuntimeException {
public MessageTypeException(String s) {
super(s);
}
+
+ public MessageTypeException(String s, Throwable t) {
+ super(s, t);
+ }
}
diff --git a/java/src/main/java/org/msgpack/Packer.java b/java/src/main/java/org/msgpack/Packer.java
index 52bd29d..704481d 100644
--- a/java/src/main/java/org/msgpack/Packer.java
+++ b/java/src/main/java/org/msgpack/Packer.java
@@ -21,12 +21,14 @@ import java.io.OutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.List;
+import java.util.Set;
import java.util.Map;
import java.math.BigInteger;
import org.msgpack.annotation.MessagePackDelegate;
import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOrdinalEnum;
+import org.msgpack.packer.*;
/**
* Packer enables you to serialize objects into OutputStream.
@@ -45,6 +47,22 @@ import org.msgpack.annotation.MessagePackOrdinalEnum;
* You can serialize objects that implements {@link MessagePackable} interface.
*/
public class Packer {
+ static {
+ // final classes
+ BooleanPacker.getInstance();
+ ByteArrayPacker.getInstance();
+ BytePacker.getInstance();
+ DoublePacker.getInstance();
+ FloatPacker.getInstance();
+ IntegerPacker.getInstance();
+ LongPacker.getInstance();
+ ShortPacker.getInstance();
+ StringPacker.getInstance();
+ //BigIntegerPacker.getInstance(); // BigInteger is not final
+ }
+
+ public static void load() { }
+
protected byte[] castBytes = new byte[9];
protected ByteBuffer castBuffer = ByteBuffer.wrap(castBytes);
protected OutputStream out;
@@ -433,22 +451,27 @@ public class Packer {
public Packer pack(Object o) throws IOException {
if(o == null) {
return packNil();
- } else if(o instanceof String) {
- byte[] b = ((String)o).getBytes("UTF-8");
- packRaw(b.length);
- return packRawBody(b);
+ //} else if(o instanceof String) {
+ // byte[] b = ((String)o).getBytes("UTF-8");
+ // packRaw(b.length);
+ // return packRawBody(b);
} else if(o instanceof MessagePackable) {
((MessagePackable)o).messagePack(this);
return this;
- } else if(o instanceof byte[]) {
- byte[] b = (byte[])o;
- packRaw(b.length);
- return packRawBody(b);
+ //} else if(o instanceof byte[]) {
+ // byte[] b = (byte[])o;
+ // packRaw(b.length);
+ // return packRawBody(b);
} else if(o instanceof List) {
List