forked from jooby-project/jooby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSession.java
More file actions
250 lines (221 loc) · 5.47 KB
/
Session.java
File metadata and controls
250 lines (221 loc) · 5.47 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
238
239
240
241
242
243
244
245
246
247
248
249
250
/**
* Jooby https://jooby.io
* Apache License Version 2.0 https://jooby.io/LICENSE.txt
* Copyright 2014 Edgar Espina
*/
package io.jooby;
import io.jooby.internal.SessionImpl;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.time.Instant;
import java.util.Map;
/**
* HTTP session. Only basic data types can be saved into session.
*
* @author edgar
* @since 2.0.0
*/
public interface Session {
/** Attribute's name. */
String NAME = "session";
/**
* Session ID or <code>null</code> for stateless (usually signed) sessions.
*
* @return Session ID or <code>null</code> for stateless (usually signed) sessions.
*/
@Nullable String getId();
/**
* Set Session ID.
*
* @param id Session ID or <code>null</code>
* @return Session.
*/
@Nonnull Session setId(@Nullable String id);
/**
* Get a session attribute.
*
* @param name Attribute's name.
* @return An attribute value or missing value.
*/
@Nonnull Value get(@Nonnull String name);
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, int value) {
return put(name, Integer.toString(value));
}
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, long value) {
return put(name, Long.toString(value));
}
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, @Nonnull CharSequence value) {
return put(name, value.toString());
}
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
@Nonnull Session put(@Nonnull String name, @Nonnull String value);
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, float value) {
return put(name, Float.toString(value));
}
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, double value) {
return put(name, Double.toString(value));
}
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, boolean value) {
return put(name, Boolean.toString(value));
}
/**
* Put a session attribute.
*
* @param name Attribute's name.
* @param value Attribute's value.
* @return This session.
*/
default @Nonnull Session put(@Nonnull String name, @Nonnull Number value) {
return put(name, value.toString());
}
/**
* Remove a session attribute.
*
* @param name Attribute's name.
* @return Session attribute or missing value.
*/
@Nonnull Value remove(@Nonnull String name);
/**
* Read-only copy of session attributes.
*
* @return Read-only attributes.
*/
@Nonnull Map<String, String> toMap();
/**
* Session creation time.
*
* @return Session creation time.
*/
@Nonnull Instant getCreationTime();
/**
* Set session creation time.
*
* @param creationTime Session creation time.
* @return This session.
*/
@Nonnull Session setCreationTime(@Nonnull Instant creationTime);
/**
* Session last accessed time.
*
* @return Session creation time.
*/
@Nonnull Instant getLastAccessedTime();
/**
* Set session last accessed time.
*
* @param lastAccessedTime Session creation time.
* @return This session.
*/
@Nonnull Session setLastAccessedTime(@Nonnull Instant lastAccessedTime);
/**
* True for new sessions.
*
* @return True for new sessions.
*/
boolean isNew();
/**
* Set new flag. This method is part of public API but shouldn't be use it.
*
* @param isNew New flag.
* @return This session.
*/
@Nonnull Session setNew(boolean isNew);
/**
* True for modified/dirty sessions.
*
* @return True for modified/dirty sessions.
*/
boolean isModify();
/**
* Set modify flag. This method is part of public API but shouldn't be use it.
*
* @param modify Modify flag.
* @return This session.
*/
@Nonnull Session setModify(boolean modify);
/**
* Remove all attributes.
*
* @return This session.
*/
Session clear();
/**
* Destroy/invalidates this session.
*/
void destroy();
/**
* Assign a new ID to the existing session.
* @return This session.
*/
Session renewId();
/**
* Creates a new session.
*
* @param ctx Web context.
* @param id Session ID or <code>null</code>.
* @return A new session.
*/
static @Nonnull Session create(@Nonnull Context ctx, @Nullable String id) {
return new SessionImpl(ctx, id);
}
/**
* Creates a new session.
*
* @param ctx Web context.
* @param id Session ID or <code>null</code>.
* @param data Session attributes.
* @return A new session.
*/
static @Nonnull Session create(@Nonnull Context ctx, @Nullable String id,
@Nonnull Map<String, String> data) {
return new SessionImpl(ctx, id, data);
}
}