01: /**
02: * MVEL (The MVFLEX Expression Language)
03: *
04: * Copyright (C) 2007 Christopher Brock, MVFLEX/Valhalla Project and the Codehaus
05: *
06: * Licensed under the Apache License, Version 2.0 (the "License");
07: * you may not use this file except in compliance with the License.
08: * You may obtain a copy of the License at
09: *
10: * http://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS,
14: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: * See the License for the specific language governing permissions and
16: * limitations under the License.
17: *
18: */package org.mvel.ast;
19:
20: import org.mvel.integration.Interceptor;
21: import org.mvel.integration.VariableResolverFactory;
22:
23: /**
24: * @author Christopher Brock
25: */
26: public class InterceptorWrapper extends ASTNode {
27: private Interceptor interceptor;
28: private ASTNode node;
29:
30: public InterceptorWrapper(Interceptor interceptor, ASTNode node) {
31: this .interceptor = interceptor;
32: this .node = node;
33: }
34:
35: public Object getReducedValueAccelerated(Object ctx,
36: Object this Value, VariableResolverFactory factory) {
37: interceptor.doBefore(node, factory);
38: interceptor.doAfter(ctx = node.getReducedValueAccelerated(ctx,
39: this Value, factory), node, factory);
40: return ctx;
41: }
42:
43: public Object getReducedValue(Object ctx, Object this Value,
44: VariableResolverFactory factory) {
45: interceptor.doBefore(node, factory);
46: interceptor.doAfter(ctx = node.getReducedValue(ctx, thisValue,
47: factory), node, factory);
48: return ctx;
49: }
50: }
|