@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); }); }
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; }
default boolean supportsDeliveryIdentifier(String id) { return id != null ? id.equals(getIdentifier()) : false; };
@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); } }
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; }