View Javadoc

1   /***************************************************************************************
2    * Copyright (c) Jonas Bonér, Alexandre Vasseur. All rights reserved.                 *
3    * http://aspectwerkz.codehaus.org                                                    *
4    * ---------------------------------------------------------------------------------- *
5    * The software in this package is published under the terms of the LGPL license      *
6    * a copy of which has been included with this distribution in the license.txt file.  *
7    **************************************************************************************/
8   package org.codehaus.aspectwerkz.joinpoint.impl;
9   
10  import org.codehaus.aspectwerkz.joinpoint.CatchClauseSignature;
11  import org.codehaus.aspectwerkz.joinpoint.Signature;
12  
13  /***
14   * Implementation for the catch clause signature.
15   * 
16   * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
17   */
18  public class CatchClauseSignatureImpl implements CatchClauseSignature {
19      private final Class m_declaringType;
20  
21      private final int m_modifiers;
22  
23      private final String m_name;
24  
25      private Class m_parameterType;
26  
27      private String m_joinPointSignature;
28  
29      /***
30       * Creates a new catch clause signature.
31       * 
32       * @param exceptionClass
33       * @param declaringClass
34       * @param joinPointSignature
35       */
36      public CatchClauseSignatureImpl(final Class exceptionClass,
37                                      final Class declaringClass,
38                                      final String joinPointSignature) {
39          m_declaringType = declaringClass;
40          m_joinPointSignature = joinPointSignature;
41          m_parameterType = exceptionClass;
42          m_modifiers = exceptionClass.getModifiers();
43          m_name = exceptionClass.getName();
44      }
45  
46      /***
47       * Returns the declaring class.
48       * 
49       * @return the declaring class
50       */
51      public Class getDeclaringType() {
52          return m_declaringType;
53      }
54  
55      /***
56       * Returns the modifiers for the signature. <p/>Could be used like this:
57       * 
58       * <pre>
59       * boolean isPublic = java.lang.reflect.Modifier.isPublic(signature.getModifiers());
60       * </pre>
61       * 
62       * @return the mofifiers
63       */
64      public int getModifiers() {
65          return m_modifiers;
66      }
67  
68      /***
69       * Returns the name (f.e. name of method of field).
70       * 
71       * @return
72       */
73      public String getName() {
74          return m_name;
75      }
76  
77      /***
78       * Returns the parameter type.
79       * 
80       * @return the parameter type
81       */
82      public Class getParameterType() {
83          return m_parameterType;
84      }
85  
86      /***
87       * Returns a string representation of the signature.
88       * 
89       * @return a string representation
90       * @TODO: implement toString to something meaningful
91       */
92      public String toString() {
93          return super.toString();
94      }
95  
96      /***
97       * Creates a deep copy of the signature.
98       * 
99       * @return a deep copy of the signature
100      */
101     public Signature newInstance() {
102         return new CatchClauseSignatureImpl(m_parameterType, m_declaringType, m_joinPointSignature);
103     }
104 }