in src/dxapi/native/tickdb/http/xml/validate_qql_request.cpp [55:113]
bool ValidateQqlRequest::getState(QqlState &state)
{
state.tokens.reset();
state.errorLocation.value = -1;
if (!executeAndParseResponse()) {
return false;
}
XMLElement * rootElement = response_.root();
if (!nameEquals(rootElement, "validateQQLResponse")) {
return false;
}
XMLElement * resultElement = rootElement->FirstChildElement("result");
if (NULL == resultElement) {
DBGLOGERR((string*)NULL, "ERR: 'result' element not found!");
return false;
}
XMLElement * tokensElement = resultElement->FirstChildElement("tokens");
/*if (NULL == tokensElement) {
DBGLOGERR((string*)NULL, "ERR: 'tokens' element not found!");
return false;
}*/
auto errorLocationText = getText(resultElement, "errorLocation");
state.errorLocation.value = -1;
if (NULL != errorLocationText && !parse(state.errorLocation, errorLocationText)) {
DBGLOGERR((string*)NULL, "ERR: Unable to parse 'errorLocation' field!");
return false;
}
if (NULL != tokensElement) {
std::vector<QqlState::Token> tokens;
for (XMLElement * item = (XMLElement *)tokensElement; NULL != item; item = item->NextSiblingElement("tokens")) {
QqlState::Token token;
if (!parse(token, item)) {
DBGLOGERR((string*)NULL, "ERR: Unable to parse qql state token!");
return false;
}
tokens.push_back(token);
//tokens.push_back(QqlState::Token());
/*if (!parse(tokens[tokens.size() - 1], getText(item))) {
DBGLOGERR((string*)NULL, "ERR: Unable to parse qql state token!");
return false;
}*/
}
state.tokens = tokens;
}
return true;
}