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.management;
9
10 import org.codehaus.aspectwerkz.ConstructorTuple;
11 import org.codehaus.aspectwerkz.MethodTuple;
12 import org.codehaus.aspectwerkz.aspect.management.AspectRegistry;
13 import org.codehaus.aspectwerkz.joinpoint.Signature;
14 import org.codehaus.aspectwerkz.joinpoint.impl.CatchClauseSignatureImpl;
15 import org.codehaus.aspectwerkz.joinpoint.impl.ConstructorSignatureImpl;
16 import org.codehaus.aspectwerkz.joinpoint.impl.FieldSignatureImpl;
17 import org.codehaus.aspectwerkz.joinpoint.impl.MethodSignatureImpl;
18 import org.codehaus.aspectwerkz.joinpoint.impl.ConstructorSignatureImplInlined;
19
20 import java.lang.reflect.Field;
21 import java.lang.reflect.Constructor;
22
23 /***
24 * Factory class for the signature hierarchy.
25 *
26 * @author <a href="mailto:jboner@codehaus.org">Jonas Bonér </a>
27 */
28 public final class SignatureFactory {
29 public static final MethodSignatureImpl newMethodSignature(final Class declaringClass,
30 final int joinPointHash) {
31 MethodTuple methodTuple = AspectRegistry.getMethodTuple(declaringClass, joinPointHash);
32 return new MethodSignatureImpl(methodTuple.getDeclaringClass(), methodTuple);
33 }
34
35 public static final FieldSignatureImpl newFieldSignature(final Class declaringClass,
36 final int joinPointHash) {
37 Field field = AspectRegistry.getField(declaringClass, joinPointHash);
38 return new FieldSignatureImpl(field.getDeclaringClass(), field);
39 }
40
41 public static final ConstructorSignatureImplInlined newConstructorSignature(final Class declaringClass,
42 final int joinPointHash) {
43 Constructor constructor = AspectRegistry.getConstructor(declaringClass, joinPointHash);
44 return new ConstructorSignatureImplInlined(constructor.getDeclaringClass(), constructor);
45 }
46
47 public static final CatchClauseSignatureImpl newCatchClauseSignature(final Class declaringClass,
48 final int joinPointHash) {
49 return new CatchClauseSignatureImpl(declaringClass, declaringClass, "");
50 }
51 }