/** * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 2005 Sun Microsystems Inc. All Rights Reserved * * The contents of this file are subject to the terms * of the Common Development and Distribution License * (the License). You may not use this file except in * compliance with the License. * * You can obtain a copy of the License at * https://opensso.dev.java.net/public/CDDLv1.0.html or * opensso/legal/CDDLv1.0.txt * See the License for the specific language governing * permission and limitations under the License. * * When distributing Covered Code, include this CDDL * Header Notice in each file and include the License file * at opensso/legal/CDDLv1.0.txt. * If applicable, add the following below the CDDL Header, * with the fields enclosed by brackets [] replaced by * your own identifying information: * "Portions Copyrighted [year] [name of copyright owner]" * * $Id: SessionNotificationParser.java,v 1.3 2008/06/25 05:41:31 qcheng Exp $ * */ package com.iplanet.dpro.session.share; import com.sun.identity.shared.xml.XMLUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /** * SessionNotificationParser parses the * SessionNotification XML document and returns the * SessionNotification object * */ class SessionNotificationParser { /** * SessionNotification object being returned after parsing * the XML document. */ private SessionNotification sessionNotification = null; /** * Document to be parsed */ private Document document; /** * Constructs SessionNotificationParser * @param xmlDoc Notification XML Document to be parsed. */ public SessionNotificationParser(Document xmlDoc) { document = xmlDoc; } /** * * Constructs SessionNotificationParser * @param xmlString Notification. * */ public SessionNotificationParser(String xmlString) { document = XMLUtils .toDOMDocument(xmlString, SessionRequestParser.debug); } /** * Parses the session notification element. Please see file * SessionNotification.dtd for the corresponding DTD of the * SessionNotification. * * @return a SessionNotification object. */ public SessionNotification parseXML() { if (document == null) { return null; } // get document element Element elem = document.getDocumentElement(); sessionNotification = new SessionNotification(); // set notification attribute String temp = elem.getAttribute("vers"); sessionNotification.setNotificationVersion(temp); // set notification id temp = elem.getAttribute("notid"); sessionNotification.setNotificationID(temp); // process Session element NodeList nodelist = elem.getElementsByTagName("Session"); if (nodelist != null && nodelist.getLength() != 0) { Element sess = (Element) nodelist.item(0); if (sess != null) { sessionNotification.setSessionInfo(SessionResponseParser .parseSessionElement(sess)); } } // process Type element nodelist = elem.getElementsByTagName("Type"); if (nodelist != null && nodelist.getLength() != 0) { Element type = (Element) nodelist.item(0); if (type != null) { try { int sType = (new Integer(SessionRequestParser .parseCDATA(type))).intValue(); sessionNotification.setNotificationType(sType); } catch (Exception e) { SessionRequestParser.debug.message("Session.Notif Type", e); } } } // process Time element nodelist = elem.getElementsByTagName("Time"); if (nodelist != null && nodelist.getLength() != 0) { Element time = (Element) nodelist.item(0); if (time != null) { try { long sTime = (new Long(SessionRequestParser .parseCDATA(time))).longValue(); sessionNotification.setNotificationTime(sTime); } catch (Exception e) { SessionRequestParser.debug.message("Session.Notif Time", e); } } } return sessionNotification; } }