1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import org.aspectj.testing.Tester;
-
- import java.rmi.*;
- import java.rmi.server.UnicastRemoteObject;
-
- public class NewSiteAdvice {
-
- public static void main(String[] args) { test(); }
-
- NewSiteAdvice() throws RemoteException { }
-
- /* here's another comment */
- public static void test() {
- Tester.checkEqual(new NewSiteAdvice().go(), "ran", "rmi exception intercepted");
- Tester.check(new Integer(42) == A.cached42, "caching new 42");
- Tester.check("around NewSiteAdvice");
- }
-
- /** this is the way to make things go **/
- String go() {
- return "ran"; // and an eol commment
- }
- }
- aspect A {
- pointcut makeNewSiteAdvice():
- within(NewSiteAdvice) && call(NewSiteAdvice.new());
-
- declare soft: RemoteException: makeNewSiteAdvice();
-
- NewSiteAdvice around(): makeNewSiteAdvice() {
- NewSiteAdvice result = null;
- try {
- result = proceed();
- } catch (RemoteException e){
- }
-
- Tester.note("around NewSiteAdvice");
- return result;
- }
-
- Integer around(int i):
- args(i) && call(Integer.new(int)) && !within(A) {
- if (i == 42) return cached42;
- return proceed(i);
- }
-
-
- static Integer cached42 = new Integer(42);
- }
|