Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

IHeaderBlock.hpp

00001 /*
00002  *   Copyright 2003-2004 The Apache Software Foundation.
00003 // (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
00004  *
00005  *   Licensed under the Apache License, Version 2.0 (the "License");
00006  *   you may not use this file except in compliance with the License.
00007  *   You may obtain a copy of the License at
00008  *
00009  *       http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  *   Unless required by applicable law or agreed to in writing, software
00012  *   distributed under the License is distributed on an "AS IS" BASIS,
00013  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  *   See the License for the specific language governing permissions and
00015  *   limitations under the License.
00016  */
00017 
00018 #if !defined(_IHEADERBLOCK_H____OF_AXIS_INCLUDED_)
00019 #define _IHEADERBLOCK_H____OF_AXIS_INCLUDED_
00020 
00021 #include "BasicNode.hpp"
00022 #include "SoapEnvVersions.hpp"
00023 #include <axis/IAttribute.hpp>
00024 #include <axis/INamespace.hpp>
00025 
00026 AXIS_CPP_NAMESPACE_START
00027 
00028 typedef enum 
00029 {   ROLE_NEXT=1, ROLE_NONE=2, 
00030     ROLE_ULTIMATE_RECEIVER=3, 
00031     ACTOR=4, MUST_UNDERSTAND_TRUE= 5, 
00032     MUST_UNDERSTAND_FALSE=6
00033 } HEADER_BLOCK_STD_ATTR_TYPE;
00034 
00035 
00047 class IHeaderBlock
00048 {
00049 public:
00057         /* TO DO: We need to remove this completely
00058         *
00059         virtual int addNamespaceDecl(INamespace *pAttribute)=0;
00060         */
00061 
00070     virtual INamespace* createNamespaceDecl(const AxisChar *prefix, 
00071             const AxisChar *uri)=0; 
00072 
00073     virtual BasicNode* getFirstChild() =0;
00079     virtual int getNoOfChildren() =0;
00080 
00108     virtual BasicNode* createChild(NODE_TYPE eNODE_TYPE,  
00109         AxisChar *pachLocalName, AxisChar *pachPrefix, AxisChar *pachUri, 
00110         AxisChar* pachValue) = 0;
00111 
00133     virtual BasicNode* createImmediateChild(NODE_TYPE eNODE_TYPE, 
00134         AxisChar *pachLocalName, AxisChar *pachPrefix, AxisChar *pachUri, 
00135         AxisChar* pachValue) = 0;
00136 
00169     virtual IAttribute* createStdAttribute(HEADER_BLOCK_STD_ATTR_TYPE 
00170         eStdAttrType, SOAP_VERSION eSOAP_VERSION) =0;
00171 
00185     virtual IAttribute* createAttribute(const AxisChar* localname, 
00186         const AxisChar* prefix, 
00187         const AxisChar* uri, const AxisChar* value) = 0;
00188 
00201     virtual IAttribute* createAttribute(const AxisChar *localname, 
00202         const AxisChar *prefix, const AxisChar *value) = 0;
00211      virtual const AxisChar* getAttributeValue(const AxisChar* localname,
00212          const AxisChar* prefix) = 0;
00213  
00214      virtual const AxisChar* getAttributeUri( const AxisChar * localname,
00215          const AxisChar* prefix) = 0;
00216 
00229     virtual BasicNode* createImmediateChild(NODE_TYPE eNODE_TYPE) = 0;
00230 
00245     virtual BasicNode* createChild(NODE_TYPE eNODE_TYPE)=0;
00246 
00254     virtual BasicNode* getLastChild() = 0;
00255 
00264     virtual BasicNode* getChild(int iChildPosition) = 0;
00265 
00273     virtual int addChild(BasicNode* pBasicNode)=0;
00274 
00281     virtual int setLocalName(const AxisChar* localname)=0;
00282     
00287     virtual const AxisChar * getLocalName()=0;
00288 
00297     virtual int setURI(const AxisChar* uri)=0;
00298 
00299         /* 
00300          * Commented by Susantha - 21/06/2004
00301          * The prefix should be decided by the Serializer at runtime
00302          * 
00303          * Uncommented by Mark Whitlock - 24/8/04 after discussion 
00304          * on the mailing list agreed to add back in this method.
00305          * Jira issue AXISCPP-135
00306          */
00313     virtual int setPrefix(const AxisChar* prefix)=0;
00314 
00315 #ifdef UNIT_TESTING_ON
00316 
00319     virtual int initializeForTesting() = 0;
00320 #endif
00321     
00322     IHeaderBlock(){/*empty body as there are no member variable*/};
00323 
00324     IHeaderBlock(const IHeaderBlock& rCopy){/*empty body as there are no member variable*/};
00325 
00331     virtual IHeaderBlock* clone() = 0;
00332 
00336     virtual ~IHeaderBlock() {};
00337 };
00338 
00339 AXIS_CPP_NAMESPACE_END
00340 
00341 #endif 
00342 

Generated on Tue May 17 02:30:31 2005 for AxisC++ by doxygen1.2.18