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

AxisException.hpp

Go to the documentation of this file.
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  *
00019  */
00020 
00028 #ifndef __AXISEXCEPTION_H_OF_AXIS_INCLUDED_
00029 #define __AXISEXCEPTION_H_OF_AXIS_INCLUDED_
00030 
00031 #include <axis/GDefine.hpp>
00032 #include <string>
00033 #include <exception>
00034 #include <new>
00035 #include <typeinfo>
00036 #include <stdexcept>
00037 
00038 AXIS_CPP_NAMESPACE_START
00039 using namespace std;
00040 
00041 /*
00042  * The following enumeration is used to serve the Axis C++ codes for 
00043  * faults.
00044  */
00045 #define CLIENT_FAULT_OFFSET      0x0
00046 #define SERVER_FAULT_OFFSET      0x1000
00047 #define SOAP_FAULT_OFFSET        0x2000
00048 #define ENGINE_FAULT_OFFSET      0x3000
00049 #define WSDD_FAULT_OFFSET        0x4000
00050 #define TRANSPORT_FAULT_OFFSET   0x5000
00051 #define CONFIG_FAULT_OFFSET      0x6000
00052 #define AXISC_FAULT_OFFSET       0x7000
00053 
00054 typedef enum 
00055 {
00056     /*The notation used for naming these exceptions is as follows
00057      *CLIENT at the beginning means when this interpreted as a soap fault
00058      *    it's fault code is CLIENT
00059      *SERVER at the beginning means when this interpreted as a soap fault
00060      *    it's fault code is SERVER
00061      *SOAP that comes next to CLIENT/SERVER means this is a soap releated
00062      *    exception
00063      *ENGINE that comes next to CLIENT/SERVER means this is a axisc++ engine
00064      *    related exception
00065      *WSDD that comes next to CLIENT/SERVER means this is a wsdd releated
00066      *    exception
00067      *TRANSPORT that comes next to CLIENT/SERVER means this is a transport releated
00068      *    exception
00069      *CONFIG that comes next to CLIENT/SERVER means this is a axisc++ configuration
00070      *    related exception
00071      *AXISC ?
00072      */
00073     /* SOAP faults */
00074 /*0*/    SOAP_VERSION_MISMATCH, /* VersionMismatch faults */
00075 /*1*/    SOAP_MUST_UNDERSTAND,    /* MustUnderstand faults */
00076 
00077     /* Client faults */
00078 /*2*/    CLIENT_SOAP_MESSAGE_INCOMPLETE,
00079 /*3*/    CLIENT_SOAP_SOAP_ACTION_EMTPY,
00080 /*4*/    CLIENT_SOAP_SOAP_CONTENT_ERROR,
00081 /*5*/    CLIENT_SOAP_NO_SOAP_METHOD,
00082 /*6*/    CLIENT_SOAP_CONTENT_NOT_SOAP,
00083 /*7*/    CLIENT_WSDD_SERVICE_NOT_FOUND,
00084 /*8*/    CLIENT_WSDD_METHOD_NOT_ALLOWED,
00085 /*9*/    CLIENT_WSDD_PARA_TYPE_MISMATCH,
00086 /*10*/   CLIENT_ENGINE_CLIENT_HANDLER_FAILED,
00087 /*11*/   CLIENT_TRANSPORT_EXCEPTION,
00088 /*12*/   CLIENT_TRANSPORT_OPEN_CONNECTION_FAILED,
00089 /*13*/   CLIENT_TRANSPORT_TYPE_MISMATCH,
00090 /*14*/   CLIENT_TRANSPORT_HAS_NO_UNSECURE_TRANSPORT_LAYER,
00091 /*15*/   CLIENT_TRANSPORT_HAS_NO_SECURE_TRANSPORT_LAYER,
00092 /*16*/   CLIENT_SSLCHANNEL_RECEPTION_EXCEPTION,
00093 /*17*/   CLIENT_SSLCHANNEL_SENDING_EXCEPTION,
00094 /*18*/   CLIENT_SSLCHANNEL_CHANNEL_INIT_ERROR,
00095 /*19*/   CLIENT_SSLCHANNEL_SOCKET_CREATE_ERROR,
00096 /*20*/   CLIENT_SSLCHANNEL_SOCKET_CONNECT_ERROR,
00097 /*21*/   CLIENT_SSLCHANNEL_INVALID_SOCKET_ERROR,
00098 /*22*/   CLIENT_SSLCHANNEL_CONTEXT_CREATE_ERROR,
00099 /*23*/   CLIENT_SSLCHANNEL_ERROR,
00100 /*24*/   CLIENT_MIME_CONTENT_ID_NOT_UNIQUE,
00101 
00102     /* Server faults */
00103 /*25*/    SERVER_ENGINE_EXCEPTION,
00104 /*26*/    SERVER_ENGINE_COULD_NOT_LOAD_SRV,
00105 /*27*/    SERVER_ENGINE_COULD_NOT_LOAD_HDL,
00106 /*28*/    SERVER_ENGINE_LOADING_TRANSPORT_FAILED,
00107 /*29*/    SERVER_ENGINE_LOADING_PARSER_FAILED,
00108 /*30*/    SERVER_ENGINE_HANDLER_FAILED,
00109 /*31*/    SERVER_ENGINE_WEBSERVICE_FAILED,
00110 /*32*/    SERVER_ENGINE_HANDLER_INIT_FAILED,
00111 /*33*/    SERVER_ENGINE_HANDLER_CREATION_FAILED,
00112 /*34*/    SERVER_ENGINE_LIBRARY_LOADING_FAILED,
00113 /*35*/    SERVER_ENGINE_HANDLER_NOT_LOADED,
00114 /*36*/    SERVER_ENGINE_HANDLER_BEING_USED,
00115 /*37*/    SERVER_ENGINE_GET_HANDLER_FAILED,
00116 /*38*/    SERVER_ENGINE_WRONG_HANDLER_TYPE,
00117 /*39*/    SERVER_CONFIG_EXCEPTION,
00118 /*40*/    SERVER_CONFIG_TRANSPORT_CONF_FAILED,
00119 /*41*/    SERVER_CONFIG_LIBRARY_PATH_EMPTY,
00120 /*42*/    SERVER_WSDD_FILE_NOT_FOUND,
00121 /*43*/    SERVER_WSDD_EXCEPTION,
00122 /*44*/    SERVER_WSDD_NO_HANDLERS_CONFIGURED,
00123 /*45*/    SERVER_SOAP_EXCEPTION,
00124 /*46*/    SERVER_TRANSPORT_EXCEPTION,
00125 /*47*/    SERVER_TRANSPORT_RECEPTION_EXCEPTION,
00126 /*48*/    SERVER_TRANSPORT_SENDING_EXCEPTION,
00127 /*49*/    SERVER_TRANSPORT_PROCESS_EXCEPTION,
00128 /*50*/    SERVER_TRANSPORT_UNKNOWN_HTTP_RESPONSE,
00129 /*51*/    SERVER_TRANSPORT_HTTP_EXCEPTION,
00130 /*52*/    SERVER_TRANSPORT_UNEXPECTED_STRING,
00131 /*53*/    SERVER_TRANSPORT_CHANNEL_INIT_ERROR,
00132 /*54*/    SERVER_TRANSPORT_SOCKET_CREATE_ERROR,
00133 /*55*/    SERVER_TRANSPORT_SOCKET_CONNECT_ERROR,
00134 /*56*/    SERVER_TRANSPORT_INVALID_SOCKET,
00135 /*57*/    SERVER_TRANSPORT_OUTPUT_STREAMING_ERROR,
00136 /*58*/    SERVER_TRANSPORT_INPUT_STREAMING_ERROR,
00137 /*59*/    SERVER_TRANSPORT_TIMEOUT_EXCEPTION,
00138 /*60*/    SERVER_TRANSPORT_TIMEOUT_EXPIRED,
00139 /*61*/    SERVER_TRANSPORT_LOADING_SSLCHANNEL_FAILED,
00140 /*62*/    SERVER_TRANSPORT_LOADING_CHANNEL_FAILED,
00141 /*63*/    SERVER_TRANSPORT_BUFFER_EMPTY,
00142 /*64*/    SERVER_PARSE_BUFFER_EMPTY,
00143 /*65*/    SERVER_PARSE_PARSER_FAILED, 
00144 /*66*/    SERVER_PARSE_TRANSPORT_FAILED,
00145 /*67*/    SERVER_TEST_EXCEPTION,
00146 /*68*/    SERVER_UNKNOWN_ERROR,
00147 /*69*/    SERVER_CLIENT_ENGINE_MISMATCH,
00148 
00149     /* AXIS C faults */
00150     /*Following exceptions are not releated to soap faults
00151      */
00152 /*70*/    AXISC_SERVICE_THROWN_EXCEPTION,
00153 /*71*/    AXISC_UNKNOWN_ELEMENT_EXCEPTION,
00154 /*72*/    AXISC_NODE_VALUE_MISMATCH_EXCEPTION,
00155 /*73*/    AXISC_READ_CONF_EXCEPTION,
00156 
00157     /* CONFIG faults */
00158     /*Following exceptions are releated to configuration faults
00159      */
00160 /*74*/    CONFIG_DEFAULTS_ALREADY_SET,
00161     /*
00162      * This FAULT_LAST is not used as a fault code, but instead is used 
00163      * internaly in the code. Developers should not use this as a fault 
00164      * code.
00165      */
00166 /*75*/    FAULT_LAST 
00167 } AXISC_EXCEPTIONS;
00168 
00180 class STORAGE_CLASS_INFO AxisException :public exception
00181 {
00182 public:
00184     AxisException():m_iExceptionCode(0), m_sMessage(NULL){};
00185 
00197     AxisException(const int iExceptionCode, const char* pcMessage = NULL):m_iExceptionCode(iExceptionCode), m_sMessage(NULL)
00198     {
00199         setMessage(pcMessage);    
00200     }
00201 
00210     AxisException(const AxisException& e):m_iExceptionCode(e.m_iExceptionCode), m_sMessage(NULL)
00211     {
00212         setMessage(e.m_sMessage);
00213     };
00214     
00216     virtual ~AxisException() throw()
00217     {
00218         if (m_sMessage)
00219             delete [] m_sMessage;
00220     };
00221 
00225     virtual const char* what() const throw() { return m_sMessage; };
00226 
00228     virtual const int getExceptionCode() const { return m_iExceptionCode; }
00229 
00231     void setExceptionCode(int exceptionCode) { m_iExceptionCode = exceptionCode;}
00232 
00234     const char* getMessage() const { return what(); }
00235     
00240     void setMessage(const char* psMessage)
00241     {
00242         if (m_sMessage)
00243         {
00244             delete [] m_sMessage;
00245             m_sMessage = NULL;
00246         }
00247 
00248         if (psMessage)
00249         {
00250             m_sMessage = new char[strlen(psMessage) + 1];
00251             strcpy(m_sMessage,psMessage);
00252         }        
00253     }
00254     
00256     void setExceptionFromException(const AxisException& e)
00257     {
00258         m_iExceptionCode = e.m_iExceptionCode;
00259         setMessage(e.m_sMessage);
00260     }
00261 
00266     void resetException()
00267     {
00268         m_iExceptionCode = 0;
00269         setMessage((const char *)NULL);
00270     }
00271 
00272 protected:
00277     int m_iExceptionCode;
00278 
00284     char* m_sMessage;
00285 };
00286 
00287 AXIS_CPP_NAMESPACE_END
00288 
00289 #endif
00290 

Generated on Fri Mar 3 01:12:35 2006 for AxisC++ by doxygen1.2.18