00001 #ifndef _IT_WSDL_WSDL_EXTENSION_ELEMENT_H_
00002 #define _IT_WSDL_WSDL_EXTENSION_ELEMENT_H_
00003
00004
00005
00006
00007 #include <it_wsdl/api_defines.h>
00008
00009 #include <it_bus/types.h>
00010 #include <it_bus/any_type.h>
00011 #include <it_wsdl/wsdl_node.h>
00012 #include <it_wsdl/wsdl_error_handler.h>
00013
00014 #ifndef IT_MINIMISE_INCLUDES
00015 #include <it_bus_pdk/xml_node.h>
00016 #include <it_bus/complex_type_reader.h>
00017 #include <it_bus/complex_type_writer.h>
00018 #endif
00019
00020 namespace IT_Bus
00021 {
00022 class XMLIterator;
00023 class XMLNode;
00024 class QName;
00025 class IOException;
00026 }
00027
00028 namespace IT_WSDL
00029 {
00030 class WSDLExtensionFactory;
00031 class WSDLExtensionFactoryMap;
00032 class WSDLErrorHandler;
00033
00043 class IT_WSDL_API WSDLExtensionElement : public WSDLNode,
00044 public virtual IT_Bus::AnyType
00045 {
00046 public:
00047 virtual
00048 ~WSDLExtensionElement();
00049
00055 virtual NodeType
00056 get_node_type();
00057
00058 virtual
00059 WSDLExtensionFactory &
00060 get_extension_factory() = 0;
00061
00062 virtual bool
00063 parse(
00064 const IT_Bus::XMLIterator & port_type_iter,
00065 const IT_Bus::XMLNode& parent_node,
00066 WSDLErrorHandler & error_handler
00067 ) = 0;
00068
00069 virtual void
00070 write(
00071 IT_Bus::XMLOutputStream &
00072 ) const throw((IT_Bus::IOException))
00073 {
00074
00075 }
00076
00077 virtual WSDLExtensionElement*
00078 clone() const
00079 {
00080 return 0;
00081 }
00082
00083 virtual WSDLExtensionElement*
00084 clone_unique(const IT_Bus::QName & ) const
00085 {
00086 return clone();
00087 }
00088
00089 virtual bool
00090 export_to_client() const;
00091
00097 virtual const IT_Bus::QName &
00098 get_type() const
00099 {
00100 return IT_Bus::QName::EMPTY_QNAME;
00101 }
00102
00103 virtual void
00104 read(
00105 const IT_Bus::QName& ,
00106 IT_Bus::ComplexTypeReader&
00107 ) throw((IT_Bus::DeserializationException))
00108 {
00109
00110 }
00111
00112 virtual void
00113 write(
00114 const IT_Bus::QName& ,
00115 IT_Bus::ComplexTypeWriter&
00116 ) const throw((IT_Bus::SerializationException))
00117 {
00118
00119 }
00120
00121 virtual
00122 IT_Bus::AnyType&
00123 copy(
00124 const IT_Bus::AnyType &
00125 )
00126 {
00127 return *this;
00128 }
00129
00130
00131 protected:
00132 WSDLExtensionElement();
00133
00134 private:
00135
00136 WSDLExtensionElement&
00137 operator = (
00138 const WSDLExtensionElement& rhs
00139 );
00140
00141 WSDLExtensionElement(
00142 const WSDLExtensionElement& rhs
00143 );
00144 };
00145 }
00146
00147 #endif