svn commit: rev 46152 - in incubator/beehive/trunk/controls/test: src/controls/org/apache/beehive/controls/test/controls/composition src/controls/org/apache/beehive/controls/test/controls/context src/controls/org/apache/beehive/controls/test/controls/contextevent src/controls/org/apache/beehive/controls/test/controls/event src/controls/org/apache/beehive/controls/test/controls/extension src/controls/org/apache/beehive/controls/test/controls/instantiate src/controls/org/apache/beehive/controls/test/controls/property src/units/org/apache/beehive/controls/test/java/composition src/units/org/apache/beehive/controls/test/java/extension src/units/org/apache/beehive/controls/test/jpf/composition src/units/org/apache/beehive/controls/test/jpf/extension webapps/controlsWeb/composition webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/contextevent webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/event webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/instantiate webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/property webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/composition webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/context webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/event webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/extension webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property

16 Sep 2004 02:51:43 -0000

Author: jsong
Date: Wed Sep 15 19:51:33 2004
New Revision: 46152

Added:
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/composition/
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/composition/TestOuterControl.java
   (contents, props changed)
   incubator/beehive/trunk/controls/test/webapps/controlsWeb/composition/
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/composition/Controller.jpf
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControlEventListener.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/composition/
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/composition/DriveOuterControl.java
   (contents, props changed)
Modified:
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/SubControlTest.java
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/extension/TestSubControl.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveBeanRecorder.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveRecorder.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/event/DriveListener.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/extension/DriveSubControl.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveHelloControl.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveSingleProperty.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientAccess.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientImpl.java
   
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveImplAccess.java
Log:
Add test on control composition on servlet container.
Improve java doc for controls tests.


Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
       (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
       Wed Sep 15 19:51:33 2004
@@ -7,6 +7,10 @@
 import org.apache.beehive.controls.api.context.Context;
 import org.apache.beehive.controls.api.context.ControlBeanContext;
 
+/*
+ * A control impl to test control composition.
+ * This control shall be instantiated by another control.
+ */
 @ControlImplementation
 public class InnerControlImpl implements InnerControl
 { 

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
  Wed Sep 15 19:51:33 2004
@@ -5,7 +5,6 @@
 import org.apache.beehive.controls.test.controls.composition.InnerControlBean;
 
 
-
 /**
  * A control interface designed to test control composition
  */

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
     (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
     Wed Sep 15 19:51:33 2004
@@ -4,7 +4,7 @@
 import org.apache.beehive.controls.api.bean.ControlInterface;
 
 /**
- * A simple control that retrieve specific service
+ * A control interface to test control context service
  */
 @ControlInterface
 public interface ServiceGetter

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
  (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
  Wed Sep 15 19:51:33 2004
@@ -9,7 +9,7 @@
 import org.apache.beehive.controls.api.context.ControlBeanContext;
 
 /**
- * A impl that retrieves specific service via controlContext
+ * A control impl that retrieves specific service via controlContext
  */
 @ControlImplementation
 public class ServiceGetterImpl implements ServiceGetter

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
     (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
     Wed Sep 15 19:51:33 2004
@@ -3,7 +3,7 @@
 import org.apache.beehive.controls.api.bean.ControlInterface;
 
 /**
- * A simple control that records its lifecycle events in its impl
+ * A control interface to test control context event
  */
 @ControlInterface
 public interface Recorder

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
    (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
    Wed Sep 15 19:51:33 2004
@@ -4,7 +4,7 @@
 import org.apache.beehive.controls.api.events.Client;
 
 /**
- * A control implementation that raises events while executing its method
+ * A control implementation that raises events when its method is invoked
  */
 @ControlImplementation
 public class HelloImpl implements Hello

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
      (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
      Wed Sep 15 19:51:33 2004
@@ -10,8 +10,6 @@
  * A sub control extending ExtensibleControl.
  * This control declares one new method and one new propertySet.
  * It also resets the value of the propertySet inherited from 
ExtensibleControl.
- *
- * It will access another property inherited from ExtensibleControl in its 
impl.
  */
 @ControlInterface
 @ExtensibleControl.WhereAbout(Layer="On_SubControl_Interface_Layer")

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
   (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
   Wed Sep 15 19:51:33 2004
@@ -6,7 +6,8 @@
 
 /**
  * A control impl of a SubControl and extending ExtensibleControlImpl.
- * It access the propertySet inherited from ExtensibleControl.
+ * It accesses the propertySets inherited from ExtensibleControl, and extended 
by
+ * its own interface.
  */
 @ControlImplementation 
 public class SubControlImpl extends ExtensibleControlImpl implements SubControl

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
  Wed Sep 15 19:51:33 2004
@@ -1,13 +1,9 @@
-//
-// Copyright � 2001-2002 BEA Systems.  All rights reserved.
-//
-
 package org.apache.beehive.controls.test.controls.instantiate;
 
 import org.apache.beehive.controls.api.bean.ControlInterface;
 
 /**
- * A simple control with one method
+ * A control interface with one method declared.
  */
 
 @ControlInterface

Modified: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
        (original)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
        Wed Sep 15 19:51:33 2004
@@ -5,7 +5,7 @@
 import org.apache.beehive.controls.api.context.ControlBeanContext;
 
 /**
- * A control impl that access the property declared in its control interface
+ * A control impl that accesses the property declared by its control interface 
via control context
  */
 
 @ControlImplementation

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
     (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
     Wed Sep 15 19:51:33 2004
@@ -104,7 +104,7 @@
                InnerControlBean 
innercontrol=outerControl.instantiateNestedControlWithProperty();
                Assert.assertNotNull(innercontrol);
                Assert.assertEquals("Bob",innercontrol.getNameFromContext());
-               Assert.assertNull(innercontrol.getJobFromContext());
+               Assert.assertEquals("farmer",innercontrol.getJobFromContext());
     }
 
     /**

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/SubControlTest.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/SubControlTest.java
 (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/extension/SubControlTest.java
 Wed Sep 15 19:51:33 2004
@@ -187,6 +187,40 @@
                */
     }
 
+
+    /**
+     * Tests getting the reconfigured and inherited property.(A property 
declared on super control,
+     * but reconfigured on sub control)
+     * The reset property is retrieve by context.
+     * The subcontrol is instantiated declaratively
+     */
+       @Freq("detailed")
+       @Status("inactive")
+    public void testGetReconfiguredPropertyByContext() throws Exception
+    {
+               Assert.assertNotNull(subcontrol);
+               String s=subcontrol.getLayerByContext();
+               Assert.assertEquals("On_SubControl_Interface_Layer",s);
+
+    }
+
+    /**
+     * Tests getting the reconfigured and inherited property.(A property 
declared on super control,
+     * but reconfigured on sub control)
+     * The reset property is retrieve by context.
+     * The subcontrol is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testGetReconfiguredPropertyByContext2() throws Exception
+    {
+               SubControlBean 
sub=(SubControlBean)java.beans.Beans.instantiate( 
Thread.currentThread().getContextClassLoader() ,
+                               
"org.apache.beehive.controls.test.controls.extension.SubControlBean");
+
+               Assert.assertNotNull(sub);
+               
Assert.assertEquals("On_SubControl_Interface_Layer",sub.getLayerByContext());
+
+    }
+
     /**
      * Tests getting a reconfigured inherited property.(The property is 
declared on super control
      * but reconfigured on sub control interface).
@@ -253,50 +287,45 @@
     }
 
 
+       /* More tests to be added on getting property value reconfigured on 
subcontrol
+        * by declaration.
+        * The above tests testGetReconfiguredPropertyByContext(2) gets the 
value using an
+        * inherited method.
+        * Once testExtendedMethod passes, we need to add one or two tests to
+        * get the reconfigured value using an extended method on subcontrol
+        *
+        * Like: testGetReconfigurePropertyBySubImpl
+        * While the above two methods are really: 
testGetReconfiguredPropertyBySuperImpl
+        */
+
     /**
-     * Tests getting the reconfigured and inherited property.(A property 
declared on super control,
-     * but reconfigured on sub control)
-     * The reset property is retrieve by context.
-     * The subcontrol is instantiated declaratively
+     * Tests getting the property declared on SubControl interface.
+     * The value is retrieved by control context.
+     * The subcontrol is instantiated declaratively.
      */
-       @Freq("detailed")
-       @Status("inactive")
-    public void testGetReconfiguredPropertyByContext() throws Exception
+       @Freq("checkin")
+    public void testGetExtendedPropertyByContext() throws Exception
     {
-               Assert.assertNotNull(subcontrol);
-               String s=subcontrol.getLayerByContext();
-               Assert.assertEquals("On_SubControl_Interface_Layer",s);
+               SubControlBean 
sub=(SubControlBean)java.beans.Beans.instantiate( 
Thread.currentThread().getContextClassLoader() ,
+                               
"org.apache.beehive.controls.test.controls.extension.SubControlBean");
 
+               Assert.assertNotNull(sub);
+               Assert.assertEquals("New Property Declared by Sub 
Control",sub.getExtendedPropertyByContext());
     }
 
     /**
-     * Tests getting the reconfigured and inherited property.(A property 
declared on super control,
-     * but reconfigured on sub control)
-     * The reset property is retrieve by context.
-     * The subcontrol is instantiated programmatically
+     * Tests getting the property declared on SubControl interface.
+     * The property is retrieved by control context.
+     * The subcontrol is instantiated programmatically.
      */
        @Freq("detailed")
-    public void testGetReconfiguredPropertyByContext2() throws Exception
+       @Status("inactive")
+    public void testGetExtendedPropertyByContext2() throws Exception
     {
-               SubControlBean 
sub=(SubControlBean)java.beans.Beans.instantiate( 
Thread.currentThread().getContextClassLoader() ,
-                               
"org.apache.beehive.controls.test.controls.extension.SubControlBean");
-
-               Assert.assertNotNull(sub);
-               
Assert.assertEquals("On_SubControl_Interface_Layer",sub.getLayerByContext());
-
+               //one new method needs to be added on SubControl
+               //getNewPropertyByContext()
     }
 
-       /* More tests to be added on getting property value reconfigured on 
subcontrol
-        * by declaration.
-        * The above tests testGetReconfiguredPropertyByContext(2) gets the 
value using an
-        * inherited method.
-        * Once testExtendedMethod passes, we need to add one or two tests to
-        * get the reconfigured value using an extended method on subcontrol
-        *
-        * Like: testGetReconfigurePropertyBySubImpl
-        * While the above two methods are really: 
testGetReconfiguredPropertyBySuperImpl
-        */
-
     /**
      * Tests getting the property declared SubControl interface.
      * The value is retrieved by getter on subcontrol bean
@@ -329,34 +358,6 @@
                Assert.assertNotNull(sub);
                Assert.assertEquals(sub.getNewPropertyMessage(),"New Property 
Declared by Sub Control");
                */
-    }
-
-    /**
-     * Tests getting the property declared on SubControl interface.
-     * The value is retrieved by control context.
-     * The subcontrol is instantiated declaratively.
-     */
-       @Freq("checkin")
-    public void testGetExtendedPropertyByContext() throws Exception
-    {
-               SubControlBean 
sub=(SubControlBean)java.beans.Beans.instantiate( 
Thread.currentThread().getContextClassLoader() ,
-                               
"org.apache.beehive.controls.test.controls.extension.SubControlBean");
-
-               Assert.assertNotNull(sub);
-               Assert.assertEquals("New Property Declared by Sub 
Control",sub.getExtendedPropertyByContext());
-    }
-
-    /**
-     * Tests getting the property declared on SubControl interface.
-     * The property is retrieved by control context.
-     * The subcontrol is instantiated programmatically.
-     */
-       @Freq("detailed")
-       @Status("inactive")
-    public void testGetExtendedPropertyByContext2() throws Exception
-    {
-               //one new method needs to be added on SubControl
-               //getNewPropertyByContext()
     }
 
     /**

Added: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/composition/TestOuterControl.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/composition/TestOuterControl.java
      Wed Sep 15 19:51:33 2004
@@ -0,0 +1,197 @@
+package org.apache.beehive.controls.test.jpf.composition;
+
+import org.apache.beehive.test.tools.milton.junit.HtmlReportTestCase;
+import org.apache.beehive.test.tools.mantis.annotations.tch.Freq;
+import org.apache.beehive.test.tools.mantis.annotations.tch.Status;
+
+
+/**
+ * Tests controls composition by invoking a control on a pageflow.
+ * The control has nested controls.
+ */
+public class TestOuterControl extends HtmlReportTestCase
+{
+       public TestOuterControl(String s){super(s);}
+
+    /**
+     * Tests instantiation of nested control.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("checkin")
+    public void testInstantiation() throws Exception
+    {
+               assertReport("/controlsWeb/composition/testInstantiation.do");
+    }
+
+    /**
+     * Tests instantiation of nested control.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("checkin")
+    public void testInstantiationP() throws Exception
+    {
+               assertReport("/controlsWeb/composition/testInstantiationP.do");
+    }
+
+    /**
+     * Tests instantiation of nested control when a property of the
+     * nested control is reconfigured at instantiation.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("detailed")
+    public void testInstantiationWithProperty() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testInstantiationWithProperty.do");
+    }
+
+    /**
+     * Tests instantiation of nested control when a property of the
+     * nested control is reconfigured at instantiation.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testInstantiationWithPropertyP() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testInstantiationWithPropertyP.do");
+    }
+
+    /**
+     * Tests getting nested control property from context of nested control.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("checkin")
+    public void testGetPropertyByContext() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testGetPropertyByContext.do");
+    }
+
+    /**
+     * Tests getting nested control property from context of nested control.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("checkin")
+    public void testGetPropertyByContextP() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testGetPropertyByContextP.do");
+    }
+
+    /**
+     * Tests getting nested control property using getter method on nested 
control bean class.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("detailed")
+    public void testGetPropertyByGetter() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testGetPropertyByGetter.do");
+    }
+
+    /**
+     * Tests getting nested control property using getter method on nested 
control bean class.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testGetPropertyByGetterP() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testGetPropertyByGetterP.do");
+    }
+
+    /**
+     * Tests setting nested control property using setter method on nested 
control bean class.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("detailed")
+    public void testSetPropertyBySetter() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testSetPropertyBySetter.do");
+    }
+
+    /**
+     * Tests setting nested control property using setter method on nested 
control bean class.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testSetPropertyBySetterP() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testSetPropertyBySetterP.do");
+    }
+
+    /**
+     * Tests getting a reconfigured property from context of the nested 
control.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("detailed")
+    public void testGetReconfiguredPropertyByContext() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testGetReconfiguredPropertyByContext.do");
+    }
+
+    /**
+     * Tests getting a reconfigured property from context of nested control.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testGetReconfiguredPropertyByContextP() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testGetReconfiguredPropertyByContextP.do");
+    }
+
+    /**
+     * Tests outer control receiving events raised by nested control using 
EventHandler.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("detailed")
+    public void testEventHandler() throws Exception
+    {
+               assertReport("/controlsWeb/composition/testEventHandler.do");
+    }
+
+    /**
+     * Tests outer control receiving events raised by nested control using 
EventHandler.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testEventHandlerP() throws Exception
+    {
+               assertReport("/controlsWeb/composition/testEventHandlerP.do");
+    }
+
+    /**
+     * Tests outer control receiving events raised by nested control using 
EventListener.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("checkin")
+    public void testEventListener() throws Exception
+    {
+               assertReport("/controlsWeb/composition/testEventListener.do");
+    }
+
+    /**
+     * Tests outer control receiving events raised by nested control using 
EventListener.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("checkin")
+    public void testEventListenerP() throws Exception
+    {
+               assertReport("/controlsWeb/composition/testEventListenerP.do");
+    }
+
+    /**
+     * Tests outer control receiving events raised by nested control using 
inner classes.
+     * The outer control is instantiated declaratively
+     */
+       @Freq("checkin")
+    public void testInnnerClassListener() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testInnerClassListener.do");
+    }
+
+    /**
+     * Tests outer control receiving events raised by nested control using 
inner classes.
+     * The outer control is instantiated programmatically
+     */
+       @Freq("checkin")
+    public void testInnerClassListenerP() throws Exception
+    {
+               
assertReport("/controlsWeb/composition/testInnerClassListenerP.do");
+    }
+}

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/extension/TestSubControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/extension/TestSubControl.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/jpf/extension/TestSubControl.java
  Wed Sep 15 19:51:33 2004
@@ -56,7 +56,7 @@
      * implementation class.
      */
 
-       @Freq("detailed")
+       @Freq("checkin")
     public void testGetInheritedPropertyByContext() throws Exception
     {
                
assertReport("/controlsWeb/extension/testGetInheritedPropertyByContext.do");

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/composition/Controller.jpf
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/composition/Controller.jpf
        Wed Sep 15 19:51:33 2004
@@ -0,0 +1,436 @@
+/*
+ *
+ * N E T U I
+ *
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * All Rights Reserved. Unpublished rights reserved under the copyright laws
+ * of the United States. The software contained on this media is proprietary
+ * to and embodies the confidential technology of BEA Systems, Inc. The
+ * possession or receipt of this information does not convey any right to
+ * disclose its contents, reproduce it, or use,  or license the use,
+ * for manufacture or sale, the information or anything described
+ * therein. Any use, disclosure, or reproduction without BEA System's
+ * prior written permission is strictly prohibited.
+ *
+ * $Header:$
+ */
+package composition;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.FormData;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.api.bean.ControlBean;
+import org.apache.beehive.controls.test.controls.composition.OuterControlBean;
+import org.apache.beehive.controls.test.driver.composition.DriveOuterControl;
+import org.apache.beehive.test.tools.milton.common.Report;
+
+/* Test control composition by invoking methods on a control that has nested 
controls*/
+
[EMAIL PROTECTED](
+    forwards = {
+        @Jpf.Forward(name=Report.RESULTS,path = Report.RESULTSJSP) 
+    })
+public class Controller extends PageFlowController
+{
+
+    @Control
+    public OuterControlBean outercontrol;
+    
+
+    @Jpf.Action(
+        )
+    protected Forward begin(){
+
+       Report report =new Report();
+       report.setStatus(Report.PASS);
+       report.setMessage("This is a bogus test.");
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+    
+    /*
+     * Verifies the instantiation of nested controls.
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testInstantiation(){
+
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestInstantiate();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }    
+
+    /*
+     * Verifies the instantiation of nested controls.
+     * The outer control is instantiated programmatically.
+     */
+     @Jpf.Action(
+        )
+    protected Forward testInstantiationP(){
+
+
+       DriveOuterControl driver=new DriveOuterControl();
+
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestInstantiate();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies the instantiation of nested control, if the property of the 
nested control is
+     * is reconfigured when instantiated.
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testInstantiationWithProperty(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestInstantiateWithProperty();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    } 
+
+    /*
+     * Verifies the instantiation of nested control, if the property of the 
nested control is
+     * is reconfigured when instantiated.
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testInstantiationWithPropertyP(){
+
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestInstantiateWithProperty();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests getting control property from the context of the nested control. 
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testGetPropertyByContext(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestGetPropertyByContext();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    } 
+
+    /*
+     * Tests getting control property from the context of the nested control. 
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testGetPropertyByContextP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestGetPropertyByContext();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests getting control property from getter method of the nested control 
bean. 
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testGetPropertyByGetter(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestGetPropertyByGetter();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests getting control property from getter method of the nested control 
bean. 
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testGetPropertyByGetterP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestGetPropertyByGetter();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests setting control property using setter method of the nested 
control bean. 
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testSetPropertyBySetter(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestSetPropertyBySetter();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests setting control property using setter method of the nested 
control bean. 
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testSetPropertyBySetterP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestSetPropertyBySetter();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests getting control property via the context of the nested control.
+     * The property is reconfigured when instantiated.
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testGetReconfiguredPropertyByContext(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestGetReconfiguredPropertyByContext();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Tests getting control property via the context of the nested control.
+     * The property is reconfigured when instantiated.
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testGetReconfiguredPropertyByContextP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestGetReconfiguredPropertyByContext();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies outer control receiving events raised by the nested control.
+     * Outer control listens to the events by EventHandler.
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testEventHandler(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestEventHandler();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies outer control receiving events raised by the nested control.
+     * Outer control listens to the events by EventHandler.
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testEventHandlerP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestEventHandler();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies outer control receiving events raised by the nested control.
+     * Outer control listens to the events by EventListener.
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testEventListener(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestEventListener();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies outer control receiving events raised by the nested control.
+     * Outer control listens to the events by EventListener.
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testEventListenerP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestEventListener();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies outer control receiving events raised by the nested control.
+     * Outer control listens to the events by an inner class listener.
+     * The outer control is instantiated declaratively.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testInnerClassListener(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       driver.setControl(outercontrol);
+       Report report=driver.doTestEventInnerClass();
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+    }
+
+    /*
+     * Verifies outer control receiving events raised by the nested control.
+     * Outer control listens to the events by an inner class listener.
+     * The outer control is instantiated programmatically.
+     */
+    @Jpf.Action(
+        )
+    protected Forward testInnerClassListenerP(){
+       
+       DriveOuterControl driver=new DriveOuterControl();
+       Report report=new Report();
+       try{
+               OuterControlBean 
outerbean=(OuterControlBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+               driver.setControl(outerbean);
+               report=driver.doTestEventInnerClass();
+        }
+        catch(Exception e){
+               
+               report.setStatus(Report.FAIL);
+               report.setExceptionStack(e);
+        }
+       
+        return new Forward(Report.RESULTS, Report.KEY, report);
+  }  
+   
+}
\ No newline at end of file

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
  Wed Sep 15 19:51:33 2004
@@ -0,0 +1,55 @@
+package org.apache.beehive.controls.test.controls.composition;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+import org.apache.beehive.controls.api.events.EventSet;
+import org.apache.beehive.controls.api.properties.PropertySet;
+
+/**
+ * A control interface designed to test control composition
+ */
[EMAIL PROTECTED]
+public interface InnerControl
+{
+       static final String DEFAULT_NAME="Bob";
+       static final String DEFAULT_JOB="cleaner";
+
+    @PropertySet
+    @Target( {ElementType.TYPE, ElementType.FIELD} )
+    @Retention(RetentionPolicy.RUNTIME)
+    public @interface Identity
+    {
+        public String name() default DEFAULT_NAME;
+        //does not have a default value assigned
+               public String job();
+    }
+
+
+
+    @EventSet
+    public interface Activity
+    {
+        void wakeup();
+        int readMessage(String message);
+        String report();
+    }
+
+    @EventSet
+    public interface Action
+    {
+        public Object[] shopping (double credit);
+        public void doStuff(String value);
+    }
+
+       public void fireAllEvents();
+    public void fireEvent(String eventSet, String eventName);
+
+       /*Gets property value from context*/
+    public String getNameFromContext();
+    /*Gets property value from context*/
+    public String getJobFromContext();
+}

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControlEventListener.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControlEventListener.java
     Wed Sep 15 19:51:33 2004
@@ -0,0 +1,72 @@
+package org.apache.beehive.controls.test.controls.composition;
+
+/**
+ * A listener class for event raised by InnerControl
+ */
+public class InnerControlEventListener implements 
InnerControl.Activity,InnerControl.Action
+{
+
+       private boolean wakeupReceived=false;
+       private boolean readMessageReceived=false;
+       private boolean reportReceived=false;
+       private boolean shoppingReceived=false;
+       private boolean doStuffReceived=false;
+
+       /*
+        * BUG!!?? although the event declares methods wakeup, readMessage and
+        * report using default accessor,
+        * implmentation must change the method accessor to public,
+        * or, a compile error!
+        *
+        *  attempting to assign weaker access privileges; was public
+     * [apt]     void wakeup(){wakeupReceived=true;}
+     *
+        */
+
+       public void wakeup(){wakeupReceived=true;}
+    public int readMessage(String message){
+               readMessageReceived=true;
+               return 0;}
+    public String report(){
+               reportReceived=true;
+               return "a report from event listener";}
+
+    public Object[] shopping (double credit){
+               shoppingReceived=true;
+               //return (Object){"clothes","shoes","food"};
+               return null;
+               }
+    public void doStuff(String value){
+               doStuffReceived=true;
+               }
+
+       public boolean getWakeupResult(){return wakeupReceived;}
+       public boolean getReadMessageResult(){return readMessageReceived;}
+       public boolean getReportResult(){return reportReceived;}
+       public boolean getShoppingResult(){return shoppingReceived;}
+       public boolean getDoStuffResult(){return doStuffReceived;}
+
+       /* checks all the event records.
+        * returns '0' if all the events have been received.
+        */
+       public String getFinalResult(){
+
+               String result="";
+
+               if (!wakeupReceived)
+                       result="WakeUp not received.";
+               if (!readMessageReceived)
+                       result=result+"readMessage not received.";
+               if (!reportReceived)
+                       result=result+"report not received.";
+               if (!shoppingReceived)
+                       result=result+"shopping not received.";
+               if (!doStuffReceived)
+                       result=result+"dostuff not received.";
+
+               if (result.length()==0)
+                       result="0";
+
+               return result;
+       }
+}

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
       Wed Sep 15 19:51:33 2004
@@ -0,0 +1,62 @@
+package org.apache.beehive.controls.test.controls.composition;
+
+import java.lang.reflect.Method;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+import org.apache.beehive.controls.api.events.Client;
+import org.apache.beehive.controls.api.context.Context;
+import org.apache.beehive.controls.api.context.ControlBeanContext;
+
[EMAIL PROTECTED]
+public class InnerControlImpl implements InnerControl
+{ 
+    @Context ControlBeanContext context;
+    @Client Activity activity;
+    @Client Action action;
+
+
+    /*Gets property value from context*/
+    public String getNameFromContext(){
+
+       Identity 
identity=(InnerControl.Identity)context.getControlPropertySet(InnerControl.Identity.class);
+       return identity.name();
+    }
+    /*Gets property value from context*/
+    public String getJobFromContext(){
+
+       Identity 
identity=(InnerControl.Identity)context.getControlPropertySet(InnerControl.Identity.class);
+       return identity.job();    
+    }
+    
+    public void fireEvent(String eventSet, String eventName){
+       
+       if ((eventSet!=null)&&(eventName!=null)){
+       
+               if (eventSet.equalsIgnoreCase("Activity")){
+                       if (eventName.equalsIgnoreCase("wakeup"))
+                               activity.wakeup();
+                       else if(eventName.equalsIgnoreCase("readMessage"))
+                               activity.readMessage("message from nested 
control");
+                       else if(eventName.equalsIgnoreCase("report"))
+                               activity.report();                      
+               }
+               else if (eventSet.equalsIgnoreCase("Action")){
+                       if (eventName.equalsIgnoreCase("shopping"))
+                               action.shopping(999.99d);
+                       else if(eventName.equalsIgnoreCase("doStuff"))
+                               action.doStuff("stuff to do");
+               }
+       }
+       
+    }
+
+    public void fireAllEvents(){
+
+       activity.wakeup();
+       activity.readMessage("message from nested control");
+       activity.report();                      
+       action.shopping(999.99d);
+       action.doStuff("stuff to do");
+    }
+    
+} 

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
  Wed Sep 15 19:51:33 2004
@@ -0,0 +1,52 @@
+package org.apache.beehive.controls.test.controls.composition;
+
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+import org.apache.beehive.controls.test.controls.composition.InnerControlBean;
+
+
+
+/**
+ * A control interface designed to test control composition
+ */
[EMAIL PROTECTED]
+public interface OuterControl
+{
+       /*
+        * BUG: can not refer to the bean class
+        *
+        * Must a outer control declare its inner control by bean or interface?
+        */
+       public InnerControlBean getDeclaredNestedControl();
+       public InnerControlBean getDeclaredNestedControl2();
+       public InnerControlBean instantiateNestedControlProgrammatically();
+       public InnerControlBean instantiateNestedControlWithProperty();
+
+       /*Test outer control receiving event from nested control using
+        * EventHandler.
+        */
+       public String testActivityWakeup();
+       public String testActivityReadMessage();
+       public String testActivityReport();
+       public String testActionShopping();
+       public String testActionDostuff();
+
+       /*Tests outer control receiving event from nested control using
+        * event listener. The nested control is instantiated programmatically
+        */
+       public String testEventListener();
+
+       /*Tests outer control receiving event from nested control using
+        * event listener. The nested control is instantiated decalratively
+        */
+       public String testEventListenerByDeclare();
+
+       /*Tests outer control receiving event from nested control using
+        * inner class listener. The nested control is instantiated 
programmatically
+        */
+       public String testInnerClassListener();
+       /*Tests outer control receiving event from nested control using
+        * inner class listener. The nested control is instantiated 
decalratively
+        */
+       public String testInnerClassListenerByDeclare();
+}

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
       Wed Sep 15 19:51:33 2004
@@ -0,0 +1,444 @@
+package org.apache.beehive.controls.test.controls.composition;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.controls.api.context.Context;
+import org.apache.beehive.controls.api.context.ControlBeanContext;
+import org.apache.beehive.controls.api.events.EventHandler;
+
+import org.apache.beehive.controls.test.controls.composition.InnerControlBean;
+
+/**
+ * A control implementation designed to test control composition
+ * This control implementation make two instances of nested control
+ * be declaration.
+ */
[EMAIL PROTECTED]
+public class OuterControlImpl implements OuterControl
+{ 
+    static final long serialVersionUID = 1L;
+    static final String EVENT_RECEIVED="Event Received";
+    
+    private String innerControlEventHandlerWakeUp="";
+    private String innerControlEventHandlerReadMessage="";
+    private String innerControlEventHandlerReport="";
+    private String innerControlEventHandlerShopping="";
+    private String innerControlEventHandlerDoStuff="";
+    
+    private boolean innerClassWakeUp=false;
+    private boolean innerClassReadMessage=false;
+    private boolean innerClassReport=false;
+    private boolean innerClassShopping=false;
+    private boolean innerClassDoStuff=false;    
+
+    private boolean innerControlInnerClassWakeUp=false;
+    private boolean innerControlInnerClassReadMessage=false;
+    private boolean innerControlInnerClassReport=false;
+    private boolean innerControlInnerClassShopping=false;
+    private boolean innerControlInnerClassDoStuff=false;  
+    
+    /*Instantiates a nested control without reconfiguring the property*/
+    @Control 
+    InnerControlBean innerControl;
+
+    @Control 
+    @InnerControl.Identity(job="farmer")
+    InnerControlBean innerControl2;
+    
+  
+    //
+    // Define various event handlers for the nested controls
+    //
+    @EventHandler(field="innerControl", eventSet=InnerControl.Activity.class, 
eventName="wakeup")
+    public void innerControlwakeup() { 
innerControlEventHandlerWakeUp=EVENT_RECEIVED; }
+
+    @EventHandler(field="innerControl", eventSet=InnerControl.Activity.class, 
eventName="readMessage")
+    public int innerControlreadMessage(String message) { 
+       innerControlEventHandlerReadMessage=EVENT_RECEIVED;
+       return 0;
+    }
+
+    @EventHandler(field="innerControl", eventSet=InnerControl.Activity.class, 
eventName="report")
+    public String innerControlreport() { 
+       innerControlEventHandlerReport=EVENT_RECEIVED;
+       return "a report";
+    }
+
+    @EventHandler(field="innerControl", eventSet=InnerControl.Action.class, 
eventName="shopping")
+    public Object [] innerControlshopping(double credit) { 
+       innerControlEventHandlerShopping=EVENT_RECEIVED;
+       return null;
+    }
+
+    @EventHandler(field="innerControl", eventSet=InnerControl.Action.class, 
eventName="doStuff")
+    public void innerControldoStuff(String vakue) {
+       innerControlEventHandlerShopping=EVENT_RECEIVED;
+    }
+
+    @EventHandler(field="innerControl2", eventSet=InnerControl.Activity.class, 
eventName="wakeup")
+    public void innerControl2wakeup() {}
+
+    @EventHandler(field="innerControl2", eventSet=InnerControl.Activity.class, 
eventName="readMessage")
+    public int innerControl2readMessage(String message) { return 0; }
+
+    @EventHandler(field="innerControl2", eventSet=InnerControl.Activity.class, 
eventName="report")
+    public String innerControl2report() { return "a report"; }
+
+    @EventHandler(field="innerControl2", eventSet=InnerControl.Action.class, 
eventName="shopping")
+    public Object [] innerControl2shopping(double credit) { return null; }
+
+    @EventHandler(field="innerControl2", eventSet=InnerControl.Action.class, 
eventName="doStuff")
+    public void innerControl2doStuff(String vakue) {}
+
+    
+    public InnerControlBean getDeclaredNestedControl(){
+       return innerControl;
+    }
+
+    public InnerControlBean getDeclaredNestedControl2(){
+       return innerControl2;
+    }
+    
+    public InnerControlBean instantiateNestedControlProgrammatically(){
+       try{
+               InnerControlBean 
inner=(InnerControlBean)java.beans.Beans.instantiate( 
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.composition.InnerControlBean");
+               return inner;
+       }
+       catch(Exception e){
+               return null;
+       }
+    }
+
+    public InnerControlBean instantiateNestedControlWithProperty(){
+       /*BUG:CR190302*/
+       return null;
+    }
+
+    public String testActivityWakeup(){
+       
+       String result="";
+       if (innerControl==null)
+               result="inner control is NULL";
+       else{
+               innerControl.fireEvent("Activity","wakeup");
+               /*Wait for the events*/
+               try{
+                       Thread.currentThread().sleep(1000);
+                       if 
(innerControlEventHandlerWakeUp.equals(EVENT_RECEIVED))
+                               result="0";
+                       else
+                               result="Acivity.wakeup not received by 
EventHandler";
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();
+               }
+       }
+       return result;
+    }
+    public String testActivityReadMessage(){
+    
+       String result="";
+       if (innerControl==null)
+               result="inner control is NULL";
+       else{
+               innerControl.fireEvent("Activity","readMessage");
+               /*Wait for the events*/
+               try{
+                       Thread.currentThread().sleep(1000);
+               
+                       if 
(innerControlEventHandlerReadMessage.equals(EVENT_RECEIVED))
+                               result="0";
+                       else
+                               result="Acivity.readMessage not received by 
EventHandler";
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();
+               }
+       }
+       return result;
+    
+    }
+    public String testActivityReport(){
+
+       String result="";
+       if (innerControl==null)
+               result="inner control is NULL";
+       else{
+               innerControl.fireEvent("Activity","report");
+               /*Wait for the events*/
+               try{
+                       Thread.currentThread().sleep(1000);
+                       
+                       if 
(innerControlEventHandlerReport.equals(EVENT_RECEIVED))
+                               result="0";
+                       else
+                               result="Acivity.report not received by 
EventHandler";
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();        
        
+               }
+       }
+       return result;
+    
+    }
+    public String testActionShopping(){
+    
+       String result="";
+       if (innerControl==null)
+               result="inner control is NULL";
+       else{
+               innerControl.fireEvent("Action","shopping");
+               /*Wait for the events*/
+               try{
+                       Thread.currentThread().sleep(1000);
+                       
+                       if 
(innerControlEventHandlerShopping.equals(EVENT_RECEIVED))
+                               result="0";
+                       else
+                               result="Action.shopping not received by 
EventHandler";
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();
+               }
+       }
+       return result;
+    
+    }
+    public String testActionDostuff(){
+
+       String result="";
+       if (innerControl==null)
+               result="inner control is NULL";
+       else{
+               innerControl.fireEvent("Action","doStuff");
+               /*Wait for the events*/
+               try{
+                       Thread.currentThread().sleep(1000);
+               
+                       if 
(innerControlEventHandlerDoStuff.equals(EVENT_RECEIVED))
+                               result="0";
+                       else
+                               result="Action.doStuff not received by 
EventHandler";
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();        
        
+               }
+       }
+       return result;
+    
+    }
+
+    /*Tests outer control receiving event from nested control using
+     * event listener. The nested control is instantiated programmatically
+     */
+    public String testEventListener(){
+
+       String result="init";
+       try{
+       
+       InnerControlBean nested=(InnerControlBean)java.beans.Beans.instantiate( 
+               Thread.currentThread().getContextClassLoader() ,
+               
"org.apache.beehive.controls.test.controls.composition.InnerControlBean");
+       if (nested==null)
+               result="Nested control instantiated programmatically is NULL.";
+       else{
+               //Create an Event Listener
+               InnerControlEventListener listener=new 
InnerControlEventListener();
+               nested.addActivityListener(listener);
+               nested.addActionListener(listener);
+               nested.fireAllEvents();
+               try{    
+                       Thread.currentThread().sleep(1000);
+                       result=listener.getFinalResult();
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();
+               }
+               
+               
+       }
+       }
+       catch(Exception e){
+               result="Exception caught:"+e.toString();
+       }
+       return result;
+    }
+
+    /*Tests outer control receiving event from nested control using
+     * event listener. The nested control is instantiated decalratively
+     */
+    public String testEventListenerByDeclare(){
+
+       String result="init";
+       
+       if (innerControl==null)
+               result="Nested control instantiated declaratively is NULL.";
+       else{
+               try{
+               //Create an Event Listener
+               InnerControlEventListener listener=new 
InnerControlEventListener();
+               innerControl.addActivityListener(listener);
+               innerControl.addActionListener(listener);
+               innerControl.fireAllEvents();
+
+                       Thread.currentThread().sleep(1000);
+                       result=listener.getFinalResult();
+               }
+               catch(Exception e){
+                       result="Thread sleep interrupted."+e.toString();
+               }
+               
+               
+       }
+       return result;
+    
+    }
+
+    /*Tests outer control receiving event from nested control using
+     * inner class listener. The nested control is instantiated 
programmatically
+     */
+    public String testInnerClassListener(){
+    
+       String result="init";
+       try{
+       InnerControlBean nested=(InnerControlBean)java.beans.Beans.instantiate( 
+               Thread.currentThread().getContextClassLoader() ,
+               
"org.apache.beehive.controls.test.controls.composition.InnerControlBean");
+       if (nested==null)
+               result="Nested control instantiated programmatically is NULL.";
+       else{
+               nested.addActivityListener(
+                   new InnerControl.Activity(){
+                       
+                       public void wakeup(){innerClassWakeUp=true;}
+                       public int readMessage(String message){
+                               innerClassReadMessage=true;
+                               return 0;}
+                       public String report(){
+                               innerClassReport=true;
+                               return "event received.";       
+                               }
+                   }
+               );
+               nested.addActionListener(
+                   new InnerControl.Action(){
+                       
+                       public Object[] shopping (double credit){
+                               innerClassShopping=true;
+                               //return {"food","drinks","candies"};
+                               return null;
+                               }
+                       public void doStuff(String value){
+                               innerClassDoStuff=true;
+                               }
+                   }           
+               );
+               nested.fireAllEvents();
+               try{
+                       Thread.currentThread().sleep(1000);
+               }
+               catch(Exception e){}
+               
+               result=getInnerClassListenerResult();
+       }
+       }
+       catch(Exception e){
+               result="Exception caught:"+e.toString();
+       }
+       return result;
+    }
+
+    /*Tests outer control receiving event from nested control using
+     * inner class listener. The nested control is instantiated decalratively
+     */
+    public String testInnerClassListenerByDeclare(){
+
+       String result="init";
+       
+       if (innerControl==null)
+               result="Nested control instantiated declaratively is NULL.";
+       else{
+               try{
+               innerControl.addActivityListener(
+                   new InnerControl.Activity(){
+                       
+                       public void wakeup(){innerControlInnerClassWakeUp=true;}
+                       public int readMessage(String message){
+                               innerControlInnerClassReadMessage=true;
+                               return 0;}
+                       public String report(){
+                               innerControlInnerClassReport=true;
+                               return "event received.";       
+                               }
+                   }
+               );
+               innerControl.addActionListener(
+                   new InnerControl.Action(){
+                       
+                       public Object[] shopping (double credit){
+                               innerControlInnerClassShopping=true;
+                               //return {"food","drinks","candies"};
+                               return null;
+                               }
+                       public void doStuff(String value){
+                               innerControlInnerClassDoStuff=true;
+                               }
+                   }           
+               );
+               innerControl.fireAllEvents();
+
+                       Thread.currentThread().sleep(1000);
+               }
+               catch(Exception e){}
+               
+               result=getInnerControlInnerClassListenerResult();
+       }
+       return result;
+    
+    }
+
+    private String getInnerClassListenerResult(){
+       
+       String result="";
+
+       if (!innerClassWakeUp)
+               result="WakeUp not received.";
+       if (!innerClassReadMessage)
+               result=result+"readMessage not received.";
+       if (!innerClassReport)
+               result=result+"report not received.";
+       if (!innerClassShopping)
+               result=result+"shopping not received.";
+       if (!innerClassDoStuff)
+               result=result+"dostuff not received.";
+
+       if (result.length()==0)
+               result="0";
+
+       return result;          
+    }
+
+    private String getInnerControlInnerClassListenerResult(){
+       
+       String result="";
+
+       if (!innerControlInnerClassWakeUp)
+               result="WakeUp not received.";
+       if (!innerControlInnerClassReadMessage)
+               result=result+"readMessage not received.";
+       if (!innerControlInnerClassReport)
+               result=result+"report not received.";
+       if (!innerControlInnerClassShopping)
+               result=result+"shopping not received.";
+       if (!innerControlInnerClassDoStuff)
+               result=result+"dostuff not received.";
+
+       if (result.length()==0)
+               result="0";
+
+       return result;          
+    }
+
+} 

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
     (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetter.java
     Wed Sep 15 19:51:33 2004
@@ -4,7 +4,7 @@
 import org.apache.beehive.controls.api.bean.ControlInterface;
 
 /**
- * A simple control that retrieve specific service
+ * A control interface to test control context service
  */
 @ControlInterface
 public interface ServiceGetter

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
  (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/context/ServiceGetterImpl.jcs
  Wed Sep 15 19:51:33 2004
@@ -9,7 +9,7 @@
 import org.apache.beehive.controls.api.context.ControlBeanContext;
 
 /**
- * A impl that retrieves specific service via controlContext
+ * A control implementation that retrieves specific service via controlContext
  */
 @ControlImplementation
 public class ServiceGetterImpl implements ServiceGetter

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
     (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/contextevent/Recorder.java
     Wed Sep 15 19:51:33 2004
@@ -3,7 +3,7 @@
 import org.apache.beehive.controls.api.bean.ControlInterface;
 
 /**
- * A simple control that records its lifecycle events in its impl
+ * A control interface to test control context events
  */
 @ControlInterface
 public interface Recorder

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
    (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/event/HelloImpl.jcs
    Wed Sep 15 19:51:33 2004
@@ -4,7 +4,7 @@
 import org.apache.beehive.controls.api.events.Client;
 
 /**
- * A control implementation that raises events while executing its method
+ * A control implementation that raises events when the method is invoked
  */
 @ControlImplementation
 public class HelloImpl implements Hello

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
      (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControl.java
      Wed Sep 15 19:51:33 2004
@@ -10,8 +10,6 @@
  * A sub control extending ExtensibleControl.
  * This control declares one new method and one new propertySet.
  * It also resets the value of the propertySet inherited from 
ExtensibleControl.
- *
- * It will access another property inherited from ExtensibleControl in its 
impl.
  */
 //@ControlExtension
 @ControlInterface

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
   (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/extension/SubControlImpl.jcs
   Wed Sep 15 19:51:33 2004
@@ -6,7 +6,8 @@
 
 /**
  * A control impl of a SubControl and extending ExtensibleControlImpl.
- * It access the propertySet inherited from ExtensibleControl.
+ * It accesses the propertySet inherited from ExtensibleControl via control 
context.
+ * It also accesses the propertySet declared by its own interface.
  */
 @ControlImplementation 
 public class SubControlImpl extends ExtensibleControlImpl implements SubControl

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/instantiate/HelloControl.java
  Wed Sep 15 19:51:33 2004
@@ -1,13 +1,9 @@
-//
-// Copyright � 2001-2002 BEA Systems.  All rights reserved.
-//
-
 package org.apache.beehive.controls.test.controls.instantiate;
 
 import org.apache.beehive.controls.api.bean.ControlInterface;
 
 /**
- * A simple control with one method
+ * A simple control interface with one method declared
  */
 
 @ControlInterface

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
        (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/controls/property/SinglePropertyImpl.jcs
        Wed Sep 15 19:51:33 2004
@@ -5,7 +5,7 @@
 import org.apache.beehive.controls.api.context.ControlBeanContext;
 
 /**
- * A control impl that access the property declared in its control interface
+ * A control impl that accesses the property via control context
  */
 
 @ControlImplementation

Added: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/composition/DriveOuterControl.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/composition/DriveOuterControl.java
       Wed Sep 15 19:51:33 2004
@@ -0,0 +1,257 @@
+package org.apache.beehive.controls.test.driver.composition;
+
+import org.apache.beehive.test.tools.milton.common.Report;
+import org.apache.beehive.controls.test.controls.composition.OuterControlBean;
+import org.apache.beehive.controls.test.controls.composition.InnerControlBean;
+
+/* This class contains the logic to test control composition.
+ * By invoking method on OuterControl, a control containing a nested control,
+ * features of control composition are verified.
+ */
+public class DriveOuterControl
+{
+
+       private OuterControlBean myControl;
+
+       public void setControl(OuterControlBean aControl){
+
+               myControl=aControl;
+       }
+
+       public Report doTestInstantiate(){
+
+               Report report=new Report();
+
+               if (myControl==null){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("the outer control is NULL");
+               }
+               else{
+                       InnerControlBean 
declaredNestedControl=myControl.getDeclaredNestedControl();
+
+                       if (declaredNestedControl==null){
+                               report.setStatus(Report.FAIL);
+                               report.setMessage("the nested control 
instantiated declaratively is NULL");
+                       }
+                       else{
+                               InnerControlBean 
programNestedControl=myControl.instantiateNestedControlProgrammatically();
+
+                               if (programNestedControl==null){
+                                       report.setStatus(Report.FAIL);
+                                       report.setMessage("the nested control 
instantiated programmatically is NULL");
+                               }
+                               else
+                                       report.setStatus(Report.PASS);
+                       }
+
+               }
+               return report;
+       }
+
+       public Report doTestInstantiateWithProperty(){
+
+               Report report=new Report();
+
+               if (myControl==null){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("the outer control is NULL");
+               }
+               else{
+                       InnerControlBean 
declaredNestedControl=myControl.getDeclaredNestedControl2();
+
+                       if (declaredNestedControl==null){
+                               report.setStatus(Report.FAIL);
+                               report.setMessage("the nested control 
instantiated declaratively is NULL");
+                       }
+                       else{
+                               InnerControlBean 
programNestedControl=myControl.instantiateNestedControlWithProperty();
+
+                               if (programNestedControl==null){
+                                       report.setStatus(Report.FAIL);
+                                       report.setMessage("the nested control 
instantiated programmatically is NULL");
+                               }
+                               else
+                                       report.setStatus(Report.PASS);
+                       }
+
+               }
+               return report;
+       }
+
+       public Report doTestGetPropertyByContext(){
+
+               Report report=doTestInstantiate();
+
+               if (report.getStatus().equals(Report.PASS)){
+
+                       InnerControlBean 
declaredNestedControl=myControl.getDeclaredNestedControl();
+                       String 
property_value=declaredNestedControl.getNameFromContext();
+                       if(property_value!=null){
+                               if (property_value.equals("Bob"))
+                                       report.setStatus(Report.PASS);
+                               else{
+                                       report.setStatus(Report.FAIL);
+                                       report.setMessage("declarative 
instantiation:property retrieved from context is:"+property_value);
+                               }
+                       }
+                       else{
+                               report.setStatus(Report.FAIL);
+                               report.setMessage("declarative 
instantiation:property retrieved from context is NULL.");
+                       }
+
+                       if (report.getStatus().equals(Report.PASS)){
+
+                               InnerControlBean 
programNestedControl=myControl.instantiateNestedControlProgrammatically();
+                               String 
property_value2=programNestedControl.getNameFromContext();
+
+                               if(property_value2!=null){
+                                       if (property_value.equals("Bob"))
+                                               report.setStatus(Report.PASS);
+                                       else{
+                                               report.setStatus(Report.FAIL);
+                                               report.setMessage("programmatic 
instantiation:property retrieved from context is:"+property_value);
+                                       }
+                               }
+                               else{
+                                       report.setStatus(Report.FAIL);
+                                       report.setMessage("programmatic 
instantiation:property retrieved from context is NULL.");
+                               }
+                       }
+               }
+               return report;
+       }
+
+       public Report doTestGetPropertyByGetter(){
+
+               Report report=new Report();
+               report.setStatus(Report.FAIL);
+               report.setMessage("Control bean getter/setter not supported. 
Check latest development status.");
+               return report;
+       }
+
+       public Report doTestSetPropertyBySetter(){
+
+               Report report=new Report();
+               report.setStatus(Report.FAIL);
+               report.setMessage("Control bean getter/setter not supported. 
Check latest development status.");
+               return report;
+       }
+
+       public Report doTestGetReconfiguredPropertyByContext(){
+
+               Report report=doTestInstantiateWithProperty();
+
+               if (report.getStatus().equals(Report.PASS)){
+
+                       InnerControlBean 
declaredNestedControl=myControl.getDeclaredNestedControl2();
+                       String 
property_value=declaredNestedControl.getJobFromContext();
+                       if(property_value!=null){
+                               if (property_value.equals("farmer"))
+                                       report.setStatus(Report.PASS);
+                               else{
+                                       report.setStatus(Report.FAIL);
+                                       report.setMessage("declarative 
instantiation:reconfigured property retrieved from context is:"+property_value);
+                               }
+                       }
+                       else{
+                               report.setStatus(Report.FAIL);
+                               report.setMessage("declarative 
instantiation:property retrieved from context is NULL.");
+                       }
+
+                       if (report.getStatus().equals(Report.PASS)){
+
+                               InnerControlBean 
programNestedControl=myControl.instantiateNestedControlWithProperty();
+                               String 
property_value2=programNestedControl.getJobFromContext();
+
+                               if(property_value2!=null){
+                                       if (property_value.equals("farmer"))
+                                               report.setStatus(Report.PASS);
+                                       else{
+                                               report.setStatus(Report.FAIL);
+                                               report.setMessage("programmatic 
instantiation:reconfigured property retrieved from context is:"+property_value);
+                                       }
+                               }
+                               else{
+                                       report.setStatus(Report.FAIL);
+                                       report.setMessage("programmatic 
instantiation:property retrieved from context is NULL.");
+                               }
+                       }
+               }
+
+               return report;
+       }
+
+       public Report doTestEventHandler(){
+
+               Report report=new Report();
+
+               if (myControl==null){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("the outer control is NULL");
+               }
+               else{
+                       String wakeupResult=myControl.testActivityWakeup();
+                       String 
readMessageResult=myControl.testActivityReadMessage();
+                       String reportResult=myControl.testActivityReport();
+                       String shoppingResult=myControl.testActionShopping();
+                       String dostuffResult=myControl.testActionDostuff();
+
+                       if (wakeupResult.equals("0") && 
readMessageResult.equals("0") && reportResult.equals("0")
+                               && shoppingResult.equals("0") && 
dostuffResult.equals("0"))
+                               report.setStatus(Report.PASS);
+                       else{
+                               report.setStatus(Report.FAIL);
+                               
report.setMessage("ActivityWakeup:"+wakeupResult+
+                                                                       ". 
ActivityReadMessage:"+ readMessageResult+
+                                                                       ". 
ActivityReport:"+reportResult+
+                                                                       ". 
ActionShopping:"+shoppingResult+
+                                                                       ". 
ActionDodtuff:"+dostuffResult);
+                       }
+               }
+
+               return report;
+       }
+
+       public Report doTestEventListener(){
+
+               Report report=new Report();
+
+               if (myControl==null){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("the outer control is NULL");
+               }
+               else{
+                       String eventListener=myControl.testEventListener();
+
+                       if (eventListener.equals("0"))
+                               report.setStatus(Report.PASS);
+                       else{
+                               report.setStatus(Report.FAIL);
+                               report.setMessage("EventListener:"+ 
eventListener);
+                       }
+               }
+
+               return report;
+       }
+
+       public Report doTestEventInnerClass(){
+
+               Report report=new Report();
+               if (myControl==null){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("the outer control is NULL");
+               }
+               else{
+                       String 
innerClassListener=myControl.testInnerClassListener();
+
+                       if (innerClassListener.equals("0"))
+                               report.setStatus(Report.PASS);
+                       else{
+                               report.setStatus(Report.FAIL);
+                               report.setMessage("InnerClassListener:"+ 
innerClassListener);
+                       }
+               }
+
+               return report;
+       }
+}
\ No newline at end of file

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
  Wed Sep 15 19:51:33 2004
@@ -8,9 +8,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.context.ServiceGetterBean;
 
-/* This class contains the logic to test ServiceGetterBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control context service.
+ * By invoking methods on ServiceGetterBean, features of context service are 
verified.
  */
 
 public class DriveServiceGetter

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveBeanRecorder.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveBeanRecorder.java
      (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveBeanRecorder.java
      Wed Sep 15 19:51:33 2004
@@ -3,11 +3,9 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.contextevent.RecorderBean;
 
-/* This class contains the logic to test RecorderBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control context events.
+ * By invoking methods on RecorderBean, features of control lifecycle events 
are verified.
  */
-
 public class DriveBeanRecorder
 {
 

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveRecorder.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveRecorder.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/contextevent/DriveRecorder.java
  Wed Sep 15 19:51:33 2004
@@ -3,9 +3,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.contextevent.RecorderBean;
 
-/* This class contains the logic to test RecorderBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control context event.
+ * By invoking methods on RecorderBean, features of control lifecycle events 
are verified.
  */
 
 public class DriveRecorder

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/event/DriveListener.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/event/DriveListener.java
 (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/event/DriveListener.java
 Wed Sep 15 19:51:33 2004
@@ -5,11 +5,9 @@
 import org.apache.beehive.controls.test.controls.event.HelloBean;
 import org.apache.beehive.controls.test.controls.event.Event2Listener;
 
-/* This class contains the logic to test RecorderBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control event.
+ * By registering a listener to HelloBean, events raised by control are 
received and recorded.
  */
-
 public class DriveListener
 {
 

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/extension/DriveSubControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/extension/DriveSubControl.java
   (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/extension/DriveSubControl.java
   Wed Sep 15 19:51:33 2004
@@ -3,9 +3,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.extension.SubControlBean;
 
-/* This class contains the logic to test SubControlBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control extensibility.
+ * By invoking methods on a SubControlBean, features of control extensibility 
are verified.
  */
 
 public class DriveSubControl

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveHelloControl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveHelloControl.java
       (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveHelloControl.java
       Wed Sep 15 19:51:33 2004
@@ -3,9 +3,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.instantiate.HelloControlBean;
 
-/* This class contains the logic to test HelloControlBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control instantiation.
+ * By verifying the control instance, a Report object is generated.
  */
 
 public class DriveHelloControl

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveSingleProperty.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveSingleProperty.java
     (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/instantiate/DriveSingleProperty.java
     Wed Sep 15 19:51:33 2004
@@ -3,9 +3,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.property.SinglePropertyBean;
 
-/* This class contains the logic to test HelloControlBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test instantiating controls with 
propertSet.
+ * A Report object is generated for test result.
  */
 
 public class DriveSingleProperty

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientAccess.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientAccess.java
  (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientAccess.java
  Wed Sep 15 19:51:33 2004
@@ -3,11 +3,10 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.property.SinglePropertyBean;
 
-/* This class contains the logic to test SinglePropertyBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control property.
+ * It tries to reset the control's property by the setter method on the 
generated control
+ * bean class, and retrieves the value via control context.
  */
-
 public class DriveClientAccess
 {
        public static String EXPECTED_GREETING="Hello";

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientImpl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientImpl.java
    (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveClientImpl.java
    Wed Sep 15 19:51:33 2004
@@ -3,9 +3,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.property.SinglePropertyBean;
 
-/* This class contains the logic to test SinglePropertyBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control property.
+ * It tries to get control's property by the getter method on the generated 
control bean class.
  */
 
 public class DriveClientImpl

Modified: 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveImplAccess.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveImplAccess.java
    (original)
+++ 
incubator/beehive/trunk/controls/test/webapps/controlsWeb/controls/org/apache/beehive/controls/test/driver/property/DriveImplAccess.java
    Wed Sep 15 19:51:33 2004
@@ -3,9 +3,8 @@
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.property.SinglePropertyBean;
 
-/* This class contains the logic to test SinglePropertyBean
-       It will exercise the control in a certain way and generate a
-       test result report
+/* This class contains the logic to test control property.
+ * It tries to get control property via control context.
  */
 
 public class DriveImplAccess

Reply via email to