Author: jsong
Date: Tue Aug 31 15:48:29 2004
New Revision: 37266

Added:
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlEventListener.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java
   (contents, props changed)
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
   (contents, props changed)
Removed:
   incubator/beehive/trunk/controls/test/tmp/
Modified:
   incubator/beehive/trunk/controls/test/build.xml
Log:
Add test on controls conposition and remove test files from controls/test/tmp.


Modified: incubator/beehive/trunk/controls/test/build.xml
==============================================================================
--- incubator/beehive/trunk/controls/test/build.xml     (original)
+++ incubator/beehive/trunk/controls/test/build.xml     Tue Aug 31 15:48:29 2004
@@ -12,6 +12,11 @@
             classpath="${beehive-antext.jar}" />
     <taskdef name="apt" 
classname="org.apache.beehive.controls.runtime.generator.AptTask" 
              classpath="../build/jars/controls.jar" onerror="report" />
+    <taskdef name="assemble" 
classname="org.apache.beehive.controls.runtime.assembly.AssembleTask" 
+             classpath="../build/jars/controls.jar" onerror="report" />        
     
+    <taskdef name="control-jar" 
+             
classname="org.apache.beehive.controls.runtime.packaging.ControlJarTask" 
+             classpath="../build/jars/controls.jar" onerror="report" />        
     
 
     <!-- BeeHive test specific properties -->
     <property name="test.root" location="${basedir}/src"/>
@@ -108,7 +113,7 @@
     <!-- ==================================================================== 
-->
 
     <target name="build" depends="dirs">
-        <ant target="build-controls" />
+        <ant target="build-beans" />
         <ant target="build-test-drivers" />
         <ant target="build-java-tests" />
     </target>
@@ -123,7 +128,8 @@
         <mkdir dir="${test.logs}" />
     </target>
 
-    <target name="build-controls" depends="dirs" unless="_build.controls.ran">
+    <!-- obsoleted target
+    target name="build-controls" depends="dirs" unless="_build.controls.ran">
 
         <apt srcdir="${controls.src}" destdir="${build.beans}" 
gendir="${build.beansrc}"
              classpathref="test.classpath" 
@@ -131,9 +137,37 @@
         </apt>
         <jar destfile="${build.jars}/testbeans.jar"  basedir="${build.beans}" 
/>
         <property name="_build.controls.ran" value="true"/>
+    </target-->
+
+    <target name="build-beans" depends="dirs">
+        <!-- Build checkers first so they can be dynamically loaded
+        during build of control extensions.  Checkers may dep on public 
interfaces,
+        which we need to make sure get pulled in by apt -->
+        <apt srcdir="${controls.src}" destdir="${build.beans}" 
gendir="${build.beansrc}"
+             classpathref="test.classpath" >
+            <include name="**/checker/*.java"/>
+        </apt>
+        <apt srcdir="${controls.src}" destdir="${build.beans}" 
gendir="${build.beansrc}"
+             classpathref="test.classpath" compileByExtension="true"
+             srcExtensions="*.java,*.jcx,*.jcs" >
+        </apt>
+        <!-- Do control assembly. -->
+        <assemble moduleDir="${build.beans}"
+                  srcOutputDir="${build.beansrc}"
+                  
contextFactoryClassname="org.apache.beehive.controls.runtime.assembly.EJBAssemblyContext$Factory">
+            <classpath>
+                <path refid="test.classpath"/>
+                <pathelement location="${build.beans}"/>
+            </classpath>
+            <fileset dir="${build.beans}">
+                <include name="**/*.controls.properties"/>
+            </fileset>
+        </assemble>
+        <control-jar destfile="${build.jars}/checkinbeans.jar"  
basedir="${build.beans}" />
     </target>
 
-    <target name="build-test-drivers" depends="build-controls" 
unless="_build.test.drivers.ran">
+
+    <target name="build-test-drivers" depends="build-beans" 
unless="_build.test.drivers.ran">
        <echo>build helper class for testing controls</echo>
         <!-- Build the test source directory -->
         <javac srcdir="${tests.driver.src}"

Added: 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControl.java
  Tue Aug 31 15:48:29 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/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlEventListener.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlEventListener.java
     Tue Aug 31 15:48:29 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/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/InnerControlImpl.jcs
       Tue Aug 31 15:48:29 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/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControl.java
  Tue Aug 31 15:48:29 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/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/composition/OuterControlImpl.jcs
       Tue Aug 31 15:48:29 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;          
+    }
+
+} 

Added: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/DeclarativeTest.java
      Tue Aug 31 15:48:29 2004
@@ -0,0 +1,134 @@
+package org.apache.beehive.controls.test.java.composition;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import java.beans.Beans;
+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.controls.composition.InnerControlBean;
+import org.apache.beehive.mantis.annotations.tch.Freq;
+import org.apache.beehive.mantis.annotations.tch.Status;
+
+/**
+ * A TeseCase that tests control composition.
+ * The outer control is instantiated declaratively, and the outer
+ * control instantiates the nested control declaratively
+ *
+ * Instantiating controls declaratively is not supported currently.
+ * All tests are deactivated until this is supported
+ *
+ */
[EMAIL PROTECTED]("inactive")
+public class DeclarativeTest extends TestCase
+{
+
+    public DeclarativeTest(String name) throws Exception
+    {super(name);}
+
+    /**
+     * A control that contains a nested control
+     */
+    @Control
+    public OuterControlBean outerControl;
+
+    /**
+     * Tests outer control instantiats nested control by declaration
+     */
+    public void testInstantiate() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               Assert.assertNotNull(outerControl.getDeclaredNestedControl());
+               Assert.assertNotNull(outerControl.getDeclaredNestedControl2());
+    }
+
+    /**
+     * Tests outer control getting inner control property from control context
+     */
+    public void testGetProppertyByContext() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.getDeclaredNestedControl();
+               Assert.assertNotNull(innercontrol);
+               Assert.assertEquals("Bob",innercontrol.getNameFromContext());
+               Assert.assertNull(innercontrol.getJobFromContext());
+    }
+
+    /**
+     * Tests outer control getting inner control property by getter
+     *
+
+       commented out temporarily, getter/setter causes compile error
+
+    public void testGetProppertyByGetter() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.getDeclaredNestedControl();
+               Assert.assertNotNull(innercontrol);
+               Assert.assertEquals("Bob",innercontrol.getIdentityname());
+               Assert.assertNull(innercontrol.getIdentityjob());
+    }
+
+    /**
+     * Tests outer control setting inner control property by setter
+     *
+    public void testSetProppertyBySetter() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.getDeclaredNestedControl();
+               Assert.assertNotNull(innercontrol);
+               innercontrol.setIdentityname("new name declare");
+               innercontrol.setIdentityjob("new job declare");
+               Assert.assertEquals("new name 
declare",innercontrol.getNameFromContext());
+               Assert.assertEquals("new job 
declare",innercontrol.getJobFromContext());
+    }
+       */
+    /**
+     * Tests reconfigured property.
+     * Outer control reconfigures the inner control's property when 
instantiating it
+     */
+    public void testReconfiguredProperty() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.getDeclaredNestedControl2();
+               Assert.assertNotNull(innercontrol);
+               Assert.assertEquals("Bob",innercontrol.getNameFromContext());
+               Assert.assertEquals("farmer",innercontrol.getJobFromContext());
+    }
+
+    /**
+     * Tests outer control receiving events from nested control using
+     * EventHandler
+     */
+    public void testEventHandler() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               Assert.assertEquals("0",outerControl.testActivityWakeup());
+               Assert.assertEquals("0",outerControl.testActivityReadMessage());
+               Assert.assertEquals("0",outerControl.testActivityReport());
+               Assert.assertEquals("0",outerControl.testActionShopping());
+               Assert.assertEquals("0",outerControl.testActionDostuff());
+    }
+
+    /**
+     * Tests outer control receiving events from nested control using
+     * inner class
+     */
+    public void testEventInnerClass() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               
Assert.assertEquals("0",outerControl.testInnerClassListenerByDeclare());
+    }
+
+    /**
+     * Tests outer control receiving events from nested control using
+     * event listener
+     */
+    public void testEventListener() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               
Assert.assertEquals("0",outerControl.testEventListenerByDeclare());
+    }
+
+}

Added: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/composition/ProgrammaticTest.java
     Tue Aug 31 15:48:29 2004
@@ -0,0 +1,147 @@
+package org.apache.beehive.controls.test.java.composition;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import java.beans.Beans;
+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.controls.composition.InnerControlBean;
+import org.apache.beehive.mantis.annotations.tch.Freq;
+import org.apache.beehive.mantis.annotations.tch.Status;
+
+/**
+ * A TeseCase that tests control composition.
+ * The outer control is instantiated programmatically, and the outer
+ * control instantiates the nested control programmatically
+ */
+public class ProgrammaticTest extends TestCase
+{
+
+    public ProgrammaticTest(String name) throws Exception
+    {super(name);}
+
+    /**
+     * A control that contains a nested control
+     */
+       private OuterControlBean outerControl;
+
+
+       /* Instantiate the outerControl once*/
+       protected void setUp() throws Exception {
+
+               outerControl=(OuterControlBean)java.beans.Beans.instantiate( 
Thread.currentThread().getContextClassLoader() ,
+               
"org.apache.beehive.controls.test.controls.composition.OuterControlBean");
+       }
+
+    /**
+     * Tests outer control instantiats nested control by declaration
+     */
+    @Freq("checkin")
+    public void testInstantiate() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               
Assert.assertNotNull(outerControl.instantiateNestedControlProgrammatically());
+               /*
+               Commented out for CR190302
+               
Assert.assertNotNull(outerControl.instantiateNestedControlWithProperty());
+               */
+    }
+
+    /**
+     * Tests outer control getting inner control property from control context
+     */
+    @Freq("checkin")
+    public void testGetProppertyByContext() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.instantiateNestedControlProgrammatically();
+               Assert.assertNotNull(innercontrol);
+               Assert.assertEquals("Bob",innercontrol.getNameFromContext());
+               Assert.assertNull(innercontrol.getJobFromContext());
+    }
+
+    /**
+     * Tests outer control getting inner control property by getter
+     *
+
+     commented out temporarily before getter/setter is fixed
+
+    public void testGetProppertyByGetter() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.instantiateNestedControlProgrammatically();
+               Assert.assertNotNull(innercontrol);
+               Assert.assertEquals("Bob",innercontrol.getIdentityname());
+               Assert.assertNull(innercontrol.getIdentityjob());
+    }
+
+    /**
+     * Tests outer control setting inner control property by setter
+     *
+    public void testSetProppertyBySetter() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.instantiateNestedControlProgrammatically();
+               Assert.assertNotNull(innercontrol);
+               innerControl.setIdentityname("new name");
+               innerControl.setIdentityjob("new job");
+               Assert.assertEquals("new 
name",innercontrol.getNameFromContext());
+               Assert.assertEquals("new job",innercontrol.getJobFromContext());
+    }
+       */
+    /**
+     * Tests reconfigured property.
+     * Outer control reconfigures the inner control's property when 
instantiating it
+     */
+    @Freq("detailed")
+    public void testReconfiguredProperty() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               InnerControlBean 
innercontrol=outerControl.instantiateNestedControlWithProperty();
+               Assert.assertNotNull(innercontrol);
+               Assert.assertEquals("Bob",innercontrol.getNameFromContext());
+               Assert.assertNull(innercontrol.getJobFromContext());
+    }
+
+    /**
+     * Tests outer control receiving events from nested control using
+     * EventHandler
+     */
+    @Freq("detailed")
+    public void testEventHandler() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               Assert.assertEquals("0",outerControl.testActivityWakeup());
+               Assert.assertEquals("0",outerControl.testActivityReadMessage());
+               Assert.assertEquals("0",outerControl.testActivityReport());
+               Assert.assertEquals("0",outerControl.testActionShopping());
+               Assert.assertEquals("0",outerControl.testActionDostuff());
+
+    }
+
+    /**
+     * Tests outer control receiving events from nested control using
+     * inner class
+     */
+    @Freq("detailed")
+    public void testEventInnerClass() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               Assert.assertEquals("0",outerControl.testInnerClassListener());
+    }
+
+    /**
+     * Tests outer control receiving events from nested control using
+     * event listener
+     */
+    @Freq("detailed")
+    public void testEventListener() throws Exception
+    {
+               Assert.assertNotNull(outerControl);
+               Assert.assertEquals("0",outerControl.testEventListener());
+    }
+
+
+}

Reply via email to