public DeliveryResponseEvent(URI originalMessageURI, WonMessage message) { assert originalMessageURI != null : "originalMessageURI must not be null!"; assert message != null : "responseMessage must not be null!"; this.originalMessageURI = originalMessageURI; this.message = message; this.remoteResponseToMessageURI = message.getIsRemoteResponseToMessageURI(); }
/** * If the message is a ResponseMessage (SuccessResponse or FailureResponse) * this method returns the message that was responded to and that belongs to the same parent as * the specified message. * @param message * @return the URI of the message that was responded to, or null if the specified message is not a ResponseMessage. */ public static URI getLocalIsResponseToURI(WonMessage message){ WonMessageType messageType = message.getMessageType(); if (messageType == SUCCESS_RESPONSE || messageType == FAILURE_RESPONSE) { WonMessageDirection direction = message.getEnvelopeType(); if (direction == WonMessageDirection.FROM_EXTERNAL){ return message.getIsRemoteResponseToMessageURI(); } else { return message.getIsResponseToMessageURI(); } }else { return null; } } }
@Override protected void doRun(Event event, EventListener executingListener) throws Exception { WonMessage responseWonMessage = null; if (event instanceof SuccessResponseEvent) { responseWonMessage = ((SuccessResponseEvent)event).getMessage(); } else if (event instanceof FailureResponseEvent) { responseWonMessage = ((FailureResponseEvent)event).getMessage(); } else { //can't process any other events return; } logger.debug("eagerly caching data in reaction to event {}", event); //put received message into cache LinkedDataSource linkedDataSource = context.getLinkedDataSource(); if (linkedDataSource instanceof CachingLinkedDataSource) { URI requester = responseWonMessage.getReceiverNeedURI(); ((CachingLinkedDataSource) linkedDataSource).addToCache(responseWonMessage.getCompleteDataset(), responseWonMessage.getMessageURI(), requester); //load the original message(s) into cache, too Set<URI> toLoad = new HashSet<URI>(); addIfNotNull(toLoad, responseWonMessage.getIsRemoteResponseToMessageURI()); addIfNotNull(toLoad, responseWonMessage.getIsResponseToMessageURI()); addIfNotNull(toLoad, responseWonMessage.getCorrespondingRemoteMessageURI()); List<URI> previous = WonRdfUtils.MessageUtils.getPreviousMessageUrisIncludingRemote(responseWonMessage); addIfNotNull(toLoad, previous); toLoad.forEach(uri -> linkedDataSource.getDataForResource(uri, requester)); } }
public static WonMessage forwardReceivedNodeToNodeMessageAsNodeToNodeMessage(final URI newMessageUri, final WonMessage wonMessage, final URI connectionURI, final URI needURI, final URI wonNodeUri, final URI remoteConnectionURI, final URI remoteNeedURI, final URI remoteWonNodeUri) { WonMessageBuilder builder = new WonMessageBuilder(newMessageUri) .setWonMessageType(wonMessage.getMessageType()) .forward(wonMessage) .setForwardedMessageURI(wonMessage.getMessageURI()) .setSenderNeedURI(needURI) .setSenderURI(connectionURI) .setSenderNodeURI(wonNodeUri) .setSentTimestamp(System.currentTimeMillis()) .setReceiverURI(remoteConnectionURI) .setReceiverNeedURI(remoteNeedURI) .setReceiverNodeURI(remoteWonNodeUri) .setIsRemoteResponseToMessageURI(wonMessage.getIsRemoteResponseToMessageURI()) .setIsResponseToMessageURI(wonMessage.getIsResponseToMessageURI()) .setIsResponseToMessageType(wonMessage.getIsResponseToMessageType()) .setWonMessageDirection(WonMessageDirection.FROM_SYSTEM); return builder.build(); }
/** * Copies the envelope properties from the specified message to this message. * * Note that this does not copy the original envelope graph, only the * standard envelope properties. * * @param wonMessage * @return */ public static WonMessageBuilder copyEnvelopeFromWonMessage(final WonMessage wonMessage) { WonMessageBuilder builder = new WonMessageBuilder(wonMessage.getMessageURI()) .setWonMessageType(wonMessage.getMessageType()) .setReceiverURI(wonMessage.getReceiverURI()) .setReceiverNeedURI(wonMessage.getReceiverNeedURI()) .setReceiverNodeURI(wonMessage.getReceiverNodeURI()) .setSenderURI(wonMessage.getSenderURI()) .setSenderNeedURI(wonMessage.getSenderNeedURI()) .setSenderNodeURI(wonMessage.getSenderNodeURI()); if (wonMessage.getIsResponseToMessageType() != null){ builder.setIsResponseToMessageType(wonMessage.getIsResponseToMessageType()); } if (wonMessage.getIsResponseToMessageURI() != null){ builder.setIsResponseToMessageURI(wonMessage.getIsResponseToMessageURI()); } if (wonMessage.getIsRemoteResponseToMessageURI() != null){ builder.setIsRemoteResponseToMessageURI(wonMessage.getIsRemoteResponseToMessageURI()); } return builder; }