KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > mixindeployment > IntroductionDeploymentAspect


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 test.mixindeployment;
9
10 import org.codehaus.aspectwerkz.AspectContext;
11
12 /**
13  * The aspect mixin is deployed as perInstance
14  *
15  * @author <a HREF="mailto:alex@gnilux.com">Alexandre Vasseur </a>
16  * @Aspect perJVM
17  */

18 public class IntroductionDeploymentAspect {
19     /**
20      * Set to parse
21      *
22      * @Mixin within(test.mixindeployment.IntroductionDeploymentTest$TargetA) ||
23      * within(test.mixindeployment.IntroductionDeploymentTest$TargetB)
24      * deploymentModel=perInstance
25      */

26     public static class MarkerImpl implements Marker {
27         /**
28          * The cross-cutting info.
29          */

30         private final AspectContext m_info;
31
32         /**
33          * We are interested in cross-cutting info, therefore we have added a constructor that takes
34          * a cross-cutting infor instance as its only parameter.
35          *
36          * @param info the cross-cutting info
37          */

38         public MarkerImpl(final AspectContext info) {
39             m_info = info;
40         }
41
42         public Object JavaDoc getTargetInstance() {
43             return null;
44         }
45
46         public Class JavaDoc getTargetClass() {
47             return null;
48         }
49     }
50
51     /**
52      * Note: explicit within(..) pointcut is needed
53      *
54      * @Mixin within(test.mixindeployment.IntroductionDeploymentTest$TargetC)
55      * deploymentModel=perClass
56      */

57     public static class AnotherMarkerImpl implements Marker {
58         /**
59          * The cross-cutting info.
60          */

61         private final AspectContext m_info;
62
63         /**
64          * We are interested in cross-cutting info, therefore we have added a constructor that takes
65          * a cross-cutting infor instance as its only parameter.
66          *
67          * @param info the cross-cutting info
68          */

69         public AnotherMarkerImpl(final AspectContext info) {
70             m_info = info;
71         }
72
73         public Object JavaDoc getTargetInstance() {
74             return null;
75         }
76
77         public Class JavaDoc getTargetClass() {
78             return null;
79         }
80     }
81
82     /**
83      * Note: will fail with a StackOverflow if perInstance - due to hashCode use to fetch mixin impl.
84      *
85      * @Mixin within(test.mixindeployment.IntroductionDeploymentTest$TargetD)
86      * deploymentModel=perClass
87      */

88     public static class HashcodeImpl implements Hashcode {
89         public int hashCode() {
90             return 2;
91         }
92     }
93 }
Popular Tags