01: //
02: // This file is part of the prose package.
03: //
04: // The contents of this file are subject to the Mozilla Public License
05: // Version 1.1 (the "License"); you may not use this file except in
06: // compliance with the License. You may obtain a copy of the License at
07: // http://www.mozilla.org/MPL/
08: //
09: // Software distributed under the License is distributed on an "AS IS" basis,
10: // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11: // for the specific language governing rights and limitations under the
12: // License.
13: //
14: // The Original Code is prose.
15: //
16: // The Initial Developer of the Original Code is Andrei Popovici. Portions
17: // created by Andrei Popovici are Copyright (C) 2002 Andrei Popovici.
18: // All Rights Reserved.
19: //
20: // Contributor(s):
21: package ch.ethz.prose.crosscut;
22:
23: import java.lang.IllegalAccessException;
24: import ch.ethz.jvmai.JoinPoint;
25: import java.lang.System;
26: import java.lang.Object;
27: import java.lang.reflect.InvocationTargetException;
28:
29: /** An advice execution for an advice method of the form
30: * <code>XXX(Foo thisObj,REST otherParams</em>)</code>
31: */
32: class ConcreteWildcardMcutAdvice extends McutAdvice {
33: private static final long serialVersionUID = 3978707307037210681L;
34: private final MethodCut methodCut;
35:
36: ConcreteWildcardMcutAdvice(MethodCut methodCut, JoinPoint m,
37: MethodCutSignaturePattern a) {
38: super (methodCut, m, a);
39: this .methodCut = methodCut;
40: }
41:
42: /** Pass the target as the first argument of the advice method;
43: * Pass ths stack argument as a REST object.
44: */
45: protected void execute() throws IllegalAccessException,
46: InvocationTargetException {
47: REST adviceRest = new REST();
48: Object[] restParams = new Object[stackArgsLength - 1];
49: System
50: .arraycopy(stackArgs, 1, restParams, 0,
51: restParams.length);
52: adviceRest.setObject(restParams);
53: advice.methodObj.invoke(methodCut, new Object[] { stackArgs[0],
54: adviceRest });
55: }
56: }
|