[msgpack][JIRA] Created: (MSGPACK-76) msgpack tries to instantiate an abstract class when deserializing hierarchy

212 views
Skip to first unread message

Thomas Kruse (JIRA)

unread,
May 30, 2012, 9:58:45 AM5/30/12
to msgpa...@googlegroups.com
msgpack tries to instantiate an abstract class when deserializing hierarchy
---------------------------------------------------------------------------

Key: MSGPACK-76
URL: http://jira.msgpack.org/browse/MSGPACK-76
Project: MessagePack
Issue Type: Bug
Components: Java
Environment: Version: 0.6.6

Reporter: Thomas Kruse
Assignee: FURUHASHI Sadayuki
Attachments: msgPack.tar.gz

{code}
java.lang.InstantiationError: State
at State_$$_Template_12003460_0.read(State_$$_Template_12003460_0.java)
at org.msgpack.template.AbstractTemplate.read(AbstractTemplate.java:31)
at Child_$$_Template_12003460_1.read(Child_$$_Template_12003460_1.java)
at org.msgpack.template.AbstractTemplate.read(AbstractTemplate.java:31)
at org.msgpack.MessagePack.read(MessagePack.java:388)
at org.msgpack.MessagePack.read(MessagePack.java:371)
at TestCase.test(TestCase.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:76)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:195)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:63)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
{code}
See attached test case.


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Muga Nishizawa (JIRA)

unread,
Jun 5, 2012, 3:24:45 PM6/5/12
to msgpa...@googlegroups.com

[ http://jira.msgpack.org/browse/MSGPACK-76?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10393#comment-10393 ]

Muga Nishizawa commented on MSGPACK-76:
---------------------------------------

Thanks for your bug report.

I fixed it and committed the change.
https://github.com/msgpack/msgpack-java/commit/f15805d0f8f285a9d52d671e41d813400afc7335
https://github.com/msgpack/msgpack-java/commit/5996f7c822b7d7136f8a449a0f92436d41f351a0

Please check it.

Thank you again.

> msgpack tries to instantiate an abstract class when deserializing hierarchy
> ---------------------------------------------------------------------------
>
> Key: MSGPACK-76
> URL: http://jira.msgpack.org/browse/MSGPACK-76
> Project: MessagePack
> Issue Type: Bug
> Components: Java
> Environment: Version: 0.6.6
> Reporter: Thomas Kruse
> Assignee: Muga Nishizawa
> Labels: Java

Thomas Kruse (JIRA)

unread,
Jun 22, 2012, 6:47:47 AM6/22/12
to msgpa...@googlegroups.com

[ http://jira.msgpack.org/browse/MSGPACK-76?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10398#comment-10398 ]

Thomas Kruse commented on MSGPACK-76:
-------------------------------------

I get the error
{code}
org.msgpack.MessageTypeException: org.msgpack.template.builder.TemplateBuildException: Cannot build template for abstract class: State
at org.msgpack.template.TemplateRegistry.buildAndRegister(TemplateRegistry.java:575)
{code}

Is it not possible to have an abstract class in the hierarchy of a class to be serialized with msgpack? (Which is a design decision I can live with, perhaps it could be documented.)

The problem is detecting during registration, before (de)serialization happens, which is fine.

> msgpack tries to instantiate an abstract class when deserializing hierarchy
> ---------------------------------------------------------------------------
>
> Key: MSGPACK-76
> URL: http://jira.msgpack.org/browse/MSGPACK-76
> Project: MessagePack
> Issue Type: Bug
> Components: Java
> Environment: Version: 0.6.6
> Reporter: Thomas Kruse
> Assignee: Muga Nishizawa
> Labels: Java

Muga Nishizawa (JIRA)

unread,
Jul 2, 2012, 2:20:45 AM7/2/12
to msgpa...@googlegroups.com

[ http://jira.msgpack.org/browse/MSGPACK-76?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10405#comment-10405 ]

Muga Nishizawa commented on MSGPACK-76:
---------------------------------------

In the current version of MessagePack for Java, it doesn't enable to generate templates (pairs of serializers and deserializers) for abstract classes directly. Strictly speaking, it should generate deserializers for abstract classes. Because it doesn't enable to create the objects of the abstract classes during deserialization. Even if you delete a "abstract" class modifier from State class declaration, your sample works fine.

I'll document the above explanation as FAQ:-)

Thank you.

> msgpack tries to instantiate an abstract class when deserializing hierarchy
> ---------------------------------------------------------------------------
>
> Key: MSGPACK-76
> URL: http://jira.msgpack.org/browse/MSGPACK-76
> Project: MessagePack
> Issue Type: Bug
> Components: Java
> Environment: Version: 0.6.6
> Reporter: Thomas Kruse
> Assignee: Muga Nishizawa
> Labels: Java
Reply all
Reply to author
Forward
0 new messages