it_wsdl/wsdl_node.h

00001 #ifndef _IT_WSDL_WSDL_NODE_H_
00002 #define _IT_WSDL_WSDL_NODE_H_
00003 
00004 // @Copyright 2004 IONA Technologies, Plc. All Rights Reserved.
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 throw((IT_Bus::IOException)) = 0;
00153 
00154       protected:
00155         WSDLNode() {}
00156 
00157       private:
00158         // private and unimplemented to prevent copying
00159         WSDLNode(const WSDLNode&);
00160         void operator=(const WSDLNode&);
00161     };
00162 
00163     //class WSDLExtensionElement;
00164 
00168     //typedef IT_Vector<WSDLExtensionElement *> WSDLExtensionElementList;
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     //typedef IT_Vector<WSDLNode *> WSDLNodeList;
00245 }
00246 
00247 #endif  

Generated on Tue Mar 20 15:27:54 2007 for Artix by  doxygen 1.5.1-p1