00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00036 #ifndef OW_CIMEXCEPTION_HPP_INCLUDE_GUARD_
00037 #define OW_CIMEXCEPTION_HPP_INCLUDE_GUARD_
00038 #include "OW_config.h"
00039 #include "OW_Exception.hpp"
00040 
00041 namespace OW_NAMESPACE
00042 {
00043 
00044 class OW_COMMON_API CIMException : public Exception
00045 {
00046 public:
00047    enum ErrNoType
00048    {
00050       SUCCESS = 0,
00055       FAILED = 1,
00057       ACCESS_DENIED = 2,
00059       INVALID_NAMESPACE = 3,
00061       INVALID_PARAMETER = 4,
00063       INVALID_CLASS = 5,
00065       NOT_FOUND = 6,
00067       NOT_SUPPORTED = 7,
00071       CLASS_HAS_CHILDREN = 8,
00075       CLASS_HAS_INSTANCES = 9,
00080       INVALID_SUPERCLASS = 10,
00082       ALREADY_EXISTS = 11,
00084       NO_SUCH_PROPERTY = 12,
00086       TYPE_MISMATCH = 13,
00088       QUERY_LANGUAGE_NOT_SUPPORTED = 14,
00090       INVALID_QUERY = 15,
00092       METHOD_NOT_AVAILABLE = 16,
00094       METHOD_NOT_FOUND = 17
00095    };
00096 
00097    CIMException(const char* file, int line, ErrNoType errval,
00098       const char* msg=0, const Exception* otherException = 0);
00099 
00100    virtual ~CIMException() throw();
00101    void swap(CIMException& x);
00102    CIMException(const CIMException& x);
00103    CIMException& operator=(const CIMException& x);
00104    
00105    ErrNoType getErrNo() const { return ErrNoType(getErrorCode()); }
00106    void setErrNo(ErrNoType e) { setErrorCode(e); }
00113    const char* getDescription() const;
00114    virtual const char* type() const;
00115    virtual CIMException* clone() const throw();
00116 
00123    static const char* getCodeDescription(ErrNoType errCode);
00124 
00125 private:
00126    const char* m_description;
00127 };
00128 
00134 #define OW_THROWCIM(errval) \
00135    throw CIMException(__FILE__, __LINE__, (errval))
00136    
00144 #define OW_THROWCIM_SUBEX(errval, subex) \
00145    throw CIMException(__FILE__, __LINE__, (errval), (subex).getMessage(), &(subex))
00146    
00152 #define OW_THROWCIMMSG(errval, msg) \
00153    throw CIMException(__FILE__, __LINE__, (errval), (msg))
00154 
00162 #define OW_THROWCIMMSG_SUBEX(errval, msg, subex) \
00163    throw CIMException(__FILE__, __LINE__, (errval), (msg), &(subex))
00164    
00165 } 
00166 
00167 #endif