From 14ca2de31e64b09c731b26bf53dec6e54c5d7c2a Mon Sep 17 00:00:00 2001 From: Julian Hyde Date: Thu, 24 Jan 2008 07:42:35 +0000 Subject: [PATCH] XMLA driver: when constructing metadata request XML, encode restriction values git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@67 c6a108a4-781c-0410-a6c6-c2d559e19af0 --- .../driver/xmla/XmlaOlap4jConnection.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java index bfd5ed2..8d0d673 100644 --- a/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java +++ b/src/org/olap4j/driver/xmla/XmlaOlap4jConnection.java @@ -502,8 +502,7 @@ public String generateRequest( final String restriction = restrictions[i]; final String value = restrictions[i + 1]; buf.append("<").append(restriction).append(">"); - // TODO: escape value - buf.append(value); + buf.append(xmlEncode(value)); buf.append(""); } } @@ -523,6 +522,27 @@ public String generateRequest( return buf.toString(); } + /** + * Encodes a string for use in an XML CDATA section. + * + *

TODO use an XML serialiser or handle these too: + * quote (") " + * apostrophe (') ' + * ampersand (&) & + * less than (<) < + * greater than (>) > + * + * @param value to be xml encoded + * @return an XML encode string or the value is not required. + */ + private static String xmlEncode(String value){ + if (value.indexOf('&') == -1) { + return value; + } else { + return value.replace("&", "&"); + } + } + // ~ inner classes -------------------------------------------------------- static class Helper {