Wired delivery service into Hall and Collection RequestHandlers.

This commit is contained in:
marcins78
2013-01-09 17:05:54 +00:00
parent f41f419006
commit ffe26a9ba0
4 changed files with 24 additions and 5 deletions

View File

@@ -17,5 +17,5 @@ public interface ResponseWriter {
public void writeResponse(Document document);
public void writeResponse(Document document, Map<String, String> addCookies);
public void writeResponse(Document document, Map<String, String> addHeaders);
}

View File

@@ -141,7 +141,10 @@ public class CollectionRequestHandler extends LotroServerRequestHandler implemen
}
}
responseWriter.writeResponse(doc);
Map<String, String> headers = new HashMap<String, String>();
processDeliveryServiceNotification(request, headers);
responseWriter.writeResponse(doc, headers);
}
private CardCollection constructCollection(Player player, String collectionType) {

View File

@@ -30,6 +30,7 @@ import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class HallRequestHandler extends LotroServerRequestHandler implements UriRequestHandler {
@@ -284,7 +285,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
Player resourceOwner = getResourceOwnerSafely(request, participantId);
HallUpdateLongPollingResource polledResource = new HallUpdateLongPollingResource(resourceOwner, channelNumber, responseWriter);
HallUpdateLongPollingResource polledResource = new HallUpdateLongPollingResource(request, resourceOwner, channelNumber, responseWriter);
if (polledResource.isChanged())
polledResource.process();
else
@@ -292,11 +293,13 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
}
private class HallUpdateLongPollingResource implements LongPollingResource {
private HttpRequest _request;
private Player _resourceOwner;
private int _channelNumber;
private ResponseWriter _responseWriter;
private HallUpdateLongPollingResource(Player resourceOwner, int channelNumber, ResponseWriter responseWriter) {
private HallUpdateLongPollingResource(HttpRequest request, Player resourceOwner, int channelNumber, ResponseWriter responseWriter) {
_request = request;
_resourceOwner = resourceOwner;
_channelNumber = channelNumber;
_responseWriter = responseWriter;
@@ -332,7 +335,11 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
hall.setAttribute("currency", String.valueOf(_collectionManager.getPlayerCollection(_resourceOwner, "permanent").getCurrency()));
doc.appendChild(hall);
_responseWriter.writeResponse(doc);
Map<String, String> headers = new HashMap<String, String>();
processDeliveryServiceNotification(_request, headers);
_responseWriter.writeResponse(doc, headers);
} catch (HttpProcessingException exp) {
_responseWriter.writeError(exp.getStatus());
} catch (Exception exp) {

View File

@@ -2,6 +2,7 @@ package com.gempukku.lotro.async.handler;
import com.gempukku.lotro.async.HttpProcessingException;
import com.gempukku.lotro.async.LoggedUserHolder;
import com.gempukku.lotro.collection.TransferDAO;
import com.gempukku.lotro.db.PlayerDAO;
import com.gempukku.lotro.game.Player;
import org.jboss.netty.channel.MessageEvent;
@@ -25,16 +26,24 @@ import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.SET_COOKIE;
public class LotroServerRequestHandler {
protected PlayerDAO _playerDao;
protected LoggedUserHolder _loggedUserHolder;
private TransferDAO _transferDAO;
public LotroServerRequestHandler(Map<Type, Object> context) {
_playerDao = extractObject(context, PlayerDAO.class);
_loggedUserHolder = extractObject(context, LoggedUserHolder.class);
_transferDAO = extractObject(context, TransferDAO.class);
}
private boolean isTest() {
return Boolean.valueOf(System.getProperty("test"));
}
protected final void processDeliveryServiceNotification(HttpRequest request, Map<String, String> headersToAdd) {
String logged = _loggedUserHolder.getLoggedUser(request);
if (logged != null && _transferDAO.hasUndeliveredPackages(logged))
headersToAdd.put("Delivery-Service-Package", "true");
}
protected final Player getResourceOwnerSafely(HttpRequest request, String participantId) throws HttpProcessingException {
String loggedUser = _loggedUserHolder.getLoggedUser(request);
if (isTest() && loggedUser == null)