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.Constructor; 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 ConstructorTuple implements Serializable { 19 private final Constructor m_wrapperConstructor; 20 21 private final Constructor m_originalConstructor; 22 23 private final Class m_declaringClass; 24 25 /*** 26 * Creates a new tuple. 27 * 28 * @param wrapperConstructor 29 * @param originalConstructor 30 */ 31 public ConstructorTuple(final Constructor wrapperConstructor, Constructor originalConstructor) { 32 if (originalConstructor == null) { 33 originalConstructor = wrapperConstructor; 34 } 35 if (wrapperConstructor.getDeclaringClass() != originalConstructor.getDeclaringClass()) { 36 throw new RuntimeException(wrapperConstructor.getName() 37 + " and " 38 + originalConstructor.getName() 39 + " does not have the same declaring class"); 40 } 41 m_declaringClass = wrapperConstructor.getDeclaringClass(); 42 m_wrapperConstructor = wrapperConstructor; 43 m_wrapperConstructor.setAccessible(true); 44 m_originalConstructor = originalConstructor; 45 m_originalConstructor.setAccessible(true); 46 } 47 48 public boolean isWrapped() { 49 return m_originalConstructor != null; 50 } 51 52 public Class getDeclaringClass() { 53 return m_declaringClass; 54 } 55 56 public Constructor getWrapperConstructor() { 57 return m_wrapperConstructor; 58 } 59 60 public Constructor getOriginalConstructor() { 61 return m_originalConstructor; 62 } 63 64 public String getName() { 65 return m_wrapperConstructor.getName(); 66 } 67 }