1 /*
2 * AspectJTest - Quick look at AspectJ
3 * Copyright (C) 2007 Christian Schenk
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
18 */
19 package org.christianschenk.aspectjtest.example.session;
20
21 import org.aspectj.lang.ProceedingJoinPoint;
22 import org.aspectj.lang.annotation.Around;
23 import org.aspectj.lang.annotation.Aspect;
24 import org.aspectj.lang.annotation.Pointcut;
25
26 @Aspect
27 public class SessionAspect {
28
29 @Pointcut("execution(* *..*Class.*Simplified(..)) && args(session)")
30 public void sessionPoints(final Session session) {}
31
32 @Around("sessionPoints(session)")
33 public void aroundSessionPoints(final ProceedingJoinPoint thisJoinPoint, final Session session) throws Throwable {
34 try {
35 session.startSession();
36 thisJoinPoint.proceed();
37 } finally {
38 session.endSession();
39 }
40 }
41 }