Skip to content

Commit bb98ddf

Browse files
Fixed faulty behavior if classloader is not set for EclipseStore
1 parent 52c3de8 commit bb98ddf

3 files changed

Lines changed: 23 additions & 6 deletions

File tree

spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/complex/ComplexConfiguration.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.nio.file.Path;
44

5+
import org.eclipse.serializer.reflect.ClassLoaderProvider;
56
import org.eclipse.store.integrations.spring.boot.types.configuration.EclipseStoreProperties;
67
import org.eclipse.store.integrations.spring.boot.types.factories.EmbeddedStorageFoundationFactory;
78
import org.eclipse.store.storage.embedded.types.EmbeddedStorage;
@@ -25,13 +26,17 @@ public class ComplexConfiguration extends EclipseStoreClientConfiguration
2526

2627
public static final String STORAGE_PATH = "storage-complex";
2728

29+
private final ClassLoaderProvider classLoaderProvider;
30+
2831
@Autowired
2932
public ComplexConfiguration(
3033
final EclipseStoreProperties defaultEclipseStoreProperties,
31-
final EmbeddedStorageFoundationFactory defaultEclipseStoreProvider
34+
final EmbeddedStorageFoundationFactory defaultEclipseStoreProvider,
35+
final ClassLoaderProvider classLoaderProvider
3236
)
3337
{
3438
super(defaultEclipseStoreProperties, defaultEclipseStoreProvider);
39+
this.classLoaderProvider = classLoaderProvider;
3540
}
3641

3742
/**
@@ -45,7 +50,11 @@ public ComplexConfiguration(
4550
@Override
4651
public EmbeddedStorageFoundation<?> createEmbeddedStorageFoundation()
4752
{
48-
return EmbeddedStorage.Foundation(Storage.Configuration(Storage.FileProvider(Path.of(STORAGE_PATH))));
53+
final EmbeddedStorageFoundation<?> storageFoundation =
54+
EmbeddedStorage.Foundation(Storage.Configuration(Storage.FileProvider(Path.of(STORAGE_PATH))));
55+
// This is only needed, if a different ClassLoader is used (e.g. when using spring-dev-tools)
56+
storageFoundation.getConnectionFoundation().setClassLoaderProvider(this.classLoaderProvider);
57+
return storageFoundation;
4958
}
5059

5160
/**

spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/dual/storage/invoice/PersistenceInvoiceConfiguration.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.nio.file.Path;
44

5+
import org.eclipse.serializer.reflect.ClassLoaderProvider;
56
import org.eclipse.store.integrations.spring.boot.types.configuration.EclipseStoreProperties;
67
import org.eclipse.store.integrations.spring.boot.types.factories.EmbeddedStorageFoundationFactory;
78
import org.eclipse.store.storage.embedded.types.EmbeddedStorage;
@@ -23,15 +24,18 @@
2324
@EnableEclipseStoreRepositories
2425
public class PersistenceInvoiceConfiguration extends EclipseStoreClientConfiguration
2526
{
26-
2727
public static final String STORAGE_PATH = "storage-invoice";
2828

29+
private final ClassLoaderProvider classLoaderProvider;
30+
2931
@Autowired
3032
protected PersistenceInvoiceConfiguration(
3133
final EclipseStoreProperties defaultEclipseStoreProperties,
32-
final EmbeddedStorageFoundationFactory defaultEclipseStoreProvider)
34+
final EmbeddedStorageFoundationFactory defaultEclipseStoreProvider,
35+
final ClassLoaderProvider classLoaderProvider)
3336
{
3437
super(defaultEclipseStoreProperties, defaultEclipseStoreProvider);
38+
this.classLoaderProvider = classLoaderProvider;
3539
}
3640

3741
/**
@@ -45,6 +49,10 @@ protected PersistenceInvoiceConfiguration(
4549
@Override
4650
public EmbeddedStorageFoundation<?> createEmbeddedStorageFoundation()
4751
{
48-
return EmbeddedStorage.Foundation(Storage.Configuration(Storage.FileProvider(Path.of(STORAGE_PATH))));
52+
final EmbeddedStorageFoundation<?> storageFoundation =
53+
EmbeddedStorage.Foundation(Storage.Configuration(Storage.FileProvider(Path.of(STORAGE_PATH))));
54+
// This is only needed, if a different ClassLoader is used (e.g. when using spring-dev-tools)
55+
storageFoundation.getConnectionFoundation().setClassLoaderProvider(this.classLoaderProvider);
56+
return storageFoundation;
4957
}
5058
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/registering/EclipseSerializerRegisteringCopier.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private <T> T copy(final T source, final PersistenceManager<Binary> persistenceM
116116
{
117117
persistenceManager.objectRegistry().truncateAll();
118118
final BinaryStorer.Default storer = (BinaryStorer.Default)persistenceManager.createStorer();
119-
// Loader erstellen
119+
// Create Loader
120120
final PersistenceLoader loader = persistenceManager.createLoader();
121121

122122
storer.store(source);

0 commit comments

Comments
 (0)