diff --git a/gradle.properties b/gradle.properties index d78ccfb..3b57d67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ group = org.xbib name = net-http -version = 4.7.0 +version = 4.7.1 diff --git a/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingContextHandler.java b/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingContextHandler.java index 312513b..0c983d1 100644 --- a/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingContextHandler.java +++ b/net-http-server/src/main/java/org/xbib/net/http/server/session/IncomingContextHandler.java @@ -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); - } + userProfile = recoverUserProfile(context, session, payload); } // 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 payload) - throws IOException { + Map payload) { // already in context from previous handler? UserProfile userProfile = context.getAttributes().get(UserProfile.class, "userprofile"); if (userProfile != null) { - return userProfileCodec.read(userProfile.getUserId()); + try { + return userProfileCodec.read(userProfile.getUserId()); + } catch (IOException e) { + // ignore I/O error, leads to empty user profile + } } // initialize Map 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) session.get("userprofile"); } else if (payload != null) { - // otherwise from cookie? + // is a mini user profile otherwise present in our cookie? map = (Map) payload.get("map"); } if (map != null && map.containsKey(UserProfile.USER_ID)) { - return userProfileCodec.read(BaseUserProfile.fromMap(map).getUserId()); + 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"); }