do not break if userprofile store can not be found
This commit is contained in:
parent
7d8205dd7a
commit
f0d743642a
2 changed files with 15 additions and 17 deletions
|
@ -1,3 +1,3 @@
|
|||
group = org.xbib
|
||||
name = net-http
|
||||
version = 4.7.0
|
||||
version = 4.7.1
|
||||
|
|
|
@ -108,16 +108,7 @@ public class IncomingContextHandler implements HttpHandler {
|
|||
// important
|
||||
context.getAttributes().put("session", session);
|
||||
if (userProfile == null) {
|
||||
try {
|
||||
userProfile = recoverUserProfile(context, session, payload);
|
||||
if (userProfile != null) {
|
||||
logger.log(Level.FINE, "user profile recovered");
|
||||
} else {
|
||||
logger.log(Level.FINE, "no user profile recovered");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
logger.log(Level.FINE, "unable to recover new user profile: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
// important
|
||||
context.getAttributes().put("userprofile", userProfile);
|
||||
|
@ -178,25 +169,32 @@ public class IncomingContextHandler implements HttpHandler {
|
|||
@SuppressWarnings("unchecked")
|
||||
protected UserProfile recoverUserProfile(HttpRouterContext context,
|
||||
Session session,
|
||||
Map<String, Object> payload)
|
||||
throws IOException {
|
||||
Map<String, Object> payload) {
|
||||
// already in context from previous handler?
|
||||
UserProfile userProfile = context.getAttributes().get(UserProfile.class, "userprofile");
|
||||
if (userProfile != null) {
|
||||
try {
|
||||
return userProfileCodec.read(userProfile.getUserId());
|
||||
} catch (IOException e) {
|
||||
// ignore I/O error, leads to empty user profile
|
||||
}
|
||||
}
|
||||
// initialize
|
||||
Map<String, Object> map = null;
|
||||
// from session?
|
||||
// is user profile present in session?
|
||||
if (payload == null && session != null) {
|
||||
// session has stored user profile? this is important for spanning HTTP request/response like in HTTP POST/FORWARD/GET
|
||||
map = (Map<String, Object>) session.get("userprofile");
|
||||
} else if (payload != null) {
|
||||
// otherwise from cookie?
|
||||
// is a mini user profile otherwise present in our cookie?
|
||||
map = (Map<String, Object>) payload.get("map");
|
||||
}
|
||||
if (map != null && map.containsKey(UserProfile.USER_ID)) {
|
||||
try {
|
||||
return userProfileCodec.read(BaseUserProfile.fromMap(map).getUserId());
|
||||
} catch (IOException e) {
|
||||
// ignore I/O error, leads to incomplete user profile
|
||||
}
|
||||
} else {
|
||||
logger.log(Level.FINE, "unable to find info for initialize user profile");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue