[ http://issues.apache.org/jira/browse/AXISCPP-1010?page=comments#action_12459318 ] Franz Fehringer commented on AXISCPP-1010: ------------------------------------------
This is current and not 1.6 Beta btw. > new method Call:clearSOAPMethodAttributes() > ------------------------------------------- > > Key: AXISCPP-1010 > URL: http://issues.apache.org/jira/browse/AXISCPP-1010 > Project: Axis-C++ > Issue Type: Improvement > Components: Client - API > Affects Versions: 1.6 Beta > Environment: WIN2K VS6SP6 JDK1.5.0:07 > Reporter: Franz Fehringer > > I invented a new method Call:clearSOAPMethodAttributes() to avoid double > serializing of the same attributes at operation level. > The relevant svn diffs are given below. > An example scenario > ppt->getCall()->initialize(CPP_DOC_PROVIDER); > ppt->getCall()->setTransportProperty(SOAPACTION_HEADER , "#SearchRooms"); > ppt->getCall()->setSOAPVersion(SOAP_VER_1_1); > ppt->getCall()->setOperation("SearchRoomsRequest", > "http://www.pegs-pegstour.com/API/XMLSchema/1.0.1"); > ppt->getCall()->clearSOAPMethodAttributes(); > ppt->getCall()->setSOAPMethodAttribute("returnRateNotes", "", "false"); > ppt->getCall()->setSOAPMethodAttribute("returnAllocationRemaining", "", > "true"); > ppt->getCall()->setSOAPMethodAttribute("includeOnRequest", "", "true"); > ppt->getCall()->setSOAPMethodAttribute("includeNonSeamless", "", "false"); > ppt->getCall()->setSOAPMethodAttribute("checkAvailabilityLevel", "", "ROOM"); > $ pwd > /cd/d/Quellen/SVN/axis/c/include > Index: axis/client/Call.hpp > =================================================================== > --- axis/client/Call.hpp (Revision 480584) > +++ axis/client/Call.hpp (Arbeitskopie) > @@ -250,6 +250,8 @@ > const AxisChar * pUri, > const AxisChar * pValue); > > + void clearSOAPMethodAttributes(); > + > /** > * Method for adding complex parameters to the engine, ready to be > serialised. > * An example of this method (taken from the automatically generated > stubs > $ pwd > /cd/d/Quellen/SVN/axis/c/src/soap > Index: SoapSerializer.h > =================================================================== > --- SoapSerializer.h (Revision 480584) > +++ SoapSerializer.h (Arbeitskopie) > @@ -197,6 +197,8 @@ > IHeaderBlock* getNextHeaderBlock(); > > int setSOAPMethodAttribute(Attribute* pAttribute); > + void clearSOAPMethodAttributes(); > + > SoapMethod* getSOAPMethod(); > IHeaderBlock* createHeaderBlock(const AxisChar *pachLocalName, > const AxisChar *pachUri); > Index: SoapMethod.h > =================================================================== > --- SoapMethod.h (Revision 480584) > +++ SoapMethod.h (Arbeitskopie) > @@ -89,12 +89,19 @@ > virtual ~SoapMethod(); > > /** > - * This methos will clear up all the current out params in preperation of > a > + * This method will clear up all the current out params in preparation of > a > * new method call > */ > void clearOutParams(); > + > + /** > + * This method will clear up all the current attributes in preparation of > a > + * new method call > + */ > + void clearAttributes(); > }; > > AXIS_CPP_NAMESPACE_END > > #endif > + > ndex: SoapSerializer.cpp > =================================================================== > --- SoapSerializer.cpp (Revision 480584) > +++ SoapSerializer.cpp (Arbeitskopie) > @@ -1021,6 +1021,15 @@ > return AXIS_FAIL; > } > > +void SoapSerializer::clearSOAPMethodAttributes() > +{ > + if (m_pSoapEnvelope && m_pSoapEnvelope->m_pSoapBody && > + m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod) > + { > + m_pSoapEnvelope->m_pSoapBody->m_pSoapMethod->clearAttributes(); > + } > +} > + > int SoapSerializer::serializeAnyObject( AnyType * pAnyObject) > { > for( int i = 0; i < pAnyObject->_size; i++) > Index: SoapMethod.cpp > =================================================================== > --- SoapMethod.cpp (Revision 480584) > +++ SoapMethod.cpp (Arbeitskopie) > @@ -225,5 +225,18 @@ > m_OutputParams.clear(); > } > > +void SoapMethod::clearAttributes() > +{ > + if (m_attributes.empty()) > + return; > + > + list<Attribute*>::iterator it; > + > + for (it = m_attributes.begin(); it != m_attributes.end(); ++it) > + delete *it; > + > + m_attributes.clear(); > +} > + > AXIS_CPP_NAMESPACE_END > > $ pwd > /cd/d/Quellen/SVN/axis/c/src/engine/client > Index: Call.cpp > =================================================================== > --- Call.cpp (Revision 480584) > +++ Call.cpp (Arbeitskopie) > @@ -1088,6 +1088,11 @@ > m_pIWSSZ->setSOAPMethodAttribute( ((Attribute *) pAttribute)->clone()); > } > > +void Call::clearSOAPMethodAttributes() > +{ > + m_pIWSSZ->clearSOAPMethodAttributes(); > +} > + > xsd__string Call::getFaultAsXMLString() > { > return m_pIWSDZ->getFaultAsXMLString(); > @@ -1229,4 +1234,4 @@ > it++; > } > m_soapFaults.clear(); > -} > \ Kein Zeilenvorschub am Ende der Datei > +} > Index: Stub.cpp > =================================================================== > --- Stub.cpp (Revision 480584) > +++ Stub.cpp (Arbeitskopie) > @@ -39,6 +39,7 @@ > m_pCall->setProtocol (eProtocol); > m_pTransport = m_pCall->getTransport (); > m_pTransport->setEndpointUri( pcEndPointUri); > + m_viCurrentSOAPHeaderBlock = m_vSOAPHeaderBlocks.end(); > > // SSL channel related initilizations > char * pcSSLChannelInfo = g_pConfig->getAxisConfProperty( > AXCONF_SECUREINFO); -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
