Coverage Report - org.apache.shiro.session.mgt.NativeSessionManager
 
Classes in this File Line Coverage Branch Coverage Complexity
NativeSessionManager
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2008 Les Hazlewood
 3  
  *
 4  
  * Licensed under the Apache License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  *     http://www.apache.org/licenses/LICENSE-2.0
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.apache.shiro.session.mgt;
 17  
 
 18  
 import org.apache.shiro.session.InvalidSessionException;
 19  
 
 20  
 import java.util.Collection;
 21  
 import java.util.Date;
 22  
 
 23  
 /**
 24  
  * A {@code Native} session manager is one that manages sessions natively - that is, it is directly responsible
 25  
  * for the creation, persistence and removal of {@link org.apache.shiro.session.Session Session} instances and their
 26  
  * lifecycles.
 27  
  *
 28  
  * @since 1.0
 29  
  */
 30  
 public interface NativeSessionManager extends SessionManager {
 31  
 
 32  
     /**
 33  
      * Returns the time the associated {@code Session} started (was created).
 34  
      *
 35  
      * @param key the session key to use to look up the target session.
 36  
      * @return the time the specified {@code Session} started (was created).
 37  
      * @see org.apache.shiro.session.Session#getStartTimestamp()
 38  
      */
 39  
     Date getStartTimestamp(SessionKey key);
 40  
 
 41  
     /**
 42  
      * Returns the time the associated {@code Session} last interacted with the system.
 43  
      *
 44  
      * @param key the session key to use to look up the target session.
 45  
      * @return time the session last accessed the system
 46  
      * @see org.apache.shiro.session.Session#getLastAccessTime()
 47  
      * @see org.apache.shiro.session.Session#touch()
 48  
      */
 49  
     Date getLastAccessTime(SessionKey key);
 50  
 
 51  
     /**
 52  
      * Returns {@code true} if the associated session is valid (it exists and is not stopped nor expired),
 53  
      * {@code false} otherwise.
 54  
      *
 55  
      * @param key the session key to use to look up the target session.
 56  
      * @return {@code true} if the session is valid (exists and is not stopped or expired), {@code false} otherwise.
 57  
      */
 58  
     boolean isValid(SessionKey key);
 59  
 
 60  
     /**
 61  
      * Returns quietly if the associated session is valid (it exists and is not stopped or expired) or throws
 62  
      * an {@link org.apache.shiro.session.InvalidSessionException} indicating that the session id is invalid.  This
 63  
      * might be preferred to be used instead of {@link #isValid} since any exception thrown will definitively explain
 64  
      * the reason for invalidation.
 65  
      *
 66  
      * @param key the session key to use to look up the target session.
 67  
      * @throws org.apache.shiro.session.InvalidSessionException
 68  
      *          if the session id is invalid (it does not exist or it is stopped or expired).
 69  
      */
 70  
     void checkValid(SessionKey key) throws InvalidSessionException;
 71  
 
 72  
     /**
 73  
      * Returns the time in milliseconds that the associated session may remain idle before expiring.
 74  
      * <ul>
 75  
      * <li>A negative return value means the session will never expire.</li>
 76  
      * <li>A non-negative return value (0 or greater) means the session expiration will occur if idle for that
 77  
      * length of time.</li>
 78  
      * </ul>
 79  
      *
 80  
      * @param key the session key to use to look up the target session.
 81  
      * @return the time in milliseconds that the associated session may remain idle before expiring.
 82  
      * @throws org.apache.shiro.session.InvalidSessionException
 83  
      *          if the session has been stopped or expired prior to calling this method.
 84  
      */
 85  
     long getTimeout(SessionKey key) throws InvalidSessionException;
 86  
 
 87  
     /**
 88  
      * Sets the time in milliseconds that the associated session may remain idle before expiring.
 89  
      * <ul>
 90  
      * <li>A negative return value means the session will never expire.</li>
 91  
      * <li>A non-negative return value (0 or greater) means the session expiration will occur if idle for that
 92  
      * length of time.</li>
 93  
      * </ul>
 94  
      *
 95  
      * @param key                 the session key to use to look up the target session.
 96  
      * @param maxIdleTimeInMillis the time in milliseconds that the associated session may remain idle before expiring.
 97  
      * @throws org.apache.shiro.session.InvalidSessionException
 98  
      *          if the session has been stopped or expired prior to calling this method.
 99  
      */
 100  
     void setTimeout(SessionKey key, long maxIdleTimeInMillis) throws InvalidSessionException;
 101  
 
 102  
     /**
 103  
      * Updates the last accessed time of the session identified by <code>sessionId</code>.  This
 104  
      * can be used to explicitly ensure that a session does not time out.
 105  
      *
 106  
      * @param key the session key to use to look up the target session.
 107  
      * @throws org.apache.shiro.session.InvalidSessionException
 108  
      *          if the session has been stopped or expired prior to calling this method.
 109  
      * @see org.apache.shiro.session.Session#touch
 110  
      */
 111  
     void touch(SessionKey key) throws InvalidSessionException;
 112  
 
 113  
     /**
 114  
      * Returns the host name or IP string of the host where the session was started, if known.  If
 115  
      * no host name or IP was specified when starting the session, this method returns {@code null}
 116  
      *
 117  
      * @param key the session key to use to look up the target session.
 118  
      * @return the host name or ip address of the host where the session originated, if known.  If unknown,
 119  
      *         this method returns {@code null}.
 120  
      */
 121  
     String getHost(SessionKey key);
 122  
 
 123  
     /**
 124  
      * Explicitly stops the associated session, thereby releasing all of its resources.
 125  
      *
 126  
      * @param key the session key to use to look up the target session.
 127  
      * @throws InvalidSessionException if the session has stopped or expired prior to calling this method.
 128  
      * @see org.apache.shiro.session.Session#stop
 129  
      */
 130  
     void stop(SessionKey key) throws InvalidSessionException;
 131  
 
 132  
     /**
 133  
      * Returns all attribute keys maintained by the target session or an empty collection if there are no attributes.
 134  
      *
 135  
      * @param sessionKey the session key to use to look up the target session.
 136  
      * @return all attribute keys maintained by the target session or an empty collection if there are no attributes.
 137  
      * @throws InvalidSessionException if the associated session has stopped or expired prior to calling this method.
 138  
      * @see org.apache.shiro.session.Session#getAttributeKeys()
 139  
      */
 140  
     Collection<Object> getAttributeKeys(SessionKey sessionKey);
 141  
 
 142  
     /**
 143  
      * Returns the object bound to the associated session identified by the specified attribute key.  If there
 144  
      * is no object bound under the attribute key for the given session, {@code null} is returned.
 145  
      *
 146  
      * @param sessionKey   session key to use to look up the target session.
 147  
      * @param attributeKey the unique name of the object bound to the associated session
 148  
      * @return the object bound under the {@code attributeKey} or {@code null} if there is no object bound.
 149  
      * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method.
 150  
      * @see org.apache.shiro.session.Session#getAttribute(Object key)
 151  
      */
 152  
     Object getAttribute(SessionKey sessionKey, Object attributeKey) throws InvalidSessionException;
 153  
 
 154  
     /**
 155  
      * Binds the specified {@code value} to the associated session uniquely identified by the {@code attributeKey}.
 156  
      * If there is already a session attribute bound under the {@code attributeKey}, that existing object will be
 157  
      * replaced by the new {@code value}.
 158  
      * <p/>
 159  
      * If the {@code value} parameter is null, it has the same effect as if the
 160  
      * {@link #removeAttribute(SessionKey sessionKey, Object attributeKey)} method was called.
 161  
      *
 162  
      * @param sessionKey   the session key to use to look up the target session.
 163  
      * @param attributeKey the key under which the {@code value} object will be bound in this session
 164  
      * @param value        the object to bind in this session.
 165  
      * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method.
 166  
      * @see org.apache.shiro.session.Session#setAttribute(Object key, Object value)
 167  
      */
 168  
     void setAttribute(SessionKey sessionKey, Object attributeKey, Object value) throws InvalidSessionException;
 169  
 
 170  
     /**
 171  
      * Removes (unbinds) the object bound to associated {@code Session} under the given {@code attributeKey}.
 172  
      *
 173  
      * @param sessionKey   session key to use to look up the target session.
 174  
      * @param attributeKey the key uniquely identifying the object to remove
 175  
      * @return the object removed or {@code null} if there was no object bound under the specified {@code attributeKey}.
 176  
      * @throws InvalidSessionException if the specified session has stopped or expired prior to calling this method.
 177  
      * @see org.apache.shiro.session.Session#removeAttribute(Object key)
 178  
      */
 179  
     Object removeAttribute(SessionKey sessionKey, Object attributeKey) throws InvalidSessionException;
 180  
 
 181  
 }