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_bus_pdk/xml_node.h>
00012
00013 #include <it_wsdl/wsdl_node.h>
00014 #include <it_wsdl/wsdl_error_handler.h>
00015
00016 #include <it_bus/complex_type_reader.h>
00017 #include <it_bus/complex_type_writer.h>
00018
00019
00020 namespace IT_WSDL
00021 {
00022 class WSDLExtensionFactory;
00023 class WSDLExtensionFactoryMap;
00024
00034 class IT_WSDL_API WSDLExtensionElement :
00035 public WSDLNode,
00036 public virtual IT_Bus::AnyType
00037 {
00038 public:
00039 virtual
00040 ~WSDLExtensionElement();
00041
00047 virtual NodeType
00048 get_node_type();
00049
00050 virtual
00051 WSDLExtensionFactory &
00052 get_extension_factory() = 0;
00053
00054 virtual bool
00055 parse(
00056 const IT_Bus::XMLIterator & port_type_iter,
00057 const IT_Bus::XMLNode& parent_node,
00058 WSDLErrorHandler & error_handler
00059 ) = 0;
00060
00061 virtual void
00062 write(
00063 IT_Bus::XMLOutputStream &
00064 ) const throw((IT_Bus::IOException))
00065 {
00066
00067 }
00068
00069 virtual WSDLExtensionElement*
00070 clone() const
00071 {
00072 return 0;
00073 }
00074
00075 virtual WSDLExtensionElement*
00076 clone_unique(const IT_Bus::QName & ) const
00077 {
00078 return clone();
00079 }
00080
00081 virtual bool
00082 export_to_client() const;
00083
00089 virtual const IT_Bus::QName &
00090 get_type() const
00091 {
00092 return IT_Bus::QName::EMPTY_QNAME;
00093 }
00094
00095 virtual void
00096 read(
00097 const IT_Bus::QName& ,
00098 IT_Bus::ComplexTypeReader&
00099 ) throw((IT_Bus::DeserializationException))
00100 {
00101
00102 }
00103
00104 virtual void
00105 write(
00106 const IT_Bus::QName& ,
00107 IT_Bus::ComplexTypeWriter&
00108 ) const throw((IT_Bus::SerializationException))
00109 {
00110
00111 }
00112
00113 virtual
00114 IT_Bus::AnyType&
00115 copy(
00116 const IT_Bus::AnyType &
00117 )
00118 {
00119 return *this;
00120 }
00121
00122
00123 protected:
00124 WSDLExtensionElement();
00125
00126 private:
00127
00128 WSDLExtensionElement&
00129 operator = (
00130 const WSDLExtensionElement& rhs
00131 );
00132
00133 WSDLExtensionElement(
00134 const WSDLExtensionElement& rhs
00135 );
00136 };
00137 }
00138
00139 #endif