You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by su...@apache.org on 2003/09/12 08:32:41 UTC
cvs commit: xml-axis/c/src/soap XMLStreamHandler.cpp
susantha 2003/09/11 23:32:41
Modified: c/src/soap XMLStreamHandler.cpp
Log:
performance related improvement in the parser
Revision Changes Path
1.14 +31 -21 xml-axis/c/src/soap/XMLStreamHandler.cpp
Index: XMLStreamHandler.cpp
===================================================================
RCS file: /home/cvs/xml-axis/c/src/soap/XMLStreamHandler.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- XMLStreamHandler.cpp 11 Sep 2003 12:24:47 -0000 1.13
+++ XMLStreamHandler.cpp 12 Sep 2003 06:32:41 -0000 1.14
@@ -108,10 +108,12 @@
void XMLStreamHandler::startElement(const XMLCh *const uri,const XMLCh *const localname,const XMLCh *const qname,const Attributes &attrs)
{
+ AxisXMLString sLname = __XTRC(localname);
+ const AxisXMLCh* lname = sLname.c_str();
switch (m_PL0)
{
case SOAP_UNKNOWN:
- if(XMLString::equals(__XTRC(localname),SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_ENVELOPE]))
+ if(XMLString::equals(lname,SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_ENVELOPE]))
{
m_PL0 = SOAP_ENVELOP;
m_pEnv = new SoapEnvelope();
@@ -120,21 +122,21 @@
}
break;
case SOAP_ENVELOP:
- if(XMLString::equals(__XTRC(localname),SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_BODY]))
+ if(XMLString::equals(lname,SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_BODY]))
{
m_PL0 = SOAP_BODY;
m_pBody = new SoapBody();
//set all attributes of SoapBody
FillBody(uri,localname,qname,attrs);
}
- else if (XMLString::equals(__XTRC(localname),SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_HEADER]))
+ else if (XMLString::equals(lname,SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_HEADER]))
{
m_PL0 = SOAP_HEADER;
m_pHead = new SoapHeader();
//set all attributes of SoapHeader
FillHeader(uri,localname,qname,attrs);
}
- else if (XMLString::equals(__XTRC(localname),SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_FAULT]))
+ else if (XMLString::equals(lname,SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_FAULT]))
{
//m_PL0 = SOAP_FAULT;
//m_pFault = SoapFault::getSoapFault(1);
@@ -157,9 +159,9 @@
switch (m_PL1)
{
case SOAP_UNKNOWN:
- if (XMLString::equals(__XTRC(localname),SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_MULTIREF]))
+ if (XMLString::equals(lname,SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_MULTIREF]))
{
- m_sLastElement = __XTRC(localname);
+ m_sLastElement = lname;
SetParamType(attrs);
m_PL1 = SOAP_PARAM;
}
@@ -173,18 +175,18 @@
case SOAP_METHOD: //now comes parameters
//Get Param name and type
//m_Param.m_sName = localname;
- m_sLastElement = __XTRC(localname);
+ m_sLastElement = lname;
SetParamType(attrs);
m_PL1 = SOAP_PARAM;
m_nParamNestingLevel++;
break;
case SOAP_PARAM: //Custom types
- if (m_sLastElement != (const char*)__XTRC(localname))
+ if (m_sLastElement != lname)
{
m_Params.push_back(new Param(m_Param)); //parent param
}
//m_Param.m_sName = localname;
- m_sLastElement = __XTRC(localname);
+ m_sLastElement = lname;
SetParamType(attrs);
m_nParamNestingLevel++;
break;
@@ -199,6 +201,8 @@
void XMLStreamHandler::endElement (const XMLCh *const uri,const XMLCh *const localname,const XMLCh *const qname)
{
+ AxisXMLString sLname = __XTRC(localname);
+ const AxisXMLCh* lname = sLname.c_str();
switch (m_PL1)
{
case SOAP_UNKNOWN:
@@ -213,7 +217,7 @@
break;
case SOAP_PARAM: //end of a parameter
//Add parameter to list
- if (m_sLastElement == __XTRC(localname))
+ if (m_sLastElement == lname)
{
m_Params.push_back(new Param(m_Param)); //current param
}
@@ -282,7 +286,8 @@
void XMLStreamHandler::startPrefixMapping(const XMLCh* const prefix, const XMLCh* const uri)
{
- m_NsStack[__XTRC(prefix)] = __XTRC(uri); //I think the same prifix cannot repeat ???
+ AxisXMLString sPrefix = __XTRC(prefix);
+ m_NsStack[sPrefix.c_str()] = __XTRC(uri); //I think the same prifix cannot repeat ???
}
void XMLStreamHandler::endPrefixMapping(const XMLCh* const prefix)
@@ -317,14 +322,14 @@
AxisXMLString sValue, sPrefix, sType, sDimensions;
for (int i = 0; i < attrs.getLength(); i++)
{
- AxisXMLString URI = __XTRC(attrs.getURI(i));
- AxisXMLString local = __XTRC(attrs.getLocalName(i));
+ AxisXMLString sLocal = __XTRC(attrs.getLocalName(i));
+ const AxisXMLCh* local = sLocal.c_str();
sValue = __XTRC(attrs.getValue(i));
- URITYPE urit = URIMapping::Map(URI.c_str());
+ URITYPE urit = URIMapping::Map(__XTRC(attrs.getURI(i)));
switch (urit)
{
case URI_XSI: //xsi:type="xsd:int"
- if (XMLString::equals(local.c_str(), SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_TYPE]))
+ if (XMLString::equals(local, SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_TYPE]))
{
int colonindex = sValue.find(AxisUtils::m_strColon);
if (colonindex != AxisXMLString::npos)
@@ -363,7 +368,7 @@
}
break;
case URI_ENC: //enc:arrayType="xs:string[6]"
- if (XMLString::equals(local.c_str(), SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_ARRAYTYPE]))
+ if (XMLString::equals(local, SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_ARRAYTYPE]))
{
m_Param.m_Type = XSD_ARRAY;
m_Param.m_Value.pArray = &m_ArrayBean;
@@ -416,12 +421,12 @@
break;
case URI_UNKNOWN:
//check for accessors for multiref values
- if (XMLString::equals(local.c_str(), SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_HREF]))
+ if (XMLString::equals(local, SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_HREF]))
{
m_Param.m_Type = ACCESSOR;
//m_Param.m_sValue = sValue.substr(sValue.find('#')+1);
}
- else if (XMLString::equals(local.c_str(), SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_ID]))
+ else if (XMLString::equals(local, SoapKeywordMapping::Map(m_nSoapVersion).pchWords[SKW_ID]))
{
//m_Param.m_sName = sValue;
}
@@ -497,6 +502,7 @@
void XMLStreamHandler::FillEnvelope(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)
{
AxisXMLString str;
+ const AxisXMLCh* pchURI;
Attribute* pAttr;
str = __XTRC(qname);
pAttr = new Attribute();
@@ -506,14 +512,18 @@
m_pEnv->setPrefix(str.c_str());
pAttr->setPrefix(str.c_str());
}
- pAttr->setValue(__XTRC(uri));
+
+ str = __XTRC(uri);
+ pchURI = str.c_str();
+
+ pAttr->setValue(pchURI);
m_pEnv->addNamespaceDecl(pAttr);
- if (XMLString::equals(__XTRC(uri), SoapKeywordMapping::Map(SOAP_VER_1_1).pchNamespaceUri))
+ if (XMLString::equals(pchURI, SoapKeywordMapping::Map(SOAP_VER_1_1).pchNamespaceUri))
{
m_nSoapVersion = SOAP_VER_1_1;
}
- else if (XMLString::equals(__XTRC(uri), SoapKeywordMapping::Map(SOAP_VER_1_2).pchNamespaceUri))
+ else if (XMLString::equals(pchURI, SoapKeywordMapping::Map(SOAP_VER_1_2).pchNamespaceUri))
{
m_nSoapVersion = SOAP_VER_1_2;
}