/* * Copyright (c) 1995, 2006, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ 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; } }