mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-14 21:43:11 +00:00
[CST-7756] added validation logic of params
This commit is contained in:
@@ -178,26 +178,9 @@ public class SubscriptionRestRepository extends DSpaceRestRepository<Subscriptio
|
|||||||
List<SubscriptionParameterRest> subscriptionParameterList = subscriptionRest.getSubscriptionParameterList();
|
List<SubscriptionParameterRest> subscriptionParameterList = subscriptionRest.getSubscriptionParameterList();
|
||||||
if (CollectionUtils.isNotEmpty(subscriptionParameterList)) {
|
if (CollectionUtils.isNotEmpty(subscriptionParameterList)) {
|
||||||
List<SubscriptionParameter> subscriptionParameters = new ArrayList<>();
|
List<SubscriptionParameter> subscriptionParameters = new ArrayList<>();
|
||||||
for (SubscriptionParameterRest subscriptionParameterRest : subscriptionParameterList) {
|
validateParameters(subscriptionRest, subscriptionParameterList, subscriptionParameters);
|
||||||
SubscriptionParameter subscriptionParameter = new SubscriptionParameter();
|
subscription = subscribeService.subscribe(context, ePerson, dSpaceObject, subscriptionParameters,
|
||||||
var name = subscriptionParameterRest.getName();
|
subscriptionRest.getSubscriptionType());
|
||||||
var value = subscriptionParameterRest.getValue();
|
|
||||||
if (!nameAndValueAreSupported(name, value)) {
|
|
||||||
throw new UnprocessableEntityException("Provided SubscriptionParameter name:" + name +
|
|
||||||
" or value: " + value + " is not supported!");
|
|
||||||
}
|
|
||||||
subscriptionParameter.setName(name);
|
|
||||||
subscriptionParameter.setValue(value);
|
|
||||||
subscriptionParameters.add(subscriptionParameter);
|
|
||||||
}
|
|
||||||
|
|
||||||
var type = subscriptionRest.getSubscriptionType();
|
|
||||||
if (!subscriptionEmailNotificationService.getSupportedSubscriptionTypes().contains(type)) {
|
|
||||||
throw new UnprocessableEntityException("Provided subscriptionType:" + type + " is not supported!" +
|
|
||||||
" Must be one of: " + subscriptionEmailNotificationService.getSupportedSubscriptionTypes());
|
|
||||||
}
|
|
||||||
|
|
||||||
subscription = subscribeService.subscribe(context, ePerson, dSpaceObject, subscriptionParameters, type);
|
|
||||||
}
|
}
|
||||||
context.commit();
|
context.commit();
|
||||||
return converter.toRest(subscription, utils.obtainProjection());
|
return converter.toRest(subscription, utils.obtainProjection());
|
||||||
@@ -208,6 +191,29 @@ public class SubscriptionRestRepository extends DSpaceRestRepository<Subscriptio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validateParameters(SubscriptionRest subscriptionRest,
|
||||||
|
List<SubscriptionParameterRest> subscriptionParameterList,
|
||||||
|
List<SubscriptionParameter> subscriptionParameters) {
|
||||||
|
for (SubscriptionParameterRest subscriptionParameterRest : subscriptionParameterList) {
|
||||||
|
SubscriptionParameter subscriptionParameter = new SubscriptionParameter();
|
||||||
|
var name = subscriptionParameterRest.getName();
|
||||||
|
var value = subscriptionParameterRest.getValue();
|
||||||
|
if (!nameAndValueAreSupported(name, value)) {
|
||||||
|
throw new UnprocessableEntityException("Provided SubscriptionParameter name:" + name +
|
||||||
|
" or value: " + value + " is not supported!");
|
||||||
|
}
|
||||||
|
subscriptionParameter.setName(name);
|
||||||
|
subscriptionParameter.setValue(value);
|
||||||
|
subscriptionParameters.add(subscriptionParameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
var type = subscriptionRest.getSubscriptionType();
|
||||||
|
if (!subscriptionEmailNotificationService.getSupportedSubscriptionTypes().contains(type)) {
|
||||||
|
throw new UnprocessableEntityException("Provided subscriptionType:" + type + " is not supported!" +
|
||||||
|
" Must be one of: " + subscriptionEmailNotificationService.getSupportedSubscriptionTypes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private boolean nameAndValueAreSupported(String name, String value) {
|
private boolean nameAndValueAreSupported(String name, String value) {
|
||||||
return subscriptionEmailNotificationService.isSupportedSubscriptionParameterName(name) &&
|
return subscriptionEmailNotificationService.isSupportedSubscriptionParameterName(name) &&
|
||||||
subscriptionEmailNotificationService.getSubscriptionParameterValuesByName(name).contains(value);
|
subscriptionEmailNotificationService.getSubscriptionParameterValuesByName(name).contains(value);
|
||||||
@@ -238,22 +244,18 @@ public class SubscriptionRestRepository extends DSpaceRestRepository<Subscriptio
|
|||||||
if (Objects.isNull(ePerson)) {
|
if (Objects.isNull(ePerson)) {
|
||||||
throw new ResourceNotFoundException("There is not ePerson with uuid:" + epersonId);
|
throw new ResourceNotFoundException("There is not ePerson with uuid:" + epersonId);
|
||||||
}
|
}
|
||||||
|
|
||||||
DSpaceObject dSpaceObject = dspaceObjectUtil.findDSpaceObject(context, UUID.fromString(dsoId));
|
DSpaceObject dSpaceObject = dspaceObjectUtil.findDSpaceObject(context, UUID.fromString(dsoId));
|
||||||
if (Objects.isNull(dSpaceObject)) {
|
if (Objects.isNull(dSpaceObject)) {
|
||||||
throw new ResourceNotFoundException("There is not DSpaceObject with uuid:" + dsoId);
|
throw new ResourceNotFoundException("There is not DSpaceObject with uuid:" + dsoId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id.equals(subscription.getID())) {
|
if (id.equals(subscription.getID())) {
|
||||||
List<SubscriptionParameter> subscriptionParameterList = new ArrayList<>();
|
List<SubscriptionParameter> subscriptionParameters = new ArrayList<>();
|
||||||
for (SubscriptionParameterRest subscriptionParamRest : subscriptionRest.getSubscriptionParameterList()) {
|
List<SubscriptionParameterRest> subscriptionParameterList = subscriptionRest.getSubscriptionParameterList();
|
||||||
SubscriptionParameter subscriptionParameter = new SubscriptionParameter();
|
validateParameters(subscriptionRest, subscriptionParameterList, subscriptionParameters);
|
||||||
subscriptionParameter.setSubscription(subscription);
|
|
||||||
subscriptionParameter.setValue(subscriptionParamRest.getValue());
|
|
||||||
subscriptionParameter.setName(subscriptionParamRest.getName());
|
|
||||||
subscriptionParameterList.add(subscriptionParameter);
|
|
||||||
}
|
|
||||||
subscription = subscribeService.updateSubscription(context, id, ePerson, dSpaceObject,
|
subscription = subscribeService.updateSubscription(context, id, ePerson, dSpaceObject,
|
||||||
subscriptionParameterList, subscriptionRest.getSubscriptionType());
|
subscriptionParameters, subscriptionRest.getSubscriptionType());
|
||||||
context.commit();
|
context.commit();
|
||||||
return converter.toRest(subscription, utils.obtainProjection());
|
return converter.toRest(subscription, utils.obtainProjection());
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user