00001 #ifndef _IT_WSDL_WSDL_NODE_H_
00002 #define _IT_WSDL_WSDL_NODE_H_
00003
00004
00005
00006
00007 #include <it_bus/types.h>
00008 #include <it_wsdl/api_defines.h>
00009
00010 #include <it_wsdl/wsdl_type_alias.h>
00011 #include <it_bus/qname.h>
00012 #include <it_bus/io_exception.h>
00013
00014 #ifndef IT_MINIMISE_INCLUDES
00015 #include <it_bus/xml_output_stream.h>
00016 #endif
00017 namespace IT_Bus
00018 {
00019 class XMLOutputStream;
00020 class QName;
00021 }
00022 namespace IT_WSDL
00023 {
00061 enum NodeType
00062 {
00063 WSDL_DEFINITIONS,
00064 WSDL_MESSAGE,
00065 WSDL_PART,
00066 WSDL_PORT_TYPE,
00067 WSDL_BINDING,
00068 WSDL_BINDING_OPERATION,
00069 WSDL_BINDING_INPUT,
00070 WSDL_BINDING_OUTPUT,
00071 WSDL_BINDING_FAULT,
00072 WSDL_SERVICE,
00073 WSDL_PORT,
00074 WSDL_INPUT,
00075 WSDL_OUTPUT,
00076 WSDL_FAULT,
00077 WSDL_OPERATION,
00078 WSDL_TYPES,
00079 WSDL_EXTENSION_ELEMENT,
00080 WSDL_TYPES_IMPORT,
00081 WSDL_TYPES_SCHEMA_IMPORT,
00082 WSDL_TYPES_SCHEMA_INCLUDE,
00083 WSDL_IMPORT
00084 };
00085
00096 class IT_WSDL_API WSDLNode
00097 {
00098 public:
00099 virtual ~WSDLNode();
00100
00106 virtual NodeType
00107 get_node_type() = 0;
00108
00114 virtual const IT_Bus::QName &
00115 get_element_name() const = 0;
00116
00122 virtual const IT_Bus::String &
00123 get_target_namespace() const = 0;
00124
00149 virtual void
00150 write(
00151 IT_Bus::XMLOutputStream & stream
00152 ) const IT_THROW_DECL((IT_Bus::IOException)) = 0;
00153
00154 protected:
00155 WSDLNode() {}
00156
00157 private:
00158
00159 WSDLNode(const WSDLNode&);
00160 void operator=(const WSDLNode&);
00161 };
00162
00163
00164
00168
00169
00174 class IT_WSDL_API WSDLExtensibleNode : public virtual WSDLNode
00175 {
00176 public:
00188 virtual const WSDLExtensionElementList &
00189 get_extension_elements() const = 0;
00190
00202 virtual WSDLExtensionElementList &
00203 get_extension_elements() = 0;
00204
00212 virtual WSDLExtensionElement*
00213 find_extension_element(
00214 const IT_Bus::QName& extension_element
00215 ) const = 0;
00216
00224 virtual WSDLExtensionElement*
00225 create_extension_element(
00226 const IT_Bus::QName& extension_element
00227 ) = 0;
00228
00234 virtual void
00235 add_extension_element(
00236 WSDLExtensionElement* extension_element
00237 ) = 0;
00238
00239 protected:
00240 WSDLExtensibleNode() {}
00241
00242 };
00243
00244
00245 }
00246
00247 #endif