class PushNotificationRecipientServiceImpl extends AbstractPushNotificationRecipientServiceImpl<PushNotificationRecipient> implements PushNotificationRecipientService {

    @Transactional
    @Nonnull
    @Override
    public PushNotificationRecipient createPushNotificationRecipient(@Nonnull final Long subscriptionId, @Nonnull final PushNotificationRecipientDto recipientDto) {
        assertPushNotificationSubscriptionIdNotNull(subscriptionId);
        assertPushNotificationRecipientDto(recipientDto);
        LOGGER.debug("Creating push notification recipient DTO for subscription with id - {}, DTO - {}", subscriptionId, recipientDto);
        final PushNotificationSubscription subscription = getPushNotificationSubscriptionService().getPushNotificationSubscriptionById(subscriptionId);
        assertNoRecipientExists(recipientDto.getType(), subscription, recipientDto.getDestinationRouteToken(), recipientDto.getApplicationType());
        // Create new push notification recipient
        PushNotificationRecipient recipient = new PushNotificationRecipient(recipientDto.getType(),true);
        recipientDto.updateDomainEntityProperties(recipient);
        recipient.setStatus(PushNotificationRecipientStatus.ENABLED);
        recipient.setSubscription(subscription);
        // Persist recipient
        recipient = pushNotificationRecipientRepository.save(recipient);
        LOGGER.debug("Successfully created push notification recipient for id - {}, recipient - {}", recipient.getId(), recipient);
        return recipient;
    }

    public  PushNotificationRecipientServiceImpl();

}