@Override public DeliveryParameter[] getParameters() { DeliveryParameter[] params = new DeliveryParameter[3]; String namespace = "eventing-rest-api"; params[0] = new DeliveryParameter("text", namespace, "to", null); params[1] = new DeliveryParameter("text", namespace, "cc", null); params[2] = new DeliveryParameter("text", namespace, "subject", "[Notification] Rule matched"); return params; }
public DeliveryProvider getProvider(Optional<DeliveryDefinition> deliveryDefinition) { if (deliveryDefinition.isPresent() && providers != null) { String id = deliveryDefinition.get().getIdentifier(); for (DeliveryProvider provider : providers) { if (provider.supportsDeliveryIdentifier(id)) { return provider; } } } return null; }
public void destroy() { if (deliveryEndpoint != null) { deliveryEndpoint.destroy(); } else { LOG.warn("Could not destroy delivery endpoint: null"); } }
@Override public DeliveryEndpoint createDeliveryEndpoint(DeliveryMethodInstance deliveryMethod, String pubId) throws InvalidSubscriptionException { try { DeliveryDefinition definition = new DeliveryDefinition(deliveryMethod.getId(), null, pubId, false); DeliveryProvider provider = deliveryProviderRepository.getProvider(Optional.of(definition)); DeliveryParameter[] providerParams = provider.getParameters(); deliveryMethod.getParameters().forEach((String s, ParameterInstance pi) -> { for (DeliveryParameter providerParam : providerParams) { if (providerParam.getElementName().equals(s)) { definition.addParameter(new DeliveryParameter(pi.getDataType(), null, s, pi.getValue().toString())); return; } } }); if (provider == null) { throw new InvalidSubscriptionException("No delivery provider found for delivery: "+deliveryMethod.getId()); } return provider.createDeliveryEndpoint(definition); } catch (UnsupportedDeliveryDefinitionException ex) { throw new InvalidSubscriptionException(ex.getMessage(), ex); } }
@Override public void afterPropertiesSet() throws Exception { this.deliveryProviderRepository.getProviders().stream().forEach(dp -> { DeliveryMethodDefinition method = new DeliveryMethodDefinitionImpl(dp.getIdentifier(), dp.getAbstract(), dp.getAbstract(), mapParameters(dp.getParameters())); methods.put(dp.getIdentifier(), method); }); }
private Map<String, ParameterDefinition> mapParameters(DeliveryParameter[] parameters) { Map<String, ParameterDefinition> result = new HashMap<>(parameters.length); for (DeliveryParameter dp : parameters) { ParameterDefinition p = new ParameterDefinition(dp.getType(), dp.getElementName()); p.setDefaultValue(dp.getValue()); result.put(dp.getElementName(), p); } return result; }
@Override public DeliveryEndpoint createDeliveryEndpoint(DeliveryDefinition def) throws UnsupportedDeliveryDefinitionException { Optional<String> topicOpt = def.getParameters().stream() .filter(t -> t.getElementName().equals("topic")) .findFirst() .map(dp -> dp.getValue()); return new MqttDeliveryEndpoint(topicOpt.orElse(UUID.randomUUID().toString().substring(0, 8))); }
@Override public void deliver(Optional<Streamable> o, boolean asRaw) { this.endpoints.stream().parallel().forEach(e -> { e.deliver(o, asRaw); }); }
@RequestMapping(value = "/{eventId}/content", method = GET) public void getSingleEventContent(@PathVariable("eventId") String eventId) throws IOException, URISyntaxException, UnknownSubscriptionException, ResourceNotAvailableException { Optional<EventHolder> holder = retrieveSingleEvent(eventId); if (!holder.isPresent()) { throw new ResourceNotAvailableException("Could not find event"); } Optional<Streamable> streamable = holder.get().streamableObject(); if (streamable.isPresent()) { Streamable obj = streamable.get(); HttpServletResponse resp = requestUtils.resolveResponseObject(); String ct = obj.getContentType(); resp.setContentType(ct); resp.setStatus(200); InputStream is = obj.asStream(); try (ServletOutputStream os = resp.getOutputStream()) { byte[] buffer = new byte[1024]; int count; while ((count = is.read(buffer)) > 0) { os.write(buffer, 0, count); os.flush(); } } } else { throw new ResourceNotAvailableException("No content for this event available"); } }
default boolean supportsDeliveryIdentifier(String id) { return id != null ? id.equals(getIdentifier()) : false; };
@Override public void deliver(Optional<Streamable> o, boolean asRaw) { if (o.isPresent()) { deliverer.publishToTopic(o.get().asStream(), this.topic); } }
@Override public DeliveryEndpoint createDeliveryEndpoint(DeliveryDefinition def) throws UnsupportedDeliveryDefinitionException { return new EmailDeliveryEndpoint(def.getLocation()); }
public Map<String, String> getNamespacePrefixMap() { if (this.providers == null || this.providers.isEmpty()) { return Collections.emptyMap(); } Map<String, String> result = new HashMap<>(); this.providers.stream().forEach(p -> { result.putAll(p.getNamespacePrefixMap()); }); return result; }
@Override public synchronized void register(Subscription result, DeliveryEndpoint deliveryEndpoint) throws SubscriptionRegistrationException { try { boolean useRaw = false; Optional<DeliveryDefinition> delDef = result.getOptions().getDeliveryDefinition(); if (delDef.isPresent()) { useRaw = delDef.get().isUseRaw(); } Optional<XmlObject> filter = result.getOptions().getFilter(); Rule rule = createRule(filter, deliveryEndpoint, result.getOptions().getPublicationIdentifier(), useRaw); this.engine.registerRule(rule); this.rules.put(result.getId(), rule); } catch (FilterInstantiationException ex) { LOG.warn("Could not instantiate rule: {}", ex.getMessage()); throw new SubscriptionRegistrationException("Could not instantiate rule", ex); } }
DeliveryEndpoint result = this.deliveryMethodsDao.createDeliveryEndpoint(dm, subscription.getPublicationId()); String effLoc = result.getEffectiveLocation(); if (effLoc != null) { dm.setDetails(Collections.singletonMap("effectiveLocation", result.getEffectiveLocation()));
@Override public void deliver(Optional<Streamable> o, boolean asRaw) { this.endpoints.stream().parallel().forEach(e -> { e.deliver(o, asRaw); }); }
@Override public DeliveryParameter[] getParameters() { return new DeliveryParameter[] {new DeliveryParameter("string", null, "topic", null)}; }
@Override public void onMatchingEvent(EposEvent event, Object desiredOutputToConsumer) { //TODO implement UseRaw this.endpoint.deliver(Optional.ofNullable(createStreamable( desiredOutputToConsumer, event.getContentType())), this.useRaw); }
@Override public void onMatchingEvent(EposEvent event) { //TODO implement UseRaw this.endpoint.deliver(Optional.ofNullable(createStreamable( event.getOriginalObject(), event.getContentType())), this.useRaw); }