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.joinpoint.impl;
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(
35                      wrapperMethod.getName()
36                      + " and "
37                      + originalMethod.getName()
38                      + " does not have the same declaring class"
39              );
40          }
41          m_declaringClass = wrapperMethod.getDeclaringClass();
42          m_wrapperMethod = wrapperMethod;
43          m_wrapperMethod.setAccessible(true);
44          m_originalMethod = originalMethod;
45          m_originalMethod.setAccessible(true);
46      }
47  
48      public boolean isWrapped() {
49          return m_originalMethod != null;
50      }
51  
52      public Class getDeclaringClass() {
53          return m_declaringClass;
54      }
55  
56      public Method getWrapperMethod() {
57          return m_wrapperMethod;
58      }
59  
60      public Method getOriginalMethod() {
61          return m_originalMethod;
62      }
63  
64      public String getName() {
65          return m_wrapperMethod.getName();
66      }
67  }