From 9ebb53d858d15ac8e64f15ed8d5a7c5509a78086 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Sun, 13 Jan 2013 10:23:08 +0000 Subject: [PATCH] Fixing NullPointerException while extracting cookies. --- .../lotro/async/LoggedUserHolder.java | 26 +++++++++--------- .../async/handler/GameRequestHandler.java | 27 ++++++++++--------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java index 009e5b61b..a0e9fd8b7 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/LoggedUserHolder.java @@ -2,14 +2,13 @@ package com.gempukku.lotro.async; import org.jboss.netty.handler.codec.http.Cookie; import org.jboss.netty.handler.codec.http.CookieDecoder; +import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.COOKIE; import org.jboss.netty.handler.codec.http.HttpRequest; import java.util.*; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; -import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.COOKIE; - public class LoggedUserHolder { private long _loggedUserExpireLength = 1000 * 60 * 10; // 10 minutes session length private long _expireCheckInterval = 1000 * 60; // check every minute @@ -29,15 +28,18 @@ public class LoggedUserHolder { _readWriteLock.readLock().lock(); try { CookieDecoder cookieDecoder = new CookieDecoder(); - Set cookies = cookieDecoder.decode(request.getHeader(COOKIE)); - for (Cookie cookie : cookies) { - if (cookie.getName().equals("loggedUser")) { - String value = cookie.getValue(); - if (value != null) { - String loggedUser = _users.get(value); - if (loggedUser != null) { - _lastAccess.put(value, System.currentTimeMillis()); - return loggedUser; + String cookieHeader = request.getHeader(COOKIE); + if (cookieHeader != null) { + Set cookies = cookieDecoder.decode(cookieHeader); + for (Cookie cookie : cookies) { + if (cookie.getName().equals("loggedUser")) { + String value = cookie.getValue(); + if (value != null) { + String loggedUser = _users.get(value); + if (loggedUser != null) { + _lastAccess.put(value, System.currentTimeMillis()); + return loggedUser; + } } } } @@ -82,7 +84,7 @@ public class LoggedUserHolder { while (true) { _readWriteLock.writeLock().lock(); try { - long currentTime = System.currentTimeMillis(); + long currentTime = System.currentTimeMillis(); Iterator> iterator = _lastAccess.entrySet().iterator(); if (iterator.hasNext()) { Map.Entry lastAccess = iterator.next(); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameRequestHandler.java index 4fb0d5d9a..e3c18aad9 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameRequestHandler.java @@ -219,19 +219,22 @@ public class GameRequestHandler extends LotroServerRequestHandler implements Uri private Set getAutoPassPhases(HttpRequest request) { CookieDecoder cookieDecoder = new CookieDecoder(); - Set cookies = cookieDecoder.decode(request.getHeader(HttpHeaders.Names.COOKIE)); - for (Cookie cookie : cookies) { - if (cookie.getName().equals("autoPassPhases")) { - final String[] phases = cookie.getValue().split("0"); - Set result = new HashSet(); - for (String phase : phases) - result.add(Phase.valueOf(phase)); - return result; + String cookieHeader = request.getHeader(HttpHeaders.Names.COOKIE); + if (cookieHeader != null) { + Set cookies = cookieDecoder.decode(cookieHeader); + for (Cookie cookie : cookies) { + if (cookie.getName().equals("autoPassPhases")) { + final String[] phases = cookie.getValue().split("0"); + Set result = new HashSet(); + for (String phase : phases) + result.add(Phase.valueOf(phase)); + return result; + } + } + for (Cookie cookie : cookies) { + if (cookie.getName().equals("autoPass") && cookie.getValue().equals("false")) + return Collections.emptySet(); } - } - for (Cookie cookie : cookies) { - if (cookie.getName().equals("autoPass") && cookie.getValue().equals("false")) - return Collections.emptySet(); } return _autoPassDefault; }