[CST-7756] added validation logic of params

This commit is contained in:
Mykhaylo
2023-01-27 12:10:16 +01:00
parent d3c5e7debe
commit c59438b936

View File

@@ -178,6 +178,22 @@ public class SubscriptionRestRepository extends DSpaceRestRepository<Subscriptio
List<SubscriptionParameterRest> subscriptionParameterList = subscriptionRest.getSubscriptionParameterList();
if (CollectionUtils.isNotEmpty(subscriptionParameterList)) {
List<SubscriptionParameter> subscriptionParameters = new ArrayList<>();
validateParameters(subscriptionRest, subscriptionParameterList, subscriptionParameters);
subscription = subscribeService.subscribe(context, ePerson, dSpaceObject, subscriptionParameters,
subscriptionRest.getSubscriptionType());
}
context.commit();
return converter.toRest(subscription, utils.obtainProjection());
} catch (SQLException sqlException) {
throw new SQLException(sqlException.getMessage(), sqlException);
} catch (IOException ioException) {
throw new UnprocessableEntityException("error parsing the body");
}
}
private void validateParameters(SubscriptionRest subscriptionRest,
List<SubscriptionParameterRest> subscriptionParameterList,
List<SubscriptionParameter> subscriptionParameters) {
for (SubscriptionParameterRest subscriptionParameterRest : subscriptionParameterList) {
SubscriptionParameter subscriptionParameter = new SubscriptionParameter();
var name = subscriptionParameterRest.getName();
@@ -196,16 +212,6 @@ public class SubscriptionRestRepository extends DSpaceRestRepository<Subscriptio
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();
return converter.toRest(subscription, utils.obtainProjection());
} catch (SQLException sqlException) {
throw new SQLException(sqlException.getMessage(), sqlException);
} catch (IOException ioException) {
throw new UnprocessableEntityException("error parsing the body");
}
}
private boolean nameAndValueAreSupported(String name, String value) {
@@ -238,22 +244,18 @@ public class SubscriptionRestRepository extends DSpaceRestRepository<Subscriptio
if (Objects.isNull(ePerson)) {
throw new ResourceNotFoundException("There is not ePerson with uuid:" + epersonId);
}
DSpaceObject dSpaceObject = dspaceObjectUtil.findDSpaceObject(context, UUID.fromString(dsoId));
if (Objects.isNull(dSpaceObject)) {
throw new ResourceNotFoundException("There is not DSpaceObject with uuid:" + dsoId);
}
if (id.equals(subscription.getID())) {
List<SubscriptionParameter> subscriptionParameterList = new ArrayList<>();
for (SubscriptionParameterRest subscriptionParamRest : subscriptionRest.getSubscriptionParameterList()) {
SubscriptionParameter subscriptionParameter = new SubscriptionParameter();
subscriptionParameter.setSubscription(subscription);
subscriptionParameter.setValue(subscriptionParamRest.getValue());
subscriptionParameter.setName(subscriptionParamRest.getName());
subscriptionParameterList.add(subscriptionParameter);
}
List<SubscriptionParameter> subscriptionParameters = new ArrayList<>();
List<SubscriptionParameterRest> subscriptionParameterList = subscriptionRest.getSubscriptionParameterList();
validateParameters(subscriptionRest, subscriptionParameterList, subscriptionParameters);
subscription = subscribeService.updateSubscription(context, id, ePerson, dSpaceObject,
subscriptionParameterList, subscriptionRest.getSubscriptionType());
subscriptionParameters, subscriptionRest.getSubscriptionType());
context.commit();
return converter.toRest(subscription, utils.obtainProjection());
} else {