void CSchemaParser::EmitNamedElementError(const char *szElem) { int nLine = 0; int nCol = 0; GetLocator()->getLineNumber(&nLine); GetLocator()->getColumnNumber(&nCol); CSchema *pCurr = GetSchema(); if (pCurr != NULL) { EmitFileError(IDS_SDL_SCHEMALEVEL_NAME, (LPCWSTR) pCurr->GetParentDocument()->GetDocumentUri(), nLine, nCol, 0, szElem); } EmitError(IDS_SDL_INTERNAL); }
TAG_METHOD_IMPL(CWSDLOperationParser, OnFault) { TRACE_PARSE_ENTRY(); CWSDLPortTypeOperation * pCurr = GetOperation(); if (pCurr != NULL) { CWSDLPortTypeFault * pElem = pCurr->AddFault(); if (pElem != NULL) { SetXMLElementInfo(pElem, pCurr, GetLocator()); CAutoPtr<CWSDLOperationIOParser> p( new CWSDLOperationIOParser(GetReader(), this, GetLevel(), pElem) ); if (p != NULL) { if (g_ParserList.AddHead(p) != NULL) { return p.Detach()->GetAttributes(pAttributes); } } } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CWSDLBindingParser, OnOperation) { TRACE_PARSE_ENTRY(); CWSDLBinding * pCurr = GetBinding(); if (pCurr != NULL) { CAutoPtr<CWSDLPortTypeOperation> spElem; spElem.Attach( new CWSDLPortTypeOperation ); if (spElem != NULL) { SetXMLElementInfo(spElem, pCurr, GetLocator()); CAutoPtr<CWSDLOperationParser> p( new CWSDLOperationParser(GetReader(), this, GetLevel(), spElem) ); if (p) { if (g_ParserList.AddHead(p) != NULL) { if (SUCCEEDED(p.Detach()->GetAttributes(pAttributes))) { if (pCurr->AddOperation(spElem) != NULL) { spElem.Detach(); return S_OK; } } } } } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CElementParser, OnComplexType) { TRACE_PARSE_ENTRY(); CElement * pCurr = GetElement(); if (pCurr != NULL) { CComplexType * pElem = pCurr->AddComplexType(); if (pElem != NULL) { SetXSDElementInfo(pElem, pCurr, GetLocator()); CAutoPtr<CComplexTypeParser> p( new CComplexTypeParser(GetReader(), this, GetLevel(), pElem) ); if (p != NULL) { if (g_ParserList.AddHead(p) != NULL) { return p.Detach()->GetAttributes(pAttributes); } } } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CWSDLBindingParser, OnHttpBinding) { TRACE_PARSE_ENTRY(); CWSDLBinding * pCurr = GetBinding(); if (pCurr != NULL) { CHttpBinding *pBinding = pCurr->AddHttpBinding(); if (pBinding != NULL) { SetXMLElementInfo(pBinding, pCurr, GetLocator()); CStringW strVerb; if (S_OK == GetAttribute(pAttributes, L"verb", sizeof("verb")-1, strVerb)) { if (SUCCEEDED(pBinding->SetVerb(strVerb))) { return SkipElement(); } } } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CContentParser, OnExtension) { TRACE_PARSE_ENTRY(); int nLine = 0; int nCol = 0; GetLocator()->getLineNumber(&nLine); GetLocator()->getColumnNumber(&nCol); CContent *pCurr = GetContent(); if (pCurr != NULL) { EmitFileError(IDS_SDL_BASE_EXTENSION, (LPCWSTR) pCurr->GetParentDocument()->GetDocumentUri(), nLine, nCol, 0); } return E_FAIL; }
HRESULT CWSDLOperationParser::OnUnrecognizedTag( const wchar_t *wszNamespaceUri, int cchNamespaceUri, const wchar_t *wszLocalName, int cchLocalName, const wchar_t * /*wszQName*/, int /*cchQName*/, ISAXAttributes * /*pAttributes*/) throw() { CWSDLPortTypeOperation * pCurr = GetOperation(); if (pCurr != NULL) { int nLine; int nCol; GetLocator()->getLineNumber(&nLine); GetLocator()->getColumnNumber(&nCol); EmitFileWarning(IDS_SDL_SKIP_EXTENSIBILITY, pCurr->GetParentDocument()->GetDocumentUri(), nLine, nCol, 0, wszNamespaceUri, wszLocalName); } return SkipElement(); }
TAG_METHOD_IMPL(CWSDLMessageParser, OnPart) { TRACE_PARSE_ENTRY(); CWSDLMessage *pCurr = GetMessage(); if (pCurr != NULL) { CWSDLMessagePart *pPart = pCurr->AddPart(); if (pPart != NULL) { SetXMLElementInfo(pPart, pCurr, GetLocator()); CStringW strName; if (S_OK == GetAttribute(pAttributes, L"name", sizeof("name")-1, strName)) { pPart->SetName(strName); CStringW strElement; if (S_OK == GetAttribute(pAttributes, L"element", sizeof("element")-1, strElement)) { pPart->SetElement(strElement); } CStringW strType; if (S_OK == GetAttribute(pAttributes, L"type", sizeof("type")-1, strType)) { pPart->SetType(strType); } // else // { // OnMissingAttribute(TRUE, L"element", sizeof("element")-1, L"", 0); // } return SkipElement(); } OnMissingAttribute(TRUE, L"name", sizeof("name")-1, L"", 0); } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CWSDLBindingParser, OnSoapBinding) { TRACE_PARSE_ENTRY(); CWSDLBinding * pCurr = GetBinding(); if (pCurr != NULL) { CSoapBinding *pBinding = pCurr->AddSoapBinding(); if (pBinding != NULL) { SetXMLElementInfo(pBinding, pCurr, GetLocator()); CStringW strTransport; if (S_OK == GetAttribute(pAttributes, L"transport", sizeof("transport")-1, strTransport)) { pBinding->SetTransport(strTransport); } const wchar_t *wszStyle; int cchStyle; HRESULT hr = S_OK; if (S_OK == GetAttribute(pAttributes, L"style", sizeof("style")-1, &wszStyle, &cchStyle)) { hr = pBinding->SetStyle(wszStyle, cchStyle); if (FAILED(hr)) { EmitInvalidValue("style", wszStyle); } } if (SUCCEEDED(hr)) { return SkipElement(); } } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CSchemaParser, OnElement) { TRACE_PARSE_ENTRY(); CSchema * pCurr = GetSchema(); if (pCurr != NULL) { CAutoPtr<CElement> spElem; spElem.Attach( new CElement ); if (spElem != NULL) { SetXSDElementInfo(spElem, pCurr, GetLocator()); spElem->SetParentSchema(pCurr); CAutoPtr<CElementParser> p( new CElementParser(GetReader(), this, GetLevel(), spElem) ); if (p != NULL) { if (g_ParserList.AddHead(p) != NULL) { if (SUCCEEDED(p.Detach()->GetAttributes(pAttributes))) { if (spElem->GetName().GetLength() != 0) { if (pCurr->AddElement(spElem) != NULL) { spElem.Detach(); return S_OK; } } EmitNamedElementError("element"); } } } } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }
TAG_METHOD_IMPL(CComplexTypeParser, OnComplexContent) { TRACE_PARSE_ENTRY(); CComplexType *pCurr = GetComplexType(); if (pCurr != NULL) { if (pCurr->GetElementType() == XSD_COMPLEXTYPE) { CContent *pElem = pCurr->AddContent(); if (pElem != NULL) { SetXSDElementInfo(pElem, pCurr, GetLocator()); pElem->SetElementType(XSD_COMPLEXCONTENT); CAutoPtr<CContentParser> p( new CContentParser(GetReader(), this, GetLevel(), pElem) ); if (p != NULL) { if (g_ParserList.AddHead(p) != NULL) { return p.Detach()->GetAttributes(pAttributes); } } } } else { return OnUnrecognizedTag(wszNamespaceUri, cchNamespaceUri, wszLocalName, cchLocalName, wszQName, cchQName, pAttributes); } } EmitErrorHr(E_OUTOFMEMORY); return E_FAIL; }