00001 #ifndef _IT_BUS_CONFIG_SOAP_WSDL_ADDRESS_H_ 00002 #define _IT_BUS_CONFIG_SOAP_WSDL_ADDRESS_H_ 00003 00004 // @Copyright 2004 IONA Technologies, Plc. All Rights Reserved. 00005 // 00006 00007 #ifndef IT_MINIMISE_INCLUDES 00008 #include <it_bus_pdk/messaging_transport.h> 00009 #endif 00010 #include <it_ts/mutex.h> 00011 #include <it_bus/sequence_complex_type.h> 00012 #include <it_bus_config/soap_wsdl_extension_element.h> 00013 #include <it_bus_config/endpoint_address.h> 00014 00015 namespace IT_WSDL 00016 { 00017 class WSDLPort; 00018 } 00019 namespace IT_Bus 00020 { 00025 class IT_SOAP_API SoapWSDLAddress : 00026 public SoapWSDLExtensionElement, 00027 public IT_Bus::SequenceComplexType, 00028 public EndpointAddress 00029 { 00030 public: 00031 00032 SoapWSDLAddress(); 00033 00034 SoapWSDLAddress( 00035 IT_WSDL::WSDLExtensibleNode * parent 00036 ); 00037 00038 virtual ~SoapWSDLAddress(); 00039 00048 const String & 00049 get_location() const; 00050 00057 void 00058 set_location( 00059 const String& location 00060 ); 00061 00062 bool 00063 parse( 00064 const XMLIterator & element_iterator, 00065 const IT_Bus::XMLNode & element, 00066 IT_WSDL::WSDLErrorHandler & error_handler 00067 ); 00068 00069 virtual bool 00070 export_to_client() const 00071 { 00072 return true; 00073 } 00074 00082 static const SoapWSDLAddress* 00083 get_from_port( 00084 const IT_WSDL::WSDLPort& wsdl_port 00085 ); 00086 00092 virtual void 00093 write_attributes( 00094 IT_Bus::XMLOutputStream & stream 00095 ) const throw((IT_Bus::IOException)); 00096 00097 00104 virtual void 00105 read( 00106 const IT_Bus::QName& element_name, 00107 ComplexTypeReader & reader 00108 ) throw((IT_Bus::DeserializationException)); 00109 00116 virtual void 00117 write( 00118 const IT_Bus::QName& element_name, 00119 IT_Bus::ComplexTypeWriter & writer 00120 ) const throw((IT_Bus::SerializationException)); 00121 00135 virtual 00136 IT_WSDL::WSDLExtensionElement* 00137 clone() const; 00138 00154 virtual 00155 IT_WSDL::WSDLExtensionElement* 00156 clone_unique( 00157 const IT_Bus::QName& name 00158 ) const; 00159 00160 00161 virtual void 00162 write( 00163 IT_Bus::XMLOutputStream & stream 00164 ) const throw((IT_Bus::IOException)); 00165 00166 00167 /* 00168 * SequenceComplexType virtual methods. 00169 */ 00170 00171 virtual void 00172 read_contents( 00173 ComplexTypeReader & os 00174 ) throw((IT_Bus::DeserializationException)); 00175 00176 virtual void 00177 write_contents( 00178 ComplexTypeWriter & os 00179 ) const throw((IT_Bus::SerializationException)); 00180 00181 virtual void 00182 write_attributes( 00183 ComplexTypeWriter & writer 00184 ) const throw((IT_Bus::SerializationException)); 00185 00186 virtual void 00187 read_attributes( 00188 ComplexTypeReader & reader 00189 ) throw((IT_Bus::DeserializationException)); 00190 00191 00192 virtual const IT_Bus::QName & 00193 get_type() const; 00194 00195 virtual 00196 AnyType& 00197 copy( 00198 const AnyType & rhs 00199 ); 00200 00201 SoapWSDLAddress& operator=( 00202 const SoapWSDLAddress & rhs 00203 ); 00204 00205 void 00206 set_default_port( 00207 unsigned long default_port 00208 ); 00209 00210 unsigned long 00211 get_default_port() const; 00212 00213 protected: 00214 00215 void 00216 replace_zero_port_in_url(); 00217 00218 private: 00219 00220 00221 SoapWSDLAddress ( 00222 const SoapWSDLAddress& rhs 00223 ); 00224 00225 String m_location; 00226 unsigned long m_default_port; 00227 00228 IT_Mutex m_lock; 00229 }; 00230 } 00231 00232 #endif