1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef __FRAMEWORK_LOADENV_LOADENVEXCEPTION_HXX_ 25*b1cdbd2cSJim Jagielski #define __FRAMEWORK_LOADENV_LOADENVEXCEPTION_HXX_ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski //_______________________________________________ 28*b1cdbd2cSJim Jagielski // includes of own project 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski //_______________________________________________ 31*b1cdbd2cSJim Jagielski // includes of uno interface 32*b1cdbd2cSJim Jagielski 33*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Any.h> 34*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Exception.hpp> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski //_______________________________________________ 37*b1cdbd2cSJim Jagielski // includes of an other project 38*b1cdbd2cSJim Jagielski #include <rtl/string.hxx> 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski //_______________________________________________ 41*b1cdbd2cSJim Jagielski // namespace 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski namespace framework{ 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski #ifndef css // conflict with define :-( 46*b1cdbd2cSJim Jagielski namespace css = ::com::sun::star; 47*b1cdbd2cSJim Jagielski #endif 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski //_______________________________________________ 50*b1cdbd2cSJim Jagielski // definitions 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski /** @short specify an exception, which can be used inside the 53*b1cdbd2cSJim Jagielski load environment only. 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielski @descr Of course outside code must wrapp it, to transport 56*b1cdbd2cSJim Jagielski the occured information to its caller. 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski @author as96863 59*b1cdbd2cSJim Jagielski */ 60*b1cdbd2cSJim Jagielski class LoadEnvException 61*b1cdbd2cSJim Jagielski { 62*b1cdbd2cSJim Jagielski //___________________________________________ 63*b1cdbd2cSJim Jagielski // const 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski public: 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski /** @short Can be used as an ID for an instance of a LoadEnvException. 68*b1cdbd2cSJim Jagielski @descr To prevent errors on adding/removing/changing such IDs here, 69*b1cdbd2cSJim Jagielski an enum field is used. Its int values are self organized ... 70*b1cdbd2cSJim Jagielski */ 71*b1cdbd2cSJim Jagielski enum EIDs 72*b1cdbd2cSJim Jagielski { 73*b1cdbd2cSJim Jagielski /** @short The specified URL/Stream/etcpp. can not be handled by a LoadEnv instance. */ 74*b1cdbd2cSJim Jagielski ID_UNSUPPORTED_CONTENT, 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski /** @short It was not possible to get access to global filter configuration. 77*b1cdbd2cSJim Jagielski @descr Might som neccsessary services could not be created. */ 78*b1cdbd2cSJim Jagielski ID_NO_CONFIG_ACCESS, 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski /** @short Some data obtained from the filter configuration seems to incorrect. 81*b1cdbd2cSJim Jagielski @descr Might a filter-type relation ship seem to be damaged. */ 82*b1cdbd2cSJim Jagielski ID_INVALID_FILTER_CONFIG, 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski /** @short indicates a corrupted media descriptor. 85*b1cdbd2cSJim Jagielski @descr Some parts are required - some other ones are optional. Such exception 86*b1cdbd2cSJim Jagielski should be thrown, if a required item does not exists. */ 87*b1cdbd2cSJim Jagielski ID_INVALID_MEDIADESCRIPTOR, 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski /** @short Its similar to an uno::RuntimeException .... 90*b1cdbd2cSJim Jagielski @descr But such runtime exception can break the whole office code. 91*b1cdbd2cSJim Jagielski So its capsulated to this specialized load environment only. 92*b1cdbd2cSJim Jagielski Mostly it indicates a missing but needed resource ... e.g the 93*b1cdbd2cSJim Jagielski global desktop reference! */ 94*b1cdbd2cSJim Jagielski ID_INVALID_ENVIRONMENT, 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski /** @short indicates a failed search for the right target frame. */ 97*b1cdbd2cSJim Jagielski ID_NO_TARGET_FOUND, 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski /** @short An already existing document was found inside a target frame. 100*b1cdbd2cSJim Jagielski But its controller could not be suspended successfully. Thats 101*b1cdbd2cSJim Jagielski why the new load request was cancelled. The document could not 102*b1cdbd2cSJim Jagielski be replaced. */ 103*b1cdbd2cSJim Jagielski ID_COULD_NOT_SUSPEND_CONTROLLER, 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski /** @short TODO */ 106*b1cdbd2cSJim Jagielski ID_COULD_NOT_REACTIVATE_CONTROLLER, 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski /** @short inidcates an already running load operation. Of yourse the same 109*b1cdbd2cSJim Jagielski instance cant be used for multiple load requests at the same time. 110*b1cdbd2cSJim Jagielski */ 111*b1cdbd2cSJim Jagielski ID_STILL_RUNNING, 112*b1cdbd2cSJim Jagielski 113*b1cdbd2cSJim Jagielski /** @short sometiems we cant specify the reason for an error, because we 114*b1cdbd2cSJim Jagielski was interrupted by an called code in an unexpected way ... 115*b1cdbd2cSJim Jagielski */ 116*b1cdbd2cSJim Jagielski ID_GENERAL_ERROR 117*b1cdbd2cSJim Jagielski }; 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski //___________________________________________ 120*b1cdbd2cSJim Jagielski // member 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski public: 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski /** @short contains a suitable message, which describes the reason for this 125*b1cdbd2cSJim Jagielski exception. */ 126*b1cdbd2cSJim Jagielski ::rtl::OString m_sMessage; 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski /** @short An ID, which make this exception unique among others. */ 129*b1cdbd2cSJim Jagielski sal_Int32 m_nID; 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski /** @short Contains the original exception, if any occured. */ 132*b1cdbd2cSJim Jagielski css::uno::Any m_exOriginal; 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski /** TODO 135*b1cdbd2cSJim Jagielski Experimental use! May it can be usefully to know, if an exception was already 136*b1cdbd2cSJim Jagielski catched and handled by an interaction and was might be rethrowed! */ 137*b1cdbd2cSJim Jagielski sal_Bool m_bHandled; 138*b1cdbd2cSJim Jagielski 139*b1cdbd2cSJim Jagielski //___________________________________________ 140*b1cdbd2cSJim Jagielski // interface 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski public: 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski /** @short initialize a new instance with an ID. 145*b1cdbd2cSJim Jagielski @descr Some other items of this exception 146*b1cdbd2cSJim Jagielski (e.g. a suitable message) will be generated 147*b1cdbd2cSJim Jagielski automaticly. 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski @param nID 150*b1cdbd2cSJim Jagielski One of the defined const IDs of this class. 151*b1cdbd2cSJim Jagielski */ LoadEnvException(sal_Int32 nID)152*b1cdbd2cSJim Jagielski LoadEnvException(sal_Int32 nID) 153*b1cdbd2cSJim Jagielski { 154*b1cdbd2cSJim Jagielski m_nID = nID; 155*b1cdbd2cSJim Jagielski } 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski //_______________________________________ 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski /** @short initialize a new instance with an ID 160*b1cdbd2cSJim Jagielski an wrap a detected exception into this one. 161*b1cdbd2cSJim Jagielski @descr Some other items of this exception 162*b1cdbd2cSJim Jagielski (e.g. a suitable message) will be generated 163*b1cdbd2cSJim Jagielski automaticly. 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski @param nID 166*b1cdbd2cSJim Jagielski One of the defined const IDs of this class. 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski @param exUno 169*b1cdbd2cSJim Jagielski the original catched uno exception. 170*b1cdbd2cSJim Jagielski */ LoadEnvException(sal_Int32 nID,const css::uno::Any & exUno)171*b1cdbd2cSJim Jagielski LoadEnvException( sal_Int32 nID , 172*b1cdbd2cSJim Jagielski const css::uno::Any& exUno) 173*b1cdbd2cSJim Jagielski { 174*b1cdbd2cSJim Jagielski m_nID = nID ; 175*b1cdbd2cSJim Jagielski m_exOriginal = exUno; 176*b1cdbd2cSJim Jagielski } 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski //_______________________________________ 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski /** @short destruct an instance of this exception. 181*b1cdbd2cSJim Jagielski */ ~LoadEnvException()182*b1cdbd2cSJim Jagielski ~LoadEnvException() 183*b1cdbd2cSJim Jagielski { 184*b1cdbd2cSJim Jagielski m_sMessage = ::rtl::OString(); 185*b1cdbd2cSJim Jagielski m_nID = 0; 186*b1cdbd2cSJim Jagielski m_bHandled = false; 187*b1cdbd2cSJim Jagielski m_exOriginal.clear(); 188*b1cdbd2cSJim Jagielski } 189*b1cdbd2cSJim Jagielski }; 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski } // namespace framework 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski #endif // __FRAMEWORK_LOADENV_LOADENVEXCEPTION_HXX_ 194