forked from micw/php-java-bridge
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathISession.java
More file actions
237 lines (218 loc) · 8.64 KB
/
Copy pathISession.java
File metadata and controls
237 lines (218 loc) · 8.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
/*-*- mode: Java; tab-width:8 -*-*/
package php.java.bridge;
/*
* Copyright (C) 2003-2007 Jost Boekemeier
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*/
import java.util.Map;
/**
* The ISession interface is implemented by services to provide an
* association between an HTTP client and HTTP server. This
* association, or <em>session</em>, persists over multiple
* connections and/or requests during a given time period. Sessions
* are used to maintain state and user identity across multiple page
* requests. <br> Example:<br>
*
* $session=java_session();<br>
* $val=$session->get("i");<br>
* if(!$val) val = 0;
* echo $val++; <br>
* $session->put("i", new java("java.lang.Integer", $val));<br>
* <P>An implementation of ISession represents the server's view
* of the session.
*
* When java_session() is called without a session name, the server
* considers a session to be new until it has been joined by the
* client. Until the client joins the session, the isNew method
* returns true. A value of true can indicate one of these three
* cases: <UL> <LI>the client does not yet know about the session
* <LI>the session has not yet begun <LI>the client chooses not to
* join the session. This case will occur if the client supports only
* cookies and chooses to reject any cookies sent by the server. If
* the server supports URL rewriting, this case will not commonly
* occur. </UL>
*
* <P>It is the responsibility of developers to design their
* applications to account for situations where a client has not
* joined a session. For example, in the following code snippet isNew
* is called to determine whether a session is new. If it is, the
* server will require the client to start a session by directing the
* client to a welcome page <tt>welcomeURL</tt> where a user might be
* required to enter some information and send it to the server before
* gaining access to subsequent pages.
* <P>
* $session=java_session();<br>
* if($session->isNew()) { <br>
* header("Location: http://".$_SERVER['HTTP_HOST'] .dirname($_SERVER['PHP_SELF']) ."/welcomeURL.html");<br>
* }<br>
*/
public interface ISession {
/** Get an existing session or create one */
public static final short SESSION_GET_OR_CREATE = 0;
/** Create a new session */
public static final short SESSION_CREATE_NEW = 1;
/** Get an existing session */
public static final short SESSION_GET = 2;
/**
* Returns the object bound to the given name in the session's
* context layer data. Returns null if there is no such
* binding.
*
* @param name the name of the binding to find
* @return the value bound to that name, or null if the binding does
* not exist.
* @exception IllegalStateException if an attempt is made to access
* session data after it has been invalidated
*/
public Object get(Object name);
/**
* Binds the specified object into the session's context layer
* data with the given name. Any existing binding with the same
* name is replaced.
*
* @param name the name to which the data object will be bound. This
* parameter cannot be null.
* @param value the data object to be bound. This parameter cannot be null.
* @exception IllegalStateException if an attempt is made to access
* session data after the session has been invalidated.
*/
public void put(Object name, Object value);
/**
* Removes the object bound to the given name in the session's
* context layer data. Does nothing if there is no object
* bound to the given name.
*
* @param name the name of the object to remove
* @return The old object
* @exception IllegalStateException if an attempt is made to access
* session data after the session has been invalidated.
*/
public Object remove(Object name);
/**
*
* Specifies the time, in seconds, between client requests before
* the servlet container will invalidate this session. A negative
* time indicates the session should never timeout.
*
* @param interval An integer specifying the number
* of seconds
*
*/
public void setTimeout(int interval);
/**
* Returns the maximum time interval, in seconds, that the servlet
* container will keep this session open between client
* accesses. After this interval, the servlet container will
* invalidate the session. The maximum time interval can be set
* with the <code>setTimeout</code> method. A negative time
* indicates the session should never timeout.
*
*
* @return an integer specifying the number of
* seconds this session remains open
* between client requests
*
* @see #setTimeout
*
*
*/
public int getTimeout();
/**
*
* Returns the time when this session was created, measured
* in milliseconds since midnight January 1, 1970 GMT.
*
* @return a <code>long</code> specifying
* when this session was created,
* expressed in
* milliseconds since 1/1/1970 GMT
*
* @exception IllegalStateException if this method is called on an
* invalidated session
*
*/
public long getCreationTime();
/**
*
* Returns the last time the client sent a request associated with
* this session, as the number of milliseconds since midnight
* January 1, 1970 GMT.
*
* <p>Actions that your application takes, such as getting or setting
* a value associated with the session, do not affect the access
* time.
*
* @return a <code>long</code>
* representing the last time
* the client sent a request associated
* with this session, expressed in
* milliseconds since 1/1/1970 GMT
*
* @throws IllegalStateException if this method is called on an
* invalidated session
*
*/
public long getLastAccessedTime();
/**
* Returns the number of active sessions.
* @return # of active sessions.
*/
public int getSessionCount();
/**
* A session is considered to be "new" if it has been created by
* the server, but the client has not yet acknowledged joining the
* session. For example, if the server supported only cookie-based
* sessions and the client had completely disabled the use of
* cookies, then calls to JavaBridge.getSession() would always
* return "new" sessions.
*
* @return true if the session has been created by the server but
* the client has not yet acknowledged joining the session; false
* otherwise
* @exception IllegalStateException if an attempt is made to access
* session data after the session has been invalidated
*/
public boolean isNew();
/**
* Causes this representation of the session to be invalidated an
* removed from its context.
*
* @exception IllegalStateException if an attempt is made to
* access session data after the session has been invalidated
*/
public void destroy();
/**
* Copies all bindings to the session's context layer data.
* Any existing binding with the same name is replaced.
*
* @param vars the map
* parameter cannot be null.
* @exception IllegalStateException if an attempt is made to
* access session data after the session has been invalidated.
*/
public void putAll(Map vars);
/**
* Returns a map of all bindings maintained by this session.
* @return the map
* @exception IllegalStateException if an attempt is made to access
* session data after it has been invalidated
*/
public Map getAll();
}