public final TransactionInterceptorBuilder transactionAttribute(TransactionAttribute transactionAttribute) { MatchAlwaysTransactionAttributeSource txAttributeSource = new MatchAlwaysTransactionAttributeSource(); txAttributeSource.setTransactionAttribute(transactionAttribute); this.transactionInterceptor.setTransactionAttributeSource(txAttributeSource); return this; }
@Test public void matchAlwaysTransactionAttributeSource() throws Exception { MatchAlwaysTransactionAttributeSource tas = new MatchAlwaysTransactionAttributeSource(); TransactionAttribute ta = tas.getTransactionAttribute(Object.class.getMethod("hashCode"), null); assertNotNull(ta); assertTrue(TransactionDefinition.PROPAGATION_REQUIRED == ta.getPropagationBehavior()); tas.setTransactionAttribute(new DefaultTransactionAttribute(TransactionDefinition.PROPAGATION_SUPPORTS)); ta = tas.getTransactionAttribute(IOException.class.getMethod("getMessage"), IOException.class); assertNotNull(ta); assertTrue(TransactionDefinition.PROPAGATION_SUPPORTS == ta.getPropagationBehavior()); }
emf = Persistence.createEntityManagerFactory("com.foo.model", properties); em = emf.createEntityManager(); // Create your transaction manager and RespositoryFactory final JpaTransactionManager xactManager = new JpaTransactionManager(emf); final JpaRepositoryFactory factory = new JpaRepositoryFactory(em); // Make sure calls to the repository instance are intercepted for annotated transactions factory.addRepositoryProxyPostProcessor(new RepositoryProxyPostProcessor() { @Override public void postProcess(ProxyFactory factory) { factory.addAdvice(new TransactionInterceptor(xactManager, new MatchAlwaysTransactionAttributeSource())); } }); // Create your repository proxy instance FooRepository repository = factory.getRepository(FooRepository.class); // Bind the same EntityManger used to create the Repository to the thread TransactionSynchronizationManager.bindResource(emf, new EntityManagerHolder(em)); try{ repository.save(someInstance); // Done in a transaction using 1 EntityManger } finally { // Make sure to unbind when done with the repository instance TransactionSynchronizationManager.unbindResource(getEntityManagerFactory()); }
private Consumer<SourcePollingChannelAdapterSpec> consumerSpecWithDelete(Advice advice) { final PollerMetadata poller = new PollerMetadata(); BeanUtils.copyProperties(this.defaultPoller, poller, "transactionSynchronizationFactory"); TransactionSynchronizationProcessor processor = new RemoteFileDeletingTransactionSynchronizationProcessor( this.sftpTemplate, this.properties.getRemoteFileSeparator()); poller.setTransactionSynchronizationFactory(new DefaultTransactionSynchronizationFactory(processor)); poller.setAdviceChain(Collections.singletonList(new TransactionInterceptor( new PseudoTransactionManager(), new MatchAlwaysTransactionAttributeSource()))); if (advice != null) { poller.setAdviceChain(Arrays.asList(advice)); } return spec -> spec.poller(poller); }
public final TransactionInterceptorBuilder transactionAttribute(TransactionAttribute transactionAttribute) { MatchAlwaysTransactionAttributeSource txAttributeSource = new MatchAlwaysTransactionAttributeSource(); txAttributeSource.setTransactionAttribute(transactionAttribute); this.transactionInterceptor.setTransactionAttributeSource(txAttributeSource); return this; }
public final TransactionInterceptorBuilder transactionAttribute(TransactionAttribute transactionAttribute) { MatchAlwaysTransactionAttributeSource txAttributeSource = new MatchAlwaysTransactionAttributeSource(); txAttributeSource.setTransactionAttribute(transactionAttribute); this.transactionInterceptor.setTransactionAttributeSource(txAttributeSource); return this; }
public final TransactionInterceptorBuilder transactionAttribute(TransactionAttribute transactionAttribute) { MatchAlwaysTransactionAttributeSource txAttributeSource = new MatchAlwaysTransactionAttributeSource(); txAttributeSource.setTransactionAttribute(transactionAttribute); this.transactionInterceptor.setTransactionAttributeSource(txAttributeSource); return this; }
dta.setReadOnly(false); MatchAlwaysTransactionAttributeSource matas = new MatchAlwaysTransactionAttributeSource(); matas.setTransactionAttribute(dta);