On Mon, 2003-10-20 at 16:30, Geoff Howard wrote: > Christopher Painter-Wakefield wrote: > > > > > > > > This documentation is a bit out of date, I think, although it is a minor > > sin in this case. Cocoon has its own Request and Response interfaces > > (looking at the implementors this is perhaps because they also handle the > > command line interactions, not just the servlet interfactions). Look at > > the API docs (http://cocoon.apache.org/2.1/apidocs/index.html) for more > > info. As it happens, the APIs for these interfaces are the same as > > HttpServletRequest and HttpServletResponse, so except when you need to > > declare the type (as in your example), you can use these objects in the > > same fashion. > > > > Even the API docs are out of date - the comment for HttpResponse still says > > it implements HttpServletResponse :) > > > > You can declare your constructor to use > > org.apache.cocoon.environment.Request and ....Response. > > > > -Christopher > > > > > > > > > > > > Gianluca Sartori > > > > <[EMAIL PROTECTED] To: [EMAIL PROTECTED] > > > > rg> cc: > > > > Subject: request & response > > objects > > 10/20/2003 09:35 > > > > AM > > > > Please respond to > > > > users > > > > > > > > > > > > > > > > > > > > Hi, > > > > I'm slowly getting into coccon. I read I can use "request" and > > "response" objects in XSP pages from my Java code. The official > > documentation says these objects are instances of > > HTTPServletRequest/Response, but is it really true? > > > > I'm instantiating an object whose constructor accepts two arguments as > > follow: > > > > public TheClass (HttpServletRequest request, HttpServletResponse > > response) > > > > When I try to instantiate an object out of this class cocoon ends up > > with an error complaining about an undefined constructor. Here is how I > > instantiated the object: > > > > <?xml version="1.0" encoding="UTF-8"?> > > <xsp:page xmlns:xsp="http://apache.org/xsp"> > > <xsp:structure> > > <xsp:include>org.mysite.*</xsp:include> > > </xsp:structure> > > > > <my-root-element> > > <xsp:expr>new TheClass(request, response)</xsp:expr> > > [...] > > > > > > This gets translated into the following code: > > > > [...] > > XSPObjectHelper.xspExpr(contentHandler, new WASClient(request, > > response)); > > [...] > > > > And the error returned by cocoon is: > > > > org.apache.cocoon.components.language.LanguageException: Error compiling > > test_xsp: ERROR 1 > > (org/apache/cocoon/www/projects/was/docs/test_xsp.java): ... > > this.characters("\n\n"); // start error (lines 104-104) "The constructor > > WASClient(Request, Response) is undefined" > > XSPObjectHelper.xspExpr(contentHandler, new WASClient(request, > > response)); // end error this.characters("\n\n"); ... Line 104, column > > 0: The constructor WASClient(Request, Response) is undefined > > > > A comment into the generated code makes me think about the correctness > > of the documentation, here it is: > > > > /* Built-in parameters available for use */ > > // context - org.apache.cocoon.environment.Context > > // request - org.apache.cocoon.environment.Request > > // response - org.apache.cocoon.environment.Response > > > > So, what should I do to make my Object working? I'm using > > HTTPServletRequest/Response ad, to say the thruth, I'm not so happy > > changing them to be used in coccon. Anyway, if you tell me this is the > > only way to go... > > I seem to think there was some discussion about allowing the real > HTTPServletRequest (held as a private member in the http impl of the > abstract o.a.c.environment.Request) to be accessible. You may want to > check the dev list archives for references to this. I don't think it > was implemented but you could check that too.
Actually this has been in Cocoon for a long time (probably always) and there are quite a few components that use it. For example, the following code is from the JSPGenerator: HttpServletResponse httpResponse = (HttpServletResponse)this.objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT); HttpServletRequest httpRequest = (HttpServletRequest)this.objectModel.get(HttpEnvironment.HTTP_REQUEST_OBJECT); ServletContext httpContext = (ServletContext)this.objectModel.get(HttpEnvironment.HTTP_SERVLET_CONTEXT); -- Bruno Dumon http://outerthought.org/ Outerthought - Open Source, Java & XML Competence Support Center [EMAIL PROTECTED] [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]