Android Base API merge to master
[contrib/iotivity.git] / android / android_api / base / src / main / java / org / iotivity / base / OcException.java
1 /*\r
2  * //******************************************************************\r
3  * //\r
4  * // Copyright 2015 Intel Corporation.\r
5  * //\r
6  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
7  * //\r
8  * // Licensed under the Apache License, Version 2.0 (the "License");\r
9  * // you may not use this file except in compliance with the License.\r
10  * // You may obtain a copy of the License at\r
11  * //\r
12  * //      http://www.apache.org/licenses/LICENSE-2.0\r
13  * //\r
14  * // Unless required by applicable law or agreed to in writing, software\r
15  * // distributed under the License is distributed on an "AS IS" BASIS,\r
16  * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
17  * // See the License for the specific language governing permissions and\r
18  * // limitations under the License.\r
19  * //\r
20  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\r
21  */\r
22 \r
23 package org.iotivity.base;\r
24 \r
25 public class OcException extends Exception {\r
26 \r
27     private ErrorCode errorCode;\r
28 \r
29     public OcException(ErrorCode errorCode, String errMessage) {\r
30         super(errMessage + " " + errorCode.toString());\r
31         this.errorCode = errorCode;\r
32     }\r
33 \r
34     private OcException(String error, String errMessage) {\r
35         super(errMessage + " " + error);\r
36         this.errorCode = ErrorCode.get(error);\r
37     }\r
38 \r
39     public ErrorCode getErrorCode() {\r
40         return errorCode;\r
41     }\r
42 \r
43     private static void addStackTrace(Throwable throwable,\r
44                                       String file,\r
45                                       String functionName,\r
46                                       int line) {\r
47         StackTraceElement[] stack = throwable.getStackTrace();\r
48         StackTraceElement[] newStack = new StackTraceElement[stack.length + 1];\r
49 \r
50         System.arraycopy(stack, 0, newStack, 1, stack.length);\r
51         newStack[0] = new StackTraceElement("<native>", functionName, file, line);\r
52         throwable.setStackTrace(newStack);\r
53     }\r
54 \r
55     private void setNativeExceptionLocation(String file, String functionName, int line) {\r
56         OcException.addStackTrace(this, file, functionName, line);\r
57     }\r
58 }\r