diff --git a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/MessageServiceImpl.java b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/MessageServiceImpl.java index 40ed848f190..c76a35f7d4a 100644 --- a/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/MessageServiceImpl.java +++ b/gravitee-apim-rest-api/gravitee-apim-rest-api-service/src/main/java/io/gravitee/rest/api/service/impl/MessageServiceImpl.java @@ -27,6 +27,8 @@ import io.gravitee.repository.management.model.Subscription; import io.gravitee.rest.api.model.*; import io.gravitee.rest.api.model.application.ApplicationListItem; +import io.gravitee.rest.api.model.parameters.Key; +import io.gravitee.rest.api.model.parameters.ParameterReferenceType; import io.gravitee.rest.api.model.permissions.RoleScope; import io.gravitee.rest.api.model.permissions.SystemRole; import io.gravitee.rest.api.model.v4.api.GenericApiModel; @@ -40,6 +42,7 @@ import io.gravitee.rest.api.service.notification.PortalHook; import io.gravitee.rest.api.service.v4.ApiTemplateService; import java.util.*; +import java.util.function.Predicate; import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -111,6 +114,9 @@ public class MessageServiceImpl extends AbstractService implements MessageServic @Autowired private Environment environment; + @Autowired + private ParameterService parameterService; + private List httpWhitelist; @Override @@ -345,13 +351,16 @@ private Set getRecipientsEmails(ExecutionContext executionContext, Set emails = userService + final boolean isTrialInstance = parameterService.findAsBoolean(executionContext, Key.TRIAL_INSTANCE, ParameterReferenceType.SYSTEM); + final Predicate excludeIfTrialAndNotOptedIn = userEntity -> !isTrialInstance || userEntity.optedIn(); + + return userService .findByIds(executionContext, new ArrayList<>(recipientsId)) .stream() .filter(userEntity -> !StringUtils.isEmpty(userEntity.getEmail())) + .filter(excludeIfTrialAndNotOptedIn) .map(UserEntity::getEmail) .collect(Collectors.toSet()); - return emails; } private void assertMessageNotEmpty(MessageEntity messageEntity) {