Java


Авторизация - часть 6


// все методы производящие удаление
объектов модели pointcut deleteMethods(Album album)
: execution (public * aop.example.
model.AlbumList.deleteAlbum(Album)) && args(album);

// методы проверки на доступность
чтения (пред-проверка) pointcut controlledRead(Object object)
: execution(public boolean aop.example.model.
Controlled+.isReadable()) && this(object);

// методы проверки на доступность
добавления (пред-проверка) pointcut controlledAdd(Object object)
: execution(public boolean aop.example.model.Controlled+.
isAddable()) && this(object);

// методы проверки на доступность
удаления (пред-проверка) pointcut controlledDelete(Object object)
: execution(public boolean aop.example.model.
Controlled+.isDeletable()) && this(object);

// Вызов методов чтения произошедшие в потоке
выполнения // следующим за вызовом метода фильтра // мы объеденили два pointcut - реализация
паттерна "червоточина" pointcut readAccess(ServletRequest request,
Object object) : cflow(requestMethod(request))
&& readMethods(object);

// то же самое только для добавления pointcut addAccess(ServletRequest request,
Object object) : cflow(requestMethod(request)) &&
addMethods(object);

// то же самое только для удаления pointcut deleteAccess(ServletRequest request,
Album album) : cflow(requestMethod(request)) &&
deleteMethods(album);

// пред-проверка на чтение pointcut readCheck(ServletRequest request,
Object object) : cflow(requestMethod(request)) &&
controlledRead(object);

// пред-проверка на добавление pointcut addCheck(ServletRequest request,
Object object) : cflow(requestMethod(request)) &&
controlledAdd(object);

// пред-проверка на удаление pointcut deleteCheck(ServletRequest request,
Object object) : cflow(requestMethod(request)) &&
controlledDelete(object);

/** * Around advice отлавливающий исключение * и отправляющий запрос на страницу с ошибкой */ void around(ServletRequest srequest,
ServletResponse sresponse, EntranceFilter filter)
throws IOException, ServletException :
doFilterMethod(srequest, sresponse, filter) { try { // выполняем метод фильтра proceed(srequest, sresponse, filter); } catch (AuthorizationException e) { // ловим исключение srequest.setAttribute("error_message",
e.getMessage()); // вперёд на страницу с сообщением
об ошибке filter.getConfig().getServletContext()
.getRequestDispatcher("error.vm").
forward(srequest, sresponse); } }




- Начало -  - Назад -  - Вперед -



Книжный магазин