Wired delivery service into Hall and Collection RequestHandlers.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user