public static String encodeAsJsonLd(WonMessage message) { return encode(message, Lang.JSONLD); }
private void saveMessage(final WonMessage wonMessage, URI parent) { logger.debug("STORING message with uri {} and parent uri", wonMessage.getMessageURI(), parent); EventContainer container = loadOrCreateEventContainer(wonMessage, parent); DatasetHolder datasetHolder = new DatasetHolder(wonMessage.getMessageURI(), WonMessageEncoder.encodeAsDataset (wonMessage)); MessageEventPlaceholder event = new MessageEventPlaceholder(parent, wonMessage, container); event.setDatasetHolder(datasetHolder); messageEventRepository.save(event); }
@Override public WonMessage process(final WonMessage message) throws WonMessageProcessingException { try { if (message.getMessageType() == WonMessageType.CREATE_NEED) { String needUri = message.getSenderNeedURI().toString(); Dataset msgDataset = WonMessageEncoder.encodeAsDataset(message); // generate and add need's public key to the need content String alias = keyPairAliasDerivationStrategy.getAliasForNeedUri(needUri); if (cryptographyService.getPrivateKey(alias) == null) { cryptographyService.createNewKeyPair(alias, alias); } PublicKey pubKey = cryptographyService.getPublicKey(alias); WonKeysReaderWriter keyWriter = new WonKeysReaderWriter(); String contentName = message.getContentGraphURIs().get(0); Model contentModel = msgDataset.getNamedModel(contentName); keyWriter.writeToModel(contentModel, contentModel.createResource(needUri), pubKey); return new WonMessage(msgDataset); } } catch (Exception e) { logger.error("Failed to add key", e); throw new WonMessageProcessingException("Failed to add key for need in message " + message.getMessageURI().toString()); } return message; }
@Override public void matcherRegistered(final URI wonNodeURI, final WonMessage wonMessage) { Map headerMap = new HashMap<String, String>(); headerMap.put("wonNodeURI", wonNodeURI.toString()); headerMap.put("protocol","MatcherProtocol"); headerMap.put("methodName", "matcherRegistered"); messagingService.sendInOnlyMessage(null,headerMap,WonMessageEncoder.encode(wonMessage, Lang.TRIG),"seda:MatcherProtocolOut"); }
private WonMessage processWithKey(final WonMessage wonMessage, final String privateKeyUri, final PrivateKey privateKey, final PublicKey publicKey) throws Exception { WonMessage signed = WonMessageSignerVerifier.sign(privateKey, publicKey, privateKeyUri, wonMessage); logger.debug("SIGNED with key " + privateKeyUri + ":\n" + WonMessageEncoder.encode(signed, Lang.TRIG)); return signed; }
@Override public void needCreated(final URI needURI, final Model content, final WonMessage wonMessage) { Map headerMap = new HashMap<String, String>(); headerMap.put("needURI", needURI.toString()); headerMap.put("methodName", "needCreated"); headerMap.put("wonNodeURI", uriService.getGeneralURIPrefix()+"/resource"); messagingService.sendInOnlyMessage(null,headerMap,WonMessageEncoder.encode(wonMessage, Lang.TRIG),"seda:MatcherProtocolOut"); } @Override
@Override public void needActivated(final URI needURI, final WonMessage wonMessage){ Map headerMap = new HashMap<String, String>(); headerMap.put("needURI", needURI.toString()); headerMap.put("methodName","needActivated"); headerMap.put("wonNodeURI", uriService.getGeneralURIPrefix()+"/resource"); messagingService.sendInOnlyMessage(null, headerMap,WonMessageEncoder.encode(wonMessage, Lang.TRIG),"seda:MatcherProtocolOut"); } @Override
@Override public void needDeactivated(final URI needURI, final WonMessage wonMessage){ Map headerMap = new HashMap<String, String>(); headerMap.put("needURI", needURI.toString()); headerMap.put("methodName","needDeactivated"); headerMap.put("wonNodeURI", uriService.getGeneralURIPrefix()+"/resource"); messagingService.sendInOnlyMessage(null, headerMap,WonMessageEncoder.encode(wonMessage, Lang.TRIG),"seda:MatcherProtocolOut"); }
@Override public void hint(URI needURI, URI otherNeed, double score, URI originator, Model content, WonMessage wonMessage) throws Exception { logger.info("need-facing: HINT called for needURI {} and otherNeed {} " + "with score {} from originator {}.", new Object[]{needURI, otherNeed, score, originator}); CamelConfiguration camelConfiguration = matcherProtocolCommunicationService.configureCamelEndpoint(wonMessage .getReceiverNodeURI(), startingEndpoint); String endpoint = camelConfiguration.getEndpoint(); Map<String, String> headerMap = new HashMap<>(); headerMap.put("needURI",needURI.toString()); headerMap.put("otherNeedURI", otherNeed.toString()); headerMap.put("score",String.valueOf(score)); headerMap.put("originator",originator.toString()); headerMap.put("content",RdfUtils.toString(content)); headerMap.put("remoteBrokerEndpoint", endpoint); headerMap.put("methodName","hint"); messagingService.sendInOnlyMessage(null, headerMap, WonMessageEncoder.encode(wonMessage, Lang.TRIG),startingEndpoint ); }
/** * transform hint events to camel messages that can be sent to the won node * * @param message supposed to be a {@link HintEvent} * @return */ @Override public Object onTransformOutgoingMessage(Object message) { HintEvent hint = (HintEvent) message; Map<String, Object> headers = new HashMap<>(); headers.put("needURI", hint.getFromNeedUri()); headers.put("otherNeedURI", hint.getToNeedUri()); headers.put("score", String.valueOf(hint.getScore())); headers.put("originator", hint.getMatcherUri()); //headers.put("content", RdfUtils.toString(hint.deserializeExplanationModel())); //headers.put("remoteBrokerEndpoint", localBrokerUri); headers.put("methodName", "hint"); WonMessage wonMessage = createHintWonMessage(hint); Object body = WonMessageEncoder.encode(wonMessage, Lang.TRIG); CamelMessage camelMsg = new CamelMessage(body, headers); // monitoring code monitoringService.stopClock(MonitoringService.NEED_HINT_STOPWATCH, hint.getFromNeedUri()); log.debug("Send hint camel message {}", hint.getFromNeedUri()); return camelMsg; }