Author: kylem
Date: Mon Oct  4 21:26:25 2004
New Revision: 53777

Removed:
   incubator/beehive/trunk/controls/drt/build.xml
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/Event.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/EventImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/Hello.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/HelloImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/InnerOperExtend.jcx
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/InnerOperationImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/OperExcept.jcx
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/OperExtend.jcx
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/Operation.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/OperationImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/basic/Outer.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/beaninfo/InfoTest.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/beaninfo/InfoTestImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/checker/HelloChecked.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/checker/HelloCheckedExtend.jcx
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/checker/HelloCheckedImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/checker/HelloChecker.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/composition/Composer.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/composition/ComposerImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/composition/Nested.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/composition/NestedAssembler.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/composition/NestedImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/context/BaseContext.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/context/BaseContextImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/properties/NestProps.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/properties/NestPropsImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/properties/Props.java
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/properties/PropsExtension.jcx
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/properties/PropsImpl.jcs
   
incubator/beehive/trunk/controls/drt/controls/org/apache/beehive/controls/test/util/TestContext.java
   
incubator/beehive/trunk/controls/drt/tests/org/apache/beehive/controls/test/beaninfo/BeanInfoTest.java
   
incubator/beehive/trunk/controls/drt/tests/org/apache/beehive/controls/test/context/ContextTest.java
   
incubator/beehive/trunk/controls/drt/tests/org/apache/beehive/controls/test/properties/PropTest.java
   
incubator/beehive/trunk/controls/drt/tests/org/apache/beehive/controls/test/util/TestBeanContext.java
Modified:
   incubator/beehive/trunk/controls/build.xml
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlClient.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlImpl.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlInterface.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/GenClass.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlAnnotationProcessor.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlClientAnnotationProcessor.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpRequestService.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpResponseService.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletBeanContext.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletRequestService.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletResponseService.java
   
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletServiceProvider.java
   incubator/beehive/trunk/controls/test/build.xml
   
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/drivers/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
   
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/GetServiceTest.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/driver/context/DriveServiceGetter.java
Log:
- Modified implementation of web tier contextual services for 
ServletRequest,ServletResponse,
HttpServletRequest, and HttpServletResponse to return instances of the 
appropriate
javax.servlet.*Wrapper classes.  This enables request unwrapping where 
desirable.  Augmented
and cleaned up the contextual service tests.

- Moved generation of supporting text files from the check phase to the 
generate phase of
annotation processing.  Only types (needed for check) should be generated 
during the check
phase of TwoPhaseAnnotationProcessor.

- Removed the controls/drt directory and all files beneath it.  These tests 
have now been
migrated into the main test set, and are run by 'ant checkin.tests' in the test 
directory.
There is still a 'drt' target at the root level, which now invokes this target.



Modified: incubator/beehive/trunk/controls/build.xml
==============================================================================
--- incubator/beehive/trunk/controls/build.xml  (original)
+++ incubator/beehive/trunk/controls/build.xml  Mon Oct  4 21:26:25 2004
@@ -254,7 +254,6 @@
   <!-- drt -->
   <!-- ==================================================================== -->
   <target name="drt" depends="deploy">
-    <ant dir="./drt" target="drt" inheritAll="false"/>
     <ant dir="./test" target="checkin.tests" inheritAll="false"/>
   </target>
 

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java
       (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/bean/ControlBeanContext.java
       Mon Oct  4 21:26:25 2004
@@ -574,6 +574,13 @@
     public <T> T getService(Class<T> serviceClass, Object selector)
     {
         //
+        // If the requested service is a ControlBeanContext instance, the 
current instance
+        // can be returned.
+        //
+        if 
(serviceClass.equals(org.apache.beehive.controls.api.context.ControlBeanContext.class))
+            return (T)this;
+
+        //
         // The parent BeanContext is responsible for providing requested 
services.  If
         // no parent context is available or it is does not manage services, 
then no service.
         //

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlClient.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlClient.java
       (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlClient.java
       Mon Oct  4 21:26:25 2004
@@ -103,7 +103,7 @@
     /**
      * Returns the information necessary to generate a ControlBean from this 
ControlInterface
      */
-    public List<GeneratorOutput> getGeneratorOutput(Filer filer) throws 
IOException
+    public List<GeneratorOutput> getGenerateOutput(Filer filer) throws 
IOException
     {
         HashMap<String,Object> map = new HashMap<String,Object>();
         map.put("client", this);                                // control 
client

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlImpl.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlImpl.java
 (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlImpl.java
 Mon Oct  4 21:26:25 2004
@@ -151,9 +151,10 @@
     }
 
     /**
-     * Returns the information necessary to generate a ControlBean from this 
ControlInterface
+     * Returns the information necessary to generate a ControlInitializer from 
this
+     * ControlImplementation.
      */
-    public List<GeneratorOutput> getGeneratorOutput(Filer filer) throws 
IOException
+    public List<GeneratorOutput> getCheckOutput(Filer filer) throws IOException
     {
         HashMap<String,Object> map = new HashMap<String,Object>();
         map.put("impl", this);                                  // control 
implementation

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlInterface.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlInterface.java
    (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/ControlInterface.java
    Mon Oct  4 21:26:25 2004
@@ -223,7 +223,7 @@
     /**
      * Returns the information necessary to generate a ControlBean from this 
ControlInterface
      */
-    public List<GeneratorOutput> getGeneratorOutput(Filer filer) throws 
IOException
+    public List<GeneratorOutput> getCheckOutput(Filer filer) throws IOException
     {
         HashMap<String,Object> map = new HashMap<String,Object>();
 
@@ -249,6 +249,23 @@
             new GeneratorOutput(beanInfoWriter, 
                                
"org/apache/beehive/controls/runtime/generator/ControlBeanInfo.vm", map);
         genList.add(beanInfoSource);
+
+        return genList;
+    }
+
+    /**
+     * Returns the information necessary to generate a packaging information 
from this 
+     * ControlInterface.  Since this information is not needed during type 
validation,
+     * it can be delated until the generate phase.
+     */
+    public List<GeneratorOutput> getGenerateOutput(Filer filer) throws 
IOException
+    {
+        HashMap<String,Object> map = new HashMap<String,Object>();
+
+        map.put("intf", this);                  // the control interface
+        map.put("bean", _bean);
+
+        ArrayList<GeneratorOutput> genList = new ArrayList();
 
         //
         // the ControlBean MANIFEST.MF section

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/GenClass.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/GenClass.java
    (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/GenClass.java
    Mon Oct  4 21:26:25 2004
@@ -68,11 +68,21 @@
     {
         return null;
     }
+    
+    /**
+     * Returns the list of generated files derived from this GenClass during 
the
+     * check phase of annotation processing.
+     */
+    public List<GeneratorOutput> getCheckOutput(Filer filer) throws IOException
+    {  
+        return null; 
+    }
 
     /**
-     * Returns the list of generated files derived from this GenClass.
+     * Returns the list of generated files derived from this GenClass during 
the
+     * generate phase of annotation processing.
      */
-    public List<GeneratorOutput> getGeneratorOutput(Filer filer) throws 
IOException
+    public List<GeneratorOutput> getGenerateOutput(Filer filer) throws 
IOException
     {  
         return null; 
     }

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlAnnotationProcessor.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlAnnotationProcessor.java
      (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlAnnotationProcessor.java
      Mon Oct  4 21:26:25 2004
@@ -72,7 +72,7 @@
         {
             try
             {
-                List<GeneratorOutput> genList = 
genClass.getGeneratorOutput(env.getFiler());
+                List<GeneratorOutput> genList = 
genClass.getCheckOutput(env.getFiler());
                 if (genList == null || genList.size() == 0)
                     return;
 
@@ -88,9 +88,42 @@
         }
     }
 
-    @Override
+    @Override 
     public void generate(Declaration decl)
     {
+        AnnotationProcessorEnvironment env = 
getAnnotationProcessorEnvironment();
+        GenClass genClass = null;
+        if (decl.getAnnotation(ControlInterface.class) != null)
+        {
+            genClass = new AptControlInterface(decl, env);
+        }
+        if (decl.getAnnotation(ControlExtension.class) != null)
+        {
+            genClass = new AptControlInterface(decl, env);
+        }
+        else if (decl.getAnnotation(ControlImplementation.class) != null)
+        {
+            genClass = new AptControlImplementation(decl, env);
+        }
+        
+        if ( genClass != null )
+        {
+            try
+            {
+                List<GeneratorOutput> genList = 
genClass.getGenerateOutput(env.getFiler());
+                if (genList == null || genList.size() == 0)
+                    return;
+
+                for (GeneratorOutput genOut : genList)
+                {
+                    getGenerator().generate(genOut);
+                }
+            }
+            catch (IOException ioe)
+            {
+                throw new CodeGenerationException("Code generation failure: ", 
ioe);
+            }
+        }
     }
 
     /**

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlClientAnnotationProcessor.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlClientAnnotationProcessor.java
        (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/generator/apt/ControlClientAnnotationProcessor.java
        Mon Oct  4 21:26:25 2004
@@ -151,7 +151,7 @@
             {
                 try
                 {
-                    List<GeneratorOutput> genList = 
genClass.getGeneratorOutput(env.getFiler());
+                    List<GeneratorOutput> genList = 
genClass.getGenerateOutput(env.getFiler());
                     if (genList == null || genList.size() == 0)
                         return;
 

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpRequestService.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpRequestService.java
    (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpRequestService.java
    Mon Oct  4 21:26:25 2004
@@ -18,6 +18,7 @@
  */
 
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.ServletRequest;
 
 /**
@@ -29,6 +30,32 @@
  */
 /* package */ class HttpRequestService extends ServletRequestService 
implements HttpServletRequest
 {
+    /**
+     * This static helper class derives from 
javax.servlet.HttpServletRequestWrapper and can
+     * be used to wrap a HttpServletRequestService instance in cases where the 
client expects
+     * to be able to use the standard wrapper interfaces to unwrap requests. 
+     */ 
+    private static class Wrapper extends HttpServletRequestWrapper
+    {
+        Wrapper(HttpRequestService requestService)
+        {
+            super(requestService);
+            _requestService = requestService;
+        }
+
+        /**
+         * Overrides the default HttpServletRequestWrapper.getRequest 
implementation.  Rather
+         * than just returning the request passed into the constructor (i.e. 
the request
+         * service), it will go unwrap step further and return the current 
(active) http
+         * request.
+         */ 
+        public HttpServletRequest getRequest()
+        {
+            return _requestService.getHttpServletRequest();
+        }
+
+        HttpRequestService _requestService;
+    }
     
     /* package */ HttpRequestService(ServletBeanContext beanContext)
     {
@@ -41,6 +68,16 @@
         if (! (servletRequest instanceof HttpServletRequest))
             throw new IllegalStateException("Current request is not an 
HttpServletRequest");
         return (HttpServletRequest)servletRequest;
+    }
+
+    /**
+     * This method returns a HttpServletRequestWrapper instance that wraps the 
request service.
+     * This is useful in instances where there is code that uses the wrapper 
interfaces to
+     * unwrap requests to get to the 'root' request.
+     */ 
+    /* package */ HttpServletRequestWrapper getHttpRequestWrapper()
+    {
+        return new Wrapper(this);
     }
 
     public java.lang.String getAuthType()

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpResponseService.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpResponseService.java
   (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/HttpResponseService.java
   Mon Oct  4 21:26:25 2004
@@ -18,6 +18,7 @@
  */
 
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
 import javax.servlet.ServletResponse;
 
 /**
@@ -27,8 +28,36 @@
  * only occur during the servlet request processing lifecycle, then delegates 
to the underlying
  * HttpServletResponse instance for actual services.
  */
-/* package */ class HttpResponseService extends ServletResponseService 
implements HttpServletResponse
+/* package */ class HttpResponseService extends ServletResponseService 
+                                        implements HttpServletResponse
 {
+    /**
+     * This static helper class derives from 
javax.servlet.HttpServletResponseWrapper and can
+     * be used to wrap a HttpServletResponseService instance in cases where 
the client expects
+     * to be able to use the standard wrapper interfaces to unwrap responses. 
+     */ 
+    private static class Wrapper extends HttpServletResponseWrapper
+    {
+        Wrapper(HttpResponseService responseService)
+        {
+            super(responseService);
+            _responseService = responseService;
+        }
+
+        /**
+         * Overrides the default HttpServletRequestWrapper.getResponse 
implementation.  Rather
+         * than just returning the request passed into the constructor (i.e. 
the request
+         * service), it will go unwrap step further and return the current 
(active) http
+         * response.
+         */ 
+        public HttpServletResponse getResponse()
+        {
+            return _responseService.getHttpServletResponse();
+        }
+
+        HttpResponseService _responseService;
+    }
+    
     
     /* package */ HttpResponseService(ServletBeanContext beanContext)
     {
@@ -41,6 +70,16 @@
         if (! (servletRequest instanceof HttpServletResponse))
             throw new IllegalStateException("Current request is not an 
HttpServletResponse");
         return (HttpServletResponse)servletRequest;
+    }
+
+    /**
+     * This method returns a ServletRequestWrapper instance that wraps the 
request service.
+     * This is useful in instances where there is code that uses the wrapper 
interfaces to
+     * unwrap requests to get to the 'root' request.
+     */ 
+    /* package */ HttpServletResponse getHttpResponseWrapper()
+    {
+        return new Wrapper(this);
     }
 
     public void addCookie(javax.servlet.http.Cookie cookie)

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletBeanContext.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletBeanContext.java
    (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletBeanContext.java
    Mon Oct  4 21:26:25 2004
@@ -47,6 +47,11 @@
         ServletRequest _request;
     }
 
+    public ServletBeanContext()
+    {
+        super();
+    }
+
     /**
      * Called by BeanContextSupport superclass during construction and 
deserialization to
      * initialize subclass transient state
@@ -151,5 +156,17 @@
         return  reqContext._response;
     }
 
+    /**
+     * Enables/disable the use of request/response wrappers for this context.  
By default,
+     * wrappers are enabled if this API is not invoked.
+     */
+    public void setWrappers(boolean useWrappers)
+    {
+        _useWrappers = useWrappers;
+    }
+
+    protected boolean useWrappers() { return _useWrappers; }
+
+    private boolean _useWrappers = true;
     private Stack<RequestContext> _reqStack = new Stack<RequestContext>();
 }

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletRequestService.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletRequestService.java
 (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletRequestService.java
 Mon Oct  4 21:26:25 2004
@@ -18,6 +18,7 @@
  */
 
 import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestWrapper;
 
 import org.apache.beehive.controls.runtime.bean.ControlContainerContext;
 
@@ -30,6 +31,32 @@
  */
 /* package */ class ServletRequestService implements ServletRequest
 {
+    /**
+     * This static helper class derives from 
javax.servlet.ServletRequestWrapper and can
+     * be used to wrap a ServletRequestService instance in cases where the 
client expects
+     * to be able to use the standard wrapper interfaces to unwrap requests. 
+     */ 
+    private static class Wrapper extends ServletRequestWrapper
+    {
+        Wrapper(ServletRequestService requestService)
+        {
+            super(requestService);
+            _requestService = requestService;
+        }
+
+        /**
+         * Overrides the default ServletRequestWrapper.getRequest 
implementation.  Rather
+         * than just returning the request passed into the constructor (i.e. 
the request
+         * service), it will go unwrap step further and return the current 
(active) http
+         * request.
+         */ 
+        public ServletRequest getRequest()
+        {
+            return _requestService.getServletRequest();
+        }
+
+        ServletRequestService _requestService;
+    }
     
     /* package */ ServletRequestService(ServletBeanContext beanContext)
     {
@@ -52,6 +79,16 @@
             _beanContext = (ServletBeanContext)ccc;
         }
         return _beanContext;
+    }
+
+    /**
+     * This method returns a ServletRequestWrapper instance that wraps the 
request service.
+     * This is useful in instances where there is code that uses the wrapper 
interfaces to
+     * unwrap requests to get to the 'root' request.
+     */ 
+    /* package */ ServletRequestWrapper getRequestWrapper()
+    {
+        return new Wrapper(this);
     }
 
     final protected ServletRequest getServletRequest()

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletResponseService.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletResponseService.java
        (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletResponseService.java
        Mon Oct  4 21:26:25 2004
@@ -18,6 +18,7 @@
  */
 
 import javax.servlet.ServletResponse;
+import javax.servlet.ServletResponseWrapper;
 
 import org.apache.beehive.controls.runtime.bean.ControlContainerContext;
 
@@ -30,6 +31,32 @@
  */
 /* package */ class ServletResponseService implements ServletResponse
 {
+    /**
+     * This static helper class derives from 
javax.servlet.ServletRequestWrapper and can
+     * be used to wrap a ServletRequestService instance in cases where the 
client expects
+     * to be able to use the standard wrapper interfaces to unwrap requests. 
+     */ 
+    private static class Wrapper extends ServletResponseWrapper
+    {
+        Wrapper(ServletResponseService responseService)
+        {
+            super(responseService);
+            _responseService = responseService;
+        }
+
+        /**
+         * Overrides the default ServletRequestWrapper.getRequest 
implementation.  Rather
+         * than just returning the request passed into the constructor (i.e. 
the request
+         * service), it will go unwrap step further and return the current 
(active) http
+         * request.
+         */ 
+        public ServletResponse getResponse()
+        {
+            return _responseService.getServletResponse();
+        }
+
+        ServletResponseService _responseService;
+    }
     
     /* package */ ServletResponseService(ServletBeanContext beanContext)
     {
@@ -60,6 +87,16 @@
         if (servletResponse == null)
             throw new IllegalStateException("No access to ServletResponse 
outside request processing");
         return servletResponse;
+    }
+
+    /**
+     * This method returns a ServletResponseWrapper instance that wraps the 
response service.
+     * This is useful in instances where there is code that uses the wrapper 
interfaces to
+     * unwrap responses to get to the 'root' response.
+     */ 
+    /* package */ ServletResponseWrapper getResponseWrapper()
+    {
+        return new Wrapper(this);
     }
 
     public java.lang.String getCharacterEncoding()

Modified: 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletServiceProvider.java
==============================================================================
--- 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletServiceProvider.java
        (original)
+++ 
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/servlet/ServletServiceProvider.java
        Mon Oct  4 21:26:25 2004
@@ -23,9 +23,13 @@
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletRequest;
+import javax.servlet.ServletRequestWrapper;
 import javax.servlet.ServletResponse;
+import javax.servlet.ServletResponseWrapper;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
 
 /**
  * The ServletContextProvider helper class acts at the 
BeanContextServiceProvider provides
@@ -54,16 +58,36 @@
             return new ServletContextService(sbc);
 
         if (serviceClass.equals(HttpServletRequest.class))
-            return new HttpRequestService(sbc);
+        {
+            HttpRequestService requestService = new HttpRequestService(sbc);
+            if (sbc.useWrappers())
+                return requestService.getHttpRequestWrapper();
+            return requestService;
+        }
 
         if (serviceClass.equals(HttpServletResponse.class))
-            return new HttpResponseService(sbc);
+        {
+            HttpResponseService responseService = new HttpResponseService(sbc);
+            if (sbc.useWrappers())
+                return responseService.getHttpResponseWrapper();
+            return responseService;
+        }
 
         if (serviceClass.equals(ServletRequest.class))
-            return new ServletRequestService(sbc);
+        {
+            ServletRequestService requestService = new 
ServletRequestService(sbc);
+            if (sbc.useWrappers())
+                return requestService.getRequestWrapper();
+            return requestService;
+        }
 
         if (serviceClass.equals(ServletResponse.class))
-            return new ServletResponseService(sbc);
+        {
+            ServletResponseService responseService = new 
ServletResponseService(sbc);
+            if (sbc.useWrappers())
+                return responseService.getResponseWrapper();
+            return responseService;
+        }
 
         return null;
     }

Modified: incubator/beehive/trunk/controls/test/build.xml
==============================================================================
--- incubator/beehive/trunk/controls/test/build.xml     (original)
+++ incubator/beehive/trunk/controls/test/build.xml     Mon Oct  4 21:26:25 2004
@@ -239,7 +239,7 @@
     
     <target name="run.test">
        <parallel>
-               <antcall target="-tomcat.start"/>
+               <antcall target="tomcat.start"/>
                <sequential>
                        <echo message="start a new thread to build 
controlsWeb"/>
                        <ant dir ="./webapps" antfile="build.xml" 
target="build"/>
@@ -251,23 +251,28 @@
                        <antcall target="run"/>
                        <ant dir ="./webapps" antfile="build.xml" 
target="undeploy"/>
                        <echo message="continue the new thread, undeploy 
controlsWeb"/>
-                       <ant dir ="./webapps" antfile="build.xml" 
target="stop"/>
-                       <echo message="finish the new thread, stop tomcat 
server"/>
+                       <echo message="stop tomcat server, finish the new 
thread"/>
+                       <antcall target="tomcat.stop"/>
                </sequential>
         </parallel>
     </target>   
 
   <!-- =========================================================== -->
-  <!-- targets to start Tomcat server -->
+  <!-- target to start Tomcat server -->
   <!-- =========================================================== -->
 
-    <target name="-tomcat.start" if="do.start.tomcat">
+    <target name="tomcat.start">
        <echo message="starting tomcat"/>
        <ant dir ="./webapps" antfile="build.xml" target="start"/>
     </target>
 
-    <target name="tomcat.start">
-       <ant dir ="./webapps" antfile="build.xml" target="start"/>
+  <!-- =========================================================== -->
+  <!-- target to stop Tomcat server -->
+  <!-- =========================================================== -->
+
+    <target name="tomcat.stop">
+       <echo message="stopping tomcat"/>
+       <ant dir ="./webapps" antfile="build.xml" target="stop"/>
     </target>
 
   <!-- =========================================================== -->

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
     Mon Oct  4 21:26:25 2004
@@ -1,13 +1,13 @@
-package org.apache.beehive.controls.test.controls.context;
-
-import java.lang.annotation.Annotation;
-import org.apache.beehive.controls.api.bean.ControlInterface;
-
-/**
- * A control interface to test control context service
- */
[EMAIL PROTECTED]
-public interface ServiceGetter
-{
-       public String getService(Class theService, Object selector);
-}
+package org.apache.beehive.controls.test.controls.context;
+
+import java.lang.annotation.Annotation;
+import org.apache.beehive.controls.api.bean.ControlInterface;
+
+/**
+ * A control interface to test control context service
+ */
[EMAIL PROTECTED]
+public interface ServiceGetter
+{
+       public Object getService(Class theService, Object selector);
+}

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
  Mon Oct  4 21:26:25 2004
@@ -1,29 +1,25 @@
-package org.apache.beehive.controls.test.controls.context;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-
-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;
-
-/**
- * A control impl that retrieves specific service via controlContext
- */
[EMAIL PROTECTED]
-public class ServiceGetterImpl implements ServiceGetter
-{ 
-
-       @Context ControlBeanContext context;
-
-       public String getService(Class theService, Object selector){
-               
-               Object obj=context.getService(theService, selector);
-               if (obj==null)
-                       return "-1";
-               else
-                       return "0";
-       }
-
-} 
+package org.apache.beehive.controls.test.controls.context;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+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;
+
+/**
+ * A control implementation that retrieves specific service via controlContext
+ */
[EMAIL PROTECTED]
+public class ServiceGetterImpl implements ServiceGetter
+{ 
+
+       @Context ControlBeanContext context;
+
+       public Object getService(Class theService, Object selector){
+               
+               return context.getService(theService, selector);
+       }
+
+} 

Modified: 
incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
   (original)
+++ 
incubator/beehive/trunk/controls/test/src/drivers/org/apache/beehive/controls/test/driver/context/DriveServiceGetter.java
   Mon Oct  4 21:26:25 2004
@@ -3,7 +3,16 @@
 
 import java.beans.Beans;
 import java.beans.beancontext.BeanContextServices;
+import org.apache.beehive.controls.api.context.ControlBeanContext;
 import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.ServletRequestWrapper;
+import javax.servlet.ServletResponseWrapper;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponseWrapper;
 //import javax.ejb.EJBContext;
 import org.apache.beehive.test.tools.milton.common.Report;
 import org.apache.beehive.controls.test.controls.context.ServiceGetterBean;
@@ -58,21 +67,28 @@
                }
                return report;
        }
+
+    private void checkService(Class serviceClass, boolean expected, Report 
report){
+        Object service = myControl.getService(serviceClass, null);
+        if (expected && serviceClass == null) {
+                       report.setStatus(Report.FAIL);
+                       report.addMessage("Expected " + serviceClass.getName() 
+ ":" + service + "\n");
+        }
+        else if (!expected && serviceClass != null) {
+                       report.setStatus(Report.FAIL);
+            report.addMessage("Unexpected " + serviceClass.getName() + ":" + 
service + "\n");
+        }
+    }
+
        private Report doJavaEnvTest(){
 
                Report report=new Report();
 
-               String 
beanContext=myControl.getService(BeanContextServices.class, null);
-               String 
servletContext=myControl.getService(ServletContext.class, null);
-               //String ejbContext=serviceGetter.getService(EJBContext.class, 
null);
-
-               if (beanContext.equals("0") && servletContext.equals("-1"))
-                       report.setStatus(Report.PASS);
-               else{
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("get 
BeanContextServices:"+beanContext+
-                               "get ServletContext:"+servletContext);
-               }
+           report.setStatus(Report.PASS);
+        checkService(BeanContextServices.class, true, report);
+        checkService(ControlBeanContext.class, true, report);
+        checkService(ServletContext.class, false, report);
+               //checkService(EJBContext.class, false, report);
 
                return report;
        }
@@ -81,17 +97,38 @@
 
                Report report=new Report();
 
-               String 
beanContext=myControl.getService(BeanContextServices.class, null);
-               String 
servletContext=myControl.getService(ServletContext.class, null);
-               //String ejbContext=serviceGetter.getService(EJBContext.class, 
null);
-
-               if (beanContext.equals("0") && servletContext.equals("0"))
-                       report.setStatus(Report.PASS);
-               else{
+           report.setStatus(Report.PASS);
+        checkService(BeanContextServices.class, true, report);
+        checkService(ControlBeanContext.class, true, report);
+        checkService(ServletContext.class, true, report);
+        checkService(ServletRequest.class, true, report);
+        checkService(ServletResponse.class, true, report);
+        checkService(HttpServletRequest.class, true, report);
+        checkService(HttpServletResponse.class, true, report);
+               //checkService(EJBContext.class, false, report);
+
+        // Verify that request/response services implement the appropriate 
servlet
+        // wrapper classes, since pageflow/netui has a dependency on this
+        if (! (myControl.getService(ServletRequest.class, null) instanceof 
ServletRequestWrapper))
+        {
                        report.setStatus(Report.FAIL);
-                       report.setMessage("get 
BeanContextServices:"+beanContext+
-                               "get ServletContext:"+servletContext);
-               }
+            report.addMessage("ServletRequest service does not implement the 
wrapper interface");
+        }
+        if (! (myControl.getService(ServletResponse.class, null) instanceof 
ServletResponseWrapper))
+        {
+                       report.setStatus(Report.FAIL);
+            report.addMessage("ServletResponse service does not implement the 
wrapper interface");
+        }
+        if (! (myControl.getService(HttpServletRequest.class, null) instanceof 
HttpServletRequestWrapper))
+        {
+                       report.setStatus(Report.FAIL);
+            report.addMessage("HttpServletRequest service does not implement 
the wrapper interface");
+        }
+        if (! (myControl.getService(HttpServletResponse.class, null) 
instanceof HttpServletResponseWrapper))
+        {
+                       report.setStatus(Report.FAIL);
+            report.addMessage("HttpServletResponse service does not implement 
the wrapper interface");
+        }
 
                return report;
        }
@@ -100,20 +137,12 @@
 
                Report report=new Report();
 
-               String 
beanContext=myControl.getService(BeanContextServices.class, null);
-               String 
servletContext=myControl.getService(ServletContext.class, null);
-               //String ejbContext=serviceGetter.getService(EJBContext.class, 
null);
-
-               if (beanContext.equals("0") && servletContext.equals("0"))
-                       report.setStatus(Report.PASS);
-               else{
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("get 
BeanContextServices:"+beanContext+
-                               "get ServletContext:"+servletContext);
-               }
+           report.setStatus(Report.PASS);
+        checkService(BeanContextServices.class, true, report);
+        checkService(ControlBeanContext.class, true, report);
+        checkService(ServletContext.class, false, report);
+               //checkService(EJBContext.class, true, report);
 
                return report;
-
        }
-
 }

Modified: 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/GetServiceTest.java
==============================================================================
--- 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/GetServiceTest.java
   (original)
+++ 
incubator/beehive/trunk/controls/test/src/units/org/apache/beehive/controls/test/java/context/GetServiceTest.java
   Mon Oct  4 21:26:25 2004
@@ -1,91 +1,91 @@
-package org.apache.beehive.controls.test.java.context;
-
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import javax.servlet.ServletContext;
-import java.beans.Beans;
-import java.beans.beancontext.BeanContextServices;
-import org.apache.beehive.controls.api.bean.Control;
-import org.apache.beehive.controls.api.bean.ControlBean;
-import org.apache.beehive.controls.test.controls.context.ServiceGetterBean;
-import org.apache.beehive.test.tools.mantis.annotations.tch.Freq;
-import org.apache.beehive.test.tools.mantis.annotations.tch.Status;
-
-
-/**
- * A TestCase that tests accessing available services via control context.
- * All tests on controls instantiated declaratively are deactivated until this 
feature is supported.
- */
-public class GetServiceTest extends TestCase
-{
-    public GetServiceTest( String s ) { super( s ); }
-
-    public void setUp() { }
-
-       /**
-        * A control that exposes a function to access available services
-        * via the control context service
-        */
-    @Control
-    public ServiceGetterBean serviceGetter;
-
-    /**
-     * Tests accessing servlet service via controls' context service
-     * In java environment, this should be "NULL"
-     * The control is instantiated by declaration
-     */
-       @Freq("checkin")
-       @Status("inactive")
-    public void testGetServletContextByDeclaration() throws Exception
-    {
-               Assert.assertNotNull(serviceGetter);
-               String result=serviceGetter.getService(ServletContext.class, 
null);
-               Assert.assertEquals("-1",result);
-       }
-
-    /**
-     * Tests accessing BeanContextServices via controls' context service.
-     * In java environment, this should be "0"
-     * The control is instantiated by declaration
-     */
-       @Freq("checkin")
-       @Status("inactive")
-    public void testGetBeanContextServicesByDeclaration() throws Exception
-    {
-               Assert.assertNotNull(serviceGetter);
-               String 
result=serviceGetter.getService(BeanContextServices.class, null);
-               Assert.assertEquals("0",result);
-       }
-
-    /**
-     * Tests accessing servlet service via controls' context service
-     * In java environment, this should be "NULL"
-     * The control is instantiated programmatically
-     */
-       @Freq("checkin")
-    public void testGetServletContextByProgram() throws Exception
-    {
-               ServiceGetterBean 
getterbean=(ServiceGetterBean)java.beans.Beans.instantiate(
-                       Thread.currentThread().getContextClassLoader() ,
-                       
"org.apache.beehive.controls.test.controls.context.ServiceGetterBean");
-               String result=getterbean.getService(ServletContext.class, null);
-               Assert.assertEquals("-1",result);
-       }
-
-    /**
-     * Tests accessing BeanContextServices via controls' context service.
-     * In java environment, this should be "0"
-     * The control is instantiated programmatically
-     */
-       @Freq("detailed")
-    public void testGetBeanContextServicesByProgram() throws Exception
-    {
-               ServiceGetterBean 
getterbean=(ServiceGetterBean)java.beans.Beans.instantiate(
-                       Thread.currentThread().getContextClassLoader() ,
-                       
"org.apache.beehive.controls.test.controls.context.ServiceGetterBean");
-               String result=getterbean.getService(BeanContextServices.class, 
null);
-               Assert.assertEquals("0",result);
-       }
-
-}
+package org.apache.beehive.controls.test.java.context;
+
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+import javax.servlet.ServletContext;
+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.api.context.ControlBeanContext;
+import org.apache.beehive.controls.test.controls.context.ServiceGetterBean;
+import org.apache.beehive.test.tools.mantis.annotations.tch.Freq;
+import org.apache.beehive.test.tools.mantis.annotations.tch.Status;
+
+
+/**
+ * A TestCase that tests accessing available services via control context.
+ * All tests on controls instantiated declaratively are deactivated until this 
feature is supported.
+ */
+public class GetServiceTest extends TestCase
+{
+    public GetServiceTest( String s ) { super( s ); }
+
+    public void setUp() { }
+
+       /**
+        * A control that exposes a function to access available services
+        * via the control context service
+        */
+    @Control
+    public ServiceGetterBean serviceGetter;
+
+    /**
+     * Tests accessing servlet service via controls' context service
+     * In java environment, this should be "NULL"
+     * The control is instantiated by declaration
+     */
+       @Freq("checkin")
+       @Status("inactive")
+    public void testGetServletContextByDeclaration() throws Exception
+    {
+               Assert.assertNotNull(serviceGetter);
+               Object service=serviceGetter.getService(ServletContext.class, 
null);
+               Assert.assertNull(service);
+       }
+
+    /**
+     * Tests accessing ControlBeanContext via controls' context service.
+     * In java environment, this should be an instanceof ControlBeanContext
+     * The control is instantiated by declaration
+     */
+       @Freq("checkin")
+       @Status("inactive")
+    public void testGetControlBeanContextByDeclaration() throws Exception
+    {
+               Assert.assertNotNull(serviceGetter);
+               Object 
service=serviceGetter.getService(ControlBeanContext.class, null);
+               Assert.assertTrue(service instanceof ControlBeanContext);
+       }
+
+    /**
+     * Tests accessing servlet service via controls' context service
+     * In java environment, this should be "NULL"
+     * The control is instantiated programmatically
+     */
+       @Freq("checkin")
+    public void testGetServletContextByProgram() throws Exception
+    {
+               ServiceGetterBean 
getterbean=(ServiceGetterBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.context.ServiceGetterBean");
+               Object service=getterbean.getService(ServletContext.class, 
null);
+               Assert.assertNull(service);
+       }
+
+    /**
+     * Tests accessing ControlBeanContext via controls' context service.
+     * In java environment, this should be "0"
+     * The control is instantiated programmatically
+     */
+       @Freq("detailed")
+    public void testGetControlBeanContextByProgram() throws Exception
+    {
+               ServiceGetterBean 
getterbean=(ServiceGetterBean)java.beans.Beans.instantiate(
+                       Thread.currentThread().getContextClassLoader() ,
+                       
"org.apache.beehive.controls.test.controls.context.ServiceGetterBean");
+               Object service=getterbean.getService(ControlBeanContext.class, 
null);
+               Assert.assertTrue(service instanceof ControlBeanContext);
+       }
+
+}

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
     Mon Oct  4 21:26:25 2004
@@ -1,13 +1,13 @@
-package org.apache.beehive.controls.test.controls.context;
-
-import java.lang.annotation.Annotation;
-import org.apache.beehive.controls.api.bean.ControlInterface;
-
-/**
- * A control interface to test control context service
- */
[EMAIL PROTECTED]
-public interface ServiceGetter
-{
-       public String getService(Class theService, Object selector);
-}
+package org.apache.beehive.controls.test.controls.context;
+
+import java.lang.annotation.Annotation;
+import org.apache.beehive.controls.api.bean.ControlInterface;
+
+/**
+ * A control interface to test control context service
+ */
[EMAIL PROTECTED]
+public interface ServiceGetter
+{
+       public Object getService(Class theService, Object selector);
+}

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
  Mon Oct  4 21:26:25 2004
@@ -1,29 +1,25 @@
-package org.apache.beehive.controls.test.controls.context;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-
-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;
-
-/**
- * A control implementation that retrieves specific service via controlContext
- */
[EMAIL PROTECTED]
-public class ServiceGetterImpl implements ServiceGetter
-{ 
-
-       @Context ControlBeanContext context;
-
-       public String getService(Class theService, Object selector){
-               
-               Object obj=context.getService(theService, selector);
-               if (obj==null)
-                       return "-1";
-               else
-                       return "0";
-       }
-
-} 
+package org.apache.beehive.controls.test.controls.context;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+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;
+
+/**
+ * A control implementation that retrieves specific service via controlContext
+ */
[EMAIL PROTECTED]
+public class ServiceGetterImpl implements ServiceGetter
+{ 
+
+       @Context ControlBeanContext context;
+
+       public Object getService(Class theService, Object selector){
+               
+               return context.getService(theService, selector);
+       }
+
+} 

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
  Mon Oct  4 21:26:25 2004
@@ -1,119 +1,121 @@
-package org.apache.beehive.controls.test.driver.context;
-
-
-import java.beans.Beans;
-import java.beans.beancontext.BeanContextServices;
-import javax.servlet.ServletContext;
-//import javax.ejb.EJBContext;
-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 control context service.
- * By invoking methods on ServiceGetterBean, features of context service are 
verified.
- */
-
-public class DriveServiceGetter
-{
-       public static String ENV_SERVLET="servlet container";
-       public static String ENV_EJB="ejb container";
-       public static String ENV_JAVA="java environment";
-
-       private ServiceGetterBean myControl;
-       private boolean inJavaEnv=false;
-       private boolean inServletContainer=false;
-       private boolean inEJBContainer=false;
-
-       public void setControl(ServiceGetterBean aControl){
-
-               myControl=aControl;
-       }
-
-       public void setTestEnv(boolean javaEnv,boolean servletEnv, boolean 
ejbEnv){
-               inJavaEnv=javaEnv;
-               inServletContainer=servletEnv;
-               inEJBContainer=ejbEnv;
-       }
-
-       public Report doTest(){
-
-               Report report=new Report();
-
-               if (myControl==null){
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("the control is NULL");
-               }
-               else if(!(inJavaEnv||inServletContainer||inEJBContainer)){
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("Test environment is not specified. 
Please set "+
-                               "specify if the test is in servlet container, 
ejb container "+
-                               "or java environment only");
-               }
-               {
-                       if (inEJBContainer)
-                               report=doEJBcontainerTest();
-                       else if(inServletContainer)
-                               report= doServletContainerTest();
-                       else
-                               report= doJavaEnvTest();
-               }
-               return report;
-       }
-       private Report doJavaEnvTest(){
-
-               Report report=new Report();
-
-               String 
beanContext=myControl.getService(BeanContextServices.class, null);
-               String 
servletContext=myControl.getService(ServletContext.class, null);
-               //String ejbContext=serviceGetter.getService(EJBContext.class, 
null);
-
-               if (beanContext.equals("0") && servletContext.equals("-1"))
-                       report.setStatus(Report.PASS);
-               else{
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("get 
BeanContextServices:"+beanContext+
-                               "get ServletContext:"+servletContext);
-               }
-
-               return report;
-       }
-
-       private Report doServletContainerTest(){
-
-               Report report=new Report();
-
-               String 
beanContext=myControl.getService(BeanContextServices.class, null);
-               String 
servletContext=myControl.getService(ServletContext.class, null);
-               //String ejbContext=serviceGetter.getService(EJBContext.class, 
null);
-
-               if (beanContext.equals("0") && servletContext.equals("0"))
-                       report.setStatus(Report.PASS);
-               else{
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("get 
BeanContextServices:"+beanContext+
-                               "get ServletContext:"+servletContext);
-               }
-
-               return report;
-       }
-
-       private Report doEJBcontainerTest(){
-
-               Report report=new Report();
-
-               String 
beanContext=myControl.getService(BeanContextServices.class, null);
-               String 
servletContext=myControl.getService(ServletContext.class, null);
-               //String ejbContext=serviceGetter.getService(EJBContext.class, 
null);
-
-               if (beanContext.equals("0") && servletContext.equals("0"))
-                       report.setStatus(Report.PASS);
-               else{
-                       report.setStatus(Report.FAIL);
-                       report.setMessage("get 
BeanContextServices:"+beanContext+
-                               "get ServletContext:"+servletContext);
-               }
-
-               return report;
-
-       }
-
-}
+package org.apache.beehive.controls.test.driver.context;
+
+
+import java.beans.Beans;
+import java.beans.beancontext.BeanContextServices;
+import org.apache.beehive.controls.api.context.ControlBeanContext;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+//import javax.ejb.EJBContext;
+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 control context service.
+ * By invoking methods on ServiceGetterBean, features of context service are 
verified.
+ */
+
+public class DriveServiceGetter
+{
+       public static String ENV_SERVLET="servlet container";
+       public static String ENV_EJB="ejb container";
+       public static String ENV_JAVA="java environment";
+
+       private ServiceGetterBean myControl;
+       private boolean inJavaEnv=false;
+       private boolean inServletContainer=false;
+       private boolean inEJBContainer=false;
+
+       public void setControl(ServiceGetterBean aControl){
+
+               myControl=aControl;
+       }
+
+       public void setTestEnv(boolean javaEnv,boolean servletEnv, boolean 
ejbEnv){
+               inJavaEnv=javaEnv;
+               inServletContainer=servletEnv;
+               inEJBContainer=ejbEnv;
+       }
+
+       public Report doTest(){
+
+               Report report=new Report();
+
+               if (myControl==null){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("the control is NULL");
+               }
+               else if(!(inJavaEnv||inServletContainer||inEJBContainer)){
+                       report.setStatus(Report.FAIL);
+                       report.setMessage("Test environment is not specified. 
Please set "+
+                               "specify if the test is in servlet container, 
ejb container "+
+                               "or java environment only");
+               }
+               {
+                       if (inEJBContainer)
+                               report=doEJBcontainerTest();
+                       else if(inServletContainer)
+                               report= doServletContainerTest();
+                       else
+                               report= doJavaEnvTest();
+               }
+               return report;
+       }
+
+    private void checkService(Class serviceClass, boolean expected, Report 
report){
+        Object service = myControl.getService(serviceClass, null);
+        if (expected && serviceClass == null) {
+                       report.setStatus(Report.FAIL);
+                       report.addMessage("Expected " + serviceClass.getName() 
+ ":" + service + "\n");
+        }
+        else if (!expected && serviceClass != null) {
+                       report.setStatus(Report.FAIL);
+            report.addMessage("Unexpected " + serviceClass.getName() + ":" + 
service + "\n");
+        }
+    }
+
+       private Report doJavaEnvTest(){
+
+               Report report=new Report();
+
+           report.setStatus(Report.PASS);
+        checkService(BeanContextServices.class, true, report);
+        checkService(ControlBeanContext.class, true, report);
+        checkService(ServletContext.class, false, report);
+               //checkService(EJBContext.class, false, report);
+
+               return report;
+       }
+
+       private Report doServletContainerTest(){
+
+               Report report=new Report();
+
+           report.setStatus(Report.PASS);
+        checkService(BeanContextServices.class, true, report);
+        checkService(ControlBeanContext.class, true, report);
+        checkService(ServletContext.class, true, report);
+        checkService(ServletRequest.class, true, report);
+        checkService(ServletResponse.class, true, report);
+        checkService(HttpServletRequest.class, true, report);
+        checkService(HttpServletResponse.class, true, report);
+               //checkService(EJBContext.class, false, report);
+
+               return report;
+       }
+
+       private Report doEJBcontainerTest(){
+
+               Report report=new Report();
+
+           report.setStatus(Report.PASS);
+        checkService(BeanContextServices.class, true, report);
+        checkService(ControlBeanContext.class, true, report);
+        checkService(ServletContext.class, false, report);
+               //checkService(EJBContext.class, true, report);
+
+               return report;
+       }
+}

Reply via email to