You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cs...@apache.org on 2007/03/09 22:27:07 UTC

svn commit: r516557 - in /beehive/trunk/controls/test: ./ src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/ src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/ src/junit-tests/org/apache/beehive/controls/test/j...

Author: cschoett
Date: Fri Mar  9 13:27:05 2007
New Revision: 516557

URL: http://svn.apache.org/viewvc?view=rev&rev=516557
Log:
Added a number of new drts for controls interceptors, only one test existed previously and that test was only that a control with interceptor annotations could be complied.  The new tests verify runtime behavior of interceptors as well as interceptor prioritization.


Added:
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptor.java   (with props)
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptorAnnotation.java   (with props)
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InterceptorServiceProvider.java   (with props)
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptor.java   (with props)
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptorAnnotation.java   (with props)
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrlImpl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrlImpl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrlImpl.java   (with props)
    beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/
    beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorEventTest.java   (with props)
    beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorInvocationTest.java   (with props)
    beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorPrioritizationTest.java   (with props)
Removed:
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/HelloIntercepted.java
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/HelloInterceptedImpl.java
Modified:
    beehive/trunk/controls/test/build.xml
    beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/SampleInterceptor.java

Modified: beehive/trunk/controls/test/build.xml
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/build.xml?view=diff&rev=516557&r1=516556&r2=516557
==============================================================================
--- beehive/trunk/controls/test/build.xml (original)
+++ beehive/trunk/controls/test/build.xml Fri Mar  9 13:27:05 2007
@@ -126,6 +126,11 @@
                         destdir="${aux.classes.dir}"
                         tempdir="${aux.beansrc.dir}"
                         classpathref="test-junit.dependency.path"/>
+
+        <!-- copy the controls-interceptors.config file - necessary for interceptor prioritization tests -->
+        <copy todir="${aux.classes.dir}"
+              file="${aux.src.dir}/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config"/>
+        
     </target>
 
     <target name="build" depends="aux" description="Build control sources">

Added: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptor.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptor.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptor.java (added)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptor.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlBean;
+import org.apache.beehive.controls.spi.svc.Interceptor;
+import org.apache.beehive.controls.spi.svc.InterceptorPivotException;
+
+import java.lang.reflect.Method;
+
+/**
+ * Interceptor class designed for use with the InterceptedEventCtrl.  The preInvoke()
+ * method of this interceptor will throw a InterceptorPivotException if a null value
+ * is passed for either the multicast or unicast event when it is fired by the control
+ * impl.
+ */
+public class EventInterceptor implements Interceptor {
+
+    public static boolean POST_EVENT_CALLED = false;
+
+    /**
+     * Called before a control operation is invoked
+     */
+    public void preInvoke(ControlBean cb, Method m, Object[] args)
+            throws InterceptorPivotException
+    {
+        // noop
+    }
+
+    /**
+     * Called after a control operation is invoked
+     */
+    public void postInvoke(ControlBean cb, Method m, Object[] args, Object retval, Throwable t) {
+        // noop
+    }
+
+    /**
+     * Called before a control event is fired (through a client proxy)
+     */
+    public void preEvent(ControlBean cb, Class eventSet, Method m, Object[] args)
+            throws InterceptorPivotException
+    {
+
+        POST_EVENT_CALLED = false;
+        if (args[0] == null) {
+            if (m.getName().equals("multicastNotify")) {
+                throw new InterceptorPivotException(getClass().getSimpleName(), (Object) "ERROR");
+            }
+            else {
+                throw new InterceptorPivotException(getClass().getSimpleName(), 66);
+            }
+        }
+    }
+
+    /**
+     * Called after a control event is fired (through a client proxy)
+     */
+    public void postEvent(ControlBean cb, Class eventSet, Method m, Object[] args, Object retval, Throwable t) {
+        POST_EVENT_CALLED = true;
+    }
+}

Propchange: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptorAnnotation.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptorAnnotation.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptorAnnotation.java (added)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptorAnnotation.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.spi.svc.InterceptorAnnotation;
+
+/**
+ * Interceptor annotation used to test pre/postEvent interception.
+ */
+@InterceptorAnnotation(service = EventInterceptor.class)
+public @interface EventInterceptorAnnotation {
+}

Propchange: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/EventInterceptorAnnotation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InterceptorServiceProvider.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InterceptorServiceProvider.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InterceptorServiceProvider.java (added)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InterceptorServiceProvider.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import java.beans.beancontext.BeanContextServiceProvider;
+import java.beans.beancontext.BeanContextServices;
+import java.util.Iterator;
+
+/**
+ * Interceptor service provider for runtime testing of interceptor annotations.
+ */
+public class InterceptorServiceProvider implements BeanContextServiceProvider {
+
+    /**
+     * Return the requested service, if the service is of unknown type return null.
+     */
+    public Object getService(BeanContextServices bcs, Object requestor, Class serviceClass, Object serviceSelector) {
+
+        if (InvocationInterceptor.class.equals(serviceClass)) {
+            return new InvocationInterceptor();
+        }
+        else if (EventInterceptor.class.equals(serviceClass)) {
+            return new EventInterceptor();
+        }
+        else if (SampleInterceptor.class.equals(serviceClass)) {
+            return new SampleInterceptor();
+        }
+
+        return null;
+    }
+
+    /**
+     * noop
+     */
+    public void releaseService(BeanContextServices bcs, Object requestor, Object service) {
+    }
+
+    /**
+     * noop
+     */
+    public Iterator getCurrentServiceSelectors(BeanContextServices bcs, Class serviceClass) {
+        return null;
+    }
+}

Propchange: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InterceptorServiceProvider.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptor.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptor.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptor.java (added)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptor.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.spi.svc.Interceptor;
+import org.apache.beehive.controls.spi.svc.InterceptorPivotException;
+import org.apache.beehive.controls.api.bean.ControlBean;
+
+import java.lang.reflect.Method;
+
+/**
+ * Interceptor class designed for use with the InterceptedCtrl.
+ * This interceptor will throw a InterceptionPivotException when a null parameter value
+ * it passed to one of the control methods.
+ */
+public class InvocationInterceptor implements Interceptor {
+
+    public static boolean POST_INVOKE_CALLED = false;
+
+    /**
+     * Called before a control operation is invoked
+     */
+    public void preInvoke( ControlBean cb, Method m, Object [] args)
+    	throws InterceptorPivotException {
+
+        POST_INVOKE_CALLED = false;
+
+        if (args[0] == null) {
+            throw new InterceptorPivotException(getClass().getSimpleName(), (Object)"ERROR!");
+        }
+    }
+
+    /**
+     * Called after a control operation is invoked
+     */
+    public void postInvoke( ControlBean cb, Method m, Object [] args, Object retval, Throwable t )
+    {
+        POST_INVOKE_CALLED = true;
+    }
+
+    /**
+     * Called before a control event is fired (through a client proxy)
+     */
+    public void preEvent( ControlBean cb, Class eventSet, Method m, Object [] args )
+    	throws InterceptorPivotException
+    {
+        // noop
+    }
+
+    /**
+     * Called after a control event is fired (through a client proxy)
+     */
+    public void postEvent( ControlBean cb, Class eventSet, Method m, Object [] args, Object retval, Throwable t )
+    {
+        // noop
+    }
+}

Propchange: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptorAnnotation.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptorAnnotation.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptorAnnotation.java (added)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptorAnnotation.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ *
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.spi.svc.InterceptorAnnotation;
+
+/**
+ * Interceptor annotation used to test pre/postInvoke interception.
+ */
+@InterceptorAnnotation(service = InvocationInterceptor.class)
+public @interface InvocationInterceptorAnnotation {
+}

Propchange: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/InvocationInterceptorAnnotation.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/SampleInterceptor.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/SampleInterceptor.java?view=diff&rev=516557&r1=516556&r2=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/SampleInterceptor.java (original)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/SampleInterceptor.java Fri Mar  9 13:27:05 2007
@@ -1,4 +1,3 @@
-package org.apache.beehive.controls.test.controls.interceptor;
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -17,37 +16,52 @@
  *
  * $Header:$
  */
+package org.apache.beehive.controls.test.controls.interceptor;
 
 import org.apache.beehive.controls.api.bean.ControlBean;
 import org.apache.beehive.controls.spi.svc.Interceptor;
 import org.apache.beehive.controls.spi.svc.InterceptorPivotException;
+
 import java.lang.reflect.Method;
 
-public class SampleInterceptor implements Interceptor
-{
-    /** Called before a control operation is invoked */
-    public void preInvoke( ControlBean cb, Method m, Object [] args)
-    	throws InterceptorPivotException
-    {
-        System.out.println( "SampleInterceptor.preInvoke() called: bean=" + cb.getControlID() + " m=" + m.getName() );
+/**
+ * Interceptor used in the interceptor prioritization tests.
+ */
+public class SampleInterceptor implements Interceptor {
+
+    public static boolean POST_INVOKE_CALLED = false;
+
+    /**
+     * Called before a control operation is invoked
+     */
+    public void preInvoke(ControlBean cb, Method m, Object[] args) throws InterceptorPivotException {
+
+        POST_INVOKE_CALLED = false;
+        String value = (String) args[0];
+        if (value.equals("foo")) {
+            throw new InterceptorPivotException(getClass().getSimpleName(), (Object) "foo VALUE ERROR!");
+        }
     }
 
-    /** Called after a control operation is invoked */
-    public void postInvoke( ControlBean cb, Method m, Object [] args, Object retval, Throwable t )
-    {
-        System.out.println( "SampleInterceptor.postInvoke() called: bean=" + cb.getControlID() + " m=" + m.getName() );
+    /**
+     * Called after a control operation is invoked
+     */
+    public void postInvoke(ControlBean cb, Method m, Object[] args, Object retval, Throwable t) {
+        POST_INVOKE_CALLED = true;
     }
 
-    /** Called before a control event is fired (through a client proxy) */
-    public void preEvent( ControlBean cb, Class eventSet, Method m, Object [] args )
-    	throws InterceptorPivotException
-    {
-        System.out.println( "SampleInterceptor.preEvent() called: bean=" + cb.getControlID() + " es=" + eventSet.getName() + " m=" + m.getName() );
+    /**
+     * Called before a control event is fired (through a client proxy)
+     */
+    public void preEvent(ControlBean cb, Class eventSet, Method m, Object[] args)
+            throws InterceptorPivotException {
+        // noop
     }
 
-    /** Called after a control event is fired (through a client proxy) */
-    public void postEvent( ControlBean cb, Class eventSet, Method m, Object [] args, Object retval, Throwable t )
-    {
-        System.out.println( "SampleInterceptor.postEvent() called: bean=" + cb.getControlID() + " es=" + eventSet.getName() + " m=" + m.getName() );
+    /**
+     * Called after a control event is fired (through a client proxy)
+     */
+    public void postEvent(ControlBean cb, Class eventSet, Method m, Object[] args, Object retval, Throwable t) {
+        // noop
     }
 }

Added: beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config (added)
+++ beehive/trunk/controls/test/src/auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config Fri Mar  9 13:27:05 2007
@@ -0,0 +1,2 @@
+org.apache.beehive.controls.test.controls.interceptor.InvocationInterceptor
+org.apache.beehive.controls.test.controls.interceptor.SampleInterceptor

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrl.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrl.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrl.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+
+/**
+ * Control used for testing the pre/postInvoke interceptor apis.
+ */
+@ControlInterface
+public interface InterceptedCtrl {
+
+    @InvocationInterceptorAnnotation
+    public String echoIntercepted(String msg);
+
+    public String echo(String msg);
+}

Propchange: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrlImpl.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrlImpl.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrlImpl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrlImpl.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+
+/**
+ * Control implementation used to test pre/post invoke interception.
+ */
+@ControlImplementation(isTransient = true)
+public class InterceptedCtrlImpl implements InterceptedCtrl {
+
+    /**
+     * This control method was annotated with an interceptor.
+     */
+    public String echoIntercepted(String msg) {
+        return msg;
+    }
+
+    /**
+     * This control method was NOT annotated with an interceptor.
+     */
+    public String echo(String msg) {
+        return msg;
+    }
+}

Propchange: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedCtrlImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrl.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrl.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrl.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+import org.apache.beehive.controls.api.events.EventSet;
+
+/**
+ * Control used for testing the pre/postEvent interceptor apis.
+ */
+@ControlInterface
+public interface InterceptedEventCtrl {
+
+    @EventSet(unicast = false)
+    public interface MulticastEvents {
+        @EventInterceptorAnnotation
+        public void multicastNotify(String msg);
+    }
+
+    @EventSet(unicast = true)
+    public interface UnicastEvents {
+        @EventInterceptorAnnotation
+        public int unicastNotify(String msg);
+    }
+
+    public void fireMulticast(String eventMsg);
+
+    public void fireUnicast(String eventMsg);
+}

Propchange: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrlImpl.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrlImpl.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrlImpl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrlImpl.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+import org.apache.beehive.controls.api.events.Client;
+
+/**
+ * Control implementation used to test pre/postEvent interception.
+ */
+@ControlImplementation(isTransient = true)
+public class InterceptedEventCtrlImpl implements InterceptedEventCtrl {
+
+    @Client
+    private MulticastEvents _multicastClient;
+
+    @Client
+    private UnicastEvents _unicastClient;
+
+
+    /**
+     * Fire a multicast event with the provided message.
+     */
+    public void fireMulticast(String eventMsg) {
+        _multicastClient.multicastNotify(eventMsg);
+    }
+
+    /**
+     * Fire a unicast event with the provided message.
+     */
+    public void fireUnicast(String eventMsg) {
+        _unicastClient.unicastNotify(eventMsg);
+    }
+}

Propchange: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedEventCtrlImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrl.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrl.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrl.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+
+/**
+ * Control used for testing the interceptor prioritization.
+ * Interceptor priorities are defined by the
+ * auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config
+ * file.  Interceptor order in the config file specifies priority.
+ */
+@ControlInterface
+public interface InterceptedPrioritiesCtrl {
+
+    @SampleInterceptorAnnotation
+    @InvocationInterceptorAnnotation
+    public String echoIntercepted(String msg);
+
+    public String echo(String msg);
+}

Propchange: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrlImpl.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrlImpl.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrlImpl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrlImpl.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.controls.interceptor;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+
+/**
+ * Control implementation used for testing the interceptor prioritization.
+ * Interceptor priorities are defined by the
+ * auxilaries/org/apache/beehive/controls/test/controls/interceptor/controls-interceptors.config
+ * file.  Interceptor order in the config file specifies priority.
+ */
+@ControlImplementation(isTransient = true)
+public class InterceptedPrioritiesCtrlImpl implements InterceptedPrioritiesCtrl {
+
+    /**
+     * This control method was annotated with two interceptors.
+     */
+    public String echoIntercepted(String msg) {
+        return msg;
+    }
+
+    /**
+     * This control method was NOT annotated with an interceptor.
+     */
+    public String echo(String msg) {
+        return msg;
+    }
+}

Propchange: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/interceptor/InterceptedPrioritiesCtrlImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorEventTest.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorEventTest.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorEventTest.java (added)
+++ beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorEventTest.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.junit.interceptor;
+
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.api.context.ControlContainerContext;
+import org.apache.beehive.controls.api.events.EventHandler;
+import org.apache.beehive.controls.test.controls.interceptor.EventInterceptor;
+import org.apache.beehive.controls.test.controls.interceptor.InterceptedEventCtrl;
+import org.apache.beehive.controls.test.controls.interceptor.InterceptorServiceProvider;
+import org.apache.beehive.controls.test.junit.ControlTestCase;
+
+/**
+ * Test case for preEvent and postEvent interceptor methods.
+ */
+public class InterceptorEventTest extends ControlTestCase {
+
+    @Control
+    private InterceptedEventCtrl _ctrl;
+
+    private boolean _unicastHandled;
+    private boolean _multicastHandled;
+
+    public void setUp() throws Exception {
+        super.setUp();
+        ControlContainerContext ccc = getControlContainerContext();
+        ccc.addService(EventInterceptor.class, new InterceptorServiceProvider());
+        _unicastHandled = false;
+        _multicastHandled = false;
+    }
+
+
+    @EventHandler(
+            field = "_ctrl",
+            eventSet = InterceptedEventCtrl.MulticastEvents.class,
+            eventName = "multicastNotify")
+    public void multicastHandler(String message) {
+        _multicastHandled = true;
+    }
+
+    @EventHandler(
+            field = "_ctrl",
+            eventSet = InterceptedEventCtrl.UnicastEvents.class,
+            eventName = "unicastNotify")
+    public int unicastHandler(String message) {
+        _unicastHandled = true;
+        return 0;
+    }
+
+    /**
+     * Verify interceptor for multicast type event. This
+     * test should case the interceptor to throw an
+     * InterceptorPivotException.
+     */
+    public void testMulticastIntercepted() throws Exception {
+        _ctrl.fireMulticast(null);
+        assertFalse(_multicastHandled);
+        assertTrue(EventInterceptor.POST_EVENT_CALLED);
+    }
+
+    /**
+     * Verify interceptor for multicast type event. This
+     * test should case the interceptor NOT to throw an
+     * InterceptorPivotException.
+     */
+    public void testMulticastNotIntercepted() throws Exception {
+        _ctrl.fireMulticast("notnull");
+        assertTrue(_multicastHandled);
+        assertTrue(EventInterceptor.POST_EVENT_CALLED);
+    }
+
+    /**
+     * Verify interceptor for unicast type event. This
+     * test should case the interceptor to throw an
+     * InterceptorPivotException.
+     */
+    public void testUnicastIntercepted() throws Exception {
+        _ctrl.fireUnicast(null);
+        assertFalse(_unicastHandled);
+        assertTrue(EventInterceptor.POST_EVENT_CALLED);
+    }
+
+    /**
+     * Verify interceptor for unicast type event. This
+     * test should case the interceptor NOT to throw an
+     * InterceptorPivotException.
+     */
+    public void testUnicastNotIntercepted() throws Exception {
+        _ctrl.fireUnicast("notnull");
+        assertTrue(_unicastHandled);
+        assertTrue(EventInterceptor.POST_EVENT_CALLED);
+    }
+}

Propchange: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorEventTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorInvocationTest.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorInvocationTest.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorInvocationTest.java (added)
+++ beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorInvocationTest.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.junit.interceptor;
+
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.api.context.ControlContainerContext;
+import org.apache.beehive.controls.test.controls.interceptor.InterceptedCtrl;
+import org.apache.beehive.controls.test.controls.interceptor.InterceptorServiceProvider;
+import org.apache.beehive.controls.test.controls.interceptor.InvocationInterceptor;
+import org.apache.beehive.controls.test.junit.ControlTestCase;
+
+/**
+ * Test case for preInvoke and postInvoke interceptor.
+ */
+public class InterceptorInvocationTest extends ControlTestCase {
+
+    @Control
+    private InterceptedCtrl _ctrl;
+
+    public void setUp() throws Exception {
+        super.setUp();
+        ControlContainerContext ccc = getControlContainerContext();
+        ccc.addService(InvocationInterceptor.class, new InterceptorServiceProvider());
+    }
+
+    /**
+     * The interceptor for the echoIntercepted method will throw a PivotException
+     * and set the return value to 'ERROR!' if echoIntercepted is given a null
+     * parameter.
+     */
+    public void testEchoIntercepted() throws Exception {
+
+        assertEquals("ERROR!", _ctrl.echoIntercepted(null));
+        assertTrue(InvocationInterceptor.POST_INVOKE_CALLED);
+
+    }
+
+    /**
+     * Interceptor should NOT throw a pivot exception for this case.
+     */
+    public void testEchoNotIntercepted() throws Exception {
+        assertEquals("Hello!", _ctrl.echoIntercepted("Hello!"));
+        assertTrue(InvocationInterceptor.POST_INVOKE_CALLED);
+    }
+
+    /**
+     * Test ctrl method with no interceptor.
+     *
+     * @throws Exception
+     */
+    public void testEcho() throws Exception {
+        assertEquals(null, _ctrl.echo(null));
+    }
+}

Propchange: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorInvocationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorPrioritizationTest.java
URL: http://svn.apache.org/viewvc/beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorPrioritizationTest.java?view=auto&rev=516557
==============================================================================
--- beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorPrioritizationTest.java (added)
+++ beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorPrioritizationTest.java Fri Mar  9 13:27:05 2007
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.beehive.controls.test.junit.interceptor;
+
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.api.context.ControlContainerContext;
+import org.apache.beehive.controls.test.controls.interceptor.InterceptedPrioritiesCtrl;
+import org.apache.beehive.controls.test.controls.interceptor.InterceptorServiceProvider;
+import org.apache.beehive.controls.test.controls.interceptor.InvocationInterceptor;
+import org.apache.beehive.controls.test.controls.interceptor.SampleInterceptor;
+import org.apache.beehive.controls.test.junit.ControlTestCase;
+
+/**
+ * Test case for interceptor prioritiztion.  Interceptor priorities
+ * are defined by a controls-interceptors.config file in the class path.
+ * Priorities are determined by the order interceptor annotations are
+ * listed in this config file.
+ * <p/>
+ * For this test case the SampleInterceptor must have a lower priority
+ * than the InvocationInterceptor.
+ */
+public class InterceptorPrioritizationTest extends ControlTestCase {
+
+    @Control
+    private InterceptedPrioritiesCtrl _ctrl;
+
+    public void setUp() throws Exception {
+        super.setUp();
+        ControlContainerContext ccc = getControlContainerContext();
+        ccc.addService(InvocationInterceptor.class, new InterceptorServiceProvider());
+        ccc.addService(SampleInterceptor.class, new InterceptorServiceProvider());
+    }
+
+    /**
+     * Verify that the InvocationInterceptor is invoked before the SampleInterceptor.
+     */
+    public void testInvocationInterceptor() throws Exception {
+        assertEquals("ERROR!", _ctrl.echoIntercepted(null));
+        assertTrue(InvocationInterceptor.POST_INVOKE_CALLED);
+    }
+
+    /**
+     * Verify the the SampleInterceptor is being invoked after the InvocationInterceptor.
+     */
+    public void testSampleInterceptor() throws Exception {
+        assertEquals("foo VALUE ERROR!", _ctrl.echoIntercepted("foo"));
+        assertTrue(SampleInterceptor.POST_INVOKE_CALLED);
+    }
+
+    /**
+     * Final test to check that BOTH interceptors get invoked.
+     */
+    public void testInterceptorPrioritization() throws Exception {
+        assertEquals("Hello!", _ctrl.echoIntercepted("Hello!"));
+        assertTrue(InvocationInterceptor.POST_INVOKE_CALLED);
+        assertTrue(SampleInterceptor.POST_INVOKE_CALLED);
+    }
+}

Propchange: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/interceptor/InterceptorPrioritizationTest.java
------------------------------------------------------------------------------
    svn:eol-style = native