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 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  }