private IntegrationResourceHolder bindResourceHolderIfNecessary(String key, Object resource) { if (this.transactionSynchronizationFactory != null && resource != null && TransactionSynchronizationManager.isActualTransactionActive()) { TransactionSynchronization synchronization = this.transactionSynchronizationFactory.create(resource); if (synchronization != null) { TransactionSynchronizationManager.registerSynchronization(synchronization); if (synchronization instanceof IntegrationResourceHolderSynchronization) { IntegrationResourceHolderSynchronization integrationSynchronization = ((IntegrationResourceHolderSynchronization) synchronization); integrationSynchronization.setShouldUnbindAtCompletion(false); if (!TransactionSynchronizationManager.hasResource(resource)) { TransactionSynchronizationManager.bindResource(resource, integrationSynchronization.getResourceHolder()); } } } Object resourceHolder = TransactionSynchronizationManager.getResource(resource); if (resourceHolder instanceof IntegrationResourceHolder) { IntegrationResourceHolder integrationResourceHolder = (IntegrationResourceHolder) resourceHolder; if (key != null) { integrationResourceHolder.addAttribute(key, resource); } return integrationResourceHolder; } } return null; }
private Runnable prepareSendingTask(Object mailMessage) { return () -> { @SuppressWarnings("unchecked") org.springframework.messaging.Message<?> message = mailMessage instanceof Message ? getMessageBuilderFactory().withPayload(mailMessage).build() : (org.springframework.messaging.Message<Object>) mailMessage; if (TransactionSynchronizationManager.isActualTransactionActive() && this.transactionSynchronizationFactory != null) { TransactionSynchronization synchronization = this.transactionSynchronizationFactory.create(this); if (synchronization != null) { TransactionSynchronizationManager.registerSynchronization(synchronization); if (synchronization instanceof IntegrationResourceHolderSynchronization && !TransactionSynchronizationManager.hasResource(this)) { TransactionSynchronizationManager.bindResource(this, ((IntegrationResourceHolderSynchronization) synchronization).getResourceHolder()); } Object resourceHolder = TransactionSynchronizationManager.getResource(this); if (resourceHolder instanceof IntegrationResourceHolder) { ((IntegrationResourceHolder) resourceHolder).setMessage(message); } } } sendMessage(message); }; }
TransactionSynchronization synchronization = ImapIdleChannelAdapter.this.transactionSynchronizationFactory .create(ImapIdleChannelAdapter.this); if (synchronization != null) { TransactionSynchronizationManager.registerSynchronization(synchronization);
private IntegrationResourceHolder bindResourceHolderIfNecessary(String key, Object resource) { if (this.transactionSynchronizationFactory != null && resource != null && TransactionSynchronizationManager.isActualTransactionActive()) { TransactionSynchronization synchronization = this.transactionSynchronizationFactory.create(resource); if (synchronization != null) { TransactionSynchronizationManager.registerSynchronization(synchronization); if (synchronization instanceof IntegrationResourceHolderSynchronization) { IntegrationResourceHolderSynchronization integrationSynchronization = ((IntegrationResourceHolderSynchronization) synchronization); integrationSynchronization.setShouldUnbindAtCompletion(false); if (!TransactionSynchronizationManager.hasResource(resource)) { TransactionSynchronizationManager.bindResource(resource, integrationSynchronization.getResourceHolder()); } } } Object resourceHolder = TransactionSynchronizationManager.getResource(resource); if (resourceHolder instanceof IntegrationResourceHolder) { IntegrationResourceHolder integrationResourceHolder = (IntegrationResourceHolder) resourceHolder; if (key != null) { integrationResourceHolder.addAttribute(key, resource); } return integrationResourceHolder; } } return null; }