@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);
}
}