Author: kentam Date: Tue Dec 7 14:27:28 2004 New Revision: 111155 URL: http://svn.apache.org/viewcvs?view=rev&rev=111155 Log: Add Interceptor SPI per spec (http://wiki.apache.org/beehive/Controls/AnnotationBasedFeatures)
Added: incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/Interceptor.java (contents, props changed) incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/InterceptorAnnotation.java (contents, props changed) Modified: incubator/beehive/trunk/controls/build.xml Modified: incubator/beehive/trunk/controls/build.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/build.xml?view=diff&rev=111155&p1=incubator/beehive/trunk/controls/build.xml&r1=111154&p2=incubator/beehive/trunk/controls/build.xml&r2=111155 ============================================================================== --- incubator/beehive/trunk/controls/build.xml (original) +++ incubator/beehive/trunk/controls/build.xml Tue Dec 7 14:27:28 2004 @@ -36,6 +36,7 @@ <path id="api.classpath"> </path> <path id="spi.classpath"> + <pathelement location="${api.classes}"/> </path> <path id="runtime.classpath"> <pathelement location="${ant.jar}"/> Added: incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/Interceptor.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/Interceptor.java?view=auto&rev=111155 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/Interceptor.java Tue Dec 7 14:27:28 2004 @@ -0,0 +1,52 @@ +package org.apache.beehive.controls.spi.svc; +/* + * Copyright 2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * $Header:$ + */ + +import org.apache.beehive.controls.api.context.ControlBeanContext; + +import java.lang.reflect.Method; + +/** + * The controls implementation architecture has a interceptor model for + * adding annotation-based features. This model provides the ability to + * associate a JavaBeans service interface with an annotation to define + * its runtime feature behaviour. Such interfaces must extend this + * Interceptor interface, which defines the contract that the controls runtime + * has with interceptors. + * + * The controls runtime will automatically instantiate and execute + * implementations of interceptors at the appropriate execution points + * (pre/post invocation of a control operation, etc). + * + * A return value of "true" from each Interceptor method indicates to the runtime + * that it should continue execution through the normal flow of control (ie, subsequent + * interceptors and operation/event execution). "false" indicates that the interceptor + * has fully processed the operation and the runtime should "pivot" out. + */ +public interface Interceptor +{ + /** Called before a control operation is invoked */ + public boolean preInvoke( Method m, Object [] args, ControlBeanContext cbc ); + /** Called after a control operation is invoked */ + public boolean postInvoke( Method m, Object [] args, ControlBeanContext cbc ); + + /** Called before a control event is fired (through a client proxy) */ + public boolean preEvent( Class eventSet, Method m, Object [] args, ControlBeanContext cbc ); + /** Called after a control event is fired (through a client proxy) */ + public boolean postEvent( Class eventSet, Method m, Object [] args, ControlBeanContext cbc ); +} Added: incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/InterceptorAnnotation.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/InterceptorAnnotation.java?view=auto&rev=111155 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/controls/src/spi/org/apache/beehive/controls/spi/svc/InterceptorAnnotation.java Tue Dec 7 14:27:28 2004 @@ -0,0 +1,34 @@ +package org.apache.beehive.controls.spi.svc; +/* + * Copyright 2004 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * $Header:$ + */ + +import java.lang.annotation.*; + +/** + * InterceptorAnnotation is the meta-annotation used to identify annotations + * that are interceptor-based, and bind an interceptor service interface to + * those annotations. + */ [EMAIL PROTECTED] [EMAIL PROTECTED](RetentionPolicy.RUNTIME) [EMAIL PROTECTED](ElementType.ANNOTATION_TYPE) +public @interface InterceptorAnnotation +{ + /** The Interceptor-based JavaBeans service interface associated with the annotated annotation */ + Class<? extends Interceptor> service(); +}
