Author: tomdz
Date: Wed Feb 22 14:40:32 2006
New Revision: 379949
URL: http://svn.apache.org/viewcvs?rev=379949&view=rev
Log:
Made dump task more robust against non-conforming JDBC drivers that return null
for non-string columns in the metadata
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
Modified:
db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
URL:
http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java?rev=379949&r1=379948&r2=379949&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/task/DumpMetadataTask.java
Wed Feb 22 14:40:32 2006
@@ -1218,7 +1218,29 @@
if (columns.contains(columnName))
{
- value = String.valueOf(result.getInt(columnName));
+ try
+ {
+ value = String.valueOf(result.getInt(columnName));
+ }
+ catch (SQLException ex)
+ {
+ // A few databases do not comply with the jdbc spec and
return a string (or null),
+ // so lets try this just in case
+ value = result.getString(columnName);
+
+ if (value != null)
+ {
+ try
+ {
+ Integer.parseInt(value);
+ }
+ catch (NumberFormatException parseEx)
+ {
+ // its no int returned as a string, so
lets re-throw the original exception
+ throw ex;
+ }
+ }
+ }
element.addAttribute(attrName, value);
}
return value;
@@ -1240,7 +1262,29 @@
if (columns.contains(columnName))
{
- value = String.valueOf(result.getShort(columnName));
+ try
+ {
+ value = String.valueOf(result.getShort(columnName));
+ }
+ catch (SQLException ex)
+ {
+ // A few databases do not comply with the jdbc spec and
return a string (or null),
+ // so lets try strings this just in case
+ value = result.getString(columnName);
+
+ if (value != null)
+ {
+ try
+ {
+ Short.parseShort(value);
+ }
+ catch (NumberFormatException parseEx)
+ {
+ // its no short returned as a string,
so lets re-throw the original exception
+ throw ex;
+ }
+ }
+ }
element.addAttribute(attrName, value);
}
return value;