From 01cf70f9d0fe48e44d91e1791b454625310d6f60 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Fri, 16 Dec 2011 20:51:04 +0000 Subject: [PATCH] Notifying client of delivery awaiting. --- .../gempukku/lotro/collection/DeliveryService.java | 4 ++-- .../gempukku/lotro/server/AbstractResource.java | 11 +++++++++++ .../com/gempukku/lotro/server/AdminResource.java | 3 --- .../gempukku/lotro/server/CollectionResource.java | 14 +++++++++----- .../com/gempukku/lotro/server/GameResource.java | 6 +++++- .../com/gempukku/lotro/server/HallResource.java | 7 +++++-- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/DeliveryService.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/DeliveryService.java index cbae29f1d..54aaac972 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/DeliveryService.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/collection/DeliveryService.java @@ -34,10 +34,10 @@ public class DeliveryService { } } - public boolean hasUndeliveredPackages(Player player) { + public boolean hasUndeliveredPackages(String player) { _deliveryLock.readLock().lock(); try { - return _undeliveredDeliverables.containsKey(player.getName()); + return _undeliveredDeliverables.containsKey(player); } finally { _deliveryLock.readLock().unlock(); } diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java index ae20b673e..5df16992a 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AbstractResource.java @@ -1,9 +1,11 @@ package com.gempukku.lotro.server; +import com.gempukku.lotro.collection.DeliveryService; import com.gempukku.lotro.db.PlayerDAO; import com.gempukku.lotro.game.Player; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; @@ -14,6 +16,15 @@ public abstract class AbstractResource { @Context protected PlayerDAO _playerDao; + @Context + protected DeliveryService _deliveryService; + + protected final void processDeliveryServiceNotification(HttpServletRequest request, HttpServletResponse response) { + String logged = getLoggedUser(request); + if (logged != null && _deliveryService.hasUndeliveredPackages(logged)) + response.addHeader("Delivery-Service-Package", "true"); + } + protected final String getLoggedUser(HttpServletRequest request) { return (String) request.getSession().getAttribute("logged"); } diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java index ed6045a92..3bcd26fe4 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/AdminResource.java @@ -1,6 +1,5 @@ package com.gempukku.lotro.server; -import com.gempukku.lotro.collection.DeliveryService; import com.gempukku.lotro.db.CollectionDAO; import com.gempukku.lotro.db.DeckDAO; import com.gempukku.lotro.db.LeagueDAO; @@ -24,8 +23,6 @@ public class AdminResource extends AbstractResource { @Context private CollectionDAO _collectionDao; @Context - private DeliveryService _deliveryService; - @Context private DeckDAO _deckDao; @Context private LeagueDAO _leagueDao; diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java index 045960e47..6efa58c45 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/CollectionResource.java @@ -1,6 +1,5 @@ package com.gempukku.lotro.server; -import com.gempukku.lotro.collection.DeliveryService; import com.gempukku.lotro.common.Side; import com.gempukku.lotro.db.CollectionDAO; import com.gempukku.lotro.db.vo.League; @@ -13,6 +12,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; @@ -32,8 +32,6 @@ public class CollectionResource extends AbstractResource { @Context private CollectionDAO _collectionDao; @Context - private DeliveryService _deliveryService; - @Context private LotroCardBlueprintLibrary _library; @Context private LeagueService _leagueService; @@ -49,7 +47,8 @@ public class CollectionResource extends AbstractResource { @QueryParam("filter") String filter, @QueryParam("start") int start, @QueryParam("count") int count, - @Context HttpServletRequest request) throws ParserConfigurationException { + @Context HttpServletRequest request, + @Context HttpServletResponse response) throws ParserConfigurationException { Player resourceOwner = getResourceOwnerSafely(request, participantId); CardCollection collection = getCollection(resourceOwner, collectionType); @@ -89,6 +88,8 @@ public class CollectionResource extends AbstractResource { index++; } + processDeliveryServiceNotification(request, response); + return doc; } @@ -138,7 +139,8 @@ public class CollectionResource extends AbstractResource { @PathParam("collectionType") String collectionType, @FormParam("participantId") String participantId, @FormParam("pack") String packId, - @Context HttpServletRequest request) throws ParserConfigurationException { + @Context HttpServletRequest request, + @Context HttpServletResponse response) throws ParserConfigurationException { Player resourceOwner = getResourceOwnerSafely(request, participantId); CardCollection collection = getCollection(resourceOwner, collectionType); @@ -181,6 +183,8 @@ public class CollectionResource extends AbstractResource { } } + processDeliveryServiceNotification(request, response); + return doc; } } diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/GameResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/GameResource.java index b2b413d6a..951e03062 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/GameResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/GameResource.java @@ -14,6 +14,7 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; @@ -95,7 +96,8 @@ public class GameResource extends AbstractResource { @FormParam("participantId") String participantId, @FormParam("decisionId") Integer decisionId, @FormParam("decisionValue") String decisionValue, - @Context HttpServletRequest request) throws ParserConfigurationException { + @Context HttpServletRequest request, + @Context HttpServletResponse response) throws ParserConfigurationException { Player resourceOwner = getResourceOwnerSafely(request, participantId); LoggingThreadLocal.start(); @@ -123,6 +125,8 @@ public class GameResource extends AbstractResource { doc.appendChild(update); + processDeliveryServiceNotification(request, response); + return doc; } finally { LoggingThreadLocal.stop(decisionId != null); diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java index b4f186caa..086f1ac64 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/HallResource.java @@ -10,6 +10,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.ws.rs.*; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; @@ -29,7 +30,8 @@ public class HallResource extends AbstractResource { @Produces(MediaType.APPLICATION_XML) public Document getHall( @QueryParam("participantId") String participantId, - @Context HttpServletRequest request) throws ParserConfigurationException { + @Context HttpServletRequest request, + @Context HttpServletResponse response) throws ParserConfigurationException { Player resourceOwner = getResourceOwnerSafely(request, participantId); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); @@ -56,9 +58,10 @@ public class HallResource extends AbstractResource { hall.appendChild(formatElem); } - doc.appendChild(hall); + processDeliveryServiceNotification(request, response); + return doc; }