From 0e6096989b608dbf61110c0a6fe5dad903cd4ce5 Mon Sep 17 00:00:00 2001
From: gmantele <gmantele@ari.uni-heidelberg.de>
Date: Thu, 10 Sep 2015 17:50:03 +0200
Subject: [PATCH] [TAP] Fix bug, reported by A. Oberto, about Character
 formatting in VOTable format. A ClassCastException was thrown about an
 impossible cast from String to Character.

---
 src/tap/data/ResultSetTableIterator.java | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/tap/data/ResultSetTableIterator.java b/src/tap/data/ResultSetTableIterator.java
index 220d9b7..89bf1ed 100644
--- a/src/tap/data/ResultSetTableIterator.java
+++ b/src/tap/data/ResultSetTableIterator.java
@@ -42,7 +42,7 @@ import adql.translator.JDBCTranslator;
  * </i></p>
  * 
  * @author Gr&eacute;gory Mantelet (ARI)
- * @version 2.1 (07/2015)
+ * @version 2.1 (09/2015)
  * @since 2.0
  */
 public class ResultSetTableIterator implements TableIterator {
@@ -362,6 +362,9 @@ public class ResultSetTableIterator implements TableIterator {
 				// if the column value is a Timestamp object, format it in ISO8601:
 				if (o instanceof Timestamp)
 					o = ISO8601Format.format(((Timestamp)o).getTime());
+				// if the column should be only a character:
+				else if (colType != null && o != null && colType.type == DBDatatype.CHAR && (colType.length == 1 || colType.length <= 0) && o instanceof String)
+					o = ((String)o).charAt(0);
 				// if the column value is a geometrical object, it must be serialized in STC-S:
 				else if (translator != null && colType != null && colType.isGeometry()){
 					Region region = translator.translateGeometryFromDB(o);
-- 
GitLab