Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //где-то в контроллере
- @AssertEntityExistsById(entityClass = User.class)
- @RequestMapping(value = "/{id}", method = RequestMethod.GET)
- @ResponseBody
- public User getUser(@PathVariable("id") @EntityIdentifier int id) {
- return userService.findUserById(id);
- }
- //эдвайс
- @Around("@annotation(assertEntityExistsById) && args(..)")
- public Object assertEntityExists(ProceedingJoinPoint proceedingJoinPoint, AssertEntityExistsById assertEntityExistsById) throws Throwable {
- MethodSignature methodSignature = (MethodSignature) proceedingJoinPoint.getSignature();
- Object[] arguments = proceedingJoinPoint.getArgs();
- Object id = null;
- List<Parameter> parameters = Arrays.asList(methodSignature.getMethod().getParameters());
- for (int index = 0; index < parameters.size(); index++) {
- Parameter parameter = parameters.get(index);
- List<Annotation> parameterAnnotations = Arrays.asList(parameter.getAnnotations());
- for (Annotation annotation: parameterAnnotations) {
- if (annotation instanceof EntityIdentifier) {
- id = arguments[index];
- }
- }
- }
- Repositories repositories = RepositoriesSingleton.getInstance();
- JpaRepository jpaRepository = (JpaRepository) repositories.getRepositoryFor(assertEntityExistsById.entityClass()).get();
- if (!jpaRepository.existsById(id)) {
- throw entityNotFoundExceptionFactory.createForEntityClass(assertEntityExistsById.entityClass());
- }
- return proceedingJoinPoint.proceed();
- }
Add Comment
Please, Sign In to add comment