-
Notifications
You must be signed in to change notification settings - Fork 310
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Search before asking
- I had searched in the issues and found no similar issues.
Version
Latest
Component(s)
Java
Minimal reproduce step
private static class ComplexObject1Serializer extends Serializer<ComplexObject1> {
public ComplexObject1Serializer(Fory fory, Class<ComplexObject1> cls) {
super(fory, cls);
}
@Override
public void write(MemoryBuffer buffer, ComplexObject1 value) {
xwrite(buffer, value);
}
@Override
public ComplexObject1 read(MemoryBuffer buffer) {
return xread(buffer);
}
@Override
public void xwrite(MemoryBuffer buffer, ComplexObject1 value) {
fory.xwriteRef(buffer, value.f2);
}
@SuppressWarnings("unchecked")
@Override
public ComplexObject1 xread(MemoryBuffer buffer) {
ComplexObject1 obj = new ComplexObject1();
obj.f2 = (String) fory.xreadRef(buffer);
return obj;
}
}
public static class ComplexObject1 {
String f2;
public ComplexObject1() {
this.f2 = "hello";
}
}
public static class Outer {
ComplexObject1 f1;
public Outer(ComplexObject1 f1) {
this.f1 = f1;
}
}
public static class Outer2 { }
@Test
public void testRegisterSerializer() throws Exception {
Fory fory =
Fory.builder()
.withLanguage(Language.XLANG)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.requireClassRegistration(false)
.build();
Fory fory2 =
Fory.builder()
.withLanguage(Language.XLANG)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.requireClassRegistration(false)
.build();
fory.register(ComplexObject1.class, "test.ComplexObject1");
fory.registerSerializer(ComplexObject1.class, ComplexObject1Serializer.class);
fory.register(Outer.class, "test.outer");
Outer outer = new Outer(new ComplexObject1());
byte[] serialized = fory.serialize(outer);
fory2.register(Outer2.class, "test.outer");
Outer2 outer2 = (Outer2) fory2.deserialize(serialized);
System.out.println(outer2);
}
What did you expect to see?
pass test
What did you see instead?
org.apache.fory.exception.DeserializationException: Failed to deserialize input
at org.apache.fory.util.ExceptionUtils.handleReadFailed(ExceptionUtils.java:66)
at org.apache.fory.Fory.deserialize(Fory.java:886)
at org.apache.fory.Fory.deserialize(Fory.java:782)
at org.apache.fory.RustXlangTest.testRegisterSerializer(RustXlangTest.java:170)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:136)
at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:658)
at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:219)
at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:923)
at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:192)
at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at org.testng.TestRunner.privateRun(TestRunner.java:808)
at org.testng.TestRunner.run(TestRunner.java:603)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:429)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:423)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:383)
at org.testng.SuiteRunner.run(SuiteRunner.java:326)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1249)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
at org.testng.TestNG.runSuites(TestNG.java:1092)
at org.testng.TestNG.run(TestNG.java:1060)
at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)
at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)
Caused by: java.lang.NullPointerException
at org.apache.fory.serializer.NonexistentClassSerializers$NonexistentClassSerializer.getClassFieldsInfo(NonexistentClassSerializers.java:161)
at org.apache.fory.serializer.NonexistentClassSerializers$NonexistentClassSerializer.read(NonexistentClassSerializers.java:197)
at org.apache.fory.serializer.NonexistentClassSerializers$NonexistentClassSerializer.xread(NonexistentClassSerializers.java:239)
at org.apache.fory.RustXlangTest_Outer2ForyCodecMetaShared0_0.xread(RustXlangTest_Outer2ForyCodecMetaShared0_0.java:48)
at org.apache.fory.Fory.xreadNonRef(Fory.java:1118)
at org.apache.fory.Fory.xreadRef(Fory.java:1053)
at org.apache.fory.Fory.deserialize(Fory.java:880)
... 29 more
Anything Else?
No response
Are you willing to submit a PR?
- I'm willing to submit a PR!
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working