diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/ResponseWriter.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/ResponseWriter.java index aeb5d9878..167605819 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/ResponseWriter.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/ResponseWriter.java @@ -17,5 +17,5 @@ public interface ResponseWriter { public void writeResponse(Document document); - public void writeResponse(Document document, Map addCookies); + public void writeResponse(Document document, Map addHeaders); } 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 539d95a08..8dc3ad343 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 @@ -141,7 +141,10 @@ public class CollectionRequestHandler extends LotroServerRequestHandler implemen } } - responseWriter.writeResponse(doc); + Map headers = new HashMap(); + processDeliveryServiceNotification(request, headers); + + responseWriter.writeResponse(doc, headers); } private CardCollection constructCollection(Player player, String collectionType) { 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 947acfa00..83897c56a 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 @@ -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 headers = new HashMap(); + processDeliveryServiceNotification(_request, headers); + + _responseWriter.writeResponse(doc, headers); } catch (HttpProcessingException exp) { _responseWriter.writeError(exp.getStatus()); } catch (Exception exp) { 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 2f99ad828..22a67ee86 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 @@ -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 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 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)