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);
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) { 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.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
public class HallRequestHandler extends LotroServerRequestHandler implements UriRequestHandler { public class HallRequestHandler extends LotroServerRequestHandler implements UriRequestHandler {
@@ -284,7 +285,7 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
Player resourceOwner = getResourceOwnerSafely(request, participantId); Player resourceOwner = getResourceOwnerSafely(request, participantId);
HallUpdateLongPollingResource polledResource = new HallUpdateLongPollingResource(resourceOwner, channelNumber, responseWriter); HallUpdateLongPollingResource polledResource = new HallUpdateLongPollingResource(request, resourceOwner, channelNumber, responseWriter);
if (polledResource.isChanged()) if (polledResource.isChanged())
polledResource.process(); polledResource.process();
else else
@@ -292,11 +293,13 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
} }
private class HallUpdateLongPollingResource implements LongPollingResource { private class HallUpdateLongPollingResource implements LongPollingResource {
private HttpRequest _request;
private Player _resourceOwner; private Player _resourceOwner;
private int _channelNumber; private int _channelNumber;
private ResponseWriter _responseWriter; 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; _resourceOwner = resourceOwner;
_channelNumber = channelNumber; _channelNumber = channelNumber;
_responseWriter = responseWriter; _responseWriter = responseWriter;
@@ -332,7 +335,11 @@ public class HallRequestHandler extends LotroServerRequestHandler implements Uri
hall.setAttribute("currency", String.valueOf(_collectionManager.getPlayerCollection(_resourceOwner, "permanent").getCurrency())); hall.setAttribute("currency", String.valueOf(_collectionManager.getPlayerCollection(_resourceOwner, "permanent").getCurrency()));
doc.appendChild(hall); doc.appendChild(hall);
_responseWriter.writeResponse(doc);
Map<String, String> headers = new HashMap<String, String>();
processDeliveryServiceNotification(_request, headers);
_responseWriter.writeResponse(doc, headers);
} catch (HttpProcessingException exp) { } catch (HttpProcessingException exp) {
_responseWriter.writeError(exp.getStatus()); _responseWriter.writeError(exp.getStatus());
} catch (Exception exp) { } 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.HttpProcessingException;
import com.gempukku.lotro.async.LoggedUserHolder; import com.gempukku.lotro.async.LoggedUserHolder;
import com.gempukku.lotro.collection.TransferDAO;
import com.gempukku.lotro.db.PlayerDAO; import com.gempukku.lotro.db.PlayerDAO;
import com.gempukku.lotro.game.Player; import com.gempukku.lotro.game.Player;
import org.jboss.netty.channel.MessageEvent; 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 { public class LotroServerRequestHandler {
protected PlayerDAO _playerDao; protected PlayerDAO _playerDao;
protected LoggedUserHolder _loggedUserHolder; protected LoggedUserHolder _loggedUserHolder;
private TransferDAO _transferDAO;
public LotroServerRequestHandler(Map<Type, Object> context) { public LotroServerRequestHandler(Map<Type, Object> context) {
_playerDao = extractObject(context, PlayerDAO.class); _playerDao = extractObject(context, PlayerDAO.class);
_loggedUserHolder = extractObject(context, LoggedUserHolder.class); _loggedUserHolder = extractObject(context, LoggedUserHolder.class);
_transferDAO = extractObject(context, TransferDAO.class);
} }
private boolean isTest() { private boolean isTest() {
return Boolean.valueOf(System.getProperty("test")); 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 { protected final Player getResourceOwnerSafely(HttpRequest request, String participantId) throws HttpProcessingException {
String loggedUser = _loggedUserHolder.getLoggedUser(request); String loggedUser = _loggedUserHolder.getLoggedUser(request);
if (isTest() && loggedUser == null) if (isTest() && loggedUser == null)