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 LGPL 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 org.codehaus.aspectwerkz.annotation.Annotation;
11 import org.codehaus.aspectwerkz.annotation.Annotations;
12 import org.codehaus.aspectwerkz.joinpoint.ConstructorSignature;
13
14 import java.lang.reflect.Constructor;
15 import java.util.List;
16
17 /***
18 * Implementation for the constructor signature.
19 *
20 * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
21 */
22 public class ConstructorSignatureImpl implements ConstructorSignature {
23 private final Class m_declaringType;
24
25 private final Constructor m_constructor;
26
27 /***
28 * @param declaringType
29 * @param constructor
30 */
31 public ConstructorSignatureImpl(final Class declaringType, final Constructor constructor) {
32 m_declaringType = declaringType;
33 m_constructor = constructor;
34 }
35
36 /***
37 * Returns the constructor.
38 *
39 * @return the constructor
40 */
41 public Constructor getConstructor() {
42 return m_constructor;
43 }
44
45 /***
46 * Returns the declaring class.
47 *
48 * @return the declaring class
49 */
50 public Class getDeclaringType() {
51 return m_declaringType;
52 }
53
54 /***
55 * Returns the modifiers for the signature. <p/>Could be used like this:
56 * <p/>
57 * <pre>
58 * boolean isPublic = java.lang.reflect.Modifier.isPublic(signature.getModifiers());
59 * </pre>
60 *
61 * @return the mofifiers
62 */
63 public int getModifiers() {
64 return m_constructor.getModifiers();
65 }
66
67 /***
68 * Returns the name (f.e. name of method of field).
69 *
70 * @return
71 */
72 public String getName() {
73
74 return m_constructor.getName();
75 }
76
77 /***
78 * Returns the exception types declared by the code block.
79 *
80 * @return the exception types
81 */
82 public Class[] getExceptionTypes() {
83 return m_constructor.getExceptionTypes();
84 }
85
86 /***
87 * Returns the parameter types.
88 *
89 * @return the parameter types
90 */
91 public Class[] getParameterTypes() {
92 return m_constructor.getParameterTypes();
93 }
94
95 /***
96 * Return the annotation with a specific name.
97 *
98 * @param annotationName the annotation name
99 * @return the annotation or null
100 */
101 public Annotation getAnnotation(final String annotationName) {
102 return Annotations.getAnnotation(annotationName, m_constructor);
103 }
104
105 /***
106 * Return a list with the annotations with a specific name.
107 *
108 * @param annotationName the annotation name
109 * @return the annotations in a list (can be empty)
110 */
111 public List getAnnotations(final String annotationName) {
112 return Annotations.getAnnotations(annotationName, m_constructor);
113 }
114
115 /***
116 * Return all the annotations <p/>Each annotation is wrapped in
117 * {@link org.codehaus.aspectwerkz.annotation.AnnotationInfo}instance.
118 *
119 * @return a list with the annotations
120 */
121 public List getAnnotationInfos() {
122 return Annotations.getAnnotationInfos(m_constructor);
123 }
124
125 /***
126 * Returns a string representation of the signature.
127 *
128 * @return a string representation
129 */
130 public String toString() {
131 return m_constructor.toString();
132 }
133 }