diff --git a/java/src/main/java/org/msgpack/MessagePack.java b/java/src/main/java/org/msgpack/MessagePack.java index 4bb4fc4e..b7b176bc 100644 --- a/java/src/main/java/org/msgpack/MessagePack.java +++ b/java/src/main/java/org/msgpack/MessagePack.java @@ -161,21 +161,11 @@ public class MessagePack { } else { if (MessagePackTemplateProvider.class.isAssignableFrom(target)) { try { - Method m = target.getMethod("getTemplate", new Class[0]); - tmpl = (Template)m.invoke(null, new Object[0]); tmpl = ((MessagePackTemplateProvider) target.newInstance()).getTemplate(); } catch (InstantiationException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); - } catch (IllegalArgumentException e) { - throw new RuntimeException(e); - } catch (InvocationTargetException e) { - throw new RuntimeException(e); - } catch (SecurityException e) { - throw new RuntimeException(e); - } catch (NoSuchMethodException e) { - throw new RuntimeException(e); } } else { tmpl = DynamicTemplate.create(target); @@ -186,6 +176,22 @@ public class MessagePack { CustomConverter.register(target, tmpl); CustomUnpacker.register(target, tmpl); } + + public static class Foo implements MessagePackTemplateProvider { + public int f1; + + public int f2; + + public Foo() {} + + public Template getTemplate() { + return DynamicTemplate.create(Foo.class); + } + } + + public static void main(String[] args) throws Exception { + MessagePack.register(Foo.class); + } public static void register(Class target, FieldList opts) { Template tmpl = DynamicTemplate.create(target, opts);