Skip to content

Async command serialization might fail in some cases (jdk 16) #1089

@alniks

Description

@alniks

Add to HelloCommand a TreeMap field:

public class HelloCommand extends Command {

    private static AtomicInteger counter = new AtomicInteger(0);
    private String message;
    private Map<String, Object> data;

    public HelloCommand(String message) {
        this.message = message;
        this.data = new TreeMap<>();
        data.put("message", message);
    }

    public HelloCommand() {} //necessary to provide

    public static void reset() {
        counter = new AtomicInteger(0);
    }

    public static int counter() {
        return counter.get();
    }

    @Override
    public void execute() {
//        try {
//            Thread.sleep(1000);
//        } catch (InterruptedException ignore) {}

        synchronized (counter){
            counter.incrementAndGet();
        }
    }

    public String getMessage() {
        return message;
    }
}

Run the CommandSpec.

Result:

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.Comparator java.util.TreeMap.comparator accessible: module java.base does not "opens java.util" to unnamed module @23ceabc1
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:357)
	at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
	at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:177)
	at java.base/java.lang.reflect.Field.setAccessible(Field.java:171)
	at com.thoughtworks.xstream.core.util.Fields.locate(Fields.java:40)
	at com.thoughtworks.xstream.converters.collections.TreeMapConverter$Reflections.<clinit>(TreeMapConverter.java:135)

Expected result: tests are not failing.

The main problem is serializing models with xstream

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions