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 247e5368146..b6c6a345f78 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-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -53,43 +53,55 @@ public class Jdbc4SqlXmlHandler implements SqlXmlHandler { @Override 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 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 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 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 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 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 public Source getXmlAsSource(ResultSet rs, String columnName, Class sourceClass) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnName); + if (xmlObject == null) { + return null; + } return (sourceClass != null ? xmlObject.getSource(sourceClass) : xmlObject.getSource(DOMSource.class)); } @Override public Source getXmlAsSource(ResultSet rs, int columnIndex, Class sourceClass) throws SQLException { SQLXML xmlObject = rs.getSQLXML(columnIndex); + if (xmlObject == null) { + return null; + } return (sourceClass != null ? xmlObject.getSource(sourceClass) : xmlObject.getSource(DOMSource.class)); } 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 f1867b86fcf..320a3bd9772 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-2012 the original author or authors. + * Copyright 2002-2015 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. @@ -112,7 +112,7 @@ public interface SqlXmlHandler { * database and driver. * @param rs the ResultSet to retrieve the content from * @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 * @see java.sql.ResultSet#getSQLXML * @see java.sql.SQLXML#getCharacterStream @@ -126,7 +126,7 @@ public interface SqlXmlHandler { * database and driver. * @param rs the ResultSet to retrieve the content from * @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 * @see java.sql.ResultSet#getSQLXML * @see java.sql.SQLXML#getCharacterStream @@ -141,7 +141,7 @@ public interface SqlXmlHandler { * @param rs the ResultSet to retrieve the content from * @param columnName the column name to use * @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 * @see java.sql.ResultSet#getSQLXML * @see java.sql.SQLXML#getSource @@ -156,7 +156,7 @@ public interface SqlXmlHandler { * @param rs the ResultSet to retrieve the content from * @param columnIndex the column index to use * @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 * @see java.sql.ResultSet#getSQLXML * @see java.sql.SQLXML#getSource