001: /*
002: * Copyright (c) 1999-2001 Lutris Technologies, Inc. All Rights
003: * Reserved.
004: *
005: * This source code file is distributed by Lutris Technologies, Inc. for
006: * use only by licensed users of product(s) that include this source
007: * file. Use of this source file or the software that uses it is covered
008: * by the terms and conditions of the Lutris Enhydra Development License
009: * Agreement included with this product.
010: *
011: * This Software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
012: * ANY KIND, either express or implied. See the License for the specific terms
013: * governing rights and limitations under the License.
014: *
015: * Contributor(s):
016: *
017: * $Id: DeviceBasePO.java,v 1.1 2006-09-11 12:29:11 sinisa Exp $
018: */
019:
020: package com.lutris.airsent.presentation;
021:
022: import com.lutris.airsent.presentation.*;
023: import com.lutris.appserver.server.httpPresentation.*;
024: import com.lutris.appserver.server.session.*;
025: import com.lutris.appserver.server.Enhydra; //import com.lutris.xml.xmlc.*;
026: import com.lutris.logging.*;
027: import com.lutris.util.KeywordValueException;
028: import com.lutris.appserver.server.user.User;
029: import org.w3c.dom.*;
030: import org.enhydra.wireless.wml.dom.WMLGoElement;
031: import org.enhydra.xml.xmlc.XMLObject;
032: import java.lang.reflect.*;
033: import java.util.*;
034: import java.lang.Throwable;
035:
036: /**
037: * This is the parent Presentaion object. All presentation objects
038: * should extend this class.
039: *
040: * The run method looks for an event parameter and then calls
041: * handle<EventName>. If the "event" Parameter is not defined then
042: * the handleDefault() method is called in your child class.
043: *
044: * @author
045: * @version
046: */
047: public abstract class DeviceBasePO extends BasePO {
048:
049: /**
050: * Handles default events.
051: *
052: *
053: * @return
054: *
055: * @throws HttpPresentationException
056: *
057: */
058: public abstract XMLObject handleDefault()
059: throws HttpPresentationException;
060:
061: /**
062: * This method should be implemented in the subclass so that it returns
063: * the authorization level necessary to access the po.
064: */
065: abstract protected int getRequiredAuthLevel();
066:
067: /**
068: * This rerouteForContent overrides the parent method to avoid
069: * a continous loop senario of rerouting.
070: */
071: protected void rerouteForContent(HttpPresentationComms comms) {
072: }
073:
074: ;
075:
076: /*
077: * Uses the xmlfactory and the request content
078: * type to determine the proper page type
079: * to generate.
080: * For example if the request type is wml and
081: * the PO is MessengerLogin, then
082: * using the
083: *
084: * XMLObject page =
085: * myComms.xmlcFactory.create(Class.forName("MessengerLogin" + "WML"));
086: *
087: * @param String poName
088: * @return XMLObject
089: *
090: * @throws AirSentPresentationException
091: */
092: public XMLObject create(String poName)
093: throws AirSentPresentationException {
094: XMLObject page = null;
095:
096: try {
097: page = getComms().xmlcFactory.create(DeviceUtils
098: .getPageName(getComms(), poName));
099: } catch (Exception ex) {
100: throw new AirSentPresentationException(
101: "Trouble getting current authorization level", ex);
102: }
103: return page;
104: }
105:
106: /**
107: * This logs out a user from the session. it first grabs
108: * an instance of the sessionData associated with the request
109: * and then sets the user to null in the session data.
110: *
111: * @param HttpServletRequest request - this is the request that
112: * the session data is extracted from.
113: *
114: * @exception AirSentPresentationException when an error occurs or if
115: * the session data for the request is null.
116: */
117: public XMLObject handleLogout() throws AirSentPresentationException {
118: try {
119:
120: mySessionData = null;
121: SessionManager sessionManager = myComms.session
122: .getSessionManager();
123: sessionManager.deleteSession(myComms.session);
124:
125: throw new ClientPageRedirectException(
126: AirSentConstants.XML_PAGE);
127: } catch (Exception e) {
128: throw new AirSentPresentationException(
129: "Trouble logging out user", e);
130: }
131: }
132: }
|