diff --git a/gemp-lotr/db/create-collection_entries.sql b/gemp-lotr/db/create-collection_entries.sql index c65321830..321544f3e 100644 --- a/gemp-lotr/db/create-collection_entries.sql +++ b/gemp-lotr/db/create-collection_entries.sql @@ -6,6 +6,8 @@ ALTER TABLE collection ADD `extra_info` VARCHAR(5000) NULL; ALTER TABLE collection ADD CONSTRAINT uq_collection_player_type UNIQUE (player_id, type); +ALTER TABLE collection MODIFY COLUMN collection mediumblob NULL; + CREATE TABLE `collection_entries` ( `collection_id` int(11) NOT NULL, diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/GempukkuHttpRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/GempukkuHttpRequestHandler.java index d416115aa..fa0f593d4 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/GempukkuHttpRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/GempukkuHttpRequestHandler.java @@ -116,7 +116,7 @@ public class GempukkuHttpRequestHandler extends SimpleChannelInboundHandler context) { super(context); _soloDraftDefinitions = extractObject(context, SoloDraftDefinitions.class); @@ -575,6 +578,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur responseWriter.writeHtmlResponse("OK"); } catch (RuntimeException ex) { + logHttpError(_log, 500, request.uri(), ex); throw new HttpProcessingException(500); } finally { @@ -688,6 +692,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur responseWriter.writeHtmlResponse("OK"); } catch (Exception e) { + _log.error("Error response for " + request.uri(), e); responseWriter.writeHtmlResponse("Error handling request"); } finally { postDecoder.destroy(); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ChatRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ChatRequestHandler.java index 2ca48b0d0..a5d4004fe 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ChatRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ChatRequestHandler.java @@ -16,6 +16,7 @@ import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.commonmark.Extension; import org.commonmark.ext.autolink.AutolinkExtension; import org.commonmark.ext.gfm.strikethrough.StrikethroughExtension; @@ -45,6 +46,8 @@ public class ChatRequestHandler extends LotroServerRequestHandler implements Uri private final Parser _markdownParser; private final HtmlRenderer _markdownRenderer; + private static final Logger _log = Logger.getLogger(ChatRequestHandler.class); + public ChatRequestHandler(Map context, LongPollingSystem longPollingSystem) { super(context); _chatServer = extractObject(context, ChatServer.class); @@ -116,10 +119,13 @@ public class ChatRequestHandler extends LotroServerRequestHandler implements Uri longPollingSystem.processLongPollingResource(polledResource, pollableResource); } } catch (SubscriptionExpiredException exp) { + logHttpError(_log, 410, request.uri(), exp); throw new HttpProcessingException(410); } catch (PrivateInformationException exp) { + logHttpError(_log, 403, request.uri(), exp); throw new HttpProcessingException(403); } catch (ChatCommandErrorException exp) { + logHttpError(_log, 400, request.uri(), exp); throw new HttpProcessingException(400); } } finally { @@ -216,8 +222,10 @@ public class ChatRequestHandler extends LotroServerRequestHandler implements Uri responseWriter.writeXmlResponse(doc); } catch (SubscriptionExpiredException exp) { + logHttpError(_log, 410, "chat poller", exp); responseWriter.writeError(410); } catch (Exception exp) { + logHttpError(_log, 500, "chat poller", exp); responseWriter.writeError(500); } processed = true; @@ -248,6 +256,7 @@ public class ChatRequestHandler extends LotroServerRequestHandler implements Uri responseWriter.writeXmlResponse(doc); } catch (PrivateInformationException exp) { + logHttpError(_log, 403, request.uri(), exp); throw new HttpProcessingException(403); } } diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/CollectionRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/CollectionRequestHandler.java index 6a4b67ec0..88d4b4947 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/CollectionRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/CollectionRequestHandler.java @@ -17,6 +17,7 @@ import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -36,6 +37,8 @@ public class CollectionRequestHandler extends LotroServerRequestHandler implemen private final SortAndFilterCards _sortAndFilterCards; private final ImportCards _importCards; + private static final Logger _log = Logger.getLogger(CollectionRequestHandler.class); + public CollectionRequestHandler(Map context) { super(context); _leagueService = extractObject(context, LeagueService.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java index 11efb423c..58fcb5856 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeckRequestHandler.java @@ -17,6 +17,7 @@ import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; import org.apache.commons.lang.StringEscapeUtils; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -38,6 +39,8 @@ public class DeckRequestHandler extends LotroServerRequestHandler implements Uri private final SoloDraftDefinitions _draftLibrary; private final LotroServer _lotroServer; + private static final Logger _log = Logger.getLogger(DeckRequestHandler.class); + public DeckRequestHandler(Map context) { super(context); _deckDao = extractObject(context, DeckDAO.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java index 82778c59d..593e55c3f 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/DeliveryRequestHandler.java @@ -8,6 +8,7 @@ import com.gempukku.lotro.game.Player; import com.google.common.collect.Iterables; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -19,6 +20,8 @@ import java.util.Map; public class DeliveryRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { private final TransferDAO _transferDAO; + private static final Logger _log = Logger.getLogger(DeliveryRequestHandler.class); + public DeliveryRequestHandler(Map context) { super(context); _transferDAO = extractObject(context, TransferDAO.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameHistoryRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameHistoryRequestHandler.java index 97453252c..429804237 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameHistoryRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/GameHistoryRequestHandler.java @@ -8,6 +8,7 @@ import com.gempukku.lotro.game.Player; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -23,6 +24,8 @@ import java.util.Map; public class GameHistoryRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { private final GameHistoryService _gameHistoryService; + private static final Logger _log = Logger.getLogger(GameHistoryRequestHandler.class); + public GameHistoryRequestHandler(Map context) { super(context); 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 4095a6d0e..85a951178 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 @@ -22,6 +22,7 @@ import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.cookie.Cookie; import io.netty.handler.codec.http.cookie.ServerCookieDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -39,6 +40,8 @@ public class GameRequestHandler extends LotroServerRequestHandler implements Uri private final LongPollingSystem longPollingSystem; private final Set _autoPassDefault = new HashSet<>(); + private static final Logger _log = Logger.getLogger(GameRequestHandler.class); + public GameRequestHandler(Map context, LongPollingSystem longPollingSystem) { super(context); _lotroServer = extractObject(context, LotroServer.class); @@ -143,6 +146,7 @@ public class GameRequestHandler extends LotroServerRequestHandler implements Uri _responseWriter.writeXmlResponse(doc); } catch (Exception e) { + logHttpError(_log, 500, "game update poller", e); _responseWriter.writeError(500); } _processed = true; diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java index 4e4b14637..7ffd6e669 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/HallRequestHandler.java @@ -2,7 +2,6 @@ package com.gempukku.lotro.async.handler; import com.gempukku.lotro.SubscriptionConflictException; import com.gempukku.lotro.SubscriptionExpiredException; -import com.gempukku.lotro.async.GempukkuHttpRequestHandler; import com.gempukku.lotro.async.HttpProcessingException; import com.gempukku.lotro.async.ResponseWriter; import com.gempukku.lotro.collection.CollectionsManager; @@ -43,7 +42,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri private final LotroServer _lotroServer; private final LongPollingSystem longPollingSystem; - private static final Logger _log = Logger.getLogger(GempukkuHttpRequestHandler.class); + private static final Logger _log = Logger.getLogger(HallRequestHandler.class); public HallRequestHandler(Map context, LongPollingSystem longPollingSystem) { super(context); @@ -104,7 +103,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri responseWriter.writeXmlResponse(null); return; } catch (HallException ex) { - + _log.error("Error response for " + request.uri(), ex); } responseWriter.writeXmlResponse(marshalException(e)); } @@ -186,6 +185,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri } catch (Exception ex) { + _log.error("Error response for " + request.uri(), ex); responseWriter.writeXmlResponse(marshalException(new HallException("Failed to create table. Please try again later."))); } finally { @@ -219,6 +219,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri _hallServer.joinQueue(queueId, resourceOwner, deckName); responseWriter.writeXmlResponse(null); } catch (HallException e) { + _log.error("Error response for " + request.uri(), e); responseWriter.writeXmlResponse(marshalException(e)); } } finally { @@ -378,7 +379,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri responseWriter.writeXmlResponse(doc); } catch (HttpProcessingException exp) { - _log.error("HTTP code " + exp.getStatus() + " response for " + request.uri(), exp); + logHttpError(_log, exp.getStatus(), request.uri(), exp); responseWriter.writeError(exp.getStatus()); } catch (Exception exp) { _log.error("Error response for " + request.uri(), exp); @@ -401,9 +402,11 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri longPollingSystem.processLongPollingResource(polledResource, pollableResource); } catch (SubscriptionExpiredException exp) { + logHttpError(_log, 410, request.uri(), exp); responseWriter.writeError(410); } catch (SubscriptionConflictException exp) { + logHttpError(_log, 409, request.uri(), exp); responseWriter.writeError(409); } } finally { @@ -450,6 +453,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri _responseWriter.writeXmlResponse(doc, headers); } catch (Exception exp) { + logHttpError(_log, 500, _request.uri(), exp); _responseWriter.writeError(500); } _processed = true; diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LeagueRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LeagueRequestHandler.java index 7ef3f3a38..3e3c7e20b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LeagueRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LeagueRequestHandler.java @@ -17,6 +17,7 @@ import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -34,6 +35,8 @@ public class LeagueRequestHandler extends LotroServerRequestHandler implements U private final LotroFormatLibrary _formatLibrary; private final LotroCardBlueprintLibrary _library; + private static final Logger _log = Logger.getLogger(LeagueRequestHandler.class); + public LeagueRequestHandler(Map context) { super(context); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LoginRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LoginRequestHandler.java index 251e54d36..d526906db 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LoginRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LoginRequestHandler.java @@ -6,12 +6,16 @@ import com.gempukku.lotro.game.Player; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import java.lang.reflect.Type; import java.util.Date; import java.util.Map; public class LoginRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { + + private static final Logger _log = Logger.getLogger(LoginRequestHandler.class); + public LoginRequestHandler(Map context) { super(context); } diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java index b8dfb7379..d96aa5d25 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java @@ -17,7 +17,7 @@ import io.netty.handler.codec.http.cookie.ServerCookieEncoder; import io.netty.handler.codec.http.multipart.Attribute; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; import io.netty.handler.codec.http.multipart.InterfaceHttpData; - +import org.apache.log4j.Logger; import java.io.IOException; import java.lang.reflect.Type; @@ -33,6 +33,8 @@ public class LotroServerRequestHandler { private final TransferDAO _transferDAO; private final CollectionsManager _collectionManager; + private static final Logger _log = Logger.getLogger(LotroServerRequestHandler.class); + public LotroServerRequestHandler(Map context) { _playerDao = extractObject(context, PlayerDAO.class); _loggedUserHolder = extractObject(context, LoggedUserHolder.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MerchantRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MerchantRequestHandler.java index 803fb8875..dd2185060 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MerchantRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/MerchantRequestHandler.java @@ -6,13 +6,13 @@ import com.gempukku.lotro.collection.CollectionsManager; import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.game.*; import com.gempukku.lotro.game.formats.LotroFormatLibrary; -import com.gempukku.lotro.game.packs.SetDefinition; import com.gempukku.lotro.merchant.MerchantException; import com.gempukku.lotro.merchant.MerchantService; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -29,6 +29,8 @@ public class MerchantRequestHandler extends LotroServerRequestHandler implements private final LotroCardBlueprintLibrary _library; private final LotroFormatLibrary _formatLibrary; + private static final Logger _log = Logger.getLogger(MerchantRequestHandler.class); + public MerchantRequestHandler(Map context) { super(context); @@ -66,6 +68,7 @@ public class MerchantRequestHandler extends LotroServerRequestHandler implements _merchantService.tradeForFoil(resourceOwner, blueprintId); responseWriter.writeXmlResponse(null); } catch (MerchantException exp) { + _log.error("Error response for " + request.uri(), exp); responseWriter.writeXmlResponse(marshalException(exp)); } } finally { @@ -85,6 +88,7 @@ public class MerchantRequestHandler extends LotroServerRequestHandler implements _merchantService.merchantBuysCard(resourceOwner, blueprintId, price); responseWriter.writeXmlResponse(null); } catch (MerchantException exp) { + _log.error("Error response for " + request.uri(), exp); responseWriter.writeXmlResponse(marshalException(exp)); } } finally { @@ -104,6 +108,7 @@ public class MerchantRequestHandler extends LotroServerRequestHandler implements _merchantService.merchantSellsCard(resourceOwner, blueprintId, price); responseWriter.writeXmlResponse(null); } catch (MerchantException exp) { + _log.error("Error response for " + request.uri(), exp); responseWriter.writeXmlResponse(marshalException(exp)); } } finally { diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerInfoRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerInfoRequestHandler.java index 3a8634232..72254eb74 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerInfoRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerInfoRequestHandler.java @@ -1,21 +1,23 @@ package com.gempukku.lotro.async.handler; +import com.alibaba.fastjson.JSON; import com.gempukku.lotro.async.HttpProcessingException; import com.gempukku.lotro.async.ResponseWriter; import com.gempukku.lotro.game.Player; +import com.google.gson.Gson; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; -import com.alibaba.fastjson.JSON; +import org.apache.log4j.Logger; import java.lang.reflect.Type; import java.util.Map; -import com.google.gson.Gson; - public class PlayerInfoRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { private final Gson JsonConvert = new Gson(); + private static final Logger _log = Logger.getLogger(PlayerInfoRequestHandler.class); + public PlayerInfoRequestHandler(Map context) { super(context); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerStatsRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerStatsRequestHandler.java index 57cea3053..9bae07d0b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerStatsRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlayerStatsRequestHandler.java @@ -8,6 +8,7 @@ import com.gempukku.lotro.game.Player; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -21,6 +22,8 @@ import java.util.Map; public class PlayerStatsRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { private final GameHistoryService _gameHistoryService; + private static final Logger _log = Logger.getLogger(PlayerStatsRequestHandler.class); + public PlayerStatsRequestHandler(Map context) { super(context); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlaytestRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlaytestRequestHandler.java index e4c583bae..89ea82d18 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlaytestRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/PlaytestRequestHandler.java @@ -10,6 +10,7 @@ import com.google.gson.Gson; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -25,6 +26,8 @@ public class PlaytestRequestHandler extends LotroServerRequestHandler implements private final GameHistoryService _gameHistoryService; private final Gson JsonConvert = new Gson(); + private static final Logger _log = Logger.getLogger(PlaytestRequestHandler.class); + public PlaytestRequestHandler(Map context) { super(context); _playerDAO = extractObject(context, PlayerDAO.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RegisterRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RegisterRequestHandler.java index 13667c25e..ef17f1b01 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RegisterRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/RegisterRequestHandler.java @@ -6,11 +6,14 @@ import com.gempukku.lotro.db.LoginInvalidException; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import java.lang.reflect.Type; import java.util.Map; public class RegisterRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { + + private static final Logger _log = Logger.getLogger(RegisterRequestHandler.class); public RegisterRequestHandler(Map context) { super(context); } @@ -29,6 +32,7 @@ public class RegisterRequestHandler extends LotroServerRequestHandler implements throw new HttpProcessingException(409); } } catch (LoginInvalidException exp) { + logHttpError(_log, 400, request.uri(), exp); throw new HttpProcessingException(400); } } finally { diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ReplayRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ReplayRequestHandler.java index a8930422a..5b74e18af 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ReplayRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ReplayRequestHandler.java @@ -6,6 +6,7 @@ import com.gempukku.lotro.game.GameRecorder; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.util.AsciiString; +import org.apache.log4j.Logger; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -19,6 +20,8 @@ import static io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE; public class ReplayRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { private final GameRecorder _gameRecorder; + private static final Logger _log = Logger.getLogger(ReplayRequestHandler.class); + public ReplayRequestHandler(Map context) { super(context); @@ -50,6 +53,7 @@ public class ReplayRequestHandler extends LotroServerRequestHandler implements U while ((count = recordedGame.read(bytes)) != -1) baos.write(bytes, 0, count); } catch (IOException exp) { + _log.error("Error 404 response for " + request.uri(), exp); throw new HttpProcessingException(404); } diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ServerStatsRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ServerStatsRequestHandler.java index d8435d046..53607e14e 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ServerStatsRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/ServerStatsRequestHandler.java @@ -8,6 +8,7 @@ import com.gempukku.lotro.game.Player; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -24,6 +25,8 @@ import java.util.TimeZone; public class ServerStatsRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { private final GameHistoryService _gameHistoryService; + private static final Logger _log = Logger.getLogger(ServerStatsRequestHandler.class); + public ServerStatsRequestHandler(Map context) { super(context); @@ -80,6 +83,7 @@ public class ServerStatsRequestHandler extends LotroServerRequestHandler impleme responseWriter.writeXmlResponse(doc); } catch (ParseException exp) { + logHttpError(_log, 400, request.uri(), exp); throw new HttpProcessingException(400); } } else { diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/SoloDraftRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/SoloDraftRequestHandler.java index b0940505f..9551cee42 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/SoloDraftRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/SoloDraftRequestHandler.java @@ -20,6 +20,7 @@ import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.QueryStringDecoder; import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -35,6 +36,8 @@ public class SoloDraftRequestHandler extends LotroServerRequestHandler implement private final LotroFormatLibrary _formatLibrary; private final LeagueService _leagueService; + private static final Logger _log = Logger.getLogger(SoloDraftRequestHandler.class); + public SoloDraftRequestHandler(Map context) { super(context); _leagueService = extractObject(context, LeagueService.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/StatusRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/StatusRequestHandler.java index f4af6ae3f..20076f523 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/StatusRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/StatusRequestHandler.java @@ -7,6 +7,7 @@ import com.gempukku.lotro.game.GameHistoryService; import com.gempukku.lotro.hall.HallServer; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; +import org.apache.log4j.Logger; import java.lang.reflect.Type; import java.util.Map; @@ -16,6 +17,8 @@ public class StatusRequestHandler extends LotroServerRequestHandler implements U private final GameHistoryService _gameHistoryService; private final ChatServer _chatServer; + private static final Logger _log = Logger.getLogger(StatusRequestHandler.class); + public StatusRequestHandler(Map context) { super(context); _hallServer = extractObject(context, HallServer.class); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java index 038bd8967..562973fa3 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/TournamentRequestHandler.java @@ -12,9 +12,10 @@ import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.vo.LotroDeck; import com.gempukku.lotro.tournament.Tournament; import com.gempukku.lotro.tournament.TournamentService; -import org.apache.commons.lang.StringEscapeUtils; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpRequest; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -31,6 +32,8 @@ public class TournamentRequestHandler extends LotroServerRequestHandler implemen private final LotroCardBlueprintLibrary _library; private final SortAndFilterCards _sortAndFilterCards; + private static final Logger _log = Logger.getLogger(TournamentRequestHandler.class); + public TournamentRequestHandler(Map context) { super(context); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/UriRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/UriRequestHandler.java index 348567149..c77871dc9 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/UriRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/UriRequestHandler.java @@ -2,10 +2,23 @@ package com.gempukku.lotro.async.handler; import com.gempukku.lotro.async.ResponseWriter; import io.netty.handler.codec.http.HttpRequest; +import org.apache.log4j.Logger; import java.lang.reflect.Type; import java.util.Map; public interface UriRequestHandler { public void handleRequest(String uri, HttpRequest request, Map context, ResponseWriter responseWriter, String remoteIp) throws Exception; + + default void logHttpError(Logger log, int code, String uri, Exception exp) { + //401, 403, 404, and other 400 errors should just do minimal logging, + // but 400 itself should error out + if(code % 400 < 100 && code != 400) { + log.debug("HTTP " + code + " response for " + uri); + } + // record an HTTP 400 + else if(code == 400 || code % 500 < 100) { + log.error("HTTP code " + code + " response for " + uri, exp); + } + } }