View Javadoc

1   /*
2    * EL4J, the Extension Library for the J2EE, adds incremental enhancements to
3    * the spring framework, http://el4j.sf.net
4    * Copyright (C) 2005 by ELCA Informatique SA, Av. de la Harpe 22-24,
5    * 1000 Lausanne, Switzerland, http://www.elca.ch
6    *
7    * EL4J is published under the GNU Lesser General Public License (LGPL)
8    * Version 2.1. See http://www.gnu.org/licenses/
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 Lesser General Public License for more details.
14   *
15   * For alternative licensing, please contact info@elca.ch
16   */
17  
18  package ch.elca.el4j.services.exceptionhandler;
19  
20  import org.aopalliance.intercept.MethodInvocation;
21  
22  import ch.elca.el4j.services.monitoring.notification.CoreNotificationHelper;
23  
24  /**
25   * This exception configuration uses the exception class as well as the invoked
26   * method's name to specify the exception handler.
27   *
28   * @svnLink $Revision: 3881 $;$Date: 2009-08-04 15:22:05 +0200 (Di, 04. Aug 2009) $;$Author: swismer $;$URL: https://el4j.svn.sourceforge.net/svnroot/el4j/branches/el4j_3_1/el4j/framework/modules/exception_handling/src/main/java/ch/elca/el4j/services/exceptionhandler/MethodNameExceptionConfiguration.java $
29   *
30   * @author Andreas Bur (ABU)
31   */
32  public class MethodNameExceptionConfiguration extends
33  		ClassExceptionConfiguration {
34  
35  	/** The method names which this configuration is responsible for. */
36  	private String[] m_methodNames;
37  
38  	/**
39  	 * Sets the method names which this exception configuration is responsible
40  	 * for.
41  	 *
42  	 * @param methodNames
43  	 *      The method names to set.
44  	 */
45  	public void setMethodNames(String[] methodNames) {
46  		m_methodNames = methodNames;
47  	}
48  
49  	/**
50  	 * {@inheritDoc}
51  	 */
52  	public boolean handlesExceptions(Throwable t, MethodInvocation invocation) {
53  		if (super.handlesExceptions(t, invocation)) {
54  			for (int i = 0; i < m_methodNames.length; i++) {
55  				if (m_methodNames[i].equals(invocation.getMethod().getName())) {
56  					return true;
57  				}
58  			}
59  		}
60  		return false;
61  	}
62  
63  	/**
64  	 * {@inheritDoc}
65  	 */
66  	public void afterPropertiesSet() throws Exception {
67  		super.afterPropertiesSet();
68  		CoreNotificationHelper.notifyIfEssentialPropertyIsEmpty(
69  				m_methodNames, "methodNames", this);
70  	}
71  }