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
@Transactional(readOnly = true, rollbackFor = Exception.class)
public ResponseEntity<List<TaskSummary>> getTasks(@RequestParam MultiValueMap<String, String> params)
throws InvalidArgumentException {
public ResponseEntity<List<TaskSummary>> getTasks(@RequestParam MultiValueMap<String, String> params) {
try {
if (params.keySet().size() == 0) {
// get all
@ -62,6 +61,9 @@ public class TaskController {
LOGGER.error("Something went wrong with the Authorisation, while getting all Tasks.", e);
TransactionInterceptor.currentTransactionStatus().setRollbackOnly();
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 = "type", required = false) String type,
@RequestParam(value = "requiredPermission", required = false) String requiredPermission) {
ResponseEntity<List<WorkbasketSummaryResource>> result;
List<WorkbasketSummary> workbasketsSummary;
WorkbasketQuery query = workbasketService.createWorkbasketQuery();
addSortingToQuery(query, sortBy, order);
addAttributeFilter(query, name, nameLike, key, keyLike, descLike, owner, ownerLike, type);
addAuthorizationFilter(query, requiredPermission);
workbasketsSummary = query.list();
result = new ResponseEntity<>(workbasketsSummary.stream()
.map(workbasket -> workbasketSummaryMapper.toResource(workbasket))
.collect(Collectors.toList()), HttpStatus.OK);
return result;
try {
List<WorkbasketSummary> workbasketsSummary;
WorkbasketQuery query = workbasketService.createWorkbasketQuery();
addSortingToQuery(query, sortBy, order);
addAttributeFilter(query, name, nameLike, key, keyLike, descLike, owner, ownerLike, type);
addAuthorizationFilter(query, requiredPermission);
workbasketsSummary = query.list();
return new ResponseEntity<>(workbasketsSummary.stream()
.map(workbasket -> workbasketSummaryMapper.toResource(workbasket))
.collect(Collectors.toList()), HttpStatus.OK);
} catch (InvalidArgumentException ex) {
return new ResponseEntity<>(HttpStatus.PRECONDITION_FAILED);
}
}
@GetMapping(path = "/{workbasketId}")
@ -185,7 +187,7 @@ public class WorkbasketController {
@PathVariable(value = "workbasketId") String workbasketId) {
List<WorkbasketAccessItem> wbAuthorizations = workbasketService.getWorkbasketAccessItems(workbasketId);
List<WorkbasketAccessItemResource> result = new ArrayList<>();
wbAuthorizations.stream()
wbAuthorizations
.forEach(accItem -> {
try {
result.add(workbasketAccessItemMapper.toResource(accItem));
@ -233,8 +235,7 @@ public class WorkbasketController {
throw new InvalidArgumentException("Can´t create something with NULL body-value.");
}
List<WorkbasketAccessItem> wbAccessItems = new ArrayList<>();
workbasketAccessResourceItems.stream()
.forEach(item -> wbAccessItems.add(workbasketAccessItemMapper.toModel(item)));
workbasketAccessResourceItems.forEach(item -> wbAccessItems.add(workbasketAccessItemMapper.toModel(item)));
workbasketService.setWorkbasketAccessItems(workbasketId, wbAccessItems);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} catch (InvalidArgumentException | NullPointerException e) {
@ -287,75 +288,72 @@ public class WorkbasketController {
return result;
}
private void addAuthorizationFilter(WorkbasketQuery query, String requiredPermission) {
private void addAuthorizationFilter(WorkbasketQuery query, String requiredPermission)
throws InvalidArgumentException {
if (requiredPermission == null) {
return;
}
for (String authorization : Arrays.asList(requiredPermission.split(","))) {
try {
switch (authorization.trim()) {
case "READ":
query.callerHasPermission(WorkbasketPermission.READ);
break;
case "OPEN":
query.callerHasPermission(WorkbasketPermission.OPEN);
break;
case "APPEND":
query.callerHasPermission(WorkbasketPermission.APPEND);
break;
case "TRANSFER":
query.callerHasPermission(WorkbasketPermission.TRANSFER);
break;
case "DISTRIBUTE":
query.callerHasPermission(WorkbasketPermission.DISTRIBUTE);
break;
case "CUSTOM_1":
query.callerHasPermission(WorkbasketPermission.CUSTOM_1);
break;
case "CUSTOM_2":
query.callerHasPermission(WorkbasketPermission.CUSTOM_2);
break;
case "CUSTOM_3":
query.callerHasPermission(WorkbasketPermission.CUSTOM_3);
break;
case "CUSTOM_4":
query.callerHasPermission(WorkbasketPermission.CUSTOM_4);
break;
case "CUSTOM_5":
query.callerHasPermission(WorkbasketPermission.CUSTOM_5);
break;
case "CUSTOM_6":
query.callerHasPermission(WorkbasketPermission.CUSTOM_6);
break;
case "CUSTOM_7":
query.callerHasPermission(WorkbasketPermission.CUSTOM_7);
break;
case "CUSTOM_8":
query.callerHasPermission(WorkbasketPermission.CUSTOM_8);
break;
case "CUSTOM_9":
query.callerHasPermission(WorkbasketPermission.CUSTOM_9);
break;
case "CUSTOM_10":
query.callerHasPermission(WorkbasketPermission.CUSTOM_10);
break;
case "CUSTOM_11":
query.callerHasPermission(WorkbasketPermission.CUSTOM_11);
break;
case "CUSTOM_12":
query.callerHasPermission(WorkbasketPermission.CUSTOM_12);
break;
default:
throw new RuntimeException("should never occur");
}
} catch (InvalidArgumentException e) {
e.printStackTrace();
switch (authorization.trim()) {
case "READ":
query.callerHasPermission(WorkbasketPermission.READ);
break;
case "OPEN":
query.callerHasPermission(WorkbasketPermission.OPEN);
break;
case "APPEND":
query.callerHasPermission(WorkbasketPermission.APPEND);
break;
case "TRANSFER":
query.callerHasPermission(WorkbasketPermission.TRANSFER);
break;
case "DISTRIBUTE":
query.callerHasPermission(WorkbasketPermission.DISTRIBUTE);
break;
case "CUSTOM_1":
query.callerHasPermission(WorkbasketPermission.CUSTOM_1);
break;
case "CUSTOM_2":
query.callerHasPermission(WorkbasketPermission.CUSTOM_2);
break;
case "CUSTOM_3":
query.callerHasPermission(WorkbasketPermission.CUSTOM_3);
break;
case "CUSTOM_4":
query.callerHasPermission(WorkbasketPermission.CUSTOM_4);
break;
case "CUSTOM_5":
query.callerHasPermission(WorkbasketPermission.CUSTOM_5);
break;
case "CUSTOM_6":
query.callerHasPermission(WorkbasketPermission.CUSTOM_6);
break;
case "CUSTOM_7":
query.callerHasPermission(WorkbasketPermission.CUSTOM_7);
break;
case "CUSTOM_8":
query.callerHasPermission(WorkbasketPermission.CUSTOM_8);
break;
case "CUSTOM_9":
query.callerHasPermission(WorkbasketPermission.CUSTOM_9);
break;
case "CUSTOM_10":
query.callerHasPermission(WorkbasketPermission.CUSTOM_10);
break;
case "CUSTOM_11":
query.callerHasPermission(WorkbasketPermission.CUSTOM_11);
break;
case "CUSTOM_12":
query.callerHasPermission(WorkbasketPermission.CUSTOM_12);
break;
default:
throw new InvalidArgumentException("Unknown authorization '" + authorization + "'");
}
}
}
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);
switch (sortBy) {
@ -375,7 +373,7 @@ public class WorkbasketController {
query.orderByType(sortDirection);
break;
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 key, String keyLike,
String descLike, String owner,
String ownerLike, String type) {
String ownerLike, String type) throws InvalidArgumentException {
if (name != null) {
query.nameIn(name);
}
@ -426,8 +424,8 @@ public class WorkbasketController {
case "TOPIC":
query.typeIn(WorkbasketType.TOPIC);
break;
default:
throw new RuntimeException("should never occur");
default:
throw new InvalidArgumentException("Unknown Workbaskettype '" + type + "'");
}
}
}

View File

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