Browse Source

Jdbc4SqlXmlHandler returns null as documented (instead of throwing NPE)

Issue: SPR-13782
(cherry picked from commit 78dad4c)
pull/936/head
Juergen Hoeller 10 years ago
parent
commit
3403e8d843
  1. 26
      spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java
  2. 10
      spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlHandler.java

26
spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/Jdbc4SqlXmlHandler.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2015 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -53,43 +53,55 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler {
@Override @Override
public String getXmlAsString(ResultSet rs, String columnName) throws SQLException { public String getXmlAsString(ResultSet rs, String columnName) throws SQLException {
return rs.getSQLXML(columnName).getString(); SQLXML xmlObject = rs.getSQLXML(columnName);
return (xmlObject != null ? xmlObject.getString() : null);
} }
@Override @Override
public String getXmlAsString(ResultSet rs, int columnIndex) throws SQLException { public String getXmlAsString(ResultSet rs, int columnIndex) throws SQLException {
return rs.getSQLXML(columnIndex).getString(); SQLXML xmlObject = rs.getSQLXML(columnIndex);
return (xmlObject != null ? xmlObject.getString() : null);
} }
@Override @Override
public InputStream getXmlAsBinaryStream(ResultSet rs, String columnName) throws SQLException { public InputStream getXmlAsBinaryStream(ResultSet rs, String columnName) throws SQLException {
return rs.getSQLXML(columnName).getBinaryStream(); SQLXML xmlObject = rs.getSQLXML(columnName);
return (xmlObject != null ? xmlObject.getBinaryStream() : null);
} }
@Override @Override
public InputStream getXmlAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException { public InputStream getXmlAsBinaryStream(ResultSet rs, int columnIndex) throws SQLException {
return rs.getSQLXML(columnIndex).getBinaryStream(); SQLXML xmlObject = rs.getSQLXML(columnIndex);
return (xmlObject != null ? xmlObject.getBinaryStream() : null);
} }
@Override @Override
public Reader getXmlAsCharacterStream(ResultSet rs, String columnName) throws SQLException { public Reader getXmlAsCharacterStream(ResultSet rs, String columnName) throws SQLException {
return rs.getSQLXML(columnName).getCharacterStream(); SQLXML xmlObject = rs.getSQLXML(columnName);
return (xmlObject != null ? xmlObject.getCharacterStream() : null);
} }
@Override @Override
public Reader getXmlAsCharacterStream(ResultSet rs, int columnIndex) throws SQLException { public Reader getXmlAsCharacterStream(ResultSet rs, int columnIndex) throws SQLException {
return rs.getSQLXML(columnIndex).getCharacterStream(); SQLXML xmlObject = rs.getSQLXML(columnIndex);
return (xmlObject != null ? xmlObject.getCharacterStream() : null);
} }
@Override @Override
public Source getXmlAsSource(ResultSet rs, String columnName, Class<? extends Source> sourceClass) throws SQLException { public Source getXmlAsSource(ResultSet rs, String columnName, Class<? extends Source> sourceClass) throws SQLException {
SQLXML xmlObject = rs.getSQLXML(columnName); SQLXML xmlObject = rs.getSQLXML(columnName);
if (xmlObject == null) {
return null;
}
return (sourceClass != null ? xmlObject.getSource(sourceClass) : xmlObject.getSource(DOMSource.class)); return (sourceClass != null ? xmlObject.getSource(sourceClass) : xmlObject.getSource(DOMSource.class));
} }
@Override @Override
public Source getXmlAsSource(ResultSet rs, int columnIndex, Class<? extends Source> sourceClass) throws SQLException { public Source getXmlAsSource(ResultSet rs, int columnIndex, Class<? extends Source> sourceClass) throws SQLException {
SQLXML xmlObject = rs.getSQLXML(columnIndex); SQLXML xmlObject = rs.getSQLXML(columnIndex);
if (xmlObject == null) {
return null;
}
return (sourceClass != null ? xmlObject.getSource(sourceClass) : xmlObject.getSource(DOMSource.class)); return (sourceClass != null ? xmlObject.getSource(sourceClass) : xmlObject.getSource(DOMSource.class));
} }

10
spring-jdbc/src/main/java/org/springframework/jdbc/support/xml/SqlXmlHandler.java

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2015 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -112,7 +112,7 @@ public interface SqlXmlHandler {
* database and driver. * database and driver.
* @param rs the ResultSet to retrieve the content from * @param rs the ResultSet to retrieve the content from
* @param columnName the column name to use * @param columnName the column name to use
* @return the content as character stream * @return the content as character stream, or {@code null} in case of SQL NULL
* @throws SQLException if thrown by JDBC methods * @throws SQLException if thrown by JDBC methods
* @see java.sql.ResultSet#getSQLXML * @see java.sql.ResultSet#getSQLXML
* @see java.sql.SQLXML#getCharacterStream * @see java.sql.SQLXML#getCharacterStream
@ -126,7 +126,7 @@ public interface SqlXmlHandler {
* database and driver. * database and driver.
* @param rs the ResultSet to retrieve the content from * @param rs the ResultSet to retrieve the content from
* @param columnIndex the column index to use * @param columnIndex the column index to use
* @return the content as character stream * @return the content as character stream, or {@code null} in case of SQL NULL
* @throws SQLException if thrown by JDBC methods * @throws SQLException if thrown by JDBC methods
* @see java.sql.ResultSet#getSQLXML * @see java.sql.ResultSet#getSQLXML
* @see java.sql.SQLXML#getCharacterStream * @see java.sql.SQLXML#getCharacterStream
@ -141,7 +141,7 @@ public interface SqlXmlHandler {
* @param rs the ResultSet to retrieve the content from * @param rs the ResultSet to retrieve the content from
* @param columnName the column name to use * @param columnName the column name to use
* @param sourceClass the implementation class to be used * @param sourceClass the implementation class to be used
* @return the content as character stream * @return the content as character stream, or {@code null} in case of SQL NULL
* @throws SQLException if thrown by JDBC methods * @throws SQLException if thrown by JDBC methods
* @see java.sql.ResultSet#getSQLXML * @see java.sql.ResultSet#getSQLXML
* @see java.sql.SQLXML#getSource * @see java.sql.SQLXML#getSource
@ -156,7 +156,7 @@ public interface SqlXmlHandler {
* @param rs the ResultSet to retrieve the content from * @param rs the ResultSet to retrieve the content from
* @param columnIndex the column index to use * @param columnIndex the column index to use
* @param sourceClass the implementation class to be used * @param sourceClass the implementation class to be used
* @return the content as character stream * @return the content as character stream, or {@code null} in case of SQL NULL
* @throws SQLException if thrown by JDBC methods * @throws SQLException if thrown by JDBC methods
* @see java.sql.ResultSet#getSQLXML * @see java.sql.ResultSet#getSQLXML
* @see java.sql.SQLXML#getSource * @see java.sql.SQLXML#getSource

Loading…
Cancel
Save