a4544a5a0e622ef69e38641f87ab1b5685e05911Phill Cunnington/*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright (c) 2005 Sun Microsystems Inc. All Rights Reserved
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The contents of this file are subject to the terms
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * of the Common Development and Distribution License
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * (the License). You may not use this file except in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * compliance with the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * You can obtain a copy of the License at
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * https://opensso.dev.java.net/public/CDDLv1.0.html or
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * opensso/legal/CDDLv1.0.txt
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * See the License for the specific language governing
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * permission and limitations under the License.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * When distributing Covered Code, include this CDDL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Header Notice in each file and include the License file
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * at opensso/legal/CDDLv1.0.txt.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * If applicable, add the following below the CDDL Header,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * with the fields enclosed by brackets [] replaced by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * your own identifying information:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * "Portions Copyrighted [year] [name of copyright owner]"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * $Id: SessionRequest.java,v 1.3 2008/06/25 05:41:31 qcheng Exp $
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
6c56bf78246f18c9c14c17ef3ed65065ce178ffdTom Rumsey * Portions Copyrighted 2011-2016 ForgeRock AS.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpackage com.iplanet.dpro.session.share;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.shared.encode.Base64;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterimport com.sun.identity.shared.xml.XMLUtils;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This <code>SessionRequest</code> class represents a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>SessionRequest</code> XML document. The <code>SessionRequest</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DTD is defined as the following:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </p>
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <pre>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt;?xml version=&quot;1.0&quot;&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !DOCTYPE SessionRequest [
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT SessionRequest (GetSession |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * GetValidSessions |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * DestroySession |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Logout |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * AddSessionListener |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * AddSessionListenerOnAllSessions |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * SetProperty |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * GetSessionCount)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ATTLIST SessionRequest
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * vers CDATA #REQUIRED
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * reqid CDATA #REQUIRED&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !-- This attribute carries the requester identity info --&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * requester CDATA #IMPLIED&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT GetSession (SessionID)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !-- This attribute indicates whether resets
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * the latest access time --&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * reset CDATA #REQUIRED&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT GetValidSessions (SessionID Pattern?)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT DestroySession (SessionID, DestroySessionID)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT Logout (SessionID)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT AddSessionListener (SessionID, URL)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT AddSessionListenerOnAllSessions (SessionID, URL)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT SetProperty (SessionID, Property)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ATTLIST Property
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * name CDATA #REQUIRED
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * value CDATA #REQUIRED&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT SessionID (#PCDATA)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT DestroySessionID (#PCDATA)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT URL (#PCDATA)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT GetSessionCount (SessionID, UUID)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT UUID (#PCDATA)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * &lt; !ELEMENT Pattern (#PCDATA)&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * ]&gt;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </pre>
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * </p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterpublic class SessionRequest {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int GetSession = 0;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int GetValidSessions = 1;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int DestroySession = 2;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int Logout = 3;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int AddSessionListener = 4;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int SetProperty = 6;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static final int GetSessionCount = 7;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
24ea8b0bf00ce7b51c10c2ba4108ad9b02c49e3fCraig McDonnell
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final char QUOTE = '\"';
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final char NL = '\n';
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String AMPERSAND = "&amp;";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String LESSTHAN = "&lt;";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String GREATERTHAN = "&gt;";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String APOSTROPHE = "&apos;";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster static final String QUOTATION = "&quot;";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String requestVersion = "1.0";
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String requestID = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private boolean resetFlag;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private int methodID;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String sessionID = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String requester = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String destroySessionID = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String notificationURL = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String propertyName = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String propertyValue = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String pattern = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String uuid = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private static int requestCount = 0;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Constructors
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This constructor shall only be used at the client side to construct a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>SessionRequest</code> object.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param method The method ID of the <code>SessionRequest</code>.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param sid The session ID required by the <code>SessionRequest</code>.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param reset The flag to indicate whether this request needs to update
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * the latest session access time.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public SessionRequest(int method, String sid, boolean reset) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster methodID = method;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster sessionID = sid;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resetFlag = reset;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster requestID = (new Integer(requestCount++)).toString();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This constructor is used by <code>SessionRequestParser</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * to reconstruct a <code>SessionRequest</code> object.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster SessionRequest() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This method is used primarily at the server side to reconstruct a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>SessionRequest</code> object based on the XML document received
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * from client. The DTD of this XML document is described above.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param xml The <code>SessionRequest</code> XML document String.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return <code>SessionRequest</code> object.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public static SessionRequest parseXML(String xml) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster SessionRequestParser parser = new SessionRequestParser(xml);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return parser.parseXML();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the request version.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param version Request version.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster void setRequestVersion(String version) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster requestVersion = version;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the request version.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The request version.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getRequestVersion() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return requestVersion;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the request ID.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param id Request ID.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster void setRequestID(String id) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster requestID = id;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the request ID.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The request ID.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getRequestID() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return requestID;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the method ID.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param id Method ID.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster void setMethodID(int id) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster methodID = id;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the method ID.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The method ID.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public int getMethodID() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return methodID;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell /**
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell * @return The method name.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell */
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell public String getMethodName() {
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell switch (methodID) {
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case GetSession:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "GetSession";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case GetValidSessions:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "GetValidSessions";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case DestroySession:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "DestroySession";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case Logout:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "Logout";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case AddSessionListener:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "AddSessionListener";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case SetProperty:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "SetProperty";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell case GetSessionCount:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "GetSessionCount";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell default:
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell return "unknown";
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell }
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell }
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the session ID.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param id Session ID.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster void setSessionID(String id) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster sessionID = id;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the session ID.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return Session ID.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getSessionID() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return sessionID;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the requester.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param requester Session requester.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setRequester(String requester) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster this.requester = requester;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the requester
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return id Session requester.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getRequester() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return requester;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the reset flag.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param reset <code>true</code> to update the latest session access time.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster void setResetFlag(boolean reset) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster resetFlag = reset;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the reset flag.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The reset flag.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public boolean getResetFlag() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return resetFlag;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the ID of the session to be destroyed.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param id The ID of the session to be destroyed.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setDestroySessionID(String id) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster destroySessionID = id;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the ID of the session to be destroyed.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The ID of the session to be destroyed.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getDestroySessionID() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return destroySessionID;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the notification URL.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param url The notification URL.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setNotificationURL(String url) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster notificationURL = url;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the notification URL.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The notification URL.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getNotificationURL() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return notificationURL;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the property name.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param name The property name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setPropertyName(String name) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster propertyName = name;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the property name.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The property name.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getPropertyName() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return propertyName;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the property value.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param value The property value.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setPropertyValue(String value) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster propertyValue = value;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the property value.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The property value.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getPropertyValue() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return propertyValue;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the pattern value. Process escape chars in pattern with
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>CDATA</code>.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param value The pattern value.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setPattern(String value) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String data = value;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (value == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster pattern = null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceIllegalChar(data, '&', AMPERSAND);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceIllegalChar(data, '\'', APOSTROPHE);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceIllegalChar(data, '\"', QUOTATION);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceIllegalChar(data, '<', LESSTHAN);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceIllegalChar(data, '>', GREATERTHAN);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster pattern = data;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the pattern value.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The pattern value.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getPattern() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String data = pattern;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (data == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceEntityRef(data, AMPERSAND, '&');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceEntityRef(data, APOSTROPHE, '\'');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceEntityRef(data, QUOTATION, '\"');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceEntityRef(data, LESSTHAN, '<');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = replaceEntityRef(data, GREATERTHAN, '>');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return data;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Sets the universal unique identifier.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @param id The universal unique identifier.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public void setUUID(String id) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster uuid = id;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Returns the universal unique identifier
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return The universal unique identifier
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String getUUID() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return uuid;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Replacing illegal XML char with entity ref
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String replaceIllegalChar(String data, char ch, String replacement)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster int idx = 0;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster StringBuilder buffer = new StringBuilder(data.length() * 4);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster while ((data != null) && (idx = data.indexOf(ch)) != -1) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster buffer.append(data.substring(0, idx));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster buffer.append(replacement);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = data.substring(idx + 1);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if ((data != null) && (data.length() > 0)) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster buffer.append(data);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return buffer.toString();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Replacing entity ref with original char
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster private String replaceEntityRef(String data, String ref, char ch) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster int idx = 0;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster StringBuilder buffer = new StringBuilder(data.length());
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster while ((idx = data.indexOf(ref)) != -1) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster buffer.append(data.substring(0, idx));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster buffer.append(ch);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster data = data.substring(idx + ref.length());
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if ((data != null) && (data.length() > 0)) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster buffer.append(data);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return buffer.toString();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster /**
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This method translates the request to an XML document String based on the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>SessionRequest</code> DTD described above. The ID of the session
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * to be destroyed has to be set for method <code>DestroySession</code>.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * The notification URL has to be set for both methods
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>AddSessionListener</code> and
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>AddSessionListenerOnAllSessions</code>. otherwise, the returns
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * <code>null</code>.
786bac66d599daf6355e45e64da84c846a857552Craig McDonnell *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * @return An XML String representing the request.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public String toXMLString() {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster StringBuilder xml = new StringBuilder();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionRequest vers=").append(QUOTE).append(requestVersion).
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster append(QUOTE).append(" reqid=").append(QUOTE).append(requestID).append(QUOTE);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (requester != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster try {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster String data = Base64.encode(requester.getBytes("UTF8"));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append(" requester=").append(QUOTE).append(data).append(QUOTE);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster } catch (java.io.UnsupportedEncodingException e) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster throw new IllegalArgumentException(e.getMessage());
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append('>').append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster switch (methodID) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case GetSession:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<GetSession reset=");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (resetFlag)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append(QUOTE).append("true").append(QUOTE).append('>').append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster else
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append(QUOTE).append("false").append(QUOTE).append('>').append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</GetSession>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case GetValidSessions:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<GetValidSessions>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (pattern != null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<Pattern>").append(pattern).append("</Pattern>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</GetValidSessions>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case DestroySession:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (destroySessionID == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<DestroySession>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<DestroySessionID>").append(destroySessionID).append("</DestroySessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</DestroySession>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case Logout:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<Logout>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</Logout>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case AddSessionListener:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (notificationURL == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<AddSessionListener>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<URL>").append(notificationURL).append("</URL>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</AddSessionListener>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case SetProperty:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (propertyName == null || propertyValue == null) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SetProperty>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<Property name=").append(QUOTE).append(
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster XMLUtils.escapeSpecialCharacters(propertyName)).append(QUOTE).
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster append(" value=").append(QUOTE).append(XMLUtils.escapeSpecialCharacters(propertyValue)).
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster append(QUOTE).append('>').append("</Property>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</SetProperty>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster case GetSessionCount:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<GetSessionCount>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<SessionID>").append(sessionID).append("</SessionID>")
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster .append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("<UUID>").append(uuid).append("</UUID>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</GetSessionCount>").append(NL);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster break;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster default:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return null;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster xml.append("</SessionRequest>");
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster return xml.toString();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster }
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster}