cziegeler 01/12/27 02:00:30
Modified: . build.xml
Added: src/org/apache/cocoon/reading JSPReader.java servlet.sitemap
Removed: src/org/apache/cocoon/components/jsp JSPReader.java
Log:
Moving JSPReader to the correct directory, adding it to sitemap and making it
optional
Revision Changes Path
1.124 +11 -10 xml-cocoon2/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/xml-cocoon2/build.xml,v
retrieving revision 1.123
retrieving revision 1.124
diff -u -r1.123 -r1.124
--- build.xml 2001/12/20 10:32:23 1.123
+++ build.xml 2001/12/27 10:00:29 1.124
@@ -258,11 +258,14 @@
property="jfor.present"
classname="org.jfor.jfor.converter.Converter"/>
- <available property="servlet.present"
- classname="javax.servlet.http.HttpServlet">
- <classpath refid="classpath"/>
- </available>
-
+ <ClassAvailable classpathref="classpath"
+ property="servlet.present"
+ classname="javax.servlet.http.HttpServlet"/>
+
+ <ClassAvailable classpathref="classpath"
+ property="servlet23.present"
+ classname="javax.servlet.http.HttpServletRequestWrapper"/>
+
<available property="rhino.present"
classname="org.mozilla.javascript.tools.jsc.Main">
<classpath refid="classpath"/>
@@ -273,11 +276,6 @@
<classpath refid="classpath"/>
</available>
- <available property="servlet23.present"
- classname="javax.servlet.http.HttpServletRequestWrapper">
- <classpath refid="classpath"/>
- </available>
-
<available property="xpath.present"
classname="org.apache.xpath.XPathAPI">
<classpath refid="classpath"/>
@@ -493,6 +491,9 @@
<mkdir dir="${build.dest}"/>
<copy todir="${build.src}" filtering="on">
<fileset dir="${src.dir}">
+ <exclude name="**/JSP*.java" unless="servlet.present"/>
+ <exclude name="**/servlet.sitemap" unless="servlet.present"/>
+
<exclude name="**/HTMLGenerator.java" unless="tidy.present"/>
<exclude name="**/tidy.sitemap" unless="tidy.present"/>
1.1 xml-cocoon2/src/org/apache/cocoon/reading/JSPReader.java
Index: JSPReader.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.cocoon.reading;
import org.apache.avalon.excalibur.pool.Poolable;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.components.jsp.JSPEngine;
import org.apache.cocoon.environment.Source;
import org.apache.cocoon.environment.http.HttpEnvironment;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Konstantin Piroumian</a>
* @version CVS $Revision: 1.1 $ $Date: 2001/12/27 10:00:30 $
*
* The <code>JSPReader</code> component is used to serve JSP page output data
* in a sitemap pipeline.
*/
public class JSPReader extends AbstractReader
implements Composable, Poolable{
private ComponentManager manager;
public void compose (ComponentManager manager) {
this.manager = manager;
}
/** Contextualize this class
public void contextualize(Context context) throws ContextException {
if (this.contextDir == null) {
org.apache.cocoon.environment.Context ctx =
(org.apache.cocoon.environment.Context)
context.get(Constants.CONTEXT_ENVIRONMENT_CONTEXT);
try {
this.contextDir = new
File(ctx.getRealPath("/")).toURL().toExternalForm();
getLogger().debug("JSPReader: Context directory is " +
this.contextDir);
} catch (MalformedURLException e) {
getLogger().error("JSPReader: Could not get context directory", e);
throw new ContextException("JSPReader: Could not get context
directory", e);
}
}
}
*/
/**
* Generates the output from JSP page.
*/
public void generate() throws IOException, 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);
ServletContext httpContext =
(ServletContext)this.objectModel.get(HttpEnvironment.HTTP_SERVLET_CONTEXT);
if (httpResponse == null || httpRequest == null || httpContext == null) {
throw new ProcessingException("JSPReader can be used only in a
Servlet/JSP environment");
}
JSPEngine engine = null;
Source src = null;
try {
// KP: A hacky way of source resolving.
// Why context:// protocol returns not a string in URL format,
// but a system-dependent path with 'file:' prefix?
String contextDir = new
File(httpContext.getRealPath("/")).toURL().toExternalForm();
src = this.resolver.resolve(this.source);
String url = src.getSystemId();
if(url.startsWith(contextDir)) {
// File is located under contextDir, using relative file name
url = url.substring(contextDir.length());
}
if (url.startsWith("file:")) {
// we need a relative path
url = url.substring(5);
}
getLogger().debug("JSPReader executing JSP:" + url);
engine = (JSPEngine)this.manager.lookup(JSPEngine.ROLE);
byte[] bytes = engine.executeJSP(url, httpRequest, httpResponse,
httpContext);
byte[] buffer = new byte[8192];
int length = -1;
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while ((length = bais.read(buffer)) > -1) {
out.write(buffer, 0, length);
}
bais.close();
bais = null;
out.flush();
//
} catch (ServletException e) {
getLogger().debug("ServletException in JSPReader.generate()", e);
getLogger().debug("Embedded ServletException JSPReader.generate()",
e.getRootCause());
throw new ProcessingException("ServletException in
JSPReader.generate()",e.getRootCause());
} catch (IOException e) {
getLogger().debug("IOException in JSPReader.generate()", e);
throw new ProcessingException("IOException JSPReader.generate()",e);
} catch (ProcessingException e) {
throw e;
} catch (Exception e) {
getLogger().debug("Exception in JSPReader.generate()", e);
throw new ProcessingException("Exception JSPReader.generate()",e);
} finally {
if (src != null) src.recycle();
if (engine != null) this.manager.release(engine);
}
}
}
1.1 xml-cocoon2/src/org/apache/cocoon/reading/servlet.sitemap
Index: servlet.sitemap
===================================================================
category:readers|componentName:jsp|componentClass:org.apache.cocoon.reading.JSPReader
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]