TSK-311: replaced RuntimeExceptions with more precise exceptions

and added exception handling
This commit is contained in:
Mustapha Zorgati 2018-02-28 16:40:11 +01:00 committed by Holger Hagen
parent 1369a1fb48
commit 43a226f26d
3 changed files with 86 additions and 86 deletions

View File

@ -50,8 +50,7 @@ public class TaskController {
@GetMapping @GetMapping
@Transactional(readOnly = true, rollbackFor = Exception.class) @Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity<List<TaskSummary>> getTasks(@RequestParam MultiValueMap<String, String> params) public ResponseEntity<List<TaskSummary>> getTasks(@RequestParam MultiValueMap<String, String> params) {
throws InvalidArgumentException {
try { try {
if (params.keySet().size() == 0) { if (params.keySet().size() == 0) {
// get all // get all
@ -62,6 +61,9 @@ public class TaskController {
LOGGER.error("Something went wrong with the Authorisation, while getting all Tasks.", e); LOGGER.error("Something went wrong with the Authorisation, while getting all Tasks.", e);
TransactionInterceptor.currentTransactionStatus().setRollbackOnly(); TransactionInterceptor.currentTransactionStatus().setRollbackOnly();
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
} catch (InvalidArgumentException e) {
TransactionInterceptor.currentTransactionStatus().setRollbackOnly();
return ResponseEntity.status(HttpStatus.PRECONDITION_FAILED).build();
} }
} }

View File

@ -82,17 +82,19 @@ public class WorkbasketController {
@RequestParam(value = "ownerLike", required = false) String ownerLike, @RequestParam(value = "ownerLike", required = false) String ownerLike,
@RequestParam(value = "type", required = false) String type, @RequestParam(value = "type", required = false) String type,
@RequestParam(value = "requiredPermission", required = false) String requiredPermission) { @RequestParam(value = "requiredPermission", required = false) String requiredPermission) {
ResponseEntity<List<WorkbasketSummaryResource>> result; try {
List<WorkbasketSummary> workbasketsSummary; List<WorkbasketSummary> workbasketsSummary;
WorkbasketQuery query = workbasketService.createWorkbasketQuery(); WorkbasketQuery query = workbasketService.createWorkbasketQuery();
addSortingToQuery(query, sortBy, order); addSortingToQuery(query, sortBy, order);
addAttributeFilter(query, name, nameLike, key, keyLike, descLike, owner, ownerLike, type); addAttributeFilter(query, name, nameLike, key, keyLike, descLike, owner, ownerLike, type);
addAuthorizationFilter(query, requiredPermission); addAuthorizationFilter(query, requiredPermission);
workbasketsSummary = query.list(); workbasketsSummary = query.list();
result = new ResponseEntity<>(workbasketsSummary.stream() return new ResponseEntity<>(workbasketsSummary.stream()
.map(workbasket -> workbasketSummaryMapper.toResource(workbasket)) .map(workbasket -> workbasketSummaryMapper.toResource(workbasket))
.collect(Collectors.toList()), HttpStatus.OK); .collect(Collectors.toList()), HttpStatus.OK);
return result; } catch (InvalidArgumentException ex) {
return new ResponseEntity<>(HttpStatus.PRECONDITION_FAILED);
}
} }
@GetMapping(path = "/{workbasketId}") @GetMapping(path = "/{workbasketId}")
@ -185,7 +187,7 @@ public class WorkbasketController {
@PathVariable(value = "workbasketId") String workbasketId) { @PathVariable(value = "workbasketId") String workbasketId) {
List<WorkbasketAccessItem> wbAuthorizations = workbasketService.getWorkbasketAccessItems(workbasketId); List<WorkbasketAccessItem> wbAuthorizations = workbasketService.getWorkbasketAccessItems(workbasketId);
List<WorkbasketAccessItemResource> result = new ArrayList<>(); List<WorkbasketAccessItemResource> result = new ArrayList<>();
wbAuthorizations.stream() wbAuthorizations
.forEach(accItem -> { .forEach(accItem -> {
try { try {
result.add(workbasketAccessItemMapper.toResource(accItem)); result.add(workbasketAccessItemMapper.toResource(accItem));
@ -233,8 +235,7 @@ public class WorkbasketController {
throw new InvalidArgumentException("Can´t create something with NULL body-value."); throw new InvalidArgumentException("Can´t create something with NULL body-value.");
} }
List<WorkbasketAccessItem> wbAccessItems = new ArrayList<>(); List<WorkbasketAccessItem> wbAccessItems = new ArrayList<>();
workbasketAccessResourceItems.stream() workbasketAccessResourceItems.forEach(item -> wbAccessItems.add(workbasketAccessItemMapper.toModel(item)));
.forEach(item -> wbAccessItems.add(workbasketAccessItemMapper.toModel(item)));
workbasketService.setWorkbasketAccessItems(workbasketId, wbAccessItems); workbasketService.setWorkbasketAccessItems(workbasketId, wbAccessItems);
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} catch (InvalidArgumentException | NullPointerException e) { } catch (InvalidArgumentException | NullPointerException e) {
@ -287,75 +288,72 @@ public class WorkbasketController {
return result; return result;
} }
private void addAuthorizationFilter(WorkbasketQuery query, String requiredPermission) { private void addAuthorizationFilter(WorkbasketQuery query, String requiredPermission)
throws InvalidArgumentException {
if (requiredPermission == null) { if (requiredPermission == null) {
return; return;
} }
for (String authorization : Arrays.asList(requiredPermission.split(","))) { for (String authorization : Arrays.asList(requiredPermission.split(","))) {
try { switch (authorization.trim()) {
switch (authorization.trim()) { case "READ":
case "READ": query.callerHasPermission(WorkbasketPermission.READ);
query.callerHasPermission(WorkbasketPermission.READ); break;
break; case "OPEN":
case "OPEN": query.callerHasPermission(WorkbasketPermission.OPEN);
query.callerHasPermission(WorkbasketPermission.OPEN); break;
break; case "APPEND":
case "APPEND": query.callerHasPermission(WorkbasketPermission.APPEND);
query.callerHasPermission(WorkbasketPermission.APPEND); break;
break; case "TRANSFER":
case "TRANSFER": query.callerHasPermission(WorkbasketPermission.TRANSFER);
query.callerHasPermission(WorkbasketPermission.TRANSFER); break;
break; case "DISTRIBUTE":
case "DISTRIBUTE": query.callerHasPermission(WorkbasketPermission.DISTRIBUTE);
query.callerHasPermission(WorkbasketPermission.DISTRIBUTE); break;
break; case "CUSTOM_1":
case "CUSTOM_1": query.callerHasPermission(WorkbasketPermission.CUSTOM_1);
query.callerHasPermission(WorkbasketPermission.CUSTOM_1); break;
break; case "CUSTOM_2":
case "CUSTOM_2": query.callerHasPermission(WorkbasketPermission.CUSTOM_2);
query.callerHasPermission(WorkbasketPermission.CUSTOM_2); break;
break; case "CUSTOM_3":
case "CUSTOM_3": query.callerHasPermission(WorkbasketPermission.CUSTOM_3);
query.callerHasPermission(WorkbasketPermission.CUSTOM_3); break;
break; case "CUSTOM_4":
case "CUSTOM_4": query.callerHasPermission(WorkbasketPermission.CUSTOM_4);
query.callerHasPermission(WorkbasketPermission.CUSTOM_4); break;
break; case "CUSTOM_5":
case "CUSTOM_5": query.callerHasPermission(WorkbasketPermission.CUSTOM_5);
query.callerHasPermission(WorkbasketPermission.CUSTOM_5); break;
break; case "CUSTOM_6":
case "CUSTOM_6": query.callerHasPermission(WorkbasketPermission.CUSTOM_6);
query.callerHasPermission(WorkbasketPermission.CUSTOM_6); break;
break; case "CUSTOM_7":
case "CUSTOM_7": query.callerHasPermission(WorkbasketPermission.CUSTOM_7);
query.callerHasPermission(WorkbasketPermission.CUSTOM_7); break;
break; case "CUSTOM_8":
case "CUSTOM_8": query.callerHasPermission(WorkbasketPermission.CUSTOM_8);
query.callerHasPermission(WorkbasketPermission.CUSTOM_8); break;
break; case "CUSTOM_9":
case "CUSTOM_9": query.callerHasPermission(WorkbasketPermission.CUSTOM_9);
query.callerHasPermission(WorkbasketPermission.CUSTOM_9); break;
break; case "CUSTOM_10":
case "CUSTOM_10": query.callerHasPermission(WorkbasketPermission.CUSTOM_10);
query.callerHasPermission(WorkbasketPermission.CUSTOM_10); break;
break; case "CUSTOM_11":
case "CUSTOM_11": query.callerHasPermission(WorkbasketPermission.CUSTOM_11);
query.callerHasPermission(WorkbasketPermission.CUSTOM_11); break;
break; case "CUSTOM_12":
case "CUSTOM_12": query.callerHasPermission(WorkbasketPermission.CUSTOM_12);
query.callerHasPermission(WorkbasketPermission.CUSTOM_12); break;
break; default:
default: throw new InvalidArgumentException("Unknown authorization '" + authorization + "'");
throw new RuntimeException("should never occur");
}
} catch (InvalidArgumentException e) {
e.printStackTrace();
} }
} }
} }
private void addSortingToQuery(WorkbasketQuery query, String sortBy, String order) { private void addSortingToQuery(WorkbasketQuery query, String sortBy, String order) throws IllegalArgumentException {
BaseQuery.SortDirection sortDirection = getSortDirection(order); BaseQuery.SortDirection sortDirection = getSortDirection(order);
switch (sortBy) { switch (sortBy) {
@ -375,7 +373,7 @@ public class WorkbasketController {
query.orderByType(sortDirection); query.orderByType(sortDirection);
break; break;
default: default:
throw new RuntimeException("should never occur"); throw new IllegalArgumentException("Unknown order '" + sortBy + "'");
} }
} }
@ -390,7 +388,7 @@ public class WorkbasketController {
String name, String nameLike, String name, String nameLike,
String key, String keyLike, String key, String keyLike,
String descLike, String owner, String descLike, String owner,
String ownerLike, String type) { String ownerLike, String type) throws InvalidArgumentException {
if (name != null) { if (name != null) {
query.nameIn(name); query.nameIn(name);
} }
@ -426,8 +424,8 @@ public class WorkbasketController {
case "TOPIC": case "TOPIC":
query.typeIn(WorkbasketType.TOPIC); query.typeIn(WorkbasketType.TOPIC);
break; break;
default: default:
throw new RuntimeException("should never occur"); throw new InvalidArgumentException("Unknown Workbaskettype '" + type + "'");
} }
} }
} }

View File

@ -138,10 +138,10 @@ public class TaskFilter {
return values.toArray(new String[0]); return values.toArray(new String[0]);
} }
private TaskState[] extractStates(MultiValueMap<String, String> params) { private TaskState[] extractStates(MultiValueMap<String, String> params) throws InvalidArgumentException {
List<TaskState> states = new ArrayList<>(); List<TaskState> states = new ArrayList<>();
params.get(STATE).forEach(item -> { for (String item : params.get(STATE)) {
Arrays.asList(item.split(COMMA)).forEach(state -> { for (String state : item.split(COMMA)) {
switch (state) { switch (state) {
case READY: case READY:
states.add(TaskState.READY); states.add(TaskState.READY);
@ -153,10 +153,10 @@ public class TaskFilter {
states.add(TaskState.CLAIMED); states.add(TaskState.CLAIMED);
break; break;
default: default:
throw new RuntimeException("should never occur"); throw new InvalidArgumentException("Unknown status '" + state + "'");
} }
}); }
}); }
return states.toArray(new TaskState[0]); return states.toArray(new TaskState[0]);
} }
} }