From: Asbjorn M. <ste...@us...> - 2002-02-21 18:29:32
|
Update of /cvsroot/epp-rtk/epp-rtk/c++/src/data In directory usw-pr-cvs1:/tmp/cvs-serv31752/src/data Modified Files: epp_contactXMLbase.cc epp_contactXMLbase.h epp_eppXMLbase.cc epp_eppXMLbase.h Log Message: Reinstated deprecated functions, and they are of course marked deprecated. Index: epp_contactXMLbase.cc =================================================================== RCS file: /cvsroot/epp-rtk/epp-rtk/c++/src/data/epp_contactXMLbase.cc,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** epp_contactXMLbase.cc 21 Feb 2002 17:20:22 -0000 1.8 --- epp_contactXMLbase.cc 21 Feb 2002 18:28:07 -0000 1.9 *************** *** 266,267 **** --- 266,363 ---- return contactStatusTypeMap[statusType]; } + + // Warning: This function is deprecated, use the dom_ptr version instead! + epp_ContactNameAddress eppobject::contact::parseAddress(const DOM_Node & adrNode) + { + epp_ContactNameAddress adrStruct; + + DOMString NS = adrNode.getNamespaceURI(); + + DOM_Node nodeName = ((DOM_Element*)&adrNode)->getElementsByTagNameNS(NS, "name").item(0); + if(nodeName.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing name-element in address"); + } + + string name; + getNodeData(nodeName, name); + adrStruct.m_name.ref(new epp_string(name)); + // cout << "name: " << *adrStruct.m_name << endl; + + DOM_Node nodeOrg = ((DOM_Element*)&adrNode)->getElementsByTagNameNS(NS, "org").item(0); + if(!nodeOrg.isNull()) + { + string org; + getNodeData(nodeOrg, org); + adrStruct.m_org.ref(new epp_string(org)); + // cout << "org: " << *adrStruct.m_org << endl; + } + + DOM_Node nodeAddr = ((DOM_Element*)&adrNode)->getElementsByTagNameNS(NS, "addr").item(0); + if(nodeAddr.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing addr-element in address"); + } + + adrStruct.m_address.ref(new epp_ContactAddress()); + + DOM_NodeList elemNodes = nodeAddr.getChildNodes(); + + if(elemNodes.getLength() == 0) + { + throw epp_XMLException(__FILE__, __LINE__, "Empty addr-element in address"); + } + + DOMString elemPrefix = nodeAddr.getPrefix(); + // <FIXME>This might not always work in all namespaces... (host:, obj:, osv)...</fixme> + + // <FIXME>Should we check that all mandatory fields present?</fixme> + for(unsigned int i = 0; i < elemNodes.getLength(); i++) + { + DOM_Node elNode = elemNodes.item(i); + + if(elNode.getNodeName().equals(elemPrefix + ":street")) { + string street; + getNodeData(elNode, street); + + if(adrStruct.m_address->m_street1 == NULL) + adrStruct.m_address->m_street1.ref(new epp_string(street)); + else if(adrStruct.m_address->m_street2 == NULL) + adrStruct.m_address->m_street2.ref(new epp_string(street)); + else if(adrStruct.m_address->m_street3 == NULL) + adrStruct.m_address->m_street3.ref(new epp_string(street)); + else + throw epp_XMLException(__FILE__, __LINE__, "Too many street-elements in addr-element"); + + // cout << "street: " << street << endl; + } + else if(elNode.getNodeName().equals(elemPrefix + ":city")) { + string city; + getNodeData(elNode, city); + adrStruct.m_address->m_city.ref(new epp_string(city)); + // cout << "city: " << *adrStruct.m_address->m_city << endl; + } + else if(elNode.getNodeName().equals(elemPrefix + ":sp")) { + string sp; + getNodeData(elNode, sp); + adrStruct.m_address->m_state_province.ref(new epp_string(sp)); + // cout << "sp: " << *adrStruct.m_address->m_state_province << endl; + } + else if(elNode.getNodeName().equals(elemPrefix + ":pc")) { + string pc; + getNodeData(elNode, pc); + adrStruct.m_address->m_postal_code.ref(new epp_string(pc)); + // cout << "pc: " << *adrStruct.m_address->m_postal_code << endl; + } + else if(elNode.getNodeName().equals(elemPrefix + ":cc")) { + string cc; + getNodeData(elNode, cc); + adrStruct.m_address->m_country_code.ref(new epp_string(cc)); + // cout << "cc: " << *adrStruct.m_address->m_country_code << endl; + } + + } + + return adrStruct; + } + Index: epp_contactXMLbase.h =================================================================== RCS file: /cvsroot/epp-rtk/epp-rtk/c++/src/data/epp_contactXMLbase.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** epp_contactXMLbase.h 20 Feb 2002 17:26:02 -0000 1.6 --- epp_contactXMLbase.h 21 Feb 2002 18:28:07 -0000 1.7 *************** *** 81,85 **** * @throw epp_XMLException If statusType is not a valid epp_ContactStatusType */ ! epp_ContactStatusType returnStatusEnumType(const eppobject::epp::epp_string & statusType); }}; #endif --- 81,94 ---- * @throw epp_XMLException If statusType is not a valid epp_ContactStatusType */ ! epp_ContactStatusType returnStatusEnumType(const eppobject::epp::epp_string & statusType); ! ! /** Parses an address DOM_Node and creates the corresonding epp_ContactNameAddress object ! * @param adrNode The address DOM_Node ! * @return The corresponding epp_ContactNameAddress object ! * @throw epp_XMLException If it is unable find the correct XML-elements in the Node ! * @deprecated Replaced by parseAddress(const domtools::dom_ptr & adrNode); ! */ ! epp_ContactNameAddress parseAddress(const DOM_Node & adrNode); ! }}; #endif Index: epp_eppXMLbase.cc =================================================================== RCS file: /cvsroot/epp-rtk/epp-rtk/c++/src/data/epp_eppXMLbase.cc,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** epp_eppXMLbase.cc 21 Feb 2002 17:20:22 -0000 1.11 --- epp_eppXMLbase.cc 21 Feb 2002 18:28:07 -0000 1.12 *************** *** 557,558 **** --- 557,938 ---- return eService; } + + + //Only deprecated functions below this, please... + + + // Warning: This function is deprecated, use the dom_ptr version instead! + epp_AuthInfo_ref eppobject::epp::createAuthInfoObject(DOM_Node authNode) + { + epp_AuthInfo_ref authObj(new epp_AuthInfo()); + + string type, roid, value; + getAttribute(authNode, "type", type); + getAttribute(authNode, "roid", roid); + getNodeData(authNode, value); + + if(!type.empty()) + authObj->m_type.ref(new epp_AuthInfoType(returnAuthInfoType(type))); + if(!roid.empty()) + authObj->m_roid.ref(new epp_roid(roid)); + if(!value.empty()) + authObj->m_value.ref(new epp_string(value)); + // cout << "authinfo: " << type << ", " << roid << ", " << value << endl; + + return authObj; + } + + + // Warning: This function is deprecated, use the dom_ptr version instead! + DOM_Document eppobject::epp::createDOM_Document(const epp_string & xml) + { + // <FIXME>For testing purposes only: + cout << "<Returned_XML>\n"; + cout << xml << endl; + cout << "\n</Returned_XML>\n"; + // </fixme> + + // Initialize Xerces + try { + XMLPlatformUtils::Initialize(); + } catch(...) { + throw epp_XMLException(__FILE__, __LINE__, "Unable to initialise Xerces-c"); + } + + domtools::xml_string_output out; + + DOMParser parser; + + MemBufInputSource * myXML = new MemBufInputSource + ( + (const XMLByte*)xml.c_str() + , strlen(xml.c_str()) + , "nothing" + , false + ); + + parser.setDoNamespaces(true); + parser.setToCreateXMLDeclTypeNode(true); + + try { + parser.parse(*myXML); + } + catch (...) { + delete myXML; + throw epp_XMLException(__FILE__, __LINE__, "Unable to parse string"); + } + + DOM_Document ret = parser.getDocument(); + + delete myXML; + + return ret; + } + + + // Warning: This function is deprecated, use the dom_ptr version instead! + DOM_Node eppobject::epp::getresDataInfo(const DOM_Node & responseNode, const string & tag) + { + if(responseNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Unable to find response-element"); + } + + DOM_Node resDataNode = ((DOM_Element*)&responseNode)->getElementsByTagName("resData").item(0); + if(resDataNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Unable to find resData-element"); + } + + DOM_NodeList elemNodes = resDataNode.getChildNodes(); + + if(elemNodes.getLength() == 0) + { + throw epp_XMLException(__FILE__, __LINE__, "Empty resData-element"); + } + + DOM_Node elNode; + + for(unsigned int i = 0; i < elemNodes.getLength(); i++) + { + elNode = elemNodes.item(i); + + if(toString(elNode.getNodeName()).find(":" + tag) != string::npos) + return elNode; + } + + // Return empty element if it does not find the tag + return DOM_Node(); + } + + + // Warning: This function is deprecated, use the dom_ptr version instead! + // "resData" will not be handled here, since it will + // be different for different requests + epp_Response_ref eppobject::epp::createGenericResponse(DOM_Node & node) + { + epp_Response_ref res(new epp_Response); + + DOM_Node unspecNode = getSingleTag(node, "unspec"); + if(!unspecNode.isNull()) { + + DOM_NodeList elemNodes = unspecNode.getChildNodes(); + EPP_output outObject; + DomPrint dp(outObject); + + for(unsigned int i = 0; i < elemNodes.getLength(); i++) + { + dom_ptr unspecDPtr(new XercesNode(elemNodes.item(i))); + dp.putDOMTree(unspecDPtr); + } + + res->m_unspec_string.ref(new epp_xml_string(outObject.getString())); + // cout << "unspec: " << *res->m_unspec_string << endl; + } + + DOM_Node trIDNode = getSingleTag(node, "trID"); + + if(trIDNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing trID-element in response"); + } + + res->m_trans_id.ref(new epp_TransID()); + + DOM_Node svTRIDNode = ((DOM_Element*)&trIDNode)->getElementsByTagName("svTRID").item(0); + if(svTRIDNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing svTRID-element in response"); + } + + string svTRID; + getNodeData(svTRIDNode, svTRID); + res->m_trans_id->m_server_trid.ref(new epp_trid(svTRID)); + // cout << "svTRID: " << *res->m_trans_id->m_server_trid << endl; + + DOM_Node clTRIDNode = ((DOM_Element*)&trIDNode)->getElementsByTagName("clTRID").item(0); + if(!clTRIDNode.isNull()) + { + string clTRID; + getNodeData(clTRIDNode, clTRID); + res->m_trans_id->m_client_trid.ref(new epp_trid(clTRID)); + // cout << "clTRID: " << *res->m_trans_id->m_client_trid << endl; + } + + DOM_NodeList resultNodes = ((DOM_Element*)&node)->getElementsByTagName("result"); + if(resultNodes.getLength() == 0) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing result-element(s) in response"); + } + + res->m_results.ref(new epp_result_seq); + + for(unsigned int i = 0; i < resultNodes.getLength(); i++) + { + DOM_Node item = resultNodes.item(i); + epp_Result result; + + string code; + getAttribute(item,"code", code); + if(code.empty()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing code-attribute in result-element"); + } + + result.m_code.ref(new epp_short(atol(code.c_str()))); + // cout << "code: " << *result.m_code << endl; + + + DOM_Node msgNode = ((DOM_Element*)&item)->getElementsByTagName("msg").item(0); + if(msgNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing msg-element in result-element"); + } + + string msg; + getNodeData(msgNode,msg); + result.m_msg.ref(new epp_string(msg)); + // cout << "msg: " << *result.m_msg << endl; + + string lang; + getAttribute(msgNode,"lang", lang); + if(!lang.empty()) + { + result.m_lang.ref(new epp_string(lang)); + // cout << "lang: " << *result.m_lang << endl; + } + + string id; + getAttribute(msgNode, "id", id); + if(!id.empty()) + { + result.m_id.ref(new epp_string(id)); + // cout << "id: " << *result.m_id << endl; + } + + DOM_NodeList valueNodes = ((DOM_Element*)&item)->getElementsByTagName("value"); + + if(valueNodes.getLength() > 0) + { + + result.m_values.ref(new epp_string_seq); + + for(unsigned int i = 0; i < valueNodes.getLength(); i++) + { + DOM_Node valueNode = valueNodes.item(i); + string value; + getNodeData(valueNode, value); + result.m_values->push_back(epp_string(value)); + // cout << "value: " << value << endl; + } + } + res->m_results->push_back(result); + } // for + + DOM_Node msgQNode = getSingleTag(node, "msgQ"); + if(!msgQNode.isNull()) { + + res->m_message_queue.ref(new epp_MessageQueue()); + + string count; + getAttribute(msgQNode, "count", count); + res->m_message_queue->m_count.ref(new epp_long(atol(count.c_str()))); + // cout << "msgQ, count: " << count << endl; + + DOM_Node qDateNode = ((DOM_Element*)&msgQNode)->getElementsByTagName("qDate").item(0); + + if(!qDateNode.isNull()) + { + string qDate; + getNodeData(qDateNode, qDate); + res->m_message_queue->m_queue_date.ref(new epp_datetime(qDate)); + // cout << "msgQ, qDate: " << qDate << endl; + } + } + + // Throw exception if there is an error-condition... + if(*((res->m_results->front()).m_code) >= epp_Session::EPP_UNKNOWN_COMMAND) { + + epp_Exception throwMe = epp_Exception(*res->m_results); + + throw throwMe; + } + + return res; + } + + + // Warning: This function is deprecated, use the dom_ptr version instead! + epp_Greeting_ref eppobject::epp::createGreetingResponse(DOM_Node & node) + { + epp_Greeting_ref gr(new epp_Greeting()); + + DOM_Node svIDNode = getSingleTag(node, "svID"); + if(svIDNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing svID-element in response"); + } + else + { + string svID; + getNodeData(svIDNode, svID); + gr->m_server_id.ref(new epp_string(svID)); + // cout << "svID: " << *gr->m_server_id << endl; + } + + DOM_Node svDateNode = getSingleTag(node, "svDate"); + if(svDateNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing svDate-element in response"); + } + else + { + string svDate; + getNodeData(svDateNode, svDate); + gr->m_server_date.ref(new epp_datetime(svDate)); + // cout << "svDate: " << *gr->m_server_date << endl; + } + + DOM_Node svcMenuNode = getSingleTag(node, "svcMenu"); + if(svcMenuNode.isNull()) + { + throw epp_XMLException(__FILE__, __LINE__, "Missing svcMenu-element in response"); + } + + DOM_NodeList elemNodes = svcMenuNode.getChildNodes(); + + if(elemNodes.getLength() == 0) + { + throw epp_XMLException(__FILE__, __LINE__, "Empty svcMenu-element"); + } + + for(unsigned int i = 0; i < elemNodes.getLength(); i++) + { + DOM_Node elNode = elemNodes.item(i); + + if(elNode.getNodeName().equals("version")) { + if(gr->m_versions == NULL) + gr->m_versions.ref(new epp_string_seq); + + string value; + getNodeData(elNode, value); + + gr->m_versions->push_back(epp_string(value)); + // cout << "version: " << value << endl; + } + else if(elNode.getNodeName().equals("lang")) { + if(gr->m_langs == NULL) + gr->m_langs.ref(new epp_string_seq); + + string value; + getNodeData(elNode, value); + + gr->m_langs->push_back(epp_string(value)); + // cout << "lang: " << value << endl; + } + else if(toString(elNode.getNodeName()).find(":svc") != string::npos) { + if(gr->m_services == NULL) { + gr->m_services.ref(new epp_service_seq); + } + + epp_Service_ref eSer = createServiceObject(elNode); + if(eSer != NULL) { + // cout << *eSer.m_name << ": \n ns: " << *eSer.m_xmlns << "\n loc: " << sLocation << "\n"; + gr->m_services->push_back(*eSer); + } + } + else if(elNode.getNodeName().equals("unspec")) { + gr->m_unspec_services.ref(new epp_service_seq); + + DOM_NodeList serviceNodes = elNode.getChildNodes(); + + for(unsigned int i = 0; i < serviceNodes.getLength(); i++) + { + DOM_Node svcNode = serviceNodes.item(i); + if(toString(svcNode.getNodeName()).find(":svc") != string::npos) { + epp_Service_ref eSer = createServiceObject(svcNode); + if(eSer != NULL) { + // cout << *eSer.m_name << ": \n ns: " << *eSer.m_xmlns << "\n loc: " << sLocation << "\n"; + gr->m_unspec_services->push_back(*eSer); + } + } + } + } + } + return gr; + }; + + + // Warning: This function is deprecated, use the dom_ptr version instead! + epp_Service_ref eppobject::epp::createServiceObject(DOM_Node & node) + { + epp_Service_ref eService(new epp_Service()); + + eService->m_name.ref(new epp_string(toString(node.getPrefix()))); + eService->m_xmlns.ref(new epp_string(toString(node.getNamespaceURI()))); + string sLocation; + getAttribute(node, "xsi:schemaLocation", sLocation); + eService->m_schema_location.ref(new epp_string(sLocation)); + + return eService; + } Index: epp_eppXMLbase.h =================================================================== RCS file: /cvsroot/epp-rtk/epp-rtk/c++/src/data/epp_eppXMLbase.h,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** epp_eppXMLbase.h 20 Feb 2002 17:26:02 -0000 1.9 --- epp_eppXMLbase.h 21 Feb 2002 18:28:07 -0000 1.10 *************** *** 160,163 **** --- 160,217 ---- */ epp_Service_ref createServiceObject(domtools::dom_ptr & node); + + + //Only deprecated functions below this, please... + + /** Parses an authInfo DOM_Node and creates the corresponding epp_AuthInfo object + * @param authNode The authInfo DOM_Node + * @return The corresponding epp_AuthInfo object + * @deprecated Replaced by createAuthInfoObject(const domtools::dom_ptr & authNode); + */ + epp_AuthInfo_ref createAuthInfoObject(DOM_Node authNode); + + /** Parses an XML epp_string and generates a DOM_Document (DOM-tree) of it + * @param xml The XML epp_string to build a tree from + * @return The generated DOM_Document + * @throw epp_XMLException If it is unable to initialise the XML-parser + * @throw epp_XMLException If it is unable to parse the epp_string + * @deprecated Replaced by createDOMDocument(const epp_string & xml); + */ + DOM_Document createDOM_Document(const epp_string & xml); + + /** Parses a DOM_Node and returns the requested resData-tag + * @param responseNode The DOM_Node to investigate + * @param tag The resData-tag to look for and return + * @return The requested resData Dom_Node, or an empty DOM_Node if it cannot be found + * @throw epp_XMLException If it is unable find the correct XML-elements in the Node + * @deprecated Replaced by getresDataInfo(const domtools::dom_ptr & responseNode, const string & tag); + */ + DOM_Node getresDataInfo(const DOM_Node & responseNode, const string & tag); + + /** Parses a response DOM_Node and creates the corresponding epp_Response object + * @param node The response DOM_Node + * @return The corresponding epp_Response object + * @throw epp_XMLException If it is unable find the correct XML-elements in the Node + * @throw epp_Exception If there response node reports an error condition + * @deprecated Replaced by createGenericResponse(domtools::dom_ptr & node); + */ + epp_Response_ref createGenericResponse(DOM_Node & node); + + /** Parses a greeting DOM_Node and creates the corresponding epp_Greeting object + * @param node The greeting DOM_Node + * @return The corresponding epp_Greeting object + * @throw epp_XMLException If it is unable find the correct XML-elements in the Node + * @deprecated Replaced by createGreetingResponse(domtools::dom_ptr & node); + */ + epp_Greeting_ref createGreetingResponse(DOM_Node & node); + + /** Parses a service (svc) DOM_Node and creates the corresponding epp_Service object + * @param node The service (svc) DOM_Node + * @return The corresponding epp_Service object + * @throw epp_XMLException If it is unable find the correct XML-elements in the Node + * @deprecated Replaced by createServiceObject(domtools::dom_ptr & node); + */ + epp_Service_ref createServiceObject(DOM_Node & node); + }}; |