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 }