SystemException.java revision 891:bd32b2b28de5
1/*
2 * Copyright (c) 1995, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package org.omg.CORBA;
27
28import org.omg.CORBA.portable.InputStream;
29import org.omg.CORBA.portable.OutputStream;
30import java.util.*;
31import org.omg.CORBA.OMGVMCID;
32import com.sun.corba.se.impl.util.SUNVMCID;
33
34/**
35 * The root class for all CORBA standard exceptions. These exceptions
36 * may be thrown as a result of any CORBA operation invocation and may
37 * also be returned by many standard CORBA API methods. The standard
38 * exceptions contain a minor code, allowing more detailed specification, and a
39 * completion status. This class is subclassed to
40 * generate each one of the set of standard ORB exceptions.
41 * <code>SystemException</code> extends
42 * <code>java.lang.RuntimeException</code>; thus none of the
43 * <code>SystemException</code> exceptions need to be
44 * declared in signatures of the Java methods mapped from operations in
45 * IDL interfaces.
46 *
47 * <p>See also {@extLink jidlexception documentation on Java&nbsp;IDL exceptions}.
48 * </p>
49 */
50
51public abstract class SystemException extends java.lang.RuntimeException {
52
53    /**
54     * The CORBA Exception minor code.
55     * @serial
56     */
57    public int minor;
58
59    /**
60     * The status of the operation that threw this exception.
61     * @serial
62     */
63    public CompletionStatus completed;
64
65    /**
66     * Constructs a <code>SystemException</code> exception with the specified detail
67     * message, minor code, and completion status.
68     * A detail message is a String that describes this particular exception.
69     * @param reason the String containing a detail message
70     * @param minor the minor code
71     * @param completed the completion status
72     */
73    protected SystemException(String reason, int minor, CompletionStatus completed) {
74        super(reason);
75        this.minor = minor;
76        this.completed = completed;
77    }
78
79    /**
80     * Converts this exception to a representative string.
81     */
82    public String toString() {
83        // The fully qualified exception class name
84        String result = super.toString();
85
86        // The vmcid part
87        int vmcid = minor & 0xFFFFF000;
88        switch (vmcid) {
89            case OMGVMCID.value:
90                result += "  vmcid: OMG";
91                break;
92            case SUNVMCID.value:
93                result += "  vmcid: SUN";
94                break;
95            default:
96                result += "  vmcid: 0x" + Integer.toHexString(vmcid);
97                break;
98        }
99
100        // The minor code part
101        int mc = minor & 0x00000FFF;
102        result += "  minor code: " + mc;
103
104        // The completion status part
105        switch (completed.value()) {
106            case CompletionStatus._COMPLETED_YES:
107                result += "  completed: Yes";
108                break;
109            case CompletionStatus._COMPLETED_NO:
110                result += "  completed: No";
111                break;
112            case CompletionStatus._COMPLETED_MAYBE:
113            default:
114                result += " completed: Maybe";
115                break;
116        }
117        return result;
118    }
119}
120