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 26 package org.omg.CORBA; 27 28 import org.omg.CORBA.portable.InputStream; 29 import org.omg.CORBA.portable.OutputStream; 30 import java.util.*; 31 import org.omg.CORBA.OMGVMCID; 32 import 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 IDL exceptions}. 48 * </p> 49 */ 50 51 public 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 }