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,13 +288,13 @@ 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);
@ -347,15 +348,12 @@ public class WorkbasketController {
query.callerHasPermission(WorkbasketPermission.CUSTOM_12); query.callerHasPermission(WorkbasketPermission.CUSTOM_12);
break; break;
default: default:
throw new RuntimeException("should never occur"); throw new InvalidArgumentException("Unknown authorization '" + authorization + "'");
}
} 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);
} }
@ -427,7 +425,7 @@ public class WorkbasketController {
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]);
} }
} }