Skip to content

Commit db103f0

Browse files
EclipseStoreTransactionManager refined
1 parent 5491038 commit db103f0

6 files changed

Lines changed: 38 additions & 12 deletions

File tree

spring-data-eclipse-store/pom.xml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@
107107
<groupId>org.springframework</groupId>
108108
<artifactId>spring-beans</artifactId>
109109
</dependency>
110+
<dependency>
111+
<groupId>org.springframework.boot</groupId>
112+
<artifactId>spring-boot-autoconfigure</artifactId>
113+
</dependency>
110114

111115
<dependency>
112116
<groupId>jakarta.annotation</groupId>
@@ -163,11 +167,6 @@
163167
<artifactId>spring-test</artifactId>
164168
<scope>test</scope>
165169
</dependency>
166-
<dependency>
167-
<groupId>org.springframework.boot</groupId>
168-
<artifactId>spring-boot-autoconfigure</artifactId>
169-
<scope>test</scope>
170-
</dependency>
171170
<dependency>
172171
<groupId>org.apache.logging.log4j</groupId>
173172
<artifactId>log4j-core</artifactId>

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/EclipseStoreStorage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,16 @@
4040
import software.xdev.spring.data.eclipse.store.repository.support.reposyncer.RepositorySynchronizer;
4141
import software.xdev.spring.data.eclipse.store.repository.support.reposyncer.SimpleRepositorySynchronizer;
4242

43+
4344
public class EclipseStoreStorage
4445
implements EntityListProvider, IdSetterProvider, PersistableChecker, ObjectSwizzling
4546
{
4647
private static final Logger LOG = LoggerFactory.getLogger(EclipseStoreStorage.class);
4748
private final Map<Class<?>, String> entityClassToRepositoryName = new HashMap<>();
4849
private final Map<Class<?>, IdSetter<?>> entityClassToIdSetter = new HashMap<>();
50+
private final EclipseStoreStorageFoundationProvider foundationProvider;
4951
private EntitySetCollector entitySetCollector;
5052
private PersistableChecker persistenceChecker;
51-
private final EclipseStoreStorageFoundationProvider foundationProvider;
52-
5353
private StorageManager storageManager;
5454
private Root root;
5555

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/config/EclipseStoreClientConfiguration.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,18 @@
1919
import org.eclipse.store.integrations.spring.boot.types.EclipseStoreProviderImpl;
2020
import org.eclipse.store.integrations.spring.boot.types.configuration.EclipseStoreProperties;
2121
import org.eclipse.store.storage.embedded.types.EmbeddedStorageFoundation;
22+
import org.springframework.beans.factory.ObjectProvider;
2223
import org.springframework.beans.factory.annotation.Autowired;
2324
import org.springframework.beans.factory.annotation.Qualifier;
25+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
26+
import org.springframework.boot.autoconfigure.transaction.TransactionManagerCustomizers;
2427
import org.springframework.context.annotation.Bean;
2528
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.transaction.PlatformTransactionManager;
30+
import org.springframework.transaction.TransactionManager;
2631

2732
import software.xdev.spring.data.eclipse.store.repository.EclipseStoreStorage;
33+
import software.xdev.spring.data.eclipse.store.transactions.EclipseStoreTransactionManager;
2834

2935

3036
/**
@@ -73,6 +79,16 @@ public EmbeddedStorageFoundation<?> createEmbeddedStorageFoundation()
7379
return this.getStoreProvider().createStorageFoundation(this.getStoreConfiguration());
7480
}
7581

82+
@Bean
83+
@ConditionalOnMissingBean(TransactionManager.class)
84+
public PlatformTransactionManager transactionManager(
85+
final ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers)
86+
{
87+
final EclipseStoreTransactionManager transactionManager = new EclipseStoreTransactionManager();
88+
transactionManagerCustomizers.ifAvailable((customizers) -> customizers.customize((TransactionManager)transactionManager));
89+
return transactionManager;
90+
}
91+
7692
@Bean
7793
public EclipseStoreStorage getStorageInstance()
7894
{

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/EclipseStoreRepositoryFactoryBean.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public class EclipseStoreRepositoryFactoryBean<T extends Repository<S, ID>, S, I
3838
{
3939
private EclipseStoreClientConfiguration configuration;
4040

41-
public EclipseStoreRepositoryFactoryBean(final Class<? extends T> repositoryInterface)
41+
public EclipseStoreRepositoryFactoryBean(
42+
final Class<? extends T> repositoryInterface
43+
)
4244
{
4345
super(repositoryInterface);
4446
}
@@ -52,6 +54,8 @@ public void setConfiguration(final EclipseStoreClientConfiguration configuration
5254
@Nonnull
5355
protected RepositoryFactorySupport createRepositoryFactory()
5456
{
55-
return new EclipseStoreRepositoryFactory(this.configuration.getStorageInstance());
57+
return new EclipseStoreRepositoryFactory(
58+
this.configuration.getStorageInstance()
59+
);
5660
}
5761
}

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/SimpleEclipseStoreRepository.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@
2727

2828
import org.slf4j.Logger;
2929
import org.slf4j.LoggerFactory;
30+
import org.springframework.beans.factory.annotation.Autowired;
3031
import org.springframework.data.domain.Page;
3132
import org.springframework.data.domain.Pageable;
3233
import org.springframework.data.domain.Sort;
34+
import org.springframework.transaction.PlatformTransactionManager;
3335

3436
import software.xdev.spring.data.eclipse.store.exceptions.FieldAccessReflectionException;
3537
import software.xdev.spring.data.eclipse.store.exceptions.NoIdFieldFoundException;
@@ -45,6 +47,7 @@
4547
import software.xdev.spring.data.eclipse.store.repository.query.executors.PageableQueryExecutor;
4648
import software.xdev.spring.data.eclipse.store.repository.support.copier.working.WorkingCopier;
4749
import software.xdev.spring.data.eclipse.store.repository.support.copier.working.WorkingCopierResult;
50+
import software.xdev.spring.data.eclipse.store.transactions.EclipseStoreTransactionManager;
4851

4952

5053
public class SimpleEclipseStoreRepository<T, ID>
@@ -59,6 +62,8 @@ public class SimpleEclipseStoreRepository<T, ID>
5962
private final EclipseStoreStorage storage;
6063
private final Class<T> domainClass;
6164
private final WorkingCopier<T> copier;
65+
@Autowired
66+
private PlatformTransactionManager transactionManager;
6267
private Field idField;
6368

6469
public SimpleEclipseStoreRepository(
@@ -91,6 +96,11 @@ public Field getIdField()
9196
@SuppressWarnings("unchecked")
9297
public synchronized <S extends T> List<S> saveBulk(final Collection<S> entities)
9398
{
99+
if(this.transactionManager instanceof final EclipseStoreTransactionManager estm)
100+
{
101+
estm
102+
.getResourceFactory();
103+
}
94104
if(LOG.isDebugEnabled())
95105
{
96106
LOG.debug("Saving {} entities...", entities.size());

spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/transactions/EclipseStoreTransactionManager.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,12 @@
1616
package software.xdev.spring.data.eclipse.store.transactions;
1717

1818
import org.springframework.beans.factory.InitializingBean;
19-
import org.springframework.stereotype.Component;
2019
import org.springframework.transaction.TransactionDefinition;
2120
import org.springframework.transaction.TransactionException;
2221
import org.springframework.transaction.support.AbstractPlatformTransactionManager;
2322
import org.springframework.transaction.support.DefaultTransactionStatus;
2423
import org.springframework.transaction.support.ResourceTransactionManager;
2524

26-
27-
@Component
2825
public class EclipseStoreTransactionManager extends AbstractPlatformTransactionManager
2926
implements ResourceTransactionManager, InitializingBean
3027
{

0 commit comments

Comments
 (0)