Adding exception logging to ALL request handlers. Every catch should now log the exception to file instead of swallowing it. Also added necessary default value to collection blob.

This commit is contained in:
Christian 'ketura' McCarty
2022-11-03 00:43:30 -05:00
parent a62d7b3cb9
commit c7c23aff82
24 changed files with 105 additions and 11 deletions

View File

@@ -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,

View File

@@ -116,7 +116,7 @@ public class GempukkuHttpRequestHandler extends SimpleChannelInboundHandler<Full
responseSender.writeError(exp.getStatus());
} catch (Exception exp) {
_log.error("Error while processing request", exp);
_log.error("Error response for " + uri, exp);
responseSender.writeError(500);
}
}
@@ -281,6 +281,7 @@ public class GempukkuHttpRequestHandler extends SimpleChannelInboundHandler<Full
} catch (Exception exp) {
byte[] content = new byte[0];
// Build the response object.
_log.error("Error response for " + request.uri(), exp);
FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.INTERNAL_SERVER_ERROR, Unpooled.wrappedBuffer(content), null, EmptyHttpHeaders.INSTANCE);
sendResponse(ctx, request, response);
}
@@ -355,6 +356,7 @@ public class GempukkuHttpRequestHandler extends SimpleChannelInboundHandler<Full
} catch (IOException exp) {
byte[] content = new byte[0];
// Build the response object.
_log.error("Error response for " + request.uri(), exp);
FullHttpResponse response = new DefaultFullHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(500), Unpooled.wrappedBuffer(content), convertToHeaders(null), EmptyHttpHeaders.INSTANCE);
sendResponse(ctx, request, response);
}

View File

@@ -22,6 +22,7 @@ import com.gempukku.lotro.tournament.TournamentService;
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;
@@ -50,6 +51,8 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
private final AdminService _adminService;
private final ChatServer _chatServer;
private static final Logger _log = Logger.getLogger(AdminRequestHandler.class);
public AdminRequestHandler(Map<Type, Object> 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();

View File

@@ -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<Type, Object> 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);
}
}

View File

@@ -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<Type, Object> context) {
super(context);
_leagueService = extractObject(context, LeagueService.class);

View File

@@ -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<Type, Object> context) {
super(context);
_deckDao = extractObject(context, DeckDAO.class);

View File

@@ -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<Type, Object> context) {
super(context);
_transferDAO = extractObject(context, TransferDAO.class);

View File

@@ -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<Type, Object> context) {
super(context);

View File

@@ -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<Phase> _autoPassDefault = new HashSet<>();
private static final Logger _log = Logger.getLogger(GameRequestHandler.class);
public GameRequestHandler(Map<Type, Object> 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;

View File

@@ -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<Type, Object> 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;

View File

@@ -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<Type, Object> context) {
super(context);

View File

@@ -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<Type, Object> context) {
super(context);
}

View File

@@ -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<Type, Object> context) {
_playerDao = extractObject(context, PlayerDAO.class);
_loggedUserHolder = extractObject(context, LoggedUserHolder.class);

View File

@@ -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<Type, Object> 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 {

View File

@@ -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<Type, Object> context) {
super(context);

View File

@@ -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<Type, Object> context) {
super(context);

View File

@@ -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<Type, Object> context) {
super(context);
_playerDAO = extractObject(context, PlayerDAO.class);

View File

@@ -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<Type, Object> 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 {

View File

@@ -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<Type, Object> 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);
}

View File

@@ -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<Type, Object> 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 {

View File

@@ -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<Type, Object> context) {
super(context);
_leagueService = extractObject(context, LeagueService.class);

View File

@@ -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<Type, Object> context) {
super(context);
_hallServer = extractObject(context, HallServer.class);

View File

@@ -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<Type, Object> context) {
super(context);

View File

@@ -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<Type, Object> 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);
}
}
}