5.2.3.2.3 診断
この関数は、成功した場合に0を返す必要があります。
失敗した場合、次の例に示すように、この関数は-1を返す必要があります:
例5-6 SOAP XMLへのOracle Tuxedoカスタム型付きバッファ変換の疑似コード
int mybuffer2xml (void ** xercesDom, CustomerBuffer *a, CustType_Ext * extinfo)
{
// Use DOM implementation to create the xml payload
DOMTree = CreateDOMTree( );
if ( error )
return -1;
// fetch data from custom typed buffer instance,
// and add data to DOMTree according to the client side needed
// XML format
a->buf ==> DOMTree;
// allocate xmlbuf buffer via malloc
* xmlbuf = malloc( expected_len(DOMTree) );
if ( error ) {
release ( DOMTree );
return -1;
}
// casting the DOMDocument to void * pointer and returned
DOMTree >> (* xmlbuf);
if ( error ) {
release ( DOMTree );
free ( (* xmlbuf) );
return -1;
}
return 0;
}警告:
プラグイン関数内に作成したDOMDocumentをGWWSフレームワークでリリースする必要があります。再度リリースしないようにするには、次のXerces APIの使用に注意する必要があります。
DOMDocumentをXercesDOMParser::parse() APIでXML文字列から作成する場合。DOMDocumentオブジェクトのポインタを取得するためにXercesDOMParser::adoptDocument()を使用する必要があります。DOMDocumentオブジェクトのポインタを取得するためにXercesDOMParser::getDocument()を使用しないでください。これは、DOMDocumentオブジェクトは、XercesDOMParserオブジェクトによって維持され、XercesDOMParser::getDocument()関数によってDOMDocumentをXercesDOMParserから分離しない場合はXercesDOMParserオブジェクトを削除するときにリリースされるためです。