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: //-----------------------------------------------------------------------------
028: // PACKAGE DEFINITION
029: //-----------------------------------------------------------------------------
030: package sim.toolkit;
031:
032: //-----------------------------------------------------------------------------
033: // IMPORTS
034: //-----------------------------------------------------------------------------
035:
036: /**
037: *
038: * The EnvelopeResponseHandler class contains basic methods to handle the
039: * <b>Envelope response
040: * </b>data field. This class will be used by the Toolkit applet in order to
041: * edit the response to current Envelope command. No constructor is available
042: * for the Toolkit applet. The EnvelopeResponseHandler class is a <b>Temporary
043: * JCRE Entry Point Object</b>. The only way to get a EnvelopeResponseHandler
044: * reference is through the <code>getTheHandler()</code> static method.<p>
045: *
046: * @version 8.3.0
047: *
048: * @see ViewHandler
049: * @see EditHandler
050: * @see EnvelopeHandler
051: * @see ToolkitException
052: */
053: public final class EnvelopeResponseHandler extends EditHandler {
054: // private static EnvelopeResponseHandler theEnvelopeResponseHandler;
055: boolean handlerAvailable;
056: boolean postCalled;
057: public static byte status;
058: private short outDataSize;
059:
060: // ------------------------------- Constructors ---------------------------
061: /**
062: * Constructor
063: */
064: private EnvelopeResponseHandler() {
065: }
066:
067: // ------------------------------- Public methods -------------------------
068: /**
069: * Returns the single system instance of the EnvelopeResponseHandler class.
070: * The applet shall get the reference of the handler at its triggering,
071: * the beginning of the processToolkit method.
072: *
073: * @return reference of the system instance
074: *
075: * @exception ToolkitException with the following reason codes: <ul>
076: * <li><code>HANDLER_NOT_AVAILABLE</code> if the handler is busy.</ul>
077: */
078: public static EnvelopeResponseHandler getTheHandler()
079: throws ToolkitException {
080: EnvelopeResponseHandler theEnvelopeResponseHandler = new EnvelopeResponseHandler();
081: theEnvelopeResponseHandler.outDataSize = 0;
082: theEnvelopeResponseHandler.handlerAvailable = false;
083: theEnvelopeResponseHandler.postCalled = false;
084: return theEnvelopeResponseHandler;
085: }
086:
087: /**
088: * Pepares the Envelope response. Should be used with Envelope SMS-PP Data
089: * Download.
090: *
091: * @param statusType the status to be sent to the ME
092: * (SW1_RP_ACK or SW1_RP_ERROR)
093: *
094: * @exception ToolkitException with the following reason codes: <ul>
095: * <li><code>HANDLER_NOT_AVAILABLE</code> if the handler is busy </ul>
096: */
097: public void post(byte statusType) throws ToolkitException {
098: if (postCalled) {
099: ToolkitException
100: .throwIt(ToolkitException.HANDLER_NOT_AVAILABLE);
101: }
102: postCalled = true;
103: status = statusType;
104: }
105:
106: /**
107: * Prepare the Envelope response in a BER TLV structure. Should be used
108: * with Envelope Call Control by SIM or MO Short Message Control by SIM.
109: * The tag value is to be used to set the Result for Call Control and
110: * MO Short Message Control by the SIM.
111: *
112: * @param statusType the status to be sent to the ME
113: * (SW1_RP_ACK or SW1_RP_ERROR)
114: * @param tag the BER Tag to be used at the beginning of the SIMPLE_TLV
115: * list.
116: *
117: * @exception ToolkitException with the following reason codes: <ul>
118: * <li><code>HANDLER_NOT_AVAILABLE</code> if the handler is busy</ul>
119: */
120: public void postAsBERTLV(byte statusType, byte tag)
121: throws ToolkitException {
122: if (postCalled) {
123: ToolkitException
124: .throwIt(ToolkitException.HANDLER_NOT_AVAILABLE);
125: }
126: postCalled = true;
127: status = statusType;
128: }
129:
130: /**
131: * Returns the maximum size of the Simple TLV list managed by the handler.
132: * @return size in bytes
133: * @exception ToolkitException with the following reason codes: <ul>
134: * <li><code>HANDLER_NOT_AVAILABLE</code> if the handler is busy</ul>
135: */
136: public short getCapacity() throws ToolkitException {
137: return (short) 0;
138: }
139:
140: }
|