01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: *
17: * $Header:$
18: */
19: package org.apache.beehive.controls.spi.svc;
20:
21: import java.lang.reflect.Method;
22:
23: import org.apache.beehive.controls.api.bean.ControlBean;
24:
25: /**
26: * The controls implementation architecture has a interceptor model for
27: * adding annotation-based features. This model provides the ability to
28: * associate a JavaBeans service interface with an annotation to define
29: * its runtime feature behaviour. Such interfaces must extend this
30: * Interceptor interface, which defines the contract that the controls runtime
31: * has with interceptors.
32: *
33: * The controls runtime will automatically instantiate and execute
34: * implementations of interceptors at the appropriate execution points
35: * (pre/post invocation of a control operation, etc).
36: *
37: * The control runtime will continue the normal flow of control (ie, subsequent
38: * interceptors and operation/event execution) unless an interceptor throws a
39: * {@link InterceptorPivotException}. When this type of execption is encountered,
40: * the runtime will "pivot" out.
41: */
42: public interface Interceptor {
43: /** Called before a control operation is invoked */
44: public void preInvoke(ControlBean cb, Method m, Object[] args)
45: throws InterceptorPivotException;
46:
47: /** Called after a control operation is invoked */
48: public void postInvoke(ControlBean cb, Method m, Object[] args,
49: Object retval, Throwable t);
50:
51: /** Called before a control event is fired (through a client proxy) */
52: public void preEvent(ControlBean cb, Class eventSet, Method m,
53: Object[] args) throws InterceptorPivotException;
54:
55: /** Called after a control event is fired (through a client proxy) */
56: public void postEvent(ControlBean cb, Class eventSet, Method m,
57: Object[] args, Object retval, Throwable t);
58: }
|