001: /*
002: ItsNat Java Web Application Framework
003: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
004: Author: Jose Maria Arranz Santamaria
005:
006: This program is free software: you can redistribute it and/or modify
007: it under the terms of the GNU Affero General Public License as published by
008: the Free Software Foundation, either version 3 of the License, or
009: (at your option) any later version. See the GNU Affero General Public
010: License for more details. See the copy of the GNU Affero General Public License
011: included in this program. If not, see <http://www.gnu.org/licenses/>.
012: */
013:
014: package org.itsnat.core;
015:
016: import java.util.Enumeration;
017:
018: /**
019: * Is the ItsNat user session, the session concept is borrowed from the HTTP Java Servlet
020: * session concept. In fact ItsNat HTTP implementation is a wrapper over
021: * the <code>javax.servlet.http.HttpSession</code> object.
022: *
023: * @author Jose Maria Arranz Santamaria
024: * @see ItsNatServletRequest#getItsNatSession()
025: * @see ClientDocument#getItsNatSession()
026: */
027: public interface ItsNatSession extends ItsNatUserData {
028: /**
029: * Returns the client identity. This value is unique per {@link ItsNatServletContext}
030: * and never reused in this context.
031: *
032: * <p>The identity value is unique no other context-identified object in the same ItsNat servlet context
033: * shares the same id.</p>
034: *
035: * <p>Although this object is garbage collected, the identity value is never reused
036: * by another context-identified object in the same context.</p>
037: *
038: * @return the identity value.
039: */
040: public String getId();
041:
042: /**
043: * Returns the ItsNat servlet context of this ItsNat application.
044: *
045: * @return the ItsNat servlet contex.
046: */
047: public ItsNatServletContext getItsNatServletContext();
048:
049: /**
050: * Returns the "live" ItsNat document with the given id loaded by this session.
051: *
052: * <p>A live document is a document still loaded by the user (not invalid).
053: * When a document is unloaded (the user leaves the page) the document
054: * is invalid and automatically unregistered.</p>
055: *
056: * @param id the document id to search for.
057: * @return the document with this id or null if not found.
058: * @see ItsNatDocument#getId()
059: * @see ItsNatDocument#isInvalid()
060: */
061: public ItsNatDocument getItsNatDocumentById(String id);
062:
063: /**
064: * Returns all live ItsNat documents loaded by this session.
065: *
066: * @return an array containing all live documents in this session.
067: * @see #getItsNatDocumentById(String)
068: */
069: public ItsNatDocument[] getItsNatDocuments();
070:
071: /**
072: * Creates a variable resolver bound to this session.
073: *
074: * @return a variable resolver bound to this session.
075: */
076: public ItsNatVariableResolver createItsNatVariableResolver();
077:
078: /**
079: * Returns the object bound with the specified name in this session
080: *
081: * <p>{@link org.itsnat.core.http.ItsNatHttpSession} implementation delegates to <code>HttpSession.getAttribute(String)</code></p>
082: *
083: * @param name the object name.
084: * @return the object bound with the specified name or null if not found.
085: */
086: public Object getAttribute(String name);
087:
088: /**
089: * Returns a <code>String</code> enumeration of names of all the objects bound to this session.
090: *
091: * <p>{@link org.itsnat.core.http.ItsNatHttpSession} implementation delegates to <code>HttpSession.getAttributeNames()</code></p>
092: *
093: * @return a <code>String</code> enumeration of atribute names.
094: */
095: public Enumeration getAttributeNames();
096:
097: /**
098: * Binds an object to this session, using the name specified.
099: * If an object of the same name is already bound to the session, the object is replaced.
100: *
101: * <p>{@link org.itsnat.core.http.ItsNatHttpSession} implementation delegates to <code>HttpSession.setAttribute(String,Object)</code></p>
102: *
103: * @param name the attribute name.
104: * @param value the attribute value.
105: */
106: public void setAttribute(String name, Object value);
107:
108: /**
109: * Removes the object bound with the specified name from this session.
110: * If the session does not have an object bound with the specified name, this method does nothing.
111: *
112: * <p>{@link org.itsnat.core.http.ItsNatHttpSession} implementation delegates to <code>HttpSession.removeAttribute(String)</code></p>
113: *
114: * @param name the attribute name to remove.
115: */
116: public void removeAttribute(String name);
117:
118: }
|