From 7ad197e8e169fd086391b96ac36cc07c881bae54 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 15 Feb 2024 17:26:49 +0100 Subject: [PATCH] Deprecate LobHandler and SqlXmlHandler abstractions Including SqlLobValue and related support classes. Closes gh-32179 --- .../jdbc/LobRetrievalFailureException.java | 4 +++- .../AbstractLobCreatingPreparedStatementCallback.java | 2 ++ .../support/AbstractLobStreamingResultSetExtractor.java | 3 +++ .../springframework/jdbc/core/support/SqlLobValue.java | 2 ++ .../jdbc/support/lob/AbstractLobHandler.java | 5 ++++- .../jdbc/support/lob/DefaultLobHandler.java | 5 ++++- .../org/springframework/jdbc/support/lob/LobCreator.java | 5 ++++- .../org/springframework/jdbc/support/lob/LobHandler.java | 5 ++++- .../jdbc/support/lob/PassThroughBlob.java | 3 ++- .../jdbc/support/lob/PassThroughClob.java | 3 ++- .../jdbc/support/lob/TemporaryLobCreator.java | 5 ++++- .../jdbc/support/xml/Jdbc4SqlXmlHandler.java | 7 ++++++- .../xml/SqlXmlFeatureNotImplementedException.java | 9 ++++++++- .../springframework/jdbc/support/xml/SqlXmlHandler.java | 7 ++++++- .../springframework/jdbc/support/xml/SqlXmlValue.java | 2 ++ .../jdbc/support/xml/XmlBinaryStreamProvider.java | 4 +++- .../jdbc/support/xml/XmlCharacterStreamProvider.java | 4 +++- .../jdbc/support/xml/XmlResultProvider.java | 4 +++- 18 files changed, 65 insertions(+), 14 deletions(-) diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/LobRetrievalFailureException.java b/spring-jdbc/src/main/java/org/springframework/jdbc/LobRetrievalFailureException.java index c53924a292..1628da5c2d 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/LobRetrievalFailureException.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/LobRetrievalFailureException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2024 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. @@ -25,7 +25,9 @@ import org.springframework.dao.DataRetrievalFailureException; * * @author Juergen Hoeller * @since 1.0.2 + * @deprecated as of 6.2 along with {@link org.springframework.jdbc.support.lob.LobHandler} */ +@Deprecated(since = "6.2") @SuppressWarnings("serial") public class LobRetrievalFailureException extends DataRetrievalFailureException { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobCreatingPreparedStatementCallback.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobCreatingPreparedStatementCallback.java index 99135870c6..eb32870d3d 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobCreatingPreparedStatementCallback.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobCreatingPreparedStatementCallback.java @@ -51,7 +51,9 @@ import org.springframework.util.Assert; * @author Juergen Hoeller * @since 1.0.2 * @see org.springframework.jdbc.support.lob.LobCreator + * @deprecated as of 6.2, in favor of {@link SqlBinaryValue} and {@link SqlCharacterValue} */ +@Deprecated(since = "6.2") public abstract class AbstractLobCreatingPreparedStatementCallback implements PreparedStatementCallback { private final LobHandler lobHandler; diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java index 7b6de1078e..c56e4a2811 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/AbstractLobStreamingResultSetExtractor.java @@ -54,7 +54,10 @@ import org.springframework.lang.Nullable; * @param the result type * @see org.springframework.jdbc.support.lob.LobHandler * @see org.springframework.jdbc.LobRetrievalFailureException + * @deprecated as of 6.2 along with {@link org.springframework.jdbc.support.lob.LobHandler}, + * in favor of {@link ResultSet#getBinaryStream}/{@link ResultSet#getCharacterStream} usage */ +@Deprecated(since = "6.2") public abstract class AbstractLobStreamingResultSetExtractor implements ResultSetExtractor { /** diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlLobValue.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlLobValue.java index 192dd58007..c208be0e3f 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlLobValue.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlLobValue.java @@ -68,7 +68,9 @@ import org.springframework.lang.Nullable; * @see org.springframework.jdbc.core.JdbcTemplate#update(String, Object[], int[]) * @see org.springframework.jdbc.object.SqlUpdate#update(Object[]) * @see org.springframework.jdbc.object.StoredProcedure#execute(java.util.Map) + * @deprecated as of 6.2, in favor of {@link SqlBinaryValue} and {@link SqlCharacterValue} */ +@Deprecated(since = "6.2") public class SqlLobValue implements DisposableSqlTypeValue { @Nullable diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java index 8e1dd9376c..d2ff13ec95 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/AbstractLobHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2024 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. @@ -32,7 +32,10 @@ import org.springframework.lang.Nullable; * @author Juergen Hoeller * @since 1.2 * @see java.sql.ResultSet#findColumn + * @deprecated as of 6.2, in favor of {@link org.springframework.jdbc.core.support.SqlBinaryValue} + * and {@link org.springframework.jdbc.core.support.SqlCharacterValue} */ +@Deprecated(since = "6.2") public abstract class AbstractLobHandler implements LobHandler { @Override diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java index e5cc44390c..59bb409f77 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2024 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. @@ -80,7 +80,10 @@ import org.springframework.lang.Nullable; * @see java.sql.PreparedStatement#setString * @see java.sql.PreparedStatement#setAsciiStream * @see java.sql.PreparedStatement#setCharacterStream + * @deprecated as of 6.2, in favor of {@link org.springframework.jdbc.core.support.SqlBinaryValue} + * and {@link org.springframework.jdbc.core.support.SqlCharacterValue} */ +@Deprecated(since = "6.2") public class DefaultLobHandler extends AbstractLobHandler { protected final Log logger = LogFactory.getLog(getClass()); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreator.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreator.java index 865bf4af9d..4c59328629 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreator.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobCreator.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 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. @@ -57,7 +57,10 @@ import org.springframework.lang.Nullable; * @see java.sql.PreparedStatement#setString * @see java.sql.PreparedStatement#setAsciiStream * @see java.sql.PreparedStatement#setCharacterStream + * @deprecated as of 6.2, in favor of {@link org.springframework.jdbc.core.support.SqlBinaryValue} + * and {@link org.springframework.jdbc.core.support.SqlCharacterValue} */ +@Deprecated(since = "6.2") public interface LobCreator extends Closeable { /** diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobHandler.java index 8bacfea8fe..999c667c7a 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/LobHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2024 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. @@ -72,7 +72,10 @@ import org.springframework.lang.Nullable; * @see java.sql.ResultSet#getString * @see java.sql.ResultSet#getAsciiStream * @see java.sql.ResultSet#getCharacterStream + * @deprecated as of 6.2, in favor of {@link org.springframework.jdbc.core.support.SqlBinaryValue} + * and {@link org.springframework.jdbc.core.support.SqlCharacterValue} */ +@Deprecated(since = "6.2") public interface LobHandler { /** diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughBlob.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughBlob.java index 4a304abea0..93238ea41e 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughBlob.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughBlob.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 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. @@ -31,6 +31,7 @@ import org.springframework.lang.Nullable; * @author Juergen Hoeller * @since 2.5.3 */ +@Deprecated class PassThroughBlob implements Blob { @Nullable diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughClob.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughClob.java index b2c82d4007..8dea8a2c84 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughClob.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/PassThroughClob.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 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. @@ -38,6 +38,7 @@ import org.springframework.util.FileCopyUtils; * @author Juergen Hoeller * @since 2.5.3 */ +@Deprecated class PassThroughClob implements Clob { @Nullable diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java index 0c0bed045f..7a0e18db9c 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2023 the original author or authors. + * Copyright 2002-2024 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. @@ -46,7 +46,10 @@ import org.springframework.util.FileCopyUtils; * @see DefaultLobHandler#setCreateTemporaryLob * @see java.sql.Connection#createBlob() * @see java.sql.Connection#createClob() + * @deprecated as of 6.2, in favor of {@link org.springframework.jdbc.core.support.SqlBinaryValue} + * and {@link org.springframework.jdbc.core.support.SqlCharacterValue} */ +@Deprecated(since = "6.2") public class TemporaryLobCreator implements LobCreator { protected static final Log logger = LogFactory.getLog(TemporaryLobCreator.class); diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java index a79fb2723e..9a5775c712 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2017 the original author or authors. + * Copyright 2002-2024 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. @@ -19,6 +19,7 @@ package org.springframework.jdbc.support.xml; import java.io.IOException; import java.io.InputStream; import java.io.Reader; +import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -46,7 +47,11 @@ import org.springframework.lang.Nullable; * @see java.sql.SQLXML * @see java.sql.ResultSet#getSQLXML * @see java.sql.PreparedStatement#setSQLXML + * @deprecated as of 6.2, in favor of direct {@link ResultSet#getSQLXML} and + * {@link Connection#createSQLXML()} usage, possibly in combination with a + * custom {@link org.springframework.jdbc.support.SqlValue} implementation */ +@Deprecated(since = "6.2") public class Jdbc4SqlXmlHandler implements SqlXmlHandler { //------------------------------------------------------------------------- diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlFeatureNotImplementedException.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlFeatureNotImplementedException.java index 443f4bfd08..c9abffb57e 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlFeatureNotImplementedException.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlFeatureNotImplementedException.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2024 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. @@ -16,6 +16,9 @@ package org.springframework.jdbc.support.xml; +import java.sql.Connection; +import java.sql.ResultSet; + import org.springframework.dao.InvalidDataAccessApiUsageException; /** @@ -24,7 +27,11 @@ import org.springframework.dao.InvalidDataAccessApiUsageException; * * @author Thomas Risberg * @since 2.5.5 + * @deprecated as of 6.2, in favor of direct {@link ResultSet#getSQLXML} and + * {@link Connection#createSQLXML()} usage, possibly in combination with a + * custom {@link org.springframework.jdbc.support.SqlValue} implementation */ +@Deprecated(since = "6.2") @SuppressWarnings("serial") public class SqlXmlFeatureNotImplementedException extends InvalidDataAccessApiUsageException { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlHandler.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlHandler.java index e4f7318fc6..de37b3b95b 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlHandler.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2024 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. @@ -18,6 +18,7 @@ package org.springframework.jdbc.support.xml; import java.io.InputStream; import java.io.Reader; +import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -45,7 +46,11 @@ import org.springframework.lang.Nullable; * @see java.sql.SQLXML * @see java.sql.ResultSet#getSQLXML * @see java.sql.PreparedStatement#setSQLXML + * @deprecated as of 6.2, in favor of direct {@link ResultSet#getSQLXML} and + * {@link Connection#createSQLXML()} usage, possibly in combination with a + * custom {@link org.springframework.jdbc.support.SqlValue} implementation */ +@Deprecated(since = "6.2") public interface SqlXmlHandler { //------------------------------------------------------------------------- diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlValue.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlValue.java index d662a9271a..5039898cbf 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlValue.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlValue.java @@ -25,7 +25,9 @@ import org.springframework.jdbc.support.SqlValue; * @author Thomas Risberg * @since 2.5.5 * @see org.springframework.jdbc.support.SqlValue + * @deprecated as of 6.2, in favor of a direct {@link SqlValue} implementation */ +@Deprecated(since = "6.2") public interface SqlXmlValue extends SqlValue { } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlBinaryStreamProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlBinaryStreamProvider.java index 1926b9d624..916c977684 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlBinaryStreamProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlBinaryStreamProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2024 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. @@ -26,7 +26,9 @@ import java.io.OutputStream; * @author Thomas Risberg * @since 2.5.5 * @see java.io.OutputStream + * @deprecated as of 6.2, in favor of direct {@link java.sql.SQLXML} usage */ +@Deprecated(since = "6.2") public interface XmlBinaryStreamProvider { /** diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlCharacterStreamProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlCharacterStreamProvider.java index 8b2bf69f04..74a4fab5c0 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlCharacterStreamProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlCharacterStreamProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2024 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. @@ -26,7 +26,9 @@ import java.io.Writer; * @author Thomas Risberg * @since 2.5.5 * @see java.io.Writer + * @deprecated as of 6.2, in favor of direct {@link java.sql.SQLXML} usage */ +@Deprecated(since = "6.2") public interface XmlCharacterStreamProvider { /** diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlResultProvider.java b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlResultProvider.java index 0c3eb05a81..accef56622 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlResultProvider.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/XmlResultProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2024 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. @@ -25,7 +25,9 @@ import javax.xml.transform.Result; * @author Thomas Risberg * @since 2.5.5 * @see javax.xml.transform.Result + * @deprecated as of 6.2, in favor of direct {@link java.sql.SQLXML} usage */ +@Deprecated(since = "6.2") public interface XmlResultProvider { /**