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;
+ }
+}