|
@@ -16127,6 +16127,24 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
|
|
|
|
|
|
IHqlExpression * namespaceAttr = expr->queryProperty(namespaceAtom);
|
|
|
IHqlExpression * responseAttr = expr->queryProperty(responseAtom);
|
|
|
+ IHqlExpression * logText = NULL;
|
|
|
+ bool logMin = false;
|
|
|
+ bool logXml = false;
|
|
|
+ ForEachChildFrom(i, expr, 1)
|
|
|
+ {
|
|
|
+ IHqlExpression * cur = expr->queryChild(i);
|
|
|
+ if (cur->isAttribute() && cur->queryName()==logAtom)
|
|
|
+ {
|
|
|
+ IHqlExpression * opt = cur->queryChild(0);
|
|
|
+ if (!opt)
|
|
|
+ logXml = true;
|
|
|
+ else if (!opt->isAttribute())
|
|
|
+ logText = opt;
|
|
|
+ else if (opt->queryName() == minAtom)
|
|
|
+ logMin = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//virtual unsigned getFlags()
|
|
|
{
|
|
|
StringBuffer flags;
|
|
@@ -16134,7 +16152,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
|
|
|
flags.append("|SOAPFgroup");
|
|
|
if (expr->hasProperty(onFailAtom))
|
|
|
flags.append("|SOAPFonfail");
|
|
|
- if (expr->hasProperty(logAtom))
|
|
|
+ if (logXml)
|
|
|
flags.append("|SOAPFlog");
|
|
|
if (expr->hasProperty(trimAtom))
|
|
|
flags.append("|SOAPFtrim");
|
|
@@ -16146,6 +16164,10 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
|
|
|
flags.append("|SOAPFencoding");
|
|
|
if (responseAttr && responseAttr->hasProperty(noTrimAtom))
|
|
|
flags.append("|SOAPFpreserveSpace");
|
|
|
+ if (logMin)
|
|
|
+ flags.append("|SOAPFlogmin");
|
|
|
+ if (logText)
|
|
|
+ flags.append("|SOAPFlogusermsg");
|
|
|
|
|
|
if (flags.length())
|
|
|
doBuildUnsignedFunction(instance->classctx, "getFlags", flags.str()+1);
|
|
@@ -16173,6 +16195,18 @@ ABoundActivity * HqlCppTranslator::doBuildActivitySOAP(BuildCtx & ctx, IHqlExpre
|
|
|
doBuildVarStringFunction(instance->startctx, "queryNamespaceVar", namespaceAttr->queryChild(1));
|
|
|
}
|
|
|
|
|
|
+ if (logText)
|
|
|
+ {
|
|
|
+ BuildCtx funcctx(instance->startctx);
|
|
|
+ funcctx.addQuotedCompound("virtual void getLogText(size32_t & __lenResult, char * & __result, const void * _left)");
|
|
|
+ if (dataset)
|
|
|
+ {
|
|
|
+ funcctx.addQuoted("const unsigned char * left = (const unsigned char *) _left;");
|
|
|
+ bindTableCursor(funcctx, dataset, "left");
|
|
|
+ bindTableCursor(funcctx, dataset, "left", no_left, selSeq);
|
|
|
+ }
|
|
|
+ doBuildFunctionReturn(funcctx, unknownStringType, logText);
|
|
|
+ }
|
|
|
if (!isSink)
|
|
|
{
|
|
|
//virtual IXmlToRowTransformer * queryTransformer()
|
|
@@ -16249,6 +16283,24 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
|
|
|
doBuildVarStringFunction(instance->startctx, "queryOutputIteratorPath", separator->queryChild(0));
|
|
|
|
|
|
IHqlExpression * namespaceAttr = expr->queryProperty(namespaceAtom);
|
|
|
+ IHqlExpression * logText = NULL;
|
|
|
+ bool logMin = false;
|
|
|
+ bool logXml = false;
|
|
|
+ ForEachChildFrom(i, expr, 1)
|
|
|
+ {
|
|
|
+ IHqlExpression * cur = expr->queryChild(i);
|
|
|
+ if (cur->isAttribute() && cur->queryName()==logAtom)
|
|
|
+ {
|
|
|
+ IHqlExpression * opt = cur->queryChild(0);
|
|
|
+ if (!opt)
|
|
|
+ logXml = true;
|
|
|
+ else if (!opt->isAttribute())
|
|
|
+ logText = opt;
|
|
|
+ else if (opt->queryName() == minAtom)
|
|
|
+ logMin = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//virtual unsigned getFlags()
|
|
|
{
|
|
|
StringBuffer flags;
|
|
@@ -16256,7 +16308,7 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
|
|
|
flags.append("|SOAPFgroup");
|
|
|
if (expr->hasProperty(onFailAtom))
|
|
|
flags.append("|SOAPFonfail");
|
|
|
- if (expr->hasProperty(logAtom))
|
|
|
+ if (logXml)
|
|
|
flags.append("|SOAPFlog");
|
|
|
if (expr->hasProperty(trimAtom))
|
|
|
flags.append("|SOAPFtrim");
|
|
@@ -16264,6 +16316,10 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
|
|
|
flags.append("|SOAPFliteral");
|
|
|
if (namespaceAttr)
|
|
|
flags.append("|SOAPFnamespace");
|
|
|
+ if (logMin)
|
|
|
+ flags.append("|SOAPFlogmin");
|
|
|
+ if (logText)
|
|
|
+ flags.append("|SOAPFlogusermsg");
|
|
|
|
|
|
if (flags.length())
|
|
|
doBuildUnsignedFunction(instance->classctx, "getFlags", flags.str()+1);
|
|
@@ -16291,6 +16347,13 @@ ABoundActivity * HqlCppTranslator::doBuildActivityHTTP(BuildCtx & ctx, IHqlExpre
|
|
|
doBuildVarStringFunction(instance->startctx, "queryNamespaceVar", namespaceAttr->queryChild(1));
|
|
|
}
|
|
|
|
|
|
+ if (logText)
|
|
|
+ {
|
|
|
+ BuildCtx funcctx(instance->startctx);
|
|
|
+ funcctx.addQuotedCompound("virtual void getLogText(size32_t & __lenResult, char * & __result, const void * _left)");
|
|
|
+ doBuildFunctionReturn(funcctx, unknownStringType, logText);
|
|
|
+ }
|
|
|
+
|
|
|
if (!isSink)
|
|
|
{
|
|
|
//virtual IXmlToRowTransformer * queryTransformer()
|