001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package com.sun.midp.main;
028:
029: /** Holds the state for MIDlet Suite management commands. */
030: class CommandState {
031: /** return value from Main, so we know that Main exited normally */
032: static final int MAIN_EXIT = 2001;
033:
034: /** status for shutdown */
035: static final int SHUTDOWN = 1;
036:
037: /** status for success */
038: static final int OK = 0;
039:
040: /**
041: * Get the command state.
042: *
043: * @return current command state
044: */
045: static CommandState getCommandState() {
046: CommandState state = new CommandState();
047:
048: restoreCommandState(state);
049: return state;
050: }
051:
052: /**
053: * Save the command state.
054: *
055: * @param state current command state
056: */
057: private static native void saveCommandState(CommandState state);
058:
059: /**
060: * Restore the command state.
061: *
062: * @param state current command state
063: */
064: private static native void restoreCommandState(CommandState state);
065:
066: /**
067: * Exit the VM with an error code. Our private version of Runtime.exit.
068: * <p>
069: * This is needed because the MIDP version of Runtime.exit cannot tell
070: * if it is being called from a MIDlet or not, so it always throws an
071: * exception.
072: * <p>
073: *
074: * @param status Status code to return.
075: */
076: static native void exitInternal(int status);
077:
078: /** Status of the last command. */
079: int status;
080: /** The ID given to a suite load. */
081: int suiteId;
082: /** Class name of MIDlet. */
083: String midletClassName;
084: /** Has the application manager MIDlet displayed the Java logo yet? */
085: boolean logoDisplayed;
086: /** The ID of suite to load when there is no other queued. */
087: int lastSuiteId;
088: /** The MIDlet class name for the suite to load. */
089: String lastMidletClassName;
090: /** The argument for a last MIDlet, will be app property arg-0. */
091: String lastArg0;
092: /** The argument for a last MIDlet, will be app property arg-1. */
093: String lastArg1;
094: /** The argument for a MIDlet in the suite, will be app property arg-0. */
095: String arg0;
096: /** The argument for a MIDlet in the suite, will be app property arg-1. */
097: String arg1;
098: /** The argument for a MIDlet in the suite, will be app property arg-2. */
099: String arg2;
100: /** Structure containing the run time information about the midlet. */
101: RuntimeInfo runtimeInfo = new RuntimeInfo();
102:
103: /** Only the factory method can instantiate this class */
104: private CommandState() {
105: }
106:
107: /**
108: * Save the command state.
109: */
110: void save() {
111: saveCommandState(this );
112: }
113:
114: /**
115: * Returns the string form of this object.
116: *
117: * @return displayable string representation of this object
118: */
119: public String toString() {
120: return "CommandState:" + "\n status: " + status
121: + "\n suite ID: " + suiteId + "\n class name: "
122: + midletClassName + "\n logo displayed: "
123: + logoDisplayed + "\n last suite ID: " + lastSuiteId
124: + "\n last MIDlet class name: " + lastMidletClassName
125: + "\n arg 0: " + arg0 + "\n arg 1: " + arg1
126: + "\n arg 2: " + arg2 + "\n memory reserved: "
127: + runtimeInfo.memoryReserved + "\n memory total: "
128: + runtimeInfo.memoryTotal + "\n priority:"
129: + runtimeInfo.priority + "\n profile name: "
130: + runtimeInfo.profileName;
131: }
132: }
|