001    /**
002     *
003     * Copyright 2003-2004 The Apache Software Foundation
004     *
005     *  Licensed under the Apache License, Version 2.0 (the "License");
006     *  you may not use this file except in compliance with the License.
007     *  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    
018    //
019    // This source code implements specifications defined by the Java
020    // Community Process. In order to remain compliant with the specification
021    // DO NOT add / change / or delete method signatures!
022    //
023    
024    package javax.servlet.http;
025    
026    /**
027     * Events of this type are either sent to an object that implements
028     * {@link HttpSessionBindingListener} when it is bound or
029     * unbound from a session, or to a {@link HttpSessionAttributeListener}
030     * that has been configured in the deployment descriptor when any attribute is
031     * bound, unbound or replaced in a session.
032     *
033     * <p>The session binds the object by a call to
034     * <code>HttpSession.setAttribute</code> and unbinds the object
035     * by a call to <code>HttpSession.removeAttribute</code>.
036     *
037     * @see HttpSession
038     * @see HttpSessionBindingListener
039     * @see HttpSessionAttributeListener
040     *
041     * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $
042     */
043    public class HttpSessionBindingEvent extends HttpSessionEvent {
044        /**
045         *  The name to which the object is being bound or unbound
046         */
047        private String name;
048    
049        /**
050         *  The object is being bound or unbound
051         */
052        private Object value;
053    
054        /**
055         * Constructs an event that notifies an object that it
056         * has been bound to or unbound from a session.
057         * To receive the event, the object must implement
058         * {@link HttpSessionBindingListener}.
059         *
060         * @param session the session to which the object is bound or unbound
061         *
062         * @param name the name with which the object is bound or unbound
063         *
064         * @see #getName
065         * @see #getSession
066         */
067        public HttpSessionBindingEvent(HttpSession session, String name) {
068            super(session);
069            this.name = name;
070        }
071    
072        /**
073         * Constructs an event that notifies an object that it
074         * has been bound to or unbound from a session.
075         * To receive the event, the object must implement
076         * {@link HttpSessionBindingListener}.
077         *
078         * @param session the session to which the object is bound or unbound
079         *
080         * @param name the name with which the object is bound or unbound
081         *
082         * @see #getName
083         * @see #getSession
084         */
085        public HttpSessionBindingEvent(HttpSession session, String name, Object value) {
086            super(session);
087            this.name = name;
088            this.value = value;
089        }
090    
091        /**
092         * Return the session that changed.
093         */
094        public HttpSession getSession() {
095            return super.getSession();
096        }
097    
098        /**
099         * Returns the name with which the attribute is bound to or unbound from
100         * the session.
101         *
102         * @return a string specifying the name with which the object is bound to
103         * or unbound from the session
104         */
105        public String getName() {
106            return name;
107        }
108    
109        /**
110         * Returns the value of the attribute that has been added, removed or
111         * replaced. If the attribute was added (or bound), this is the value of
112         * the attribute. If the attrubute was removed (or unbound), this is the
113         * value of the removed attribute. If the attribute was replaced, this
114         * is the old value of the attribute.
115         *
116         * @since Servlet 2.3
117         */
118        public Object getValue() {
119            return this.value;
120        }
121    }
122    
123    
124    
125    
126    
127    
128