Browse Source

HPCC-8556 Refactor const char * query functions from helpers

Final batch

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 12 years ago
parent
commit
1d9af0e9e8

+ 18 - 19
common/thorhelper/csvsplitter.cpp

@@ -26,6 +26,8 @@
 
 #include "csvsplitter.hpp"
 #include "eclrtl.hpp"
+#include "roxiemem.hpp"
+using roxiemem::OwnedRoxieString;
 
 // If you have lines more than 2Mb in length it is more likely to be a bug - so require an explicit override
 #define DEFAULT_CSV_LINE_LENGTH 2048
@@ -103,7 +105,7 @@ void CSVSplitter::init(unsigned _maxColumns, ICsvParameters * csvInfo, const cha
     {
         for (idx=0;;idx++)
         {
-            const char * text = csvInfo->queryQuote(idx);
+            OwnedRoxieString text(csvInfo->getQuote(idx));
             if (!text)
                 break;
             addQuote(text);
@@ -116,7 +118,7 @@ void CSVSplitter::init(unsigned _maxColumns, ICsvParameters * csvInfo, const cha
     {
         for (idx=0;;idx++)
         {
-            const char * text = csvInfo->querySeparator(idx);
+            OwnedRoxieString text(csvInfo->getSeparator(idx));
             if (!text)
                 break;
             addSeparator(text);
@@ -129,27 +131,23 @@ void CSVSplitter::init(unsigned _maxColumns, ICsvParameters * csvInfo, const cha
     {
         for (idx=0;;idx++)
         {
-            const char * text = csvInfo->queryTerminator(idx);
+            OwnedRoxieString text(csvInfo->getTerminator(idx));
             if (!text)
                 break;
             addTerminator(text);
         }
     }
 
-    // Old workunits won't have queryEscape. MORE: deprecate on the next major version
-    if (flags & ICsvParameters::supportsEscape)
+    if (dfsEscapes && (flags & ICsvParameters::defaultEscape))
+        addActionList(matcher, dfsEscapes, ESCAPE);
+    else
     {
-        if (dfsEscapes && (flags & ICsvParameters::defaultEscape))
-            addActionList(matcher, dfsEscapes, ESCAPE);
-        else
+        for (idx=0;;idx++)
         {
-            for (idx=0;;idx++)
-            {
-                const char * text = csvInfo->queryEscape(idx);
-                if (!text)
-                    break;
-                addEscape(text);
-            }
+            OwnedRoxieString text(csvInfo->getEscape(idx));
+            if (!text)
+                break;
+            addEscape(text);
         }
     }
 
@@ -407,10 +405,11 @@ void CSVOutputStream::init(ICsvParameters * args, bool _oldOutputFormat)
 {
     if (args->queryEBCDIC())
         throw MakeStringException(99, "EBCDIC CSV output not yet implemented");
-    quote.set(args->queryQuote(0));
-    separator.set(args->querySeparator(0));
-    terminator.set(args->queryTerminator(0));
-    escape.set(args->queryEscape(0));
+    OwnedRoxieString rs;
+    quote.set(rs.setown(args->getQuote(0)));
+    separator.set(rs.setown(args->getSeparator(0)));
+    terminator.set(rs.setown(args->getTerminator(0)));
+    escape.set(rs.setown(args->getEscape(0)));
     oldOutputFormat = _oldOutputFormat||!quote.length();
 }
 

+ 11 - 7
common/thorhelper/thorpipe.cpp

@@ -23,6 +23,9 @@
 #include "csvsplitter.hpp"
 #include "rtlread_imp.hpp"
 #include "rtlds_imp.hpp"
+#include "roxiemem.hpp"
+
+using roxiemem::OwnedRoxieString;
 
 //=====================================================================================================
 
@@ -322,11 +325,12 @@ public:
         if (flags & TPFwritexmltopipe)
         {
             assertex(xmlWriterExtra);
-            const char * path = xmlWriterExtra->queryXmlIteratorPath();
-            if (!path)
+            OwnedRoxieString xmlpath(xmlWriterExtra->getXmlIteratorPath());
+            if (!xmlpath)
                 rowTag.append("Row");
             else
             {
+                const char *path = xmlpath;
                 if (*path == '/') 
                     path++;
                 if (strchr(path, '/')) 
@@ -334,16 +338,16 @@ public:
                 rowTag.append(path);
             }
 
-            //queryHeader/footer can return a tag name, or NULL (indicates to use the default tag), or "" (do not use header/footer)
+            //getHeader/footer can return a tag name, or NULL (indicates to use the default tag), or "" (do not use header/footer)
             if (!(flags & TPFwritenoroot))
             {
-                const char * hdr = xmlWriterExtra->queryHeader();
+                OwnedRoxieString hdr(xmlWriterExtra->getHeader());
                 if (hdr == NULL)
                     header.append("<Dataset>\n");
                 else
                     header.append(hdr);
 
-                const char * ftr = xmlWriterExtra->queryFooter();
+                OwnedRoxieString ftr(xmlWriterExtra->getFooter());
                 if (ftr == NULL) 
                     footer.append("</Dataset>\n");
                 else
@@ -355,7 +359,7 @@ public:
             assertex(csvWriterExtra);
             ICsvParameters * csv = csvWriterExtra->queryCsvParameters(); 
             csvWriter.init(csv, false);
-            const char * hdr = csv->queryHeader();
+            OwnedRoxieString hdr(csv->getHeader());
             if (hdr) 
             {
                 csvWriter.beginLine();
@@ -363,7 +367,7 @@ public:
                 header.append(csvWriter.str());
             }
 
-            const char * ftr = csv->queryFooter();
+            OwnedRoxieString ftr(csv->getFooter());
             if (ftr) 
             {
                 csvWriter.beginLine();

+ 18 - 13
common/thorhelper/thorsoapcall.cpp

@@ -21,13 +21,14 @@
 
 #include "thorxmlread.hpp"
 #include "thorxmlwrite.hpp"
-
 #include "thorcommon.ipp"
 #include "thorsoapcall.hpp"
 
 #include "securesocket.hpp"
-
 #include "eclrtl.hpp"
+#include "roxiemem.hpp"
+
+using roxiemem::OwnedRoxieString;
 
 #ifndef _WIN32
 #include <stdexcept>
@@ -717,6 +718,7 @@ public:
         callHelper = rowProvider->queryCallHelper();  //MORE: This should not be done this way!! Should use extra as below.
         helperExtra = static_cast<IHThorSoapCallExtra*>(helper->selectInterface(TAIsoapcallextra_1));
         flags = helper->getFlags();
+        OwnedRoxieString s;
 
         authToken.append(_authToken);
 
@@ -746,20 +748,20 @@ public:
 
         if (wscType == STsoap)
         {
-            soapaction.set(helper->querySoapAction());
+            soapaction.set(s.setown(helper->getSoapAction()));
             if(soapaction.get() && !isValidHttpValue(soapaction.get()))
                 throw MakeStringException(-1, "SOAPAction value contained illegal characters: %s", soapaction.get());
 
-            httpHeaderName.set(helper->queryHttpHeaderName());
+            httpHeaderName.set(s.setown(helper->getHttpHeaderName()));
             if(httpHeaderName.get() && !isValidHttpValue(httpHeaderName.get()))
                 throw MakeStringException(-1, "HTTPHEADER name contained illegal characters: %s", httpHeaderName.get());
 
-            httpHeaderValue.set(helper->queryHttpHeaderValue());
+            httpHeaderValue.set(s.setown(helper->getHttpHeaderValue()));
             if(httpHeaderValue.get() && !isValidHttpValue(httpHeaderValue.get()))
                 throw MakeStringException(-1, "HTTPHEADER value contained illegal characters: %s", httpHeaderValue.get());
 
             StringAttr proxyAddress;
-            proxyAddress.set(helper->queryProxyAddress());
+            proxyAddress.set(s.setown(helper->getProxyAddress()));
             if (!proxyAddress.isEmpty())
             {
                 UrlListParser proxyUrlListParser(proxyAddress);
@@ -770,11 +772,11 @@ public:
             if ((flags & SOAPFliteral) && (flags & SOAPFencoding))
                 throw MakeStringException(0, "SOAPCALL 'LITERAL' and 'ENCODING' options are mutually exclusive");
 
-            header.set(helper->queryHeader());
-            footer.set(helper->queryFooter());
+            header.set(s.setown(helper->getHeader()));
+            footer.set(s.setown(helper->getFooter()));
             if(flags & SOAPFnamespace)
             {
-                char const * ns = helper->queryNamespaceName();
+                OwnedRoxieString ns = helper->getNamespaceName();
                 if(ns && *ns)
                     xmlnamespace.set(ns);
             }
@@ -789,13 +791,14 @@ public:
 
         if (callHelper)
         {
-            char const * ipath = callHelper->queryInputIteratorPath();
+            OwnedRoxieString iteratorPath(callHelper->getInputIteratorPath());
+            char const * ipath = iteratorPath;
             if(ipath && (*ipath == '/'))
                 ++ipath;
             inputpath.set(ipath);
         }
         
-        service.set(helper->queryService());
+        service.set(s.setown(helper->getService()));
         service.trim();
 
         if (wscType == SThttp)
@@ -803,7 +806,8 @@ public:
             service.toUpperCase();  //GET/PUT/POST
             if (strcmp(service.str(), "GET"))
                 throw MakeStringException(0, "HTTPCALL Only 'GET' service supported");
-            acceptType.set(helper->queryAcceptType());// text/html, text/xml, etc
+            OwnedRoxieString acceptTypeSupplied(helper->getAcceptType()); // text/html, text/xml, etc
+            acceptType.set(acceptTypeSupplied);
             acceptType.trim();
             acceptType.toLowerCase();
         }
@@ -817,7 +821,8 @@ public:
             rowTransformer = NULL;
         }
 
-        UrlListParser urlListParser(helper->queryHosts());
+        OwnedRoxieString hosts(helper->getHosts());
+        UrlListParser urlListParser(hosts);
         if ((numUrls = urlListParser.getUrls(urlArray)) > 0)
         {
             if (wscMode == SCrow)

+ 40 - 43
ecl/hqlcpp/hqlhtcpp.cpp

@@ -9300,12 +9300,12 @@ void HqlCppTranslator::buildCsvParameters(BuildCtx & subctx, IHqlExpression * cs
         {
             if (header->queryType()->isInteger())
             {
-                classctx.addQuoted("virtual const char * queryHeader() { return NULL; }");
+                classctx.addQuoted("virtual const char * getHeader() { return NULL; }");
                 doBuildUnsignedFunction(classctx, "queryHeaderLen", header);
             }
             else
             {
-                doBuildVarStringFunction(classctx, "queryHeader", header);
+                doBuildVarStringFunction(classctx, "getHeader", header);
                 classctx.addQuoted("virtual unsigned queryHeaderLen() { return 1; }");
             }
         }
@@ -9320,7 +9320,7 @@ void HqlCppTranslator::buildCsvParameters(BuildCtx & subctx, IHqlExpression * cs
                 expandDefaultString(names, terminator, "\n");
             }
             OwnedHqlExpr namesExpr = createConstant(names.str());
-            doBuildVarStringFunction(classctx, "queryHeader", namesExpr);
+            doBuildVarStringFunction(classctx, "getHeader", namesExpr);
             classctx.addQuoted("virtual unsigned queryHeaderLen() { return 1; }");
         }
 
@@ -9332,7 +9332,7 @@ void HqlCppTranslator::buildCsvParameters(BuildCtx & subctx, IHqlExpression * cs
         else
         {
             if (queryRealChild(headerAttr, 1))
-                doBuildVarStringFunction(classctx, "queryFooter", headerAttr->queryChild(1));
+                doBuildVarStringFunction(classctx, "getFooter", headerAttr->queryChild(1));
             if (headerAttr->hasProperty(singleAtom))
                 singleHeader = true;
             else
@@ -9341,22 +9341,19 @@ void HqlCppTranslator::buildCsvParameters(BuildCtx & subctx, IHqlExpression * cs
     }
     else
     {
-        classctx.addQuoted("virtual const char * queryHeader() { return NULL; }");
+        classctx.addQuoted("virtual const char * getHeader() { return NULL; }");
         classctx.addQuoted("virtual unsigned queryHeaderLen() { return 0; }");
     }
 
 
     doBuildSizetFunction(classctx, "queryMaxSize", getCsvMaxLength(csvAttr));
 
-    buildCsvListFunc(classctx, "queryQuote", queryProperty(quoteAtom, attrs), isReading ? "'" : NULL);
-    buildCsvListFunc(classctx, "querySeparator", separator, ",");
-    buildCsvListFunc(classctx, "queryTerminator", terminator, isReading ? "\r\n|\n" : "\n");
-    buildCsvListFunc(classctx, "queryEscape", escape, NULL);
+    buildCsvListFunc(classctx, "getQuote", queryProperty(quoteAtom, attrs), isReading ? "'" : NULL);
+    buildCsvListFunc(classctx, "getSeparator", separator, ",");
+    buildCsvListFunc(classctx, "getTerminator", terminator, isReading ? "\r\n|\n" : "\n");
+    buildCsvListFunc(classctx, "getEscape", escape, NULL);
 
     StringBuffer flags;
-    // Backward compatible option hasEscape should be deprecated in next major version
-    flags.append("|supportsEscape");
-    // Proper flags
     if (!queryProperty(quoteAtom, attrs))       flags.append("|defaultQuote");
     if (!queryProperty(separatorAtom, attrs))   flags.append("|defaultSeparate");
     if (!queryProperty(terminatorAtom, attrs))  flags.append("|defaultTerminate");
@@ -10086,12 +10083,12 @@ void HqlCppTranslator::buildXmlWriteMembers(ActivityInstance * instance, IHqlExp
 
     IHqlExpression * rowAttr = xmlAttr->queryProperty(rowAtom);
     if (rowAttr)
-        doBuildVarStringFunction(instance->startctx, "queryXmlIteratorPath", rowAttr->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getXmlIteratorPath", rowAttr->queryChild(0));
     IHqlExpression * headerAttr = xmlAttr->queryProperty(headingAtom);
     if (headerAttr)
     {
-        doBuildVarStringFunction(instance->startctx, "queryHeader", headerAttr->queryChild(0));
-        doBuildVarStringFunction(instance->startctx, "queryFooter", headerAttr->queryChild(1));
+        doBuildVarStringFunction(instance->startctx, "getHeader", headerAttr->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getFooter", headerAttr->queryChild(1));
     }
     StringBuffer xmlFlags;
     if (xmlAttr->hasProperty(trimAtom))
@@ -11095,7 +11092,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityPipeThrough(BuildCtx & ctx, IH
     else if (xmlFromPipe)
     {
         doBuildXmlReadMember(*instance, expr, "queryXmlTransformer", usesContents);
-        doBuildVarStringFunction(instance->classctx, "queryXmlIteratorPath", queryPropertyChild(xmlFromPipe, rowAtom, 0));
+        doBuildVarStringFunction(instance->classctx, "getXmlIteratorPath", queryPropertyChild(xmlFromPipe, rowAtom, 0));
     }
 
     StringBuffer flags;
@@ -16152,7 +16149,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityXmlParse(BuildCtx & ctx, IHqlE
     //MORE: What encoding is the search text in???
 
     doBuildParseSearchText(instance->startctx, dataset, expr->queryChild(1), type_utf8, unknownStringType);
-    doBuildVarStringFunction(instance->classctx, "queryXmlIteratorPath", xmlAttr ? queryRealChild(xmlAttr, 0) : NULL);
+    doBuildVarStringFunction(instance->classctx, "getXmlIteratorPath", xmlAttr ? queryRealChild(xmlAttr, 0) : NULL);
 
     BuildCtx funcctx(instance->startctx);
     funcctx.addQuotedCompound("virtual size32_t transform(ARowBuilder & crSelf, const void * _left, IColumnProvider * parsed)");
@@ -16661,11 +16658,11 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
     validateExprScope(instance->startctx, dataset, hosts, opText, "host url");
     validateExprScope(instance->startctx, dataset, service, opText, "service");
 
-    //virtual const char * queryHosts() = 0;
-    doBuildVarStringFunction(instance->startctx, "queryHosts", hosts);
+    //virtual const char * getHosts() = 0;
+    doBuildVarStringFunction(instance->startctx, "getHosts", hosts);
 
-    //virtual const char * queryService() = 0;
-    doBuildVarStringFunction(instance->startctx, "queryService", service);
+    //virtual const char * getService() = 0;
+    doBuildVarStringFunction(instance->startctx, "getService", service);
 
     //virtual void toXML(const byte * self, StringBuffer & out) = 0;
     buildSOAPtoXml(instance->startctx, dataset, expr->queryChild(firstArg+3), selSeq);
@@ -16675,30 +16672,30 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
     if (separator)
         doBuildVarStringFunction(instance->startctx, "queryOutputIteratorPath", separator->queryChild(0));
 
-    //virtual const char * queryHeader()
-    //virtual const char * queryFooter()
+    //virtual const char * getHeader()
+    //virtual const char * getFooter()
     IHqlExpression * header = expr->queryProperty(headingAtom);
     if (header)
     {
-        doBuildVarStringFunction(instance->startctx, "queryHeader", header->queryChild(0));
-        doBuildVarStringFunction(instance->startctx, "queryFooter", header->queryChild(1));
+        doBuildVarStringFunction(instance->startctx, "getHeader", header->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getFooter", header->queryChild(1));
     }
 
     IHqlExpression * action = expr->queryProperty(soapActionAtom);
     if (action)
-        doBuildVarStringFunction(instance->startctx, "querySoapAction", action->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getSoapAction", action->queryChild(0));
 
     IHqlExpression * httpHeader = expr->queryProperty(httpHeaderAtom);
     if (httpHeader)
     {
-        doBuildVarStringFunction(instance->startctx, "queryHttpHeaderName", httpHeader->queryChild(0));
-        doBuildVarStringFunction(instance->startctx, "queryHttpHeaderValue", httpHeader->queryChild(1));
+        doBuildVarStringFunction(instance->startctx, "getHttpHeaderName", httpHeader->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getHttpHeaderValue", httpHeader->queryChild(1));
     }
 
     IHqlExpression * proxyAddress = expr->queryProperty(proxyAddressAtom);
     if (proxyAddress)
     {
-        doBuildVarStringFunction(instance->startctx, "queryProxyAddress", proxyAddress->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getProxyAddress", proxyAddress->queryChild(0));
     }
 
     IHqlExpression * namespaceAttr = expr->queryProperty(namespaceAtom);
@@ -16766,9 +16763,9 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
 
     if (namespaceAttr)
     {
-        doBuildVarStringFunction(instance->startctx, "queryNamespaceName", namespaceAttr->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getNamespaceName", namespaceAttr->queryChild(0));
         if (namespaceAttr->queryChild(1))
-            doBuildVarStringFunction(instance->startctx, "queryNamespaceVar", namespaceAttr->queryChild(1));
+            doBuildVarStringFunction(instance->startctx, "getNamespaceVar", namespaceAttr->queryChild(1));
     }
 
     if (logText)
@@ -16791,10 +16788,10 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
         if (usesContents)
             throwError(HQLERR_ContentsInSoapCall);
 
-        //virtual const char * queryInputIteratorPath()
+        //virtual const char * getInputIteratorPath()
         IHqlExpression * xpath = expr->queryProperty(xpathAtom);
         if (xpath)
-            doBuildVarStringFunction(instance->classctx, "queryInputIteratorPath", xpath->queryChild(0));
+            doBuildVarStringFunction(instance->classctx, "getInputIteratorPath", xpath->queryChild(0));
 
         IHqlExpression * onFail = expr->queryProperty(onFailAtom);
         if (onFail)
@@ -16840,14 +16837,14 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
 
     buildInstancePrefix(instance);
 
-    //virtual const char * queryHosts() = 0;
-    doBuildVarStringFunction(instance->startctx, "queryHosts", expr->queryChild(firstArg));
+    //virtual const char * getHosts() = 0;
+    doBuildVarStringFunction(instance->startctx, "getHosts", expr->queryChild(firstArg));
 
-    //virtual const char * queryService() = 0;
-    doBuildVarStringFunction(instance->startctx, "queryService", expr->queryChild(firstArg+1));
+    //virtual const char * getService() = 0;
+    doBuildVarStringFunction(instance->startctx, "getService", expr->queryChild(firstArg+1));
 
-    //virtual const char * queryAcceptType() = 0;
-    doBuildVarStringFunction(instance->startctx, "queryAcceptType", expr->queryChild(firstArg+2));
+    //virtual const char * getAcceptType() = 0;
+    doBuildVarStringFunction(instance->startctx, "getAcceptType", expr->queryChild(firstArg+2));
 
     //virtual void toXML(const byte * self, StringBuffer & out) = 0;
     buildHTTPtoXml(instance->startctx);
@@ -16917,9 +16914,9 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
 
     if (namespaceAttr)
     {
-        doBuildVarStringFunction(instance->startctx, "queryNamespaceName", namespaceAttr->queryChild(0));
+        doBuildVarStringFunction(instance->startctx, "getNamespaceName", namespaceAttr->queryChild(0));
         if (namespaceAttr->queryChild(1))
-            doBuildVarStringFunction(instance->startctx, "queryNamespaceVar", namespaceAttr->queryChild(1));
+            doBuildVarStringFunction(instance->startctx, "getNamespaceVar", namespaceAttr->queryChild(1));
     }
 
     if (logText)
@@ -16937,10 +16934,10 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
         if (usesContents)
             throwError(HQLERR_ContentsInSoapCall);
 
-        //virtual const char * queryInputIteratorPath()
+        //virtual const char * getInputIteratorPath()
         IHqlExpression * xpath = expr->queryProperty(xpathAtom);
         if (xpath)
-            doBuildVarStringFunction(instance->classctx, "queryInputIteratorPath", xpath->queryChild(0));
+            doBuildVarStringFunction(instance->classctx, "getInputIteratorPath", xpath->queryChild(0));
 
         IHqlExpression * onFail = expr->queryProperty(onFailAtom);
         if (onFail)

+ 4 - 4
ecl/hqlcpp/hqlsource.cpp

@@ -2776,7 +2776,7 @@ void DiskReadBuilder::buildMembers(IHqlExpression * expr)
         else if (xmlFromPipe)
         {
             translator.doBuildXmlReadMember(*instance, expr, "queryXmlTransformer", usesContents);
-            translator.doBuildVarStringFunction(instance->classctx, "queryXmlIteratorPath", queryPropertyChild(xmlFromPipe, rowAtom, 0));
+            translator.doBuildVarStringFunction(instance->classctx, "getXmlIteratorPath", queryPropertyChild(xmlFromPipe, rowAtom, 0));
         }
         
         StringBuffer flags;
@@ -6984,7 +6984,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityXmlRead(BuildCtx & ctx, IHqlEx
     bool usesContents = false;
     doBuildXmlReadMember(*instance, tableExpr, "queryTransformer", usesContents);
 
-    doBuildVarStringFunction(instance->classctx, "queryXmlIteratorPath", queryRealChild(mode, 0));
+    doBuildVarStringFunction(instance->classctx, "getXmlIteratorPath", queryRealChild(mode, 0));
 
     buildMetaMember(instance->classctx, tableExpr, false, "queryDiskRecordSize");  // A lie, but I don't care....
 
@@ -7106,8 +7106,8 @@ void FetchBuilder::buildMembers(IHqlExpression * expr)
     case no_xml:
         {
             //MORE: MaxLength?
-            // virtual const char * queryXmlIteratorPath()
-            translator.doBuildVarStringFunction(instance->classctx, "queryXmlIteratorPath", queryRealChild(tableExpr->queryChild(2), 0));
+            // virtual const char * getXmlIteratorPath()
+            translator.doBuildVarStringFunction(instance->classctx, "getXmlIteratorPath", queryRealChild(tableExpr->queryChild(2), 0));
             break;
         }
     default:

+ 25 - 15
ecl/hthor/hthor.cpp

@@ -807,7 +807,7 @@ CHThorCsvWriteActivity::CHThorCsvWriteActivity(IAgentContext &_agent, unsigned _
 
 void CHThorCsvWriteActivity::execute()
 {
-    const char * header = helper.queryCsvParameters()->queryHeader();
+    OwnedRoxieString header(helper.queryCsvParameters()->getHeader());
     if (header) {
         csvOutput.beginLine();
         csvOutput.writeHeaderLn(strlen(header), header);
@@ -840,7 +840,7 @@ void CHThorCsvWriteActivity::execute()
         numRecords++;
     }
 
-    const char * footer = helper.queryCsvParameters()->queryFooter();
+    OwnedRoxieString footer(helper.queryCsvParameters()->getFooter());
     if (footer) {
         csvOutput.beginLine();
         csvOutput.writeHeaderLn(strlen(footer), footer);
@@ -852,9 +852,10 @@ void CHThorCsvWriteActivity::setFormat(IFileDescriptor * desc)
 {
     // MORE - should call parent's setFormat too?
     ICsvParameters * csvInfo = helper.queryCsvParameters();
+    OwnedRoxieString rs(csvInfo->getSeparator(0));
     StringBuffer separator;
-    const char *s = csvInfo->querySeparator(0);
-    while (*s)
+    const char *s = rs;
+    while (s && *s)
     {
         if (',' == *s)
             separator.append("\\,");
@@ -863,9 +864,9 @@ void CHThorCsvWriteActivity::setFormat(IFileDescriptor * desc)
         ++s;
     }
     desc->queryProperties().setProp("@csvSeparate", separator.str());
-    desc->queryProperties().setProp("@csvQuote", csvInfo->queryQuote(0));
-    desc->queryProperties().setProp("@csvTerminate", csvInfo->queryTerminator(0));
-    desc->queryProperties().setProp("@csvEscape", csvInfo->queryEscape(0));
+    desc->queryProperties().setProp("@csvQuote", rs.setown(csvInfo->getQuote(0)));
+    desc->queryProperties().setProp("@csvTerminate", rs.setown(csvInfo->getTerminator(0)));
+    desc->queryProperties().setProp("@csvEscape", rs.setown(csvInfo->getEscape(0)));
     desc->queryProperties().setProp("@format","utf8n");
 }
 
@@ -873,11 +874,12 @@ void CHThorCsvWriteActivity::setFormat(IFileDescriptor * desc)
 
 CHThorXmlWriteActivity::CHThorXmlWriteActivity(IAgentContext &_agent, unsigned _activityId, unsigned _subgraphId, IHThorXmlWriteArg &_arg, ThorActivityKind _kind) : CHThorDiskWriteActivity(_agent, _activityId, _subgraphId, _arg, _kind), helper(_arg)
 {
-    const char * path = helper.queryXmlIteratorPath();
-    if (!path)
+    OwnedRoxieString xmlpath(helper.getXmlIteratorPath());
+    if (!xmlpath)
         rowTag.append("Row");
     else
     {
+        const char *path = xmlpath;
         if (*path == '/') path++;
         if (strchr(path, '/')) UNIMPLEMENTED;               // more what do we do with /mydata/row
         rowTag.append(path);
@@ -888,7 +890,8 @@ void CHThorXmlWriteActivity::execute()
 {
     // Loop thru the results
     numRecords = 0;
-    const char * header = helper.queryHeader();
+    OwnedRoxieString suppliedHeader(helper.getHeader());
+    const char *header = suppliedHeader;
     if (!header) header = "<Dataset>\n";
     diskout->write(strlen(header), header);
 
@@ -917,7 +920,8 @@ void CHThorXmlWriteActivity::execute()
         diskout->write(xmlOutput.length(), xmlOutput.str());
         numRecords++;
     }
-    const char * footer = helper.queryFooter();
+    OwnedRoxieString suppliedFooter(helper.getFooter());
+    const char *footer = suppliedFooter;
     if (!footer) footer = "</Dataset>\n";
     diskout->write(strlen(footer), footer);
 }
@@ -1275,7 +1279,8 @@ public:
         groupSignalled = true; // i.e. don't start with a NULL row
         CHThorSimpleActivityBase::ready();
         rowDeserializer.setown(rowAllocator->createDiskDeserializer(agent.queryCodeContext()));
-        readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), helper.queryXmlIteratorPath(), helper.getPipeFlags()));
+        OwnedRoxieString xmlIteratorPath(helper.getXmlIteratorPath());
+        readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), xmlIteratorPath, helper.getPipeFlags()));
         OwnedRoxieString pipeProgram(helper.getPipeProgram());
         openPipe(pipeProgram);
     }
@@ -1458,7 +1463,10 @@ public:
         writeTransformer->ready();
 
         if (!readTransformer)
-            readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), helper.queryXmlIteratorPath(), helper.getPipeFlags()));
+        {
+            OwnedRoxieString xmlIterator(helper.getXmlIteratorPath());
+            readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), xmlIterator, helper.getPipeFlags()));
+        }
         if(!recreate)
         {
             OwnedRoxieString pipeProgram(helper.getPipeProgram());
@@ -7071,7 +7079,8 @@ const void * CHThorXmlParseActivity::nextInGroup()
         }
         size32_t srchLen;
         helper.getSearchText(srchLen, srchStr, in);
-        xmlParser.setown(createXMLParse(srchStr, srchLen, helper.queryXmlIteratorPath(), *this, xr_noRoot, helper.requiresContents()));
+        OwnedRoxieString xmlIteratorPath(helper.getXmlIteratorPath());
+        xmlParser.setown(createXMLParse(srchStr, srchLen, xmlIteratorPath, *this, xr_noRoot, helper.requiresContents()));
     }
 }
 
@@ -8880,7 +8889,8 @@ bool CHThorXmlReadActivity::openNext()
         else
             inputfileiostream.setown(createIOStream(inputfileio));
 
-        xmlParser.setown(createXMLParse(*inputfileiostream, helper.queryXmlIteratorPath(), *this, (0 != (TDRxmlnoroot & helper.getFlags()))?xr_noRoot:xr_none, (helper.getFlags() & TDRusexmlcontents) != 0));
+        OwnedRoxieString xmlIterator(helper.getXmlIteratorPath());
+        xmlParser.setown(createXMLParse(*inputfileiostream, xmlIterator, *this, (0 != (TDRxmlnoroot & helper.getFlags()))?xr_noRoot:xr_none, (helper.getFlags() & TDRusexmlcontents) != 0));
         return true;
     }
     return false;

+ 2 - 1
roxie/ccd/ccdactivities.cpp

@@ -1616,7 +1616,8 @@ public:
         unsigned totalSizeSent = 0;
 #endif
         Linked<IXmlToRowTransformer> rowTransformer = helper->queryTransformer();
-        Owned<IXMLParse> xmlParser = createXMLParse(*reader->querySimpleStream(), helper->queryXmlIteratorPath(), *this, (0 != (TDRxmlnoroot & helper->getFlags()))?xr_noRoot:xr_none, (helper->getFlags() & TDRusexmlcontents) != 0);
+        OwnedRoxieString xmlIterator(helper->getXmlIteratorPath());
+        Owned<IXMLParse> xmlParser = createXMLParse(*reader->querySimpleStream(), xmlIterator, *this, (0 != (TDRxmlnoroot & helper->getFlags()))?xr_noRoot:xr_none, (helper->getFlags() & TDRusexmlcontents) != 0);
         while (!aborted)
         {
             //call to next() will callback on the IXmlSelect interface

+ 27 - 15
roxie/ccd/ccdserver.cpp

@@ -8724,7 +8724,10 @@ public:
         groupSignalled = true; // i.e. don't start with a NULL row
         CRoxieServerActivity::start(parentExtractSize, parentExtract, paused);
         if (!readTransformer)
-            readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), helper.queryXmlIteratorPath(), helper.getPipeFlags()));
+        {
+            OwnedRoxieString xmlIteratorPath(helper.getXmlIteratorPath());
+            readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), xmlIteratorPath, helper.getPipeFlags()));
+        }
         OwnedRoxieString pipeProgram(helper.getPipeProgram());
         openPipe(pipeProgram);
     }
@@ -8843,7 +8846,10 @@ public:
         writeTransformer->ready();
         CRoxieServerActivity::start(parentExtractSize, parentExtract, paused);
         if (!readTransformer)
-            readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), helper.queryXmlIteratorPath(), helper.getPipeFlags()));
+        {
+            OwnedRoxieString xmlIterator(helper.getXmlIteratorPath());
+            readTransformer.setown(createReadRowStream(rowAllocator, rowDeserializer, helper.queryXmlTransformer(), helper.queryCsvTransformer(), xmlIterator, helper.getPipeFlags()));
+        }
         if(!recreate)
         {
             OwnedRoxieString pipeProgram(helper.getPipeProgram());
@@ -10889,7 +10895,7 @@ public:
 
     virtual void onExecute() 
     {
-        const char * header = csvHelper.queryCsvParameters()->queryHeader();
+        OwnedRoxieString header(csvHelper.queryCsvParameters()->getHeader());
         if (header) 
         {
             csvOutput.beginLine();
@@ -10912,7 +10918,7 @@ public:
             diskout->write(csvOutput.length(), csvOutput.str());
             ReleaseRoxieRow(nextrec);
         }
-        const char * footer = csvHelper.queryCsvParameters()->queryFooter();
+        OwnedRoxieString footer(csvHelper.queryCsvParameters()->getFooter());
         if (footer) 
         {
             csvOutput.beginLine();
@@ -10929,8 +10935,9 @@ public:
 
         ICsvParameters *csvParameters = csvHelper.queryCsvParameters();
         StringBuffer separator;
-        const char *s = csvParameters->querySeparator(0);
-        while (*s)
+        OwnedRoxieString rs(csvParameters->getSeparator(0));
+        const char *s = rs;
+        while (s &&  *s)
         {
             if (',' == *s)
                 separator.append("\\,");
@@ -10939,9 +10946,9 @@ public:
             ++s;
         }
         props.setProp("@csvSeparate", separator.str());
-        props.setProp("@csvQuote", csvParameters->queryQuote(0));
-        props.setProp("@csvTerminate", csvParameters->queryTerminator(0));
-        props.setProp("@csvEscape", csvParameters->queryEscape(0));
+        props.setProp("@csvQuote", rs.setown(csvParameters->getQuote(0)));
+        props.setProp("@csvTerminate", rs.setown(csvParameters->getTerminator(0)));
+        props.setProp("@csvEscape", rs.setown(csvParameters->getEscape(0)));
     }
 
     virtual bool isOutputTransformed() const { return true; }
@@ -10962,11 +10969,12 @@ public:
     virtual void start(unsigned parentExtractSize, const byte *parentExtract, bool paused)
     {
         CRoxieServerDiskWriteActivity::start(parentExtractSize, parentExtract, paused);
-        const char * path = xmlHelper.queryXmlIteratorPath();
-        if (!path)
+        OwnedRoxieString xmlpath(xmlHelper.getXmlIteratorPath());
+        if (!xmlpath)
             rowTag.set("Row");
         else
         {
+            const char *path = xmlpath;
             if (*path == '/') path++;
             if (strchr(path, '/')) UNIMPLEMENTED;               // more what do we do with /mydata/row
             rowTag.set(path);
@@ -10975,7 +10983,8 @@ public:
 
     virtual void onExecute() 
     {
-        const char * header = xmlHelper.queryHeader();
+        OwnedRoxieString suppliedHeader(xmlHelper.getHeader());
+        const char *header = suppliedHeader;
         if (!header) header = "<Dataset>\n";
         diskout->write(strlen(header), header);
         CommonXmlWriter xmlOutput(xmlHelper.getXmlFlags());
@@ -10994,7 +11003,8 @@ public:
             xmlOutput.outputEndNested(rowTag);
             diskout->write(xmlOutput.length(), xmlOutput.str());
         }
-        const char * footer = xmlHelper.queryFooter();
+        OwnedRoxieString suppliedFooter(xmlHelper.getFooter());
+        const char * footer = suppliedFooter;
         if (!footer) footer = "</Dataset>\n";
         diskout->write(strlen(footer), footer);
     }
@@ -19609,7 +19619,8 @@ public:
             }
             size32_t srchLen;
             helper.getSearchText(srchLen, srchStr, in);
-            xmlParser.setown(createXMLParse(srchStr, srchLen, helper.queryXmlIteratorPath(), *this));
+            OwnedRoxieString xmlIteratorPath(helper.getXmlIteratorPath());
+            xmlParser.setown(createXMLParse(srchStr, srchLen, xmlIteratorPath, *this));
         }   
     }
 
@@ -20053,7 +20064,8 @@ public:
         {
             rowTransformer.set(readHelper->queryTransformer());
             assertex(reader != NULL);
-            xmlParser.setown(createXMLParse(*reader->querySimpleStream(), readHelper->queryXmlIteratorPath(), *this, (0 != (TDRxmlnoroot & readHelper->getFlags()))?xr_noRoot:xr_none, (readHelper->getFlags() & TDRusexmlcontents) != 0));
+            OwnedRoxieString xmlIterator(readHelper->getXmlIteratorPath());
+            xmlParser.setown(createXMLParse(*reader->querySimpleStream(), xmlIterator, *this, (0 != (TDRxmlnoroot & readHelper->getFlags()))?xr_noRoot:xr_none, (readHelper->getFlags() & TDRusexmlcontents) != 0));
         }
     }
 

+ 25 - 29
rtl/include/eclhelper.hpp

@@ -1936,18 +1936,17 @@ struct ICsvParameters
         preserveWhitespace =  0x0020,
         manyHeaderFooter =    0x0040,
         defaultEscape =       0x0080,
-        supportsEscape =      0x0100, // MORE: deprecate on next major version
     }; // flags values
     virtual unsigned     getFlags() = 0;
     virtual bool         queryEBCDIC() = 0;
-    virtual const char * queryHeader()              { return NULL; }
+    virtual const char * getHeader()              { return NULL; }
     virtual unsigned     queryHeaderLen() = 0;
     virtual size32_t     queryMaxSize() = 0;
-    virtual const char * queryQuote(unsigned idx) = 0;
-    virtual const char * querySeparator(unsigned idx) = 0;
-    virtual const char * queryTerminator(unsigned idx) = 0;
-    virtual const char * queryEscape(unsigned idx) = 0;
-    virtual const char * queryFooter()              { return NULL; }
+    virtual const char * getQuote(unsigned idx) = 0;
+    virtual const char * getSeparator(unsigned idx) = 0;
+    virtual const char * getTerminator(unsigned idx) = 0;
+    virtual const char * getEscape(unsigned idx) = 0;
+    virtual const char * getFooter()              { return NULL; }
 };
 
 struct ITypedOutputStream
@@ -1991,7 +1990,7 @@ struct IHThorCsvFetchArg : public IHThorFetchBaseArg, public IHThorFetchContext,
 struct IHThorXmlParseArg : public IHThorArg
 {
     virtual size32_t transform(ARowBuilder & rowBuilder, const void * left, IColumnProvider * parsed) = 0;
-    virtual const char * queryXmlIteratorPath() = 0;
+    virtual const char * getXmlIteratorPath() = 0;
     virtual void getSearchText(size32_t & retLen, char * & retText, const void * _self) = 0;
     virtual bool searchTextNeedsFree() = 0;
     virtual bool requiresContents() { return false; }
@@ -2000,7 +1999,6 @@ struct IHThorXmlParseArg : public IHThorArg
 struct IHThorXmlFetchExtra : public IInterface
 {
     virtual size32_t transform(ARowBuilder & rowBuilder, IColumnProvider * rowLeft, const void * right, unsigned __int64 _fpos) = 0;
-    virtual const char * queryXmlIteratorPath() = 0;               // required so that xpaths to extract data are correct
     virtual bool requiresContents() { return false; }
 };
 
@@ -2013,9 +2011,9 @@ struct IHThorXmlFetchArg : public IHThorFetchBaseArg, public IHThorFetchContext,
 struct IHThorXmlWriteExtra : public IInterface
 {
     virtual void toXML(const byte * self, IXmlWriter & out) = 0;
-    virtual const char * queryXmlIteratorPath()           { return NULL; }             // supplies the prefix and suffix for a row
-    virtual const char * queryHeader()                 { return NULL; }
-    virtual const char * queryFooter()                 { return NULL; }
+    virtual const char * getXmlIteratorPath()         { return NULL; }             // supplies the prefix and suffix for a row
+    virtual const char * getHeader()                   { return NULL; }
+    virtual const char * getFooter()                   { return NULL; }
     virtual unsigned getXmlFlags()                     { return 0; }
 };
 
@@ -2050,7 +2048,7 @@ struct IHThorPipeReadArg : public IHThorArg
     virtual unsigned getPipeFlags() = 0;
     virtual ICsvToRowTransformer * queryCsvTransformer() = 0;
     virtual IXmlToRowTransformer * queryXmlTransformer() = 0;
-    virtual const char * queryXmlIteratorPath() = 0;
+    virtual const char * getXmlIteratorPath() = 0;
 };
 
 struct IHThorPipeWriteArg : public IHThorArg
@@ -2075,7 +2073,7 @@ struct IHThorPipeThroughArg : public IHThorArg
     virtual IHThorXmlWriteExtra * queryXmlOutput() = 0;
     virtual ICsvToRowTransformer * queryCsvTransformer() = 0;
     virtual IXmlToRowTransformer * queryXmlTransformer() = 0;
-    virtual const char * queryXmlIteratorPath() = 0;
+    virtual const char * getXmlIteratorPath() = 0;
 };
 
 
@@ -2097,28 +2095,26 @@ enum
 
 struct IHThorWebServiceCallActionArg : public IHThorArg
 {
-    virtual const char * queryHosts() = 0;
-    virtual const char * queryService() = 0;
+    virtual const char * getHosts() = 0;
+    virtual const char * getService() = 0;
 
 //writing to the soap service.
     virtual void toXML(const byte * self, IXmlWriter & out) = 0;
-    virtual const char * queryHeader()                  { return NULL; }
-    virtual const char * queryFooter()                  { return NULL; }
+    virtual const char * getHeader()                  { return NULL; }
+    virtual const char * getFooter()                  { return NULL; }
     virtual unsigned getFlags() = 0;
     virtual unsigned numParallelThreads()               { return 0; }
     virtual unsigned numRecordsPerBatch()               { return 0; }
-    virtual const char * queryUserName()                { return NULL; }
-    virtual const char * queryPassword()                { return NULL; }
     virtual int numRetries()                             { return -1; }
     virtual double getTimeout()                         { return (double)-1.0; }
     virtual double getTimeLimit()                       { return (double)0.0; }
-    virtual const char * querySoapAction()              { return NULL; }
-    virtual const char * queryNamespaceName()           { return NULL; }
-    virtual const char * queryNamespaceVar()            { return NULL; }
-    virtual const char * queryHttpHeaderName()          { return NULL; }
-    virtual const char * queryHttpHeaderValue()         { return NULL; }
-    virtual const char * queryProxyAddress()            { return NULL; }
-    virtual const char * queryAcceptType()              { return NULL; }
+    virtual const char * getSoapAction()              { return NULL; }
+    virtual const char * getNamespaceName()           { return NULL; }
+    virtual const char * getNamespaceVar()            { return NULL; }
+    virtual const char * getHttpHeaderName()          { return NULL; }
+    virtual const char * getHttpHeaderValue()         { return NULL; }
+    virtual const char * getProxyAddress()            { return NULL; }
+    virtual const char * getAcceptType()              { return NULL; }
 };
 typedef IHThorWebServiceCallActionArg IHThorSoapActionArg ;
 typedef IHThorWebServiceCallActionArg IHThorHttpActionArg ;
@@ -2127,7 +2123,7 @@ typedef IHThorWebServiceCallActionArg IHThorHttpActionArg ;
 struct IHThorWebServiceCallExtra : public IInterface
 {
     virtual IXmlToRowTransformer * queryInputTransformer() = 0;
-    virtual const char * queryInputIteratorPath()       { return NULL; }
+    virtual const char * getInputIteratorPath()       { return NULL; }
     virtual size32_t onFailTransform(ARowBuilder & rowBuilder, const void * left, IException * e) { return 0; }
     virtual void getLogText(size32_t & lenText, char * & text, const void * left) = 0;  // iff SOAPFlogusermsg set
 };
@@ -2442,7 +2438,7 @@ struct IHThorCsvReadArg: public IHThorDiskReadBaseArg
 struct IHThorXmlReadArg: public IHThorDiskReadBaseArg
 {
     virtual IXmlToRowTransformer * queryTransformer() = 0;
-    virtual const char * queryXmlIteratorPath() = 0;
+    virtual const char * getXmlIteratorPath() = 0;
     virtual unsigned __int64 getChooseNLimit() = 0;
     virtual unsigned __int64 getRowLimit() = 0;
     virtual void onLimitExceeded() = 0;

+ 25 - 29
rtl/include/eclhelper_base.hpp

@@ -480,7 +480,7 @@ public:
     virtual unsigned getPipeFlags()                         { return 0; }
     virtual ICsvToRowTransformer * queryCsvTransformer()    { return NULL; }
     virtual IXmlToRowTransformer * queryXmlTransformer()    { return NULL; }
-    virtual const char * queryXmlIteratorPath()             { return NULL; }
+    virtual const char * getXmlIteratorPath()             { return NULL; }
 };
 
 class CThorPipeWriteArg : public CThorArg, implements IHThorPipeWriteArg
@@ -534,7 +534,7 @@ public:
     virtual IHThorXmlWriteExtra * queryXmlOutput()          { return NULL; }
     virtual ICsvToRowTransformer * queryCsvTransformer()    { return NULL; }
     virtual IXmlToRowTransformer * queryXmlTransformer()    { return NULL; }
-    virtual const char * queryXmlIteratorPath()             { return NULL; }
+    virtual const char * getXmlIteratorPath()             { return NULL; }
 };
 
 
@@ -2371,8 +2371,8 @@ class CThorXmlWriteArg : public CThorArg, implements IHThorXmlWriteArg
         return NULL;
     }
 
-    virtual const char * queryXmlIteratorPath()        { return NULL; }             // supplies the prefix and suffix for a row
-    virtual const char * queryHeader()                 { return NULL; }
+    virtual const char * getXmlIteratorPath()        { return NULL; }             // supplies the prefix and suffix for a row
+    virtual const char * getHeader()                 { return NULL; }
     virtual const char * queryFooter()                 { return NULL; }
     virtual unsigned getXmlFlags()                     { return 0; }
 
@@ -2407,24 +2407,22 @@ class CThorSoapActionArg : public CThorArg, implements IHThorSoapActionArg
     }
 
     virtual void toXML(const byte * self, IXmlWriter & out) { return; }
-    virtual const char * queryHeader()                  { return NULL; }
-    virtual const char * queryFooter()                  { return NULL; }
+    virtual const char * getHeader()                  { return NULL; }
+    virtual const char * getFooter()                  { return NULL; }
     virtual unsigned getFlags()                         { return 0; }
     virtual unsigned numParallelThreads()               { return 0; }
     virtual unsigned numRecordsPerBatch()               { return 0; }
-    virtual const char * queryUserName()                { return NULL; }
-    virtual const char * queryPassword()                { return NULL; }
     virtual int numRetries()                            { return -1; }
     virtual double getTimeout()                          { return -1.0; }
     virtual double getTimeLimit()                        { return 0.0; }
-    virtual const char * querySoapAction()              { return NULL; }
-    virtual const char * queryNamespaceName()           { return NULL; }
-    virtual const char * queryNamespaceVar()            { return NULL; }
-
-    virtual const char * queryHttpHeaderName()          { return NULL; }
-    virtual const char * queryHttpHeaderValue()         { return NULL; }
-    virtual const char * queryProxyAddress()            { return NULL; }
-    virtual const char * queryAcceptType()              { return NULL; }
+    virtual const char * getSoapAction()              { return NULL; }
+    virtual const char * getNamespaceName()           { return NULL; }
+    virtual const char * getNamespaceVar()            { return NULL; }
+
+    virtual const char * getHttpHeaderName()          { return NULL; }
+    virtual const char * getHttpHeaderValue()         { return NULL; }
+    virtual const char * getProxyAddress()            { return NULL; }
+    virtual const char * getAcceptType()              { return NULL; }
     virtual void getLogText(size32_t & lenText, char * & text, const void * left) { lenText =0; text = NULL; }
 };
 
@@ -2449,28 +2447,26 @@ class CThorSoapCallArg : public CThorArg, implements IHThorSoapCallArg
     }
     
 //writing to the soap service.
-    virtual const char * queryInputIteratorPath()       { return NULL; }
+    virtual const char * getInputIteratorPath()       { return NULL; }
     virtual unsigned onFailTransform(ARowBuilder & rowBuilder, const void * left, IException * e) { return 0; }
 
     virtual void toXML(const byte * self, IXmlWriter & out) { return; }
-    virtual const char * queryHeader()                  { return NULL; }
-    virtual const char * queryFooter()                  { return NULL; }
+    virtual const char * getHeader()                  { return NULL; }
+    virtual const char * getFooter()                  { return NULL; }
     virtual unsigned getFlags()                         { return 0; }
     virtual unsigned numParallelThreads()               { return 0; }
     virtual unsigned numRecordsPerBatch()               { return 0; }
-    virtual const char * queryUserName()                { return NULL; }
-    virtual const char * queryPassword()                { return NULL; }
     virtual int numRetries()                            { return -1; }
     virtual double getTimeout()                          { return -1.0; }
     virtual double getTimeLimit()                        { return 0.0; }
-    virtual const char * querySoapAction()              { return NULL; }
-    virtual const char * queryNamespaceName()           { return NULL; }
-    virtual const char * queryNamespaceVar()            { return NULL; }
-
-    virtual const char * queryHttpHeaderName()          { return NULL; }
-    virtual const char * queryHttpHeaderValue()         { return NULL; }
-    virtual const char * queryProxyAddress()            { return NULL; }
-    virtual const char * queryAcceptType()              { return NULL; }
+    virtual const char * getSoapAction()              { return NULL; }
+    virtual const char * getNamespaceName()           { return NULL; }
+    virtual const char * getNamespaceVar()            { return NULL; }
+
+    virtual const char * getHttpHeaderName()          { return NULL; }
+    virtual const char * getHttpHeaderValue()         { return NULL; }
+    virtual const char * getProxyAddress()            { return NULL; }
+    virtual const char * getAcceptType()              { return NULL; }
     virtual void getLogText(size32_t & lenText, char * & text, const void * left) { lenText =0; text = NULL; }
 };
 typedef CThorSoapCallArg CThorHttpCallArg;

+ 6 - 5
thorlcr/activities/diskwrite/thdiskwrite.cpp

@@ -65,8 +65,9 @@ public:
         IHThorCsvWriteArg *helper=(IHThorCsvWriteArg *)queryHelper();
         ICsvParameters *csvParameters = helper->queryCsvParameters();
         StringBuffer separator;
-        const char *s = csvParameters->querySeparator(0);
-        while (*s)
+        OwnedRoxieString rs(csvParameters->getSeparator(0));
+        const char *s = rs;
+        while (s && *s)
         {
             if (',' == *s)
                 separator.append("\\,");
@@ -75,9 +76,9 @@ public:
             ++s;
         }
         props.setProp("@csvSeparate", separator.str());
-        props.setProp("@csvQuote", csvParameters->queryQuote(0));
-        props.setProp("@csvTerminate", csvParameters->queryTerminator(0));
-        props.setProp("@csvEscape", csvParameters->queryEscape(0));
+        props.setProp("@csvQuote", rs.setown(csvParameters->getQuote(0)));
+        props.setProp("@csvTerminate", rs.setown(csvParameters->getTerminator(0)));
+        props.setProp("@csvEscape", rs.setown(csvParameters->getEscape(0)));
 
         CWriteMasterBase::done(); // will publish
     }

+ 2 - 2
thorlcr/activities/diskwrite/thdwslave.cpp

@@ -82,7 +82,7 @@ protected:
     {
         if (!singleHF || firstNode())
         {
-            const char * header = helper->queryCsvParameters()->queryHeader();
+            OwnedRoxieString header(helper->queryCsvParameters()->getHeader());
             if (header)
             {
                 csvOutput.beginLine();
@@ -116,7 +116,7 @@ protected:
         }
         if (!singleHF || lastNode())
         {
-            const char * footer = helper->queryCsvParameters()->queryFooter();
+            OwnedRoxieString footer(helper->queryCsvParameters()->getFooter());
             if (footer)
             {
                 csvOutput.beginLine();

+ 1 - 1
thorlcr/activities/fetch/thfetchslave.cpp

@@ -623,7 +623,7 @@ public:
         {
             streams[f].setown(createBufferedIOStream(fetchStream->queryPartIO(f)));
             // NB: the index is based on path iteration matches, so on lookup the elements start at positioned stream
-            // i.e. queryXmlIteratorPath not used here.
+            // i.e. getXmlIteratorPath not used (or supplied) here.
             parsers[f].setown(createXMLParse(*streams[f], "/", *xmlSelect, xr_none, ((IHThorXmlFetchArg *)fetchBaseHelper)->requiresContents()));
         }
     }

+ 4 - 2
thorlcr/activities/piperead/thprslave.cpp

@@ -242,7 +242,8 @@ public:
         }
         else
             _inrowif = this;
-        readTransformer.setown(createReadRowStream(_inrowif->queryRowAllocator(), _inrowif->queryRowDeserializer(), helper->queryXmlTransformer(), helper->queryCsvTransformer(), helper->queryXmlIteratorPath(), flags));
+        OwnedRoxieString xmlIteratorPath(helper->getXmlIteratorPath());
+        readTransformer.setown(createReadRowStream(_inrowif->queryRowAllocator(), _inrowif->queryRowDeserializer(), helper->queryXmlTransformer(), helper->queryCsvTransformer(), xmlIteratorPath, flags));
         appendOutputLinked(this);
     }
     virtual void start()
@@ -356,7 +357,8 @@ public:
         recreate = helper->recreateEachRow();
         grouped = 0 != (flags & TPFgroupeachrow);
 
-        readTransformer.setown(createReadRowStream(queryRowAllocator(), queryRowDeserializer(), helper->queryXmlTransformer(), helper->queryCsvTransformer(), helper->queryXmlIteratorPath(), flags));
+        OwnedRoxieString xmlIterator(helper->getXmlIteratorPath());
+        readTransformer.setown(createReadRowStream(queryRowAllocator(), queryRowDeserializer(), helper->queryXmlTransformer(), helper->queryCsvTransformer(), xmlIterator, flags));
         readTransformer->setStream(pipeStream); // NB the pipe process stream is provided to pipeStream after pipe->run()
 
         appendOutputLinked(this);

+ 2 - 1
thorlcr/activities/xmlparse/thxmlparseslave.cpp

@@ -134,7 +134,8 @@ public:
                     break;
                 unsigned len;
                 helper->getSearchText(len, searchStr, nxt);
-                xmlParser.setown(createXMLParse(searchStr, len, helper->queryXmlIteratorPath(), *this, xr_noRoot, helper->requiresContents()));
+                OwnedRoxieString xmlIteratorPath(helper->getXmlIteratorPath());
+                xmlParser.setown(createXMLParse(searchStr, len, xmlIteratorPath, *this, xr_noRoot, helper->requiresContents()));
             }
         }
         catch (IOutOfMemException *e)

+ 2 - 1
thorlcr/activities/xmlread/thxmlreadslave.cpp

@@ -81,7 +81,8 @@ class CXmlReadSlaveActivity : public CDiskReadSlaveActivityBase, public CThorDat
                 stream.set(crcStream);
             }
             inputIOstream.setown(createBufferedIOStream(stream));
-            xmlParser.setown(createXMLParse(*inputIOstream.get(), activity.helper->queryXmlIteratorPath(), *this, (0 != (TDRxmlnoroot & activity.helper->getFlags()))?xr_noRoot:xr_none, 0 != (TDRusexmlcontents & activity.helper->getFlags())));
+            OwnedRoxieString xmlIterator(activity.helper->getXmlIteratorPath());
+            xmlParser.setown(createXMLParse(*inputIOstream.get(), xmlIterator, *this, (0 != (TDRxmlnoroot & activity.helper->getFlags()))?xr_noRoot:xr_none, 0 != (TDRusexmlcontents & activity.helper->getFlags())));
         }
         virtual void close(CRC32 &fileCRC)
         {

+ 3 - 2
thorlcr/activities/xmlwrite/thxmlwrite.cpp

@@ -40,11 +40,12 @@ public:
 
         IPropertyTree &props = fileDesc->queryProperties();
         StringBuffer rowTag;
-        const char * path = helper->queryXmlIteratorPath();
-        if (!path)
+        OwnedRoxieString xmlpath(helper->getXmlIteratorPath());
+        if (!xmlpath)
             rowTag.append("Row");
         else
         {
+            const char *path = xmlpath;
             if (*path == '/') path++;
             if (strchr(path, '/')) UNIMPLEMENTED;
             rowTag.append(path);

+ 5 - 4
thorlcr/activities/xmlwrite/thxmlwriteslave.cpp

@@ -40,13 +40,14 @@ public:
     virtual void write()
     {
         StringBuffer rowTag;
-        const char * path = helper->queryXmlIteratorPath();
-        if (!path)
+        OwnedRoxieString xmlpath(helper->getXmlIteratorPath());
+        if (!xmlpath)
         {
             rowTag.append("Row");
         }
         else
         {
+            const char *path = xmlpath;
             if (*path == '/') path++;
             if (strchr(path, '/')) UNIMPLEMENTED;
             rowTag.append(path);
@@ -56,7 +57,7 @@ public:
         CommonXmlWriter xmlWriter(helper->getXmlFlags());
         if (!dlfn.isExternal() || firstNode()) // if external, 1 header,footer
         {
-            const char * header = helper->queryHeader();
+            OwnedRoxieString header(helper->getHeader());
             if (header)
                 xmlOutput.clear().append(header);
             else
@@ -80,7 +81,7 @@ public:
         }
         if (!dlfn.isExternal() || lastNode()) // if external, 1 header,footer
         {
-            const char * footer = helper->queryFooter();
+            OwnedRoxieString footer(helper->getFooter());
             if (footer)
                 xmlOutput.clear().append(footer);
             else