xmlDocDumpFormatMemory(doc, &xmlbuff, &xmlbuffsz, 1);
explain_xml.assign((const char*)xmlbuff, 0, xmlbuffsz);
+ xmlFree(xmlbuff);
}
Z_SRW_PDU * mp_util::decode_sru_request(mp::Package &package,
mp::odr &odr_de,
mp::odr &odr_en,
- Z_SRW_PDU *sru_pdu_res,
+ Z_SRW_diagnostic **diagnostic,
+ int *num_diagnostic,
Z_SOAP **soap,
- char *charset,
- char *stylesheet)
+ char *charset)
{
Z_GDU *zgdu_req = package.request().get();
Z_SRW_PDU *sru_pdu_req = 0;
// closing connection if we did not ...
if (0 == yaz_sru_decode(http_req, &sru_pdu_req, soap,
odr_de, &charset,
- &(sru_pdu_res->u.explain_response->diagnostics),
- &(sru_pdu_res->u.explain_response->num_diagnostics)))
+ diagnostic, num_diagnostic))
{
- if (sru_pdu_res->u.explain_response->num_diagnostics)
- {
- //sru_pdu_res = sru_pdu_res_exp;
- package.session().close();
- return 0;
- }
return sru_pdu_req;
}
else if (0 == yaz_srw_decode(http_req, &sru_pdu_req, soap,
Z_SRW_PDU *sru_pdu_res,
Z_SRW_searchRetrieveRequest const *sr_req)
{
-#ifdef Z_SRW_query_type_cql
- if ((sr_req->query_type == Z_SRW_query_type_cql && !sr_req->query.cql))
- {
- yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
- YAZ_SRW_MANDATORY_PARAMETER_NOT_SUPPLIED,
- "query");
- yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
- YAZ_SRW_QUERY_SYNTAX_ERROR,
- "CQL query is empty");
- return false;
- }
- if ((sr_req->query_type == Z_SRW_query_type_xcql && !sr_req->query.xcql))
- {
- yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
- YAZ_SRW_QUERY_SYNTAX_ERROR,
- "XCQL query is empty");
- return false;
- }
- if ((sr_req->query_type == Z_SRW_query_type_pqf && !sr_req->query.pqf))
- {
- yaz_add_srw_diagnostic(odr_en,
- &(sru_pdu_res->u.response->diagnostics),
- &(sru_pdu_res->u.response->num_diagnostics),
- YAZ_SRW_QUERY_SYNTAX_ERROR,
- "PQF query is empty");
- return false;
- }
-#else
if (!sr_req->query)
{
yaz_add_srw_diagnostic(odr_en,
"CQL query is empty");
return false;
}
-#endif
return true;
}
os << " " << (sr->recordSchema);
else
os << " -";
-
-#ifdef Z_SRW_query_type_cql
- switch (sr->query_type){
- case Z_SRW_query_type_cql:
- os << " CQL";
- if (sr->query.cql)
- os << " " << sr->query.cql;
- break;
- case Z_SRW_query_type_xcql:
- os << " XCQL";
- break;
- case Z_SRW_query_type_pqf:
- os << " PQF";
- if (sr->query.pqf)
- os << " " << sr->query.pqf;
- break;
- }
-#else
os << " " << (sr->queryType ? sr->queryType : "cql")
<< " " << sr->query;
-#endif
}
}
break;