public static Dataset encodeAsDataset(WonMessage wonMessage) { return wonMessage.getCompleteDataset(); } }
private static String getWonMessageString(WonMessage wonMessage, Lang lang) { StringWriter writer = new StringWriter(); RDFDataMgr.write(writer, wonMessage.getCompleteDataset(), lang); return writer.toString(); }
public static List<URI> getProposesToCancelEvents(final WonMessage wonMessage) { return getProposesToCancelEvents(wonMessage.getCompleteDataset()); }
public static List<URI> getAcceptedEvents(final WonMessage wonMessage) { return getAcceptedEvents(wonMessage.getCompleteDataset()); }
public static List<URI> getProposesEvents(final WonMessage wonMessage) { return getProposesEvents(wonMessage.getCompleteDataset()); }
/** * Encodes the WonMessage object as serialized RDF in the given language. * If no WonMessage object is provided an empty string is returned. * * @param message <code>WonMessage</code> object which will be serialized * @param lang defines the serialization language * @return <code>String</code> containing the serialized RDF; * if no WonMessage is provided an empty string is returned */ public static String encode(WonMessage message, Lang lang) { if (message == null) return ""; StringWriter sw = new StringWriter(); RDFDataMgr.write(sw, message.getCompleteDataset(), lang); return sw.toString(); }
protected void sendMessageToOwner(WonMessage message, String... ownerApplicationIds){ Map headerMap = new HashMap<String, Object>(); headerMap.put(WonCamelConstants.OWNER_APPLICATIONS, Arrays.asList(ownerApplicationIds)); messagingService.sendInOnlyMessage(null, headerMap, RdfUtils.writeDatasetToString(message.getCompleteDataset(),WonCamelConstants.RDF_LANGUAGE_FOR_MESSAGE), "seda:OwnerProtocolOut"); }
protected void sendMessageToOwner(WonMessage message, List<String> ownerApplicationIds){ Map headerMap = new HashMap<String, Object>(); headerMap.put("protocol","OwnerProtocol"); headerMap.put(WonCamelConstants.OWNER_APPLICATIONS, ownerApplicationIds); messagingService.sendInOnlyMessage(null, headerMap, RdfUtils.writeDatasetToString(message.getCompleteDataset(), WonCamelConstants.RDF_LANGUAGE_FOR_MESSAGE), "seda:OwnerProtocolOut"); }
@Override public void process(final Exchange exchange) throws Exception { logger.debug("processing won message"); Map headers = exchange.getIn().getHeaders(); //if the wonMessage header is there, don't change it - that way we can re-route internal messages WonMessage wonMessage = (WonMessage) headers.get(WonCamelConstants.MESSAGE_HEADER); if (wonMessage == null) { throw new WonMessageProcessingException("No WonMessage found in header '" + WonCamelConstants.MESSAGE_HEADER+"'"); } StringWriter writer = new StringWriter(); RDFDataMgr.write(writer, wonMessage.getCompleteDataset(), Lang.TRIG); exchange.getIn().setBody(writer.toString()); logger.debug("wrote serialized wonMessage to message body"); }
protected void sendMessageToOwner(WonMessage message, URI needURI, String fallbackOwnerApplicationId){ Need need = needRepository.findOneByNeedURI(needURI); List<OwnerApplication> ownerApplications = need != null ? need.getAuthorizedApplications() : Collections.EMPTY_LIST; List<String> ownerApplicationIds = toStringIds(ownerApplications); //if no owner application ids are authorized, we use the fallback specified (if any) if (ownerApplicationIds.isEmpty() && fallbackOwnerApplicationId != null) { ownerApplicationIds.add(fallbackOwnerApplicationId); } Map headerMap = new HashMap<String, Object>(); headerMap.put(WonCamelConstants.OWNER_APPLICATIONS, ownerApplicationIds); messagingService.sendInOnlyMessage(null, headerMap, RdfUtils.writeDatasetToString(message.getCompleteDataset(), WonCamelConstants.RDF_LANGUAGE_FOR_MESSAGE), "seda:OwnerProtocolOut"); }
public static SignatureVerificationState verify(Map<String,PublicKey> keys, WonMessage message) throws Exception { Dataset dataset = message.getCompleteDataset(); WonVerifier verifier = new WonVerifier(dataset); verifier.verify(keys); return verifier.getVerificationResult(); }
public static WonMessage copyByDatasetSerialization(final WonMessage toWrap) { WonMessage copied = new WonMessage(RdfUtils.readDatasetFromString( RdfUtils.writeDatasetToString(toWrap.getCompleteDataset(), Lang.TRIG) ,Lang.TRIG)); return copied; }
private void checkCreateMsgNeedURI(final WonMessage message, final WonNodeInfo ownNodeInfo) { // check only for create message if (message.getMessageType() == WonMessageType.CREATE_NEED) { URI needURI = WonRdfUtils.NeedUtils.getNeedURI(message.getCompleteDataset()); checkNodeConformance(ownNodeInfo, needURI, null, null); } return; }
private void checkNeedURI(final WonMessage message) { if (message.getMessageType() == WonMessageType.CREATE_NEED) { URI needURI = WonRdfUtils.NeedUtils.getNeedURI(message.getCompleteDataset()); Need need = needRepository.findOneByNeedURI(needURI); if (need == null) { return; } else { throw new UriAlreadyInUseException(message.getSenderNeedURI().toString()); } } return; }
@Override public WonMessage process(final WonMessage message) throws WonMessageProcessingException { Dataset dataset = message.getCompleteDataset(); StringBuilder errorMessage = new StringBuilder("Message is not valid, failed at check "); boolean valid = false; try { dataset.getLock().enterCriticalSection(true); valid = validator.validate(dataset, errorMessage); } finally { dataset.getLock().leaveCriticalSection(); } if (!valid) { logger.info(errorMessage.toString() + "\n Offending message:\n" + RdfUtils.writeDatasetToString(dataset, Lang .TRIG)); throw new WonMessageNotWellFormedException(errorMessage.toString()); } return message; }
@Override public void process(Exchange exchange) throws Exception { logger.debug("processing message for sending to remote node"); WonMessage wonMessage = (WonMessage) exchange.getIn().getHeader(WonCamelConstants.MESSAGE_HEADER); if (wonMessage.getSenderNeedURI() != null && wonMessage.getSenderNodeURI().equals(wonMessage.getReceiverNodeURI ())){ //sending locally, directly put message into the incoming need protocol messageService.sendInOnlyMessage(null, null, RdfUtils .writeDatasetToString(wonMessage.getCompleteDataset(), WonCamelConstants.RDF_LANGUAGE_FOR_MESSAGE), "activemq:queue:NeedProtocol.in"); return; } //add a camel endpoint for the remote won node needProtocolCommunicationService.configureCamelEndpoint(wonMessage.getReceiverNodeURI()); //send the message to that endpoint String ep = needProtocolCommunicationService.getProtocolCamelConfigurator().getEndpoint(wonMessage .getReceiverNodeURI()); //messageService.sendInOnlyMessage(null, null, wonMessage, wonMessage.getReceiverNodeURI().toString()); String msgBody = RdfUtils.writeDatasetToString(wonMessage.getCompleteDataset(), WonCamelConstants.RDF_LANGUAGE_FOR_MESSAGE); messageService.sendInOnlyMessage(null, null, msgBody, ep); }
private WonMessage processSelected(List<MessageAndPlaceholder> selected, WonMessage message) { Dataset messageDataset = message.getCompleteDataset(); URI outerEnvelopeGraphURI = message.getOuterEnvelopeGraphURI(); URI messageUri = message.getMessageURI(); selected.forEach((MessageAndPlaceholder m) -> { addSignatureReferenceToMessage(messageDataset, messageUri, outerEnvelopeGraphURI, m.getWonMessage()); }); WonMessage newMessage = new WonMessage(messageDataset); selected.forEach((MessageAndPlaceholder m) -> { newMessage.addMessageProperty(WONMSG.HAS_PREVIOUS_MESSAGE_PROPERTY, m.getMessageEventPlaceholder().getMessageURI()); }); return newMessage; }
@Override protected void doRun(Event event, EventListener executingListener) throws Exception { if (!(event instanceof MessageFromOtherNeedEvent)) { return; } logger.debug("eagerly caching data in reaction to event {}", event); MessageFromOtherNeedEvent msgEvent = (MessageFromOtherNeedEvent) event; WonMessage wonMessage = msgEvent.getWonMessage(); LinkedDataSource linkedDataSource = context.getLinkedDataSource(); if (linkedDataSource instanceof CachingLinkedDataSource) { ((CachingLinkedDataSource) linkedDataSource).addToCache(wonMessage.getCompleteDataset(), wonMessage.getMessageURI(), wonMessage.getReceiverNeedURI()); URI requester = wonMessage.getReceiverNeedURI(); Set<URI> toLoad = new HashSet<URI>(); addIfNotNull(toLoad, wonMessage.getCorrespondingRemoteMessageURI()); List<URI> previous = WonRdfUtils.MessageUtils.getPreviousMessageUrisIncludingRemote(wonMessage); addIfNotNull(toLoad, previous); toLoad.forEach(uri -> linkedDataSource.getDataForResource(uri, requester)); } }
public static WonMessage sign(PrivateKey privateKey, PublicKey publicKey, String privateKeyUri, WonMessage message) throws Exception { Dataset msgDataset = message.getCompleteDataset(); SigningStage sigStage = new SigningStage(message); addUnreferencedSigReferences(msgDataset, sigStage); WonSigner signer = new WonSigner(msgDataset); signContents(msgDataset, sigStage, signer, privateKey, privateKeyUri, publicKey); signEnvelopes(msgDataset, sigStage, signer, privateKey, privateKeyUri, publicKey); return new WonMessage(msgDataset); }
private void extractData(final WonMessage message) { messageUri = message.getMessageURI().toString(); Dataset dataset = message.getCompleteDataset(); for (String uri : RdfUtils.getModelNames(dataset)) { Model model = dataset.getNamedModel(uri); if (message.isEnvelopeGraph(uri, model)) { extractEnvelopeData(uri, model, message); } else if (WonRdfUtils.SignatureUtils.isSignature(model, uri)) { if (outermostSignatureUri != null){ throw new IllegalStateException("Found more than one signature graph"); } outermostSignatureUri = uri; extractSignatureData(uri, model); } else { // should be content extractContentData(uri); } } //created ordered env list orderEnvelopes(message); }