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 2006/03/06 20:58:05 UTC

svn commit: r383641 - in /beehive/trunk/controls: src/runtime/org/apache/beehive/controls/runtime/generator/ test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/ test/src/junit-tests/org/apache/beehive/controls/test/junit/

Author: cschoett
Date: Mon Mar  6 11:58:02 2006
New Revision: 383641

URL: http://svn.apache.org/viewcvs?rev=383641&view=rev
Log:
Fix for BEEHIVE-960, added qualified class names for event support as necessary to control bean velocity template.
Added new controls unit tests for this fix.

Added:
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBase.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBaseImpl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastExt.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBase.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBaseImpl.java   (with props)
    beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastExt.java   (with props)
    beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/EventsetAptTest.java   (with props)
Modified:
    beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptEventSet.java
    beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm

Modified: beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptEventSet.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptEventSet.java?rev=383641&r1=383640&r2=383641&view=diff
==============================================================================
--- beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptEventSet.java (original)
+++ beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/AptEventSet.java Mon Mar  6 11:58:02 2006
@@ -268,6 +268,29 @@
     }
 
     /**
+     * Returns the short name for this notifier's base class.
+     */
+    public String getNotifierExtendsShortName() {
+
+        if (_superEventSet == null)
+        {
+            if (_unicast)
+                return "UnicastEventNotifier";
+            else
+                return "EventNotifier";
+        }
+
+        return _superEventSet.getNotifierClass();
+    }
+
+    /**
+     * Return true if this notifier extends the UnicastEventNotifier or EventNotifier base class.
+     */
+    public boolean isExtendsNotifierBase() {
+        return _superEventSet == null;
+    }
+
+    /**
      * Returns the name of the method used to register a new EventSet listener
      */
     public String getAddListenerMethod()

Modified: beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm?rev=383641&r1=383640&r2=383641&view=diff
==============================================================================
--- beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm (original)
+++ beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlBean.vm Mon Mar  6 11:58:02 2006
@@ -318,10 +318,10 @@
         $returnType __bc_retval = ${event.defaultReturnValue};
         #end
 
-        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.shortName}.class);
+        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.className}.class);
 
         #if ($event.eventSet.unicast)
-            $event.eventSet.formalShortName __bc_listener = ($event.eventSet.formalShortName)__bc_notifier.getListener();
+            $event.eventSet.formalClassName __bc_listener = ($event.eventSet.formalClassName)__bc_notifier.getListener();
 
             //
             // If an event listener has been registered, then deliver the event
@@ -399,7 +399,7 @@
                 #end
                 while (__bc_listenerIter.hasNext())
                 {
-                    $event.eventSet.formalShortName __bc_listener = ($eventSet.formalShortName)__bc_listenerIter.next();
+                    $event.eventSet.formalClassName __bc_listener = ($eventSet.formalClassName)__bc_listenerIter.next();
                     __bc_listener.${event.name}($event.argList);
                 }
             }
@@ -485,8 +485,12 @@
      * back to a register listener.
      */
     protected class $eventSet.notifierClass
+        #if ($eventSet.extendsNotifierBase)
         extends $eventSet.notifierExtends
-        implements ${eventSet.formalShortName}, java.io.Serializable
+        #else
+        extends ${bean.superClass.className}.${eventSet.notifierExtendsShortName}
+        #end
+        implements ${eventSet.formalClassName}, java.io.Serializable
     {
         private static final long serialVersionUID = 1L;
 
@@ -511,21 +515,21 @@
     /**
      * Registers a new listener for ${eventSet.shortName} events on the bean.
      */
-    public synchronized void ${eventSet.addListenerMethod}($eventSet.formalShortName listener)
+    public synchronized void ${eventSet.addListenerMethod}($eventSet.formalClassName listener)
     #if ($eventSet.unicast)
                              throws java.util.TooManyListenersException
     #end
     {
-        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.shortName}.class);
+        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.className}.class);
         __bc_notifier.addListener(listener);
     }
 
     /**
      * Unregisters an existing listener for ${eventSet.shortName} events on the bean.
      */
-    public synchronized void ${eventSet.removeListenerMethod}($eventSet.formalShortName listener)
+    public synchronized void ${eventSet.removeListenerMethod}($eventSet.formalClassName listener)
     {
-        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.shortName}.class);
+        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.className}.class);
         __bc_notifier.removeListener(listener);
     }
 
@@ -533,10 +537,10 @@
      * Returns the  array of registered listeners for ${eventSet.shortName} events on the bean, or
      * an empty array if no listener has been registered
      */
-    public synchronized $eventSet.formalShortName [] ${eventSet.getListenersMethod}()
+    public synchronized $eventSet.formalClassName [] ${eventSet.getListenersMethod}()
     {
-        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.shortName}.class);
-        $eventSet.formalShortName [] __bc_listeners = new ${eventSet.shortName}[__bc_notifier.getListenerCount()];
+        $eventSet.notifierClass __bc_notifier = ($eventSet.notifierClass)getEventNotifier(${eventSet.className}.class);
+        $eventSet.formalClassName [] __bc_listeners = new ${eventSet.className}[__bc_notifier.getListenerCount()];
         __bc_notifier.getListeners(__bc_listeners);
         return __bc_listeners;
     }

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBase.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBase.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBase.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBase.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,35 @@
+/*
+   Copyright 2004-2005 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:$
+*/
+package org.apache.beehive.controls.test.controls.eventsetApt;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+import org.apache.beehive.controls.api.events.EventSet;
+
+/**
+ * Base control interface for testing eventsets with same name (multicast).
+ */
+@ControlInterface
+public interface MulticastBase {
+
+    @EventSet()
+    public interface Callback {
+      void method1();
+    }
+}
+
+

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

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBaseImpl.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBaseImpl.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBaseImpl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastBaseImpl.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,34 @@
+/*
+   Copyright 2004-2005 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:$
+*/
+package org.apache.beehive.controls.test.controls.eventsetApt;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+import org.apache.beehive.controls.api.bean.Extensible;
+import java.lang.reflect.Method;
+
+/**
+ * Base control for testing inherited eventsets with same name (multicast).
+ */
+@ControlImplementation(isTransient=true)
+public class MulticastBaseImpl implements MulticastBase, Extensible {
+
+    public Object invoke(Method m, Object[] args) throws Throwable
+    {
+	    return null;
+    }
+}

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

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastExt.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastExt.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastExt.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/MulticastExt.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,33 @@
+/*
+   Copyright 2004-2005 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:$
+*/
+package org.apache.beehive.controls.test.controls.eventsetApt;
+
+import org.apache.beehive.controls.api.bean.ControlExtension;
+import org.apache.beehive.controls.api.events.EventSet;
+
+/**
+ * Control for testing apt compilation of inherited eventsets with same name (multicast).
+ */
+@ControlExtension
+public interface MulticastExt extends MulticastBase {
+
+    @EventSet()
+    public interface Callback extends MulticastBase.Callback {
+      void method2();
+    }
+}

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

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBase.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBase.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBase.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBase.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2006 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:$
+ */
+
+package org.apache.beehive.controls.test.controls.eventsetApt;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+import org.apache.beehive.controls.api.events.EventSet;
+
+/**
+ * Control interface for testing inherited eventset's with same name (unicast).
+ */
+@ControlInterface
+public interface UnicastBase {
+
+    @EventSet(unicast=true)
+    public interface Callback {
+      void method1();
+    }
+}

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

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBaseImpl.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBaseImpl.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBaseImpl.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastBaseImpl.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2006 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:$
+ */
+
+package org.apache.beehive.controls.test.controls.eventsetApt;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+import org.apache.beehive.controls.api.bean.Extensible;
+
+import java.lang.reflect.Method;
+
+/**
+ * Base class for testing inherited eventset's with same name (unicast case).
+ */
+@ControlImplementation(isTransient=true)
+public class UnicastBaseImpl implements UnicastBase, Extensible {
+
+    public Object invoke(Method m, Object[] args) throws Throwable
+    {
+        return null;
+    }
+}

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

Added: beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastExt.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastExt.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastExt.java (added)
+++ beehive/trunk/controls/test/src/junit-controls/org/apache/beehive/controls/test/controls/eventsetApt/UnicastExt.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2006 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:$
+ */
+
+package org.apache.beehive.controls.test.controls.eventsetApt;
+
+import org.apache.beehive.controls.api.bean.ControlExtension;
+import org.apache.beehive.controls.api.events.EventSet;
+
+/**
+ * Extension of base control with eventset of same name (unicast case).
+ */
+@ControlExtension
+public interface UnicastExt extends UnicastBase {
+
+    @EventSet(unicast=true)
+    public interface Callback extends UnicastBase.Callback {
+      String method2();
+    }
+}

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

Added: beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/EventsetAptTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/EventsetAptTest.java?rev=383641&view=auto
==============================================================================
--- beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/EventsetAptTest.java (added)
+++ beehive/trunk/controls/test/src/junit-tests/org/apache/beehive/controls/test/junit/EventsetAptTest.java Mon Mar  6 11:58:02 2006
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2006 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:$
+ */
+
+package org.apache.beehive.controls.test.junit;
+
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.test.controls.lifecycle.ControlLifecycle;
+import org.apache.beehive.controls.test.controls.eventsetApt.MulticastExt;
+import org.apache.beehive.controls.test.controls.eventsetApt.UnicastExt;
+
+import java.util.List;
+
+/**
+ * Junit tests for making sure that APT can generate controls with eventsets when
+ * the extended controls event set has the same name as the base control's event set.
+ *
+ * If this doesn't work compilation will fail, all thats really necessary here is
+ * to verify the controls can be initialized.
+ */
+public class EventsetAptTest
+    extends ControlTestCase {
+
+    @Control
+    private MulticastExt _multicastEvts;
+
+    @Control
+    private UnicastExt _unicastEvts;
+
+    public void testMulticastEvtApt() {
+        assertNotNull(_multicastEvts);
+    }
+
+    public void testUnicastEvtApt() {
+        assertNotNull(_unicastEvts);
+    }
+}

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