00001 #ifndef _IT_BUS_CONFIG_SOAP12_WSDL_ADDRESS_H_ 00002 #define _IT_BUS_CONFIG_SOAP12_WSDL_ADDRESS_H_ 00003 00004 // @Copyright 2006 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/soap12_wsdl_extension_element.h> 00013 #include <it_bus_config/endpoint_address.h> 00014 00015 namespace IT_WSDL 00016 { 00017 class WSDLPort; 00018 } 00019 00020 namespace IT_Bus 00021 { 00026 class IT_SOAP12_API Soap12WSDLAddress : 00027 public Soap12WSDLExtensionElement, 00028 public IT_Bus::SequenceComplexType, 00029 public EndpointAddress 00030 { 00031 public: 00032 00033 Soap12WSDLAddress(); 00034 00035 Soap12WSDLAddress( 00036 IT_WSDL::WSDLExtensibleNode* parent 00037 ); 00038 00039 virtual ~Soap12WSDLAddress(); 00040 00041 Soap12WSDLAddress& 00042 operator=( 00043 const Soap12WSDLAddress& rhs 00044 ); 00045 00054 const String& 00055 get_location() const; 00056 00063 void 00064 set_location( 00065 const String& location 00066 ); 00067 00068 bool 00069 parse( 00070 const XMLIterator& element_iterator, 00071 const IT_Bus::XMLNode& element, 00072 IT_WSDL::WSDLErrorHandler& error_handler 00073 ); 00074 00075 virtual bool 00076 export_to_client() const; 00077 00085 static const Soap12WSDLAddress* 00086 get_from_port( 00087 const IT_WSDL::WSDLPort& wsdl_port 00088 ); 00089 00095 virtual void 00096 write_attributes( 00097 IT_Bus::XMLOutputStream& stream 00098 ) const throw((IT_Bus::IOException)); 00099 00100 00107 virtual void 00108 read( 00109 const IT_Bus::QName& element_name, 00110 ComplexTypeReader& reader 00111 ) throw((IT_Bus::DeserializationException)); 00112 00119 virtual void 00120 write( 00121 const IT_Bus::QName& element_name, 00122 IT_Bus::ComplexTypeWriter& writer 00123 ) const throw((IT_Bus::SerializationException)); 00124 00138 virtual IT_WSDL::WSDLExtensionElement* 00139 clone() const; 00140 00156 virtual IT_WSDL::WSDLExtensionElement* 00157 clone_unique( 00158 const IT_Bus::QName& name 00159 ) const; 00160 00161 00162 virtual void 00163 write( 00164 IT_Bus::XMLOutputStream& stream 00165 ) const throw((IT_Bus::IOException)); 00166 00167 /* 00168 * SequenceComplexType virtual methods. 00169 */ 00170 virtual void 00171 read_contents( 00172 ComplexTypeReader& os 00173 ) throw((IT_Bus::DeserializationException)); 00174 00175 virtual void 00176 write_contents( 00177 ComplexTypeWriter& os 00178 ) const throw((IT_Bus::SerializationException)); 00179 00180 virtual void 00181 write_attributes( 00182 ComplexTypeWriter& writer 00183 ) const throw((IT_Bus::SerializationException)); 00184 00185 virtual void 00186 read_attributes( 00187 ComplexTypeReader& reader 00188 ) throw((IT_Bus::DeserializationException)); 00189 00190 00191 virtual const IT_Bus::QName& 00192 get_type() const; 00193 00194 virtual AnyType& 00195 copy( 00196 const AnyType& rhs 00197 ); 00198 00199 void 00200 set_default_port( 00201 unsigned long default_port 00202 ); 00203 00204 unsigned long 00205 get_default_port() const; 00206 00207 protected: 00208 00209 void 00210 replace_zero_port_in_url(); 00211 00212 private: 00213 Soap12WSDLAddress ( 00214 const Soap12WSDLAddress& rhs 00215 ); 00216 00217 String m_location; 00218 unsigned long m_default_port; 00219 IT_Mutex m_lock; 00220 }; 00221 } 00222 00223 #endif