Author: rich
Date: Tue Jan 11 16:56:40 2005
New Revision: 124932

URL: http://svn.apache.org/viewcvs?view=rev&rev=124932
Log:
- Fixed to inherit control member fields in page flows.
- Changed to avoid requiring a "begin" action on an abstract page flow.
- Fixed to avoid requiring a "begin" action on a page flow that extends another 
which has one.

DRT/BVT: netui (WinXP)
BB: self (linux)


Added:
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControl.java
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControlImpl.jcs
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/Controller.jpf
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/DerivedController.jpf
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/index.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/InheritControls.xml
   (contents, props changed)
Modified:
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java?view=diff&rev=124932&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java&r1=124931&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java&r2=124932
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   Tue Jan 11 16:56:40 2005
@@ -31,6 +31,7 @@
 import com.sun.mirror.declaration.MemberDeclaration;
 import com.sun.mirror.declaration.AnnotationTypeElementDeclaration;
 import com.sun.mirror.declaration.FieldDeclaration;
+import com.sun.mirror.declaration.Modifier;
 import com.sun.mirror.type.TypeMirror;
 import com.sun.mirror.type.DeclaredType;
 
@@ -233,9 +234,10 @@
         }
         
         //
-        // Make sure every .jpf has a begin action.
+        // Make sure every .jpf has a begin action if the class isn't abstract.
         //
-        if ( ! WebappPathOrActionType.actionExists( BEGIN_ACTION_NAME, 
jpfClass, null, getEnv(), getFlowControllerInfo(), true ) )
+        if ( ! WebappPathOrActionType.actionExists( BEGIN_ACTION_NAME, 
jpfClass, null, getEnv(), getFlowControllerInfo(), true )
+             && ! CompilerUtils.hasModifier( jpfClass, Modifier.ABSTRACT ) )
         {
             getDiagnostics().addError( jpfClass, "error.no-begin-action" );
         }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java?view=diff&rev=124932&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java&r1=124931&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java&r2=124932
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
    Tue Jan 11 16:56:40 2005
@@ -27,7 +27,9 @@
 import com.sun.mirror.declaration.TypeDeclaration;
 import com.sun.mirror.declaration.AnnotationTypeElementDeclaration;
 import com.sun.mirror.declaration.MethodDeclaration;
+import com.sun.mirror.declaration.ClassDeclaration;
 import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.type.ClassType;
 
 import java.util.Collection;
 
@@ -99,28 +101,41 @@
     
     public static boolean actionExists( String actionName, TypeDeclaration 
type, AnnotationMirror annotationToIgnore,
                                         AnnotationProcessorEnvironment env, 
FlowControllerInfo fcInfo,
-                                        boolean checkInheritedSimpleActions )
+                                        boolean checkInheritedActions )
     {
-        //
-        // First look through the action methods.
-        //
-        Collection< ? extends MethodDeclaration > methods = type.getMethods();
+        if ( ! ( type instanceof ClassDeclaration ) )
+        {
+            return false;
+        }
         
-        for ( MethodDeclaration method : methods )
+        ClassDeclaration classDecl = ( ClassDeclaration ) type;
+        
+        do
         {
-            if ( method.getSimpleName().equals( actionName )
-                 && CompilerUtils.getAnnotation( method, ACTION_TAG_NAME ) != 
null )
+            //
+            // First look through the action methods.
+            //
+            Collection< ? extends MethodDeclaration > methods = 
classDecl.getMethods();
+            
+            for ( MethodDeclaration method : methods )
             {
-                return true;
+                if ( method.getSimpleName().equals( actionName )
+                     && CompilerUtils.getAnnotation( method, ACTION_TAG_NAME ) 
!= null )
+                {
+                    return true;
+                }
             }
-        }
+            
+            ClassType superType = classDecl.getSuperclass();
+            classDecl = superType != null ? superType.getDeclaration() : null;
+        } while ( classDecl != null );
         
         //
         // Next, look through the simple actions (annotations).
         //
         MergedControllerAnnotation mca = 
fcInfo.getMergedControllerAnnotation();
         Collection< AnnotationMirror > simpleActionAnnotations = 
-                checkInheritedSimpleActions
+                checkInheritedActions
                 ? mca.getSimpleActions()
                 : CompilerUtils.getAnnotationArrayValue( type, 
CONTROLLER_TAG_NAME, SIMPLE_ACTIONS_ATTR, true );
         

Added: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
     Tue Jan 11 16:56:40 2005
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.pageflow.faces.internal;
+
+import javax.faces.event.ActionListener;
+import javax.faces.event.ActionEvent;
+import javax.faces.event.AbortProcessingException;
+
+public class PageFlowActionListener
+        implements ActionListener
+{
+    private ActionListener _delegate;
+    
+    public PageFlowActionListener( ActionListener delegate )
+    {
+        _delegate = delegate;
+    }
+    
+    public void processAction( ActionEvent event ) throws 
AbortProcessingException
+    {
+    }
+}

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java?view=diff&rev=124932&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java&r1=124931&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java&r2=124932
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowApplication.java
        Tue Jan 11 16:56:40 2005
@@ -67,7 +67,7 @@
 
     public void setActionListener( ActionListener listener )
     {
-        _delegate.setActionListener( listener );
+        _delegate.setActionListener( new PageFlowActionListener( listener ) );
     }
 
     public Locale getDefaultLocale()

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java?view=diff&rev=124932&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java&r1=124931&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java&r2=124932
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/JavaControlUtils.java
 Tue Jan 11 16:56:40 2005
@@ -214,21 +214,34 @@
         }
 
         
-        Field[] fields = controlContainerClass.getDeclaredFields();
         HashMap< Field, PropertyMap > ret = new HashMap< Field, PropertyMap 
>();
+        boolean accessPrivateFields = true;
         
-        for ( int i = 0; i < fields.length; i++ )
+        do
         {
-            Field field = fields[i];
+            Field[] fields = controlContainerClass.getDeclaredFields();
             
-            if ( ! Modifier.isStatic( field.getModifiers() ) && 
field.getAnnotation( Control.class ) != null )
+            for ( int i = 0; i < fields.length; i++ )
             {
-                field.setAccessible( true );
-                ret.put( field, new AnnotatedElementMap( field ) );
+                Field field = fields[i];
+                int modifiers = field.getModifiers();
+                
+                if ( ! Modifier.isStatic( modifiers ) && field.getAnnotation( 
Control.class ) != null )
+                {
+                    if ( accessPrivateFields || ! Modifier.isPrivate( 
modifiers ) )
+                    {
+                        field.setAccessible( true );
+                        ret.put( field, new AnnotatedElementMap( field ) );
+                    }
+                }
             }
-        }
-
-        _controlFieldCache.put( className, ret );
+    
+            _controlFieldCache.put( className, ret );
+            
+            accessPrivateFields = false;
+            controlContainerClass = controlContainerClass.getSuperclass();
+        } while ( controlContainerClass != null );
+        
         return ret;
     } 
 }

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControl.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControl.java?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControl.java
    Tue Jan 11 16:56:40 2005
@@ -0,0 +1,9 @@
+package pageFlowCore.inheritControls;
+
+import org.apache.beehive.controls.api.bean.ControlInterface;
+
[EMAIL PROTECTED]
+public interface BaseControl
+{ 
+    public String hello();
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControlImpl.jcs
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControlImpl.jcs?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/pageFlowCore/inheritControls/BaseControlImpl.jcs
 Tue Jan 11 16:56:40 2005
@@ -0,0 +1,12 @@
+package pageFlowCore.inheritControls;
+
+import org.apache.beehive.controls.api.bean.ControlImplementation;
+
[EMAIL PROTECTED]
+public class BaseControlImpl implements BaseControl
+{ 
+    public String hello()
+    {
+        return "hi there";
+    }
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/Controller.jpf?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/Controller.jpf
  Tue Jan 11 16:56:40 2005
@@ -0,0 +1,13 @@
+package pageFlowCore.inheritControls;
+
+import org.apache.beehive.controls.api.bean.Control;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+
[EMAIL PROTECTED]()
+public abstract class Controller extends PageFlowController
+{
+    @Control()
+    protected BaseControlBean baseClassControl;
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/DerivedController.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/DerivedController.jpf?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/DerivedController.jpf
   Tue Jan 11 16:56:40 2005
@@ -0,0 +1,19 @@
+package pageFlowCore.inheritControls.derived;
+
+import pageFlowCore.inheritControls.Controller;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+
[EMAIL PROTECTED](
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
+public class DerivedController extends Controller
+{
+    public String getControlMessage()
+    {
+        return baseClassControl.hello();
+    }
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/index.jsp?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/inheritControls/derived/index.jsp
       Tue Jan 11 16:56:40 2005
@@ -0,0 +1,16 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" 
uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" 
uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        Inherited control says: <b>${pageFlow.controlMessage}</b>
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=124932&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=124931&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=124932
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
   (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
   Tue Jan 11 16:56:40 2005
@@ -3218,6 +3218,21 @@
          </features>
       </test>
       <test>
+         <name>InheritControls</name>
+         <description>Test of inheriting control member fields.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>bvt.struts11</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>PageFlow</feature>
+            <feature>Inheritance</feature>
+            <feature>Controls</feature>
+         </features>
+      </test>
+      <test>
          <name>IteratorTest</name>
          <description>Tests that warnings are returned for null object use by 
iterators</description>
          <webapp>coreWeb</webapp>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/InheritControls.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/InheritControls.xml?view=auto&rev=124932
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/InheritControls.xml
       Tue Jan 11 16:56:40 2005
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>InheritControls</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>11 Jan 2005, 04:47:05.273 PM MST</ses:startDate>
+   <ses:description>Test inheritance of control member 
fields.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/inheritControls/derived/DerivedController.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>71E360AEF8A8967BC8F6F2E16EE86351</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BkZJECYxQ0gonT6INiUZLr2qUwZ98y52JLnKaKC1TpnQrK4qbJeI!1758486163</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  
<ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=71E360AEF8A8967BC8F6F2E16EE86351; 
JSESSIONID=BkZJECYxQ0gonT6INiUZLr2qUwZ98y52JLnKaKC1TpnQrK4qbJeI!1758486163</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/inheritControls/derived/index.jsp";>
+    </head>
+    <body>
+        Inherited control says: <b>hi there</b>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>11 Jan 2005, 04:47:18.662 PM MST</ses:endDate>
+   <ses:testCount>1</ses:testCount>
+</ses:recorderSession>

Reply via email to