Skip to content

bug: class initialization can re-enter B2JsonHandlerMap.getHandler #86

@bwbeach

Description

@bwbeach

This test case triggers the problem:

    /**
     * A regression test for a case where a class has a field with a default value,
     * and the class of the default value has a class initializer.
     */
    @Test
    public void testClassInitializationInDefaultValue() {
        B2Json.fromJsonOrThrowRuntime("{}", TestClassInit_ClassWithDefaultValue.class);
    }

    private static class TestClassInit_ClassWithDefaultValue {

        @B2Json.optionalWithDefault(defaultValue = "{}")
        private final TestClassInit_ClassThatDoesInitializition objThatDoesInit;

        @B2Json.constructor(params = "objThatDoesInit")
        private TestClassInit_ClassWithDefaultValue(TestClassInit_ClassThatDoesInitializition objThatDoesInit) {
            this.objThatDoesInit = objThatDoesInit;
        }
    }

    private static class TestClassInit_ClassThatDoesInitializition {

        private static TestClassInit_ClassThatDoesInitializition defaultValue =
                B2Json.fromJsonOrThrowRuntime("{}", TestClassInit_ClassThatDoesInitializition.class);

        @B2Json.constructor(params = "")
        TestClassInit_ClassThatDoesInitializition() {}
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions