/* * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ package org.omg.CORBA; import org.omg.CORBA.portable.InputStream; import org.omg.CORBA.portable.OutputStream; import java.util.*; import org.omg.CORBA.OMGVMCID; import com.sun.corba.se.impl.util.SUNVMCID; /** * The root class for all CORBA standard exceptions. These exceptions * may be thrown as a result of any CORBA operation invocation and may * also be returned by many standard CORBA API methods. The standard * exceptions contain a minor code, allowing more detailed specification, and a * completion status. This class is subclassed to * generate each one of the set of standard ORB exceptions. * <code>SystemException</code> extends * <code>java.lang.RuntimeException</code>; thus none of the * <code>SystemException</code> exceptions need to be * declared in signatures of the Java methods mapped from operations in * IDL interfaces. * * @see <A href="../../../../technotes/guides/idl/jidlExceptions.html">documentation on * Java IDL exceptions</A> */ public abstract class SystemException extends java.lang.RuntimeException { /** * The CORBA Exception minor code. * @serial */ public int minor; /** * The status of the operation that threw this exception. * @serial */ public CompletionStatus completed; /** * Constructs a <code>SystemException</code> exception with the specified detail * message, minor code, and completion status. * A detail message is a String that describes this particular exception. * @param reason the String containing a detail message * @param minor the minor code * @param completed the completion status */ protected SystemException(String reason, int minor, CompletionStatus completed) { super(reason); this.minor = minor; this.completed = completed; } /** * Converts this exception to a representative string. */ public String toString() { // The fully qualified exception class name String result = super.toString(); // The vmcid part int vmcid = minor & 0xFFFFF000; switch (vmcid) { case OMGVMCID.value: result += " vmcid: OMG"; break; case SUNVMCID.value: result += " vmcid: SUN"; break; default: result += " vmcid: 0x" + Integer.toHexString(vmcid); break; } // The minor code part int mc = minor & 0x00000FFF; result += " minor code: " + mc; // The completion status part switch (completed.value()) { case CompletionStatus._COMPLETED_YES: result += " completed: Yes"; break; case CompletionStatus._COMPLETED_NO: result += " completed: No"; break; case CompletionStatus._COMPLETED_MAYBE: default: result += " completed: Maybe"; break; } return result; } }