Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: transactional operator
Browse files Browse the repository at this point in the history
guqing authored and halo-dev-bot committed Feb 5, 2024
1 parent d20ad3b commit e4256b6
Showing 3 changed files with 27 additions and 11 deletions.
Original file line number Diff line number Diff line change
@@ -6,8 +6,6 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.transaction.ReactiveTransactionManager;
import org.springframework.transaction.reactive.TransactionalOperator;

@Configuration(proxyBeanMethods = false)
@EnableAsync
@@ -20,9 +18,4 @@ Jackson2ObjectMapperBuilderCustomizer objectMapperCustomizer() {
builder.featuresToEnable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS);
};
}

@Bean
TransactionalOperator transactionTemplate(ReactiveTransactionManager transactionManager) {
return TransactionalOperator.create(transactionManager);
}
}
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import org.springframework.data.domain.Sort;
import org.springframework.data.util.Predicates;
import org.springframework.stereotype.Component;
import org.springframework.transaction.ReactiveTransactionManager;
import org.springframework.transaction.reactive.TransactionalOperator;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -40,7 +41,6 @@

@Slf4j
@Component
@RequiredArgsConstructor
public class ReactiveExtensionClientImpl implements ReactiveExtensionClient {

private final ReactiveExtensionStoreClient client;
@@ -57,11 +57,31 @@ public class ReactiveExtensionClientImpl implements ReactiveExtensionClient {

private final IndexedQueryEngine indexedQueryEngine;

private final TransactionalOperator transactionalOperator;

private final ConcurrentMap<GroupKind, AtomicBoolean> indexBuildingState =
new ConcurrentHashMap<>();

private TransactionalOperator transactionalOperator;

public ReactiveExtensionClientImpl(ReactiveExtensionStoreClient client,
ExtensionConverter converter, SchemeManager schemeManager, ObjectMapper objectMapper,
IndexerFactory indexerFactory, IndexedQueryEngine indexedQueryEngine,
ReactiveTransactionManager reactiveTransactionManager) {
this.client = client;
this.converter = converter;
this.schemeManager = schemeManager;
this.objectMapper = objectMapper;
this.indexerFactory = indexerFactory;
this.indexedQueryEngine = indexedQueryEngine;
this.transactionalOperator = TransactionalOperator.create(reactiveTransactionManager);
}

/**
* Only for test.
*/
void setTransactionalOperator(TransactionalOperator transactionalOperator) {
this.transactionalOperator = transactionalOperator;
}

@Override
public <E extends Extension> Flux<E> list(Class<E> type, Predicate<E> predicate,
Comparator<E> comparator) {
Original file line number Diff line number Diff line change
@@ -36,6 +36,7 @@
import org.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.transaction.ReactiveTransactionManager;
import org.springframework.transaction.reactive.TransactionalOperator;
import reactor.core.Exceptions;
import reactor.core.publisher.Flux;
@@ -65,7 +66,7 @@ class ReactiveExtensionClientTest {
IndexerFactory indexerFactory;

@Mock
TransactionalOperator transactionalOperator;
ReactiveTransactionManager reactiveTransactionManager;

@Spy
ObjectMapper objectMapper = JsonMapper.builder()
@@ -80,6 +81,8 @@ void setUp() {
lenient().when(schemeManager.get(eq(FakeExtension.class)))
.thenReturn(fakeScheme);
lenient().when(schemeManager.get(eq(fakeScheme.groupVersionKind()))).thenReturn(fakeScheme);
var transactionalOperator = mock(TransactionalOperator.class);
client.setTransactionalOperator(transactionalOperator);
lenient().when(transactionalOperator.transactional(any(Mono.class)))
.thenAnswer(invocation -> invocation.getArgument(0));
}

0 comments on commit e4256b6

Please sign in to comment.