Skip to content

[Java] Something wrong with se/de int <-> Integer fields when compatible_mode #2650

@urlyy

Description

@urlyy

I have noticed #2641, but I'm a bit confused about FieldConverter, Does the user need to use it explicitly for the conversion?

Search before asking

  • I had searched in the issues and found no similar issues.

Version

Latest

Component(s)

Java

Minimal reproduce step

static class Demo1 {
    int f1;
    int f2;
    Integer f3;
    Integer f4;
    Integer f5;
    Integer f6;
}
static class Demo2 {
    int f1;
    Integer f2;
    Integer f3;
    int f4;
    int f5;
    Integer f6;
}

@Test
public void testInteger2() {
    Fory fory1 = Fory.builder().withLanguage(Language.XLANG).withCompatibleMode(CompatibleMode.COMPATIBLE).build();
    fory1.register(Demo1.class, 101);
    Fory fory2 = Fory.builder().withLanguage(Language.XLANG).withCompatibleMode(CompatibleMode.COMPATIBLE).build();
    fory2.register(Demo2.class, 101);

    Demo1 demo1 = new Demo1();
    demo1.f1 = 1;
    demo1.f2 = 2;
    demo1.f3 = 3;
    demo1.f4 = 4;
    demo1.f5 = null;
    demo1.f6 = null;

    byte[] serialize = fory1.serialize(demo1);

    Demo2 demo2 = (Demo2) fory2.deserialize(serialize);
    Assert.assertEquals(demo2.f1, 1);
    Assert.assertEquals(demo2.f2, 2);
    Assert.assertEquals(demo2.f3, 3);
    Assert.assertEquals(demo2.f4, 4);
    Assert.assertEquals(demo2.f5, 0);
    Assert.assertNull(demo2.f6);
}

What did you expect to see?

pass unit test

What did you see instead?

panic at Assert.assertEquals(demo2.f2, 2);

java.lang.AssertionError:
Expected :2
Actual   :-448
<Click to see difference>


	at org.testng.Assert.fail(Assert.java:110)
	at org.testng.Assert.failNotEquals(Assert.java:1413)
	at org.testng.Assert.assertEqualsImpl(Assert.java:149)
	at org.testng.Assert.assertEquals(Assert.java:131)
	at org.testng.Assert.assertEquals(Assert.java:1284)
	at org.apache.fory.RustXlangTest.testInteger2(RustXlangTest.java:668)
	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)

Anything Else?

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions