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  }