cziegeler 01/04/20 05:03:31
Modified: src/org/apache/cocoon/environment/http Tag: xml-cocoon2
HttpEnvironment.java
src/org/apache/cocoon/generation Tag: xml-cocoon2
PhpGenerator.java
Log:
Fix for the PhpServlet (and any other components based on the javax.servlet
package).
The HttpEnvironment adds the HttpServletResponse, the HttpServletRequest
and the ServletContext to the objectModel. So any component can get
these objects.
For the PhpGenerator this is very legal as the generator itself uses a servlet
environment.
Revision Changes Path
No revision
No revision
1.1.2.25 +8 -0
xml-cocoon/src/org/apache/cocoon/environment/http/Attic/HttpEnvironment.java
Index: HttpEnvironment.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/environment/http/Attic/HttpEnvironment.java,v
retrieving revision 1.1.2.24
retrieving revision 1.1.2.25
diff -u -r1.1.2.24 -r1.1.2.25
--- HttpEnvironment.java 2001/04/20 11:27:18 1.1.2.24
+++ HttpEnvironment.java 2001/04/20 12:03:22 1.1.2.25
@@ -28,6 +28,10 @@
public class HttpEnvironment extends AbstractEnvironment {
+ public static final String HTTP_REQUEST_OBJECT = "httprequest";
+ public static final String HTTP_RESPONSE_OBJECT= "httpresponse";
+ public static final String HTTP_SERVLET_CONTEXT= "httpservletcontext";
+
/** The HttpRequest */
private HttpRequest request = null;
@@ -57,6 +61,10 @@
this.objectModel.put(Constants.REQUEST_OBJECT, this.request);
this.objectModel.put(Constants.RESPONSE_OBJECT, this.response);
this.objectModel.put(Constants.CONTEXT_OBJECT, this.context);
+ // This is a hack for the Php Generator
+ this.objectModel.put(HTTP_REQUEST_OBJECT, req);
+ this.objectModel.put(HTTP_RESPONSE_OBJECT, res);
+ this.objectModel.put(HTTP_SERVLET_CONTEXT, servletContext);
}
/**
No revision
No revision
1.1.2.19 +19 -8
xml-cocoon/src/org/apache/cocoon/generation/Attic/PhpGenerator.java
Index: PhpGenerator.java
===================================================================
RCS file:
/home/cvs/xml-cocoon/src/org/apache/cocoon/generation/Attic/PhpGenerator.java,v
retrieving revision 1.1.2.18
retrieving revision 1.1.2.19
diff -u -r1.1.2.18 -r1.1.2.19
--- PhpGenerator.java 2001/04/19 16:58:19 1.1.2.18
+++ PhpGenerator.java 2001/04/20 12:03:25 1.1.2.19
@@ -18,11 +18,13 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
-import org.apache.cocoon.components.parser.Parser;
-
-import org.apache.avalon.Poolable;
import org.apache.avalon.Component;
+import org.apache.avalon.Poolable;
+
+import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.Roles;
+import org.apache.cocoon.components.parser.Parser;
+import org.apache.cocoon.environment.http.HttpEnvironment;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -33,7 +35,7 @@
* results into SAX events.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Sam Ruby</a>
- * @version CVS $Revision: 1.1.2.18 $ $Date: 2001/04/19 16:58:19 $
+ * @version CVS $Revision: 1.1.2.19 $ $Date: 2001/04/20 12:03:25 $
*/
public class PhpGenerator extends ServletGenerator implements Poolable {
@@ -113,7 +115,16 @@
/**
* Generate XML data from PHP.
*/
- public void generate() throws IOException, SAXException {
+ public void generate() throws IOException, SAXException,
ProcessingException {
+
+ // ensure that we are running in a servlet environment
+ HttpServletResponse httpResponse =
+
(HttpServletResponse)this.objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT);
+ HttpServletRequest httpRequest =
+
(HttpServletRequest)this.objectModel.get(HttpEnvironment.HTTP_REQUEST_OBJECT);
+ if (httpResponse == null || httpRequest == null) {
+ throw new ProcessingException("HttpServletRequest or
HttpServletResponse object not available");
+ }
// ensure that we are serving a file...
InputSource inputSource = this.resolver.resolveEntity(null,
this.source);
@@ -128,11 +139,11 @@
// start PHP producing results into the pipe
PhpServlet php = new PhpServlet();
- php.init(new config((ServletContext)context));
+ php.init(new
config((ServletContext)this.objectModel.get(HttpEnvironment.HTTP_SERVLET_CONTEXT)));
php.setInput(systemId.substring(6));
php.setOutput(new PipedOutputStream(input));
- php.setRequest((HttpServletRequest)request);
- php.setResponse((HttpServletResponse)response);
+ php.setRequest(httpRequest);
+ php.setResponse(httpResponse);
new Thread(php).start();
// pipe the results into the parser
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]