Exception handling.

This commit is contained in:
marcins78
2013-01-09 15:06:22 +00:00
parent 829c8d9658
commit 2542c7c6d3
11 changed files with 192 additions and 243 deletions

View File

@@ -84,7 +84,13 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler {
}
};
_uriRequestHandler.handleRequest(uri, request, _objects, responseWriter, e);
try {
_uriRequestHandler.handleRequest(uri, request, _objects, responseWriter, e);
} catch (HttpProcessingException exp) {
responseWriter.writeError(exp.getStatus());
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
}
@@ -160,7 +166,7 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler {
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.valueOf(status));
if (headers != null) {
for (Map.Entry<String, String> header: headers.entrySet())
for (Map.Entry<String, String> header : headers.entrySet())
response.setHeader(header.getKey(), header.getValue());
}
@@ -184,7 +190,7 @@ public class LotroHttpRequestHandler extends SimpleChannelUpstreamHandler {
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
if (headers != null) {
for (Map.Entry<String, String> header: headers.entrySet())
for (Map.Entry<String, String> header : headers.entrySet())
response.setHeader(header.getKey(), header.getValue());
}

View File

@@ -50,34 +50,29 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
try {
if (uri.equals("/clearCache") && request.getMethod() == HttpMethod.GET) {
clearCache(request, responseWriter);
} else if (uri.equals("/shutdown") && request.getMethod() == HttpMethod.GET) {
shutdown(request, responseWriter);
} else if (uri.equals("/setMotd") && request.getMethod() == HttpMethod.POST) {
setMotd(request, responseWriter);
} else if (uri.equals("/previewSealedLeague") && request.getMethod() == HttpMethod.POST) {
previewSealedLeague(request, responseWriter);
} else if (uri.equals("/addSealedLeague") && request.getMethod() == HttpMethod.POST) {
addSealedLeague(request, responseWriter);
} else if (uri.equals("/previewConstructedLeague") && request.getMethod() == HttpMethod.POST) {
previewConstructedLeague(request, responseWriter);
} else if (uri.equals("/addConstructedLeague") && request.getMethod() == HttpMethod.POST) {
addConstructedLeague(request, responseWriter);
} else if (uri.equals("/addItems") && request.getMethod() == HttpMethod.POST) {
addItems(request, responseWriter);
} else if (uri.equals("/addItemsToCollection") && request.getMethod() == HttpMethod.POST) {
addItemsToCollection(request, responseWriter);
} else {
responseWriter.writeError(404);
}
} catch (HttpProcessingException exp) {
responseWriter.writeError(exp.getStatus());
} catch (Exception exp) {
responseWriter.writeError(500);
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals("/clearCache") && request.getMethod() == HttpMethod.GET) {
clearCache(request, responseWriter);
} else if (uri.equals("/shutdown") && request.getMethod() == HttpMethod.GET) {
shutdown(request, responseWriter);
} else if (uri.equals("/setMotd") && request.getMethod() == HttpMethod.POST) {
setMotd(request, responseWriter);
} else if (uri.equals("/previewSealedLeague") && request.getMethod() == HttpMethod.POST) {
previewSealedLeague(request, responseWriter);
} else if (uri.equals("/addSealedLeague") && request.getMethod() == HttpMethod.POST) {
addSealedLeague(request, responseWriter);
} else if (uri.equals("/previewConstructedLeague") && request.getMethod() == HttpMethod.POST) {
previewConstructedLeague(request, responseWriter);
} else if (uri.equals("/addConstructedLeague") && request.getMethod() == HttpMethod.POST) {
addConstructedLeague(request, responseWriter);
} else if (uri.equals("/addItems") && request.getMethod() == HttpMethod.POST) {
addItems(request, responseWriter);
} else if (uri.equals("/addItemsToCollection") && request.getMethod() == HttpMethod.POST) {
addItemsToCollection(request, responseWriter);
} else {
responseWriter.writeError(404);
}
}
private void addItemsToCollection(HttpRequest request, ResponseWriter responseWriter) throws Exception {
@@ -90,7 +85,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
Collection<CardCollection.Item> productItems = getProductItems(product);
Map<Player,CardCollection> playersCollection = _collectionManager.getPlayersCollection(collectionType);
Map<Player, CardCollection> playersCollection = _collectionManager.getPlayersCollection(collectionType);
for (Map.Entry<Player, CardCollection> playerCollection : playersCollection.entrySet())
_collectionManager.addItemsToPlayerCollection(true, reason, playerCollection.getKey(), createCollectionType(collectionType), productItems);
@@ -184,172 +179,172 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur
}
private void previewConstructedLeague(HttpRequest request, ResponseWriter responseWriter) throws Exception {
validateLeagueAdmin(request);
validateLeagueAdmin(request);
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String start = getFormParameterSafely(postDecoder, "start");
String collectionType = getFormParameterSafely(postDecoder, "collectionType");
String prizeMultiplier = getFormParameterSafely(postDecoder, "prizeMultiplier");
List<String> formats = getFormMultipleParametersSafely(postDecoder, "format");
List<String> serieDurations = getFormMultipleParametersSafely(postDecoder, "serieDuration");
List<String> maxMatches = getFormMultipleParametersSafely(postDecoder, "maxMatches");
String name = getFormParameterSafely(postDecoder, "name");
int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost"));
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String start = getFormParameterSafely(postDecoder, "start");
String collectionType = getFormParameterSafely(postDecoder, "collectionType");
String prizeMultiplier = getFormParameterSafely(postDecoder, "prizeMultiplier");
List<String> formats = getFormMultipleParametersSafely(postDecoder, "format");
List<String> serieDurations = getFormMultipleParametersSafely(postDecoder, "serieDuration");
List<String> maxMatches = getFormMultipleParametersSafely(postDecoder, "maxMatches");
String name = getFormParameterSafely(postDecoder, "name");
int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost"));
StringBuilder sb = new StringBuilder();
sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.size());
for (int i = 0; i < formats.size(); i++)
sb.append("," + formats.get(i) + "," + serieDurations.get(i) + "," + maxMatches.get(i));
StringBuilder sb = new StringBuilder();
sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.size());
for (int i = 0; i < formats.size(); i++)
sb.append("," + formats.get(i) + "," + serieDurations.get(i) + "," + maxMatches.get(i));
String parameters = sb.toString();
LeagueData leagueData = new NewConstructedLeagueData(parameters);
String parameters = sb.toString();
LeagueData leagueData = new NewConstructedLeagueData(parameters);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.newDocument();
Document doc = documentBuilder.newDocument();
final List<LeagueSerieData> series = leagueData.getSeries();
final List<LeagueSerieData> series = leagueData.getSeries();
int end = series.get(series.size() - 1).getEnd();
int end = series.get(series.size() - 1).getEnd();
Element leagueElem = doc.createElement("league");
Element leagueElem = doc.createElement("league");
leagueElem.setAttribute("name", name);
leagueElem.setAttribute("cost", String.valueOf(cost));
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
leagueElem.setAttribute("end", String.valueOf(end));
leagueElem.setAttribute("name", name);
leagueElem.setAttribute("cost", String.valueOf(cost));
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
leagueElem.setAttribute("end", String.valueOf(end));
for (LeagueSerieData serie : series) {
Element serieElem = doc.createElement("serie");
serieElem.setAttribute("type", serie.getName());
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
for (LeagueSerieData serie : series) {
Element serieElem = doc.createElement("serie");
serieElem.setAttribute("type", serie.getName());
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
leagueElem.appendChild(serieElem);
}
doc.appendChild(leagueElem);
responseWriter.writeResponse(doc);
leagueElem.appendChild(serieElem);
}
doc.appendChild(leagueElem);
responseWriter.writeResponse(doc);
}
private void addSealedLeague(HttpRequest request, ResponseWriter responseWriter) throws Exception {
validateLeagueAdmin(request);
validateLeagueAdmin(request);
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String format = getFormParameterSafely(postDecoder, "format");
String start = getFormParameterSafely(postDecoder, "start");
String serieDuration = getFormParameterSafely(postDecoder, "serieDuration");
String maxMatches = getFormParameterSafely(postDecoder, "maxMatches");
String name = getFormParameterSafely(postDecoder, "name");
int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost"));
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String format = getFormParameterSafely(postDecoder, "format");
String start = getFormParameterSafely(postDecoder, "start");
String serieDuration = getFormParameterSafely(postDecoder, "serieDuration");
String maxMatches = getFormParameterSafely(postDecoder, "maxMatches");
String name = getFormParameterSafely(postDecoder, "name");
int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost"));
String code = String.valueOf(System.currentTimeMillis());
String code = String.valueOf(System.currentTimeMillis());
String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name;
LeagueData leagueData = new NewSealedLeagueData(parameters);
List<LeagueSerieData> series = leagueData.getSeries();
int leagueStart = series.get(0).getStart();
int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2);
String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name;
LeagueData leagueData = new NewSealedLeagueData(parameters);
List<LeagueSerieData> series = leagueData.getSeries();
int leagueStart = series.get(0).getStart();
int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2);
_leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd);
_leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd);
_leagueService.clearCache();
_leagueService.clearCache();
responseWriter.writeHtmlResponse("OK");
responseWriter.writeHtmlResponse("OK");
}
private void previewSealedLeague(HttpRequest request, ResponseWriter responseWriter) throws Exception {
validateLeagueAdmin(request);
validateLeagueAdmin(request);
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String format = getFormParameterSafely(postDecoder, "format");
String start = getFormParameterSafely(postDecoder, "start");
String serieDuration = getFormParameterSafely(postDecoder, "serieDuration");
String maxMatches = getFormParameterSafely(postDecoder, "maxMatches");
String name = getFormParameterSafely(postDecoder, "name");
int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost"));
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String format = getFormParameterSafely(postDecoder, "format");
String start = getFormParameterSafely(postDecoder, "start");
String serieDuration = getFormParameterSafely(postDecoder, "serieDuration");
String maxMatches = getFormParameterSafely(postDecoder, "maxMatches");
String name = getFormParameterSafely(postDecoder, "name");
int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost"));
String code = String.valueOf(System.currentTimeMillis());
String code = String.valueOf(System.currentTimeMillis());
String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name;
LeagueData leagueData = new NewSealedLeagueData(parameters);
String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name;
LeagueData leagueData = new NewSealedLeagueData(parameters);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.newDocument();
Document doc = documentBuilder.newDocument();
final List<LeagueSerieData> series = leagueData.getSeries();
final List<LeagueSerieData> series = leagueData.getSeries();
int end = series.get(series.size() - 1).getEnd();
int end = series.get(series.size() - 1).getEnd();
Element leagueElem = doc.createElement("league");
Element leagueElem = doc.createElement("league");
leagueElem.setAttribute("name", name);
leagueElem.setAttribute("cost", String.valueOf(cost));
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
leagueElem.setAttribute("end", String.valueOf(end));
leagueElem.setAttribute("name", name);
leagueElem.setAttribute("cost", String.valueOf(cost));
leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart()));
leagueElem.setAttribute("end", String.valueOf(end));
for (LeagueSerieData serie : series) {
Element serieElem = doc.createElement("serie");
serieElem.setAttribute("type", serie.getName());
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
for (LeagueSerieData serie : series) {
Element serieElem = doc.createElement("serie");
serieElem.setAttribute("type", serie.getName());
serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches()));
serieElem.setAttribute("start", String.valueOf(serie.getStart()));
serieElem.setAttribute("end", String.valueOf(serie.getEnd()));
serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName());
serieElem.setAttribute("collection", serie.getCollectionType().getFullName());
serieElem.setAttribute("limited", String.valueOf(serie.isLimited()));
leagueElem.appendChild(serieElem);
}
leagueElem.appendChild(serieElem);
}
doc.appendChild(leagueElem);
doc.appendChild(leagueElem);
responseWriter.writeResponse(doc);
responseWriter.writeResponse(doc);
}
private void setMotd(HttpRequest request, ResponseWriter responseWriter) throws HttpProcessingException, Exception {
validateAdmin(request);
validateAdmin(request);
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String motd = getFormParameterSafely(postDecoder, "motd");
String motd = getFormParameterSafely(postDecoder, "motd");
_hallServer.setMOTD(motd);
_hallServer.setMOTD(motd);
responseWriter.writeHtmlResponse("OK");
responseWriter.writeHtmlResponse("OK");
}
private void shutdown(HttpRequest request, ResponseWriter responseWriter) throws HttpProcessingException {
validateAdmin(request);
validateAdmin(request);
QueryStringDecoder queryDecoder = new QueryStringDecoder(request.getUri());
boolean shutdown = Boolean.valueOf(getQueryParameterSafely(queryDecoder, "shutdown"));
QueryStringDecoder queryDecoder = new QueryStringDecoder(request.getUri());
boolean shutdown = Boolean.valueOf(getQueryParameterSafely(queryDecoder, "shutdown"));
_hallServer.setShutdown(shutdown);
_hallServer.setShutdown(shutdown);
responseWriter.writeHtmlResponse("OK");
responseWriter.writeHtmlResponse("OK");
}
private void clearCache(HttpRequest request, ResponseWriter responseWriter) throws HttpProcessingException {
validateAdmin(request);
validateAdmin(request);
_leagueService.clearCache();
_tournamentService.clearCache();
_leagueService.clearCache();
_tournamentService.clearCache();
int before = _cacheManager.getTotalCount();
int before = _cacheManager.getTotalCount();
_cacheManager.clearCaches();
_cacheManager.clearCaches();
int after = _cacheManager.getTotalCount();
int after = _cacheManager.getTotalCount();
responseWriter.writeHtmlResponse("Before: " + before + "<br>OK<br>After: " + after);
responseWriter.writeHtmlResponse("Before: " + before + "<br>OK<br>After: " + after);
}
private void validateAdmin(HttpRequest request) throws HttpProcessingException {

View File

@@ -40,21 +40,14 @@ public class ChatRequestHandler extends LotroServerRequestHandler implements Uri
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
try {
if (uri.startsWith("/") && request.getMethod() == HttpMethod.GET) {
getMessages(request, URLDecoder.decode(uri.substring(1)), responseWriter);
} else if (uri.startsWith("/") && request.getMethod() == HttpMethod.POST) {
postMessages(request, URLDecoder.decode(uri.substring(1)), responseWriter);
} else {
responseWriter.writeError(404);
}
} catch (HttpProcessingException exp) {
responseWriter.writeError(exp.getStatus());
} catch (Exception exp) {
responseWriter.writeError(500);
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.startsWith("/") && request.getMethod() == HttpMethod.GET) {
getMessages(request, URLDecoder.decode(uri.substring(1)), responseWriter);
} else if (uri.startsWith("/") && request.getMethod() == HttpMethod.POST) {
postMessages(request, URLDecoder.decode(uri.substring(1)), responseWriter);
} else {
responseWriter.writeError(404);
}
}
private void postMessages(HttpRequest request, String room, ResponseWriter responseWriter) throws Exception {

View File

@@ -74,8 +74,7 @@ public class CollectionRequestHandler extends LotroServerRequestHandler implemen
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
try {
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals("") && request.getMethod() == HttpMethod.GET) {
getCollectionTypes(request, responseWriter);
} else if (uri.startsWith("/") && request.getMethod() == HttpMethod.POST) {
@@ -85,11 +84,6 @@ public class CollectionRequestHandler extends LotroServerRequestHandler implemen
} else {
responseWriter.writeError(404);
}
} catch (HttpProcessingException exp) {
responseWriter.writeError(exp.getStatus());
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private void getCollection(HttpRequest request, String collectionType, ResponseWriter responseWriter) throws Exception {

View File

@@ -27,7 +27,7 @@ public class DeckRequestHandler extends LotroServerRequestHandler implements Uri
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals("/list") && request.getMethod() == HttpMethod.GET) {
listDecks(request, responseWriter);
} else {
@@ -35,29 +35,25 @@ public class DeckRequestHandler extends LotroServerRequestHandler implements Uri
}
}
private void listDecks(HttpRequest request, ResponseWriter responseWriter) {
try {
QueryStringDecoder queryDecoder = new QueryStringDecoder(request.getUri());
String participantId = getQueryParameterSafely(queryDecoder, "participantId");
private void listDecks(HttpRequest request, ResponseWriter responseWriter) throws Exception {
QueryStringDecoder queryDecoder = new QueryStringDecoder(request.getUri());
String participantId = getQueryParameterSafely(queryDecoder, "participantId");
Player resourceOwner = getResourceOwnerSafely(request, participantId);
Player resourceOwner = getResourceOwnerSafely(request, participantId);
List<String> names = new ArrayList<String>(_deckDao.getPlayerDeckNames(resourceOwner));
Collections.sort(names);
List<String> names = new ArrayList<String>(_deckDao.getPlayerDeckNames(resourceOwner));
Collections.sort(names);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.newDocument();
Element decksElem = doc.createElement("decks");
for (String name : names) {
Element deckElem = doc.createElement("deck");
deckElem.appendChild(doc.createTextNode(name));
decksElem.appendChild(deckElem);
}
doc.appendChild(decksElem);
responseWriter.writeResponse(doc);
} catch (Exception exp) {
responseWriter.writeError(500);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.newDocument();
Element decksElem = doc.createElement("decks");
for (String name : names) {
Element deckElem = doc.createElement("deck");
deckElem.appendChild(doc.createTextNode(name));
decksElem.appendChild(deckElem);
}
doc.appendChild(decksElem);
responseWriter.writeResponse(doc);
}
}

View File

@@ -53,7 +53,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals("") && request.getMethod() == HttpMethod.GET) {
getHall(request, responseWriter);
} else if (uri.equals("") && request.getMethod() == HttpMethod.POST) {
@@ -81,8 +81,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
}
}
private void joinTable(HttpRequest request, String tableId, ResponseWriter responseWriter) {
try {
private void joinTable(HttpRequest request, String tableId, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
Player resourceOwner = getResourceOwnerSafely(request, participantId);
@@ -91,26 +90,18 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
_hallServer.joinTableAsPlayer(tableId, resourceOwner, deckName);
responseWriter.writeResponse(null);
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private void leaveTable(HttpRequest request, ResponseWriter responseWriter) {
try {
private void leaveTable(HttpRequest request, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
Player resourceOwner = getResourceOwnerSafely(request, participantId);
_hallServer.leaveAwaitingTables(resourceOwner);
responseWriter.writeResponse(null);
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private void createTable(HttpRequest request, ResponseWriter responseWriter) {
try {
private void createTable(HttpRequest request, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
String format = getFormParameterSafely(postDecoder, "format");
@@ -124,13 +115,9 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
} catch (HallException e) {
responseWriter.writeResponse(marshalException(e));
}
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private void dropFromTournament(HttpRequest request, String tournamentId, ResponseWriter responseWriter) {
try {
private void dropFromTournament(HttpRequest request, String tournamentId, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
Player resourceOwner = getResourceOwnerSafely(request, participantId);
@@ -138,13 +125,9 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
_hallServer.dropFromTournament(tournamentId, resourceOwner);
responseWriter.writeResponse(null);
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private void joinQueue(HttpRequest request, String queueId, ResponseWriter responseWriter) {
try {
private void joinQueue(HttpRequest request, String queueId, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
String deckName = getFormParameterSafely(postDecoder, "deckName");
@@ -157,13 +140,9 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
} catch (HallException e) {
responseWriter.writeResponse(marshalException(e));
}
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private void leaveQueue(HttpRequest request, String queueId, ResponseWriter responseWriter) {
try {
private void leaveQueue(HttpRequest request, String queueId, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
@@ -172,9 +151,6 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
_hallServer.leaveQueue(queueId, resourceOwner);
responseWriter.writeResponse(null);
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private Document marshalException(HallException e) throws ParserConfigurationException {
@@ -301,8 +277,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
}
}
private void updateHall(HttpRequest request, ResponseWriter responseWriter) {
try {
private void updateHall(HttpRequest request, ResponseWriter responseWriter) throws Exception {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String participantId = getFormParameterSafely(postDecoder, "participantId");
int channelNumber = Integer.parseInt(getFormParameterSafely(postDecoder, "channelNumber"));
@@ -314,12 +289,6 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
polledResource.process();
else
_longPollingSystem.appendLongPollingResource(polledResource);
} catch (HttpProcessingException exp) {
responseWriter.writeError(exp.getStatus());
} catch (Exception exp) {
responseWriter.writeError(500);
}
}
private class HallUpdateLongPollingResource implements LongPollingResource {

View File

@@ -21,29 +21,25 @@ public class LoginRequestHandler extends LotroServerRequestHandler implements Ur
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
try {
if (uri.equals("") && request.getMethod() == HttpMethod.POST) {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String login = getFormParameterSafely(postDecoder, "login");
String password = getFormParameterSafely(postDecoder, "password");
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals("") && request.getMethod() == HttpMethod.POST) {
HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request);
String login = getFormParameterSafely(postDecoder, "login");
String password = getFormParameterSafely(postDecoder, "password");
Player player = _playerDao.loginUser(login, password);
if (player != null) {
if (player.getType().contains("u")) {
responseWriter.writeResponse(null, logUserReturningHeaders(e, login));
} else {
responseWriter.writeError(403);
}
Player player = _playerDao.loginUser(login, password);
if (player != null) {
if (player.getType().contains("u")) {
responseWriter.writeResponse(null, logUserReturningHeaders(e, login));
} else {
responseWriter.writeError(401);
responseWriter.writeError(403);
}
} else {
responseWriter.writeError(404);
responseWriter.writeError(401);
}
} catch (Exception exp) {
responseWriter.writeError(500);
} else {
responseWriter.writeError(404);
}
}

View File

@@ -31,7 +31,7 @@ public class RootUriRequestHandler implements UriRequestHandler {
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.startsWith(_webContextPath)) {
_webRequestHandler.handleRequest(uri.substring(_webContextPath.length()), request, context, responseWriter, e);
} else if (uri.equals("/gemp-lotr")) {

View File

@@ -24,7 +24,7 @@ public class StatusRequestHandler extends LotroServerRequestHandler implements U
}
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals("") && request.getMethod() == HttpMethod.GET) {
StringBuilder sb = new StringBuilder();

View File

@@ -8,5 +8,5 @@ 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, MessageEvent e);
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception;
}

View File

@@ -13,7 +13,7 @@ public class WebRequestHandler implements UriRequestHandler {
private String _root = ApplicationConfiguration.getProperty("web.folder");
@Override
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) {
public void handleRequest(String uri, HttpRequest request, Map<Type, Object> context, ResponseWriter responseWriter, MessageEvent e) throws Exception {
if (uri.equals(""))
uri = "index.html";