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 BSD-style license *
6    * a copy of which has been included with this distribution in the license.txt file.  *
7    **************************************************************************************/
8   package org.codehaus.aspectwerkz;
9   
10  import java.lang.reflect.Method;
11  import java.io.Serializable;
12  
13  /***
14   * Contains a pair of the original method and the wrapper method if such a method exists.
15   * 
16   * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
17   */
18  public class MethodTuple implements Serializable {
19      private final Method m_wrapperMethod;
20  
21      private final Method m_originalMethod;
22  
23      private final Class m_declaringClass;
24  
25      /***
26       * @param wrapperMethod
27       * @param originalMethod
28       */
29      public MethodTuple(Method wrapperMethod, Method originalMethod) {
30          if (originalMethod == null) {
31              originalMethod = wrapperMethod;
32          }
33          if (wrapperMethod.getDeclaringClass() != originalMethod.getDeclaringClass()) {
34              throw new RuntimeException(wrapperMethod.getName()
35                  + " and "
36                  + originalMethod.getName()
37                  + " does not have the same declaring class");
38          }
39          m_declaringClass = wrapperMethod.getDeclaringClass();
40          m_wrapperMethod = wrapperMethod;
41          m_wrapperMethod.setAccessible(true);
42          m_originalMethod = originalMethod;
43          m_originalMethod.setAccessible(true);
44      }
45  
46      public boolean isWrapped() {
47          return m_originalMethod != null;
48      }
49  
50      public Class getDeclaringClass() {
51          return m_declaringClass;
52      }
53  
54      public Method getWrapperMethod() {
55          return m_wrapperMethod;
56      }
57  
58      public Method getOriginalMethod() {
59          return m_originalMethod;
60      }
61  
62      public String getName() {
63          return m_wrapperMethod.getName();
64      }
65  }