From caf11a49ffd86be8856466d1fd8e3887fbca256f Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 10 Feb 2017 10:36:52 +0100 Subject: [PATCH] Drop unused LobCreator synchronization utilities Issue: SPR-13827 --- .../lob/JtaLobCreatorSynchronization.java | 67 --------------- .../jdbc/support/lob/LobCreatorUtils.java | 84 ------------------- .../lob/SpringLobCreatorSynchronization.java | 83 ------------------ 3 files changed, 234 deletions(-) delete mode 100644 spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/JtaLobCreatorSynchronization.java delete mode 100644 spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreatorUtils.java delete mode 100644 spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/SpringLobCreatorSynchronization.java diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/JtaLobCreatorSynchronization.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/JtaLobCreatorSynchronization.java deleted file mode 100644 index 80ae5d1ea68..00000000000 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/JtaLobCreatorSynchronization.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.jdbc.support.lob; - -import javax.transaction.Synchronization; - -import org.springframework.util.Assert; - -/** - * Callback for resource cleanup at the end of a JTA transaction. - * Invokes {@code LobCreator.close()} to clean up temporary LOBs - * that might have been created. - * - * @author Juergen Hoeller - * @since 2.0 - * @see LobCreator#close() - * @see javax.transaction.Transaction#registerSynchronization - */ -public class JtaLobCreatorSynchronization implements Synchronization { - - private final LobCreator lobCreator; - - private boolean beforeCompletionCalled = false; - - - /** - * Create a JtaLobCreatorSynchronization for the given LobCreator. - * @param lobCreator the LobCreator to close after transaction completion - */ - public JtaLobCreatorSynchronization(LobCreator lobCreator) { - Assert.notNull(lobCreator, "LobCreator must not be null"); - this.lobCreator = lobCreator; - } - - @Override - public void beforeCompletion() { - // Close the LobCreator early if possible, to avoid issues with strict JTA - // implementations that issue warnings when doing JDBC operations after - // transaction completion. - this.beforeCompletionCalled = true; - this.lobCreator.close(); - } - - @Override - public void afterCompletion(int status) { - if (!this.beforeCompletionCalled) { - // beforeCompletion not called before (probably because of JTA rollback). - // Close the LobCreator here. - this.lobCreator.close(); - } - } - -} diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreatorUtils.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreatorUtils.java deleted file mode 100644 index 386be938a89..00000000000 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreatorUtils.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.jdbc.support.lob; - -import javax.transaction.Status; -import javax.transaction.TransactionManager; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.springframework.transaction.TransactionSystemException; -import org.springframework.transaction.support.TransactionSynchronizationManager; - -/** - * Helper class for registering a transaction synchronization for closing - * a LobCreator, preferring Spring transaction synchronization and falling - * back to plain JTA transaction synchronization. - * - * @author Juergen Hoeller - * @since 2.0 - * @see SpringLobCreatorSynchronization - * @see org.springframework.transaction.support.TransactionSynchronizationManager - * @see JtaLobCreatorSynchronization - * @see javax.transaction.Transaction#registerSynchronization - */ -public abstract class LobCreatorUtils { - - private static final Log logger = LogFactory.getLog(LobCreatorUtils.class); - - - /** - * Register a transaction synchronization for closing the given LobCreator, - * preferring Spring transaction synchronization and falling back to - * plain JTA transaction synchronization. - * @param lobCreator the LobCreator to close after transaction completion - * @param jtaTransactionManager the JTA TransactionManager to fall back to - * when no Spring transaction synchronization is active (may be {@code null}) - * @throws IllegalStateException if there is neither active Spring transaction - * synchronization nor active JTA transaction synchronization - */ - public static void registerTransactionSynchronization( - LobCreator lobCreator, TransactionManager jtaTransactionManager) throws IllegalStateException { - - if (TransactionSynchronizationManager.isSynchronizationActive()) { - logger.debug("Registering Spring transaction synchronization for LobCreator"); - TransactionSynchronizationManager.registerSynchronization( - new SpringLobCreatorSynchronization(lobCreator)); - } - else { - if (jtaTransactionManager != null) { - try { - int jtaStatus = jtaTransactionManager.getStatus(); - if (jtaStatus == Status.STATUS_ACTIVE || jtaStatus == Status.STATUS_MARKED_ROLLBACK) { - logger.debug("Registering JTA transaction synchronization for LobCreator"); - jtaTransactionManager.getTransaction().registerSynchronization( - new JtaLobCreatorSynchronization(lobCreator)); - return; - } - } - catch (Throwable ex) { - throw new TransactionSystemException( - "Could not register synchronization with JTA TransactionManager", ex); - } - } - throw new IllegalStateException("Active Spring transaction synchronization or active " + - "JTA transaction with specified [javax.transaction.TransactionManager] required"); - } - } - -} diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/SpringLobCreatorSynchronization.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/SpringLobCreatorSynchronization.java deleted file mode 100644 index a630b206b6d..00000000000 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/SpringLobCreatorSynchronization.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2002-2012 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.jdbc.support.lob; - -import org.springframework.jdbc.datasource.DataSourceUtils; -import org.springframework.transaction.support.TransactionSynchronizationAdapter; -import org.springframework.util.Assert; - -/** - * Callback for resource cleanup at the end of a Spring transaction. - * Invokes {@code LobCreator.close()} to clean up temporary LOBs - * that might have been created. - * - * @author Juergen Hoeller - * @since 2.0 - * @see LobCreator#close() - */ -public class SpringLobCreatorSynchronization extends TransactionSynchronizationAdapter { - - /** - * Order value for TransactionSynchronization objects that clean up LobCreators. - * Return CONNECTION_SYNCHRONIZATION_ORDER - 200 to execute LobCreator cleanup - * before Hibernate Session (- 100) and JDBC Connection cleanup, if any. - * @see org.springframework.jdbc.datasource.DataSourceUtils#CONNECTION_SYNCHRONIZATION_ORDER - */ - public static final int LOB_CREATOR_SYNCHRONIZATION_ORDER = - DataSourceUtils.CONNECTION_SYNCHRONIZATION_ORDER - 200; - - - private final LobCreator lobCreator; - - private boolean beforeCompletionCalled = false; - - - /** - * Create a SpringLobCreatorSynchronization for the given LobCreator. - * @param lobCreator the LobCreator to close after transaction completion - */ - public SpringLobCreatorSynchronization(LobCreator lobCreator) { - Assert.notNull(lobCreator, "LobCreator must not be null"); - this.lobCreator = lobCreator; - } - - @Override - public int getOrder() { - return LOB_CREATOR_SYNCHRONIZATION_ORDER; - } - - - @Override - public void beforeCompletion() { - // Close the LobCreator early if possible, to avoid issues with strict JTA - // implementations that issue warnings when doing JDBC operations after - // transaction completion. - this.beforeCompletionCalled = true; - this.lobCreator.close(); - } - - @Override - public void afterCompletion(int status) { - if (!this.beforeCompletionCalled) { - // beforeCompletion not called before (probably because of flushing on commit - // in the transaction manager, after the chain of beforeCompletion calls). - // Close the LobCreator here. - this.lobCreator.close(); - } - } - -}