Skip to content

void.class cannot be serialised / stored #247

Description

@zdenek-jonas

Just corner case has been found:

code:

package test.microstream.various;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.nio.file.Path;

import org.eclipse.store.storage.embedded.types.EmbeddedStorage;
import org.eclipse.store.storage.embedded.types.EmbeddedStorageManager;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

public class ClazzVoidTest
{

    @TempDir
    Path tempDir;

    @Test
    void clazzVoidTest()
    {
        VoidClazz root = new VoidClazz(void.class);

        try (EmbeddedStorageManager manager = EmbeddedStorage.start(root, tempDir)) {
        }

        try (EmbeddedStorageManager manager = EmbeddedStorage.start(tempDir)) {
            VoidClazz loaded = (VoidClazz) manager.root();
            assertEquals(loaded.getClazz(), void.class);
        }
    }


    private static class VoidClazz
    {
        Class<Void> clazz;

        public VoidClazz()
        {
        }

        public VoidClazz(Class<Void> clazz)
        {
            this.clazz = clazz;
        }

        public Class getClazz()
        {
            return clazz;
        }

    }
}
2026-03-05 11:51:13:571 +0100 [main] ERROR EmbeddedStorageManager - Exception occurred while initializing embedded storage manager
org.eclipse.serializer.persistence.exceptions.PersistenceException: Primitive types must be handled by default (dummy) handler implementations.
	at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerEnsurer$Default.ensureTypeHandler(PersistenceTypeHandlerEnsurer.java:130)
	at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerProviderCreating.ensureTypeHandler(PersistenceTypeHandlerProviderCreating.java:178)
	at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerProviderCreating.provideTypeHandler(PersistenceTypeHandlerProviderCreating.java:86)
	at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.internalEnsureTypeHandler(PersistenceTypeHandlerManager.java:610)
	at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.ensureTypeHandler(PersistenceTypeHandlerManager.java:379)
	at org.eclipse.serializer.persistence.binary.java.lang.BinaryHandlerClass.instanceState(BinaryHandlerClass.java:79)
	at org.eclipse.serializer.persistence.binary.java.lang.BinaryHandlerClass.store(BinaryHandlerClass.java:95)
	at org.eclipse.serializer.persistence.binary.java.lang.BinaryHandlerClass.store(BinaryHandlerClass.java:27)
	at org.eclipse.serializer.persistence.binary.types.BinaryStorer$Default.storeItem(BinaryStorer.java:493)
	at org.eclipse.serializer.persistence.binary.types.BinaryStorer$Default.processItems(BinaryStorer.java:478)
	at org.eclipse.serializer.persistence.binary.types.BinaryStorer$Default.internalStore(BinaryStorer.java:461)
	at org.eclipse.serializer.persistence.binary.types.BinaryStorer$Default.store(BinaryStorer.java:500)
	at org.eclipse.serializer.persistence.types.PersistenceManager$Default.store(PersistenceManager.java:305)
	at org.eclipse.store.storage.types.StorageConnection.store(StorageConnection.java:413)
	at org.eclipse.store.storage.embedded.types.EmbeddedStorageManager$Default.initialize(EmbeddedStorageManager.java:397)
	at org.eclipse.store.storage.embedded.types.EmbeddedStorageManager$Default.start(EmbeddedStorageManager.java:258)
	at org.eclipse.store.storage.embedded.types.EmbeddedStorageManager$Default.start(EmbeddedStorageManager.java:99)
	at org.eclipse.store.storage.embedded.types.EmbeddedStorage.createAndStartStorageManager(EmbeddedStorage.java:609)
	at org.eclipse.store.storage.embedded.types.EmbeddedStorage.start(EmbeddedStorage.java:466)
	at test.microstream.various.ClazzVoidTest.clazzVoidTest(ClazzVoidTest.java:23)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    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