? jsp.diff
? lib/optional/jasper-compiler.jar
? src/webapp/samples/i18n
? src/webapp/samples/jsp
Index: src/java/org/apache/cocoon/generation/JspGenerator.java
===================================================================
RCS file: /home/cvspublic/xml-cocoon2/src/java/org/apache/cocoon/generation/JspGenerator.java,v
retrieving revision 1.6
diff -u -r1.6 JspGenerator.java
--- src/java/org/apache/cocoon/generation/JspGenerator.java	22 Feb 2002 07:03:51 -0000	1.6
+++ src/java/org/apache/cocoon/generation/JspGenerator.java	29 Mar 2002 13:53:52 -0000
@@ -101,22 +101,27 @@
 
         JSPEngine engine = null;
         Parser parser = null;
-        Source src = null;
         try {
-            src = this.resolver.resolve(this.source);
-            String url = src.getSystemId();
-            // Guarantee src parameter is a file
-            if (!url.startsWith("file:/"))
-                throw new IOException("Protocol not supported: " + url);
+            // FIXME (KP): Should we exclude not supported protocols, say 'context'?
+            String url = this.source;
+            // absolute path is processed as is
+            if (!url.startsWith("/")) {
+                // get current request path
+                String servletPath = httpRequest.getServletPath();
+                // remove file part
+                servletPath = servletPath.substring(0, servletPath.lastIndexOf('/') + 1);
+                url = servletPath + url;
+            }
+
+            engine = (JSPEngine)this.manager.lookup(JSPEngine.ROLE);
 
-            url = url.substring(5);
             getLogger().debug("JspGenerator executing JSP:" + url);
 
-            engine = (JSPEngine)this.manager.lookup(JSPEngine.ROLE);
             byte[] bytes = engine.executeJSP(url, httpRequest, httpResponse, httpContext);
 
             // explicitly specify bytestream encoding
             InputSource input = new InputSource(new ByteArrayInputStream(bytes));
+            // FIXME (KP): Why do we need this?
             input.setEncoding("utf-8");
 
             // pipe the results into the parser
@@ -139,7 +144,6 @@
             getLogger().debug("Exception in JspGenerator.generate()", e);
             throw new ProcessingException("Exception JspGenerator.generate()",e);
         } finally {
-            if (src != null) src.recycle();
             this.manager.release(parser);
             this.manager.release(engine);
         }
Index: src/java/org/apache/cocoon/reading/JSPReader.java
===================================================================
RCS file: /home/cvspublic/xml-cocoon2/src/java/org/apache/cocoon/reading/JSPReader.java,v
retrieving revision 1.4
diff -u -r1.4 JSPReader.java
--- src/java/org/apache/cocoon/reading/JSPReader.java	22 Feb 2002 07:03:54 -0000	1.4
+++ src/java/org/apache/cocoon/reading/JSPReader.java	29 Mar 2002 13:53:53 -0000
@@ -50,31 +50,33 @@
 */
 package org.apache.cocoon.reading;
 
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 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.Context;
+import org.apache.cocoon.environment.ObjectModelHelper;
 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:kpiroumian@flagship.ru">Konstantin Piroumian</a>
- * @version CVS $Id: JSPReader.java,v 1.4 2002/02/22 07:03:54 cziegeler Exp $
- *
  * The <code>JSPReader</code> component is used to serve JSP page output data
  * in a sitemap pipeline.
+ *
+ * @author <a href="mailto:kpiroumian@flagship.ru">Konstantin Piroumian</a>
+ * @version CVS $Id: JSPReader.java,v 1.4 2002/02/22 07:03:54 cziegeler Exp $
  */
-public class JSPReader extends AbstractReader
-            implements Composable, Poolable{
+public class JSPReader extends AbstractReader implements Composable, Poolable {
 
     private ComponentManager manager;
 
@@ -82,26 +84,15 @@
         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
+        if (this.source == null) {
+            throw new ProcessingException("JSPReader: source JSP is not specified");
+        }
+
         HttpServletResponse httpResponse =
             (HttpServletResponse)this.objectModel.get(HttpEnvironment.HTTP_RESPONSE_OBJECT);
         HttpServletRequest httpRequest =
@@ -114,28 +105,25 @@
         }
 
         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);
+
+            // FIXME (KP): Should we exclude not supported protocols, say 'context'?
+            String url = this.source;
+            // absolute path is processed as is
+            if (!url.startsWith("/")) {
+                // get current request path
+                String servletPath = httpRequest.getServletPath();
+                // remove file part
+                servletPath = servletPath.substring(0, servletPath.lastIndexOf('/') + 1);
+                url = servletPath + url;
             }
 
+            engine = (JSPEngine)this.manager.lookup(JSPEngine.ROLE);
+
             getLogger().debug("JSPReader executing JSP:" + url);
 
-            engine = (JSPEngine)this.manager.lookup(JSPEngine.ROLE);
             byte[] bytes = engine.executeJSP(url, httpRequest, httpResponse, httpContext);
-
+            // FIXME (KP): Make buffer size configurable
             byte[] buffer = new byte[8192];
             int length = -1;
 
@@ -160,7 +148,6 @@
             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);
         }
     }
Index: src/webapp/sitemap.xmap
===================================================================
RCS file: /home/cvspublic/xml-cocoon2/src/webapp/sitemap.xmap,v
retrieving revision 1.45
diff -u -r1.45 sitemap.xmap
--- src/webapp/sitemap.xmap	21 Mar 2002 04:32:23 -0000	1.45
+++ src/webapp/sitemap.xmap	29 Mar 2002 13:54:06 -0000
@@ -120,12 +120,6 @@
    <map:transformer name="extractor"       logger="sitemap.transformer.extractor"
                     src="org.apache.cocoon.transformation.FragmentExtractorTransformer"/>
 
-   <map:transformer name="i18n"            logger="sitemap.transformer.i18n"
-                    src="org.apache.cocoon.transformation.I18nTransformer">
-    <catalogue-name>messages</catalogue-name>
-    <catalogue-location>translations</catalogue-location>
-   </map:transformer>
-
    <map:transformer name="filter"          logger="sitemap.transformer.filter"
                     src="org.apache.cocoon.transformation.FilterTransformer"/>
 
@@ -331,9 +325,7 @@
     <map:action name="upd-employee" src="org.apache.cocoon.acting.DatabaseUpdateAction"
                         logger="sitemap.action.upd-employee"/>
 
-   <map:action name="lang-select"     logger="sitemap.action.lang-select"
-               src="org.apache.cocoon.acting.LangSelect"/>
-
+   <!-- LangSelect action is deprecated. Use LocaleAction instead -->
    <map:action name="locale"          logger="sitemap.action.locale"
                src="org.apache.cocoon.acting.LocaleAction"/>
 
@@ -600,11 +592,6 @@
       <map:mount uri-prefix="protected" src="protected/" check-reload="yes"/>
     </map:match>
 
-    <!-- i18n examples sitemap -->
-    <map:match pattern="i18n/**">
-      <map:mount uri-prefix="i18n" src="i18n/" check-reload="yes"/>
-    </map:match>
-
     <!-- mount other sample pages -->
     <map:match pattern="samples/**">
       <map:mount check-reload="yes" src="samples/" uri-prefix="samples"/>
@@ -907,16 +894,6 @@
 
    <map:match pattern="scripts/*">
     <map:generate type="script" src="docs/samples/scripts/{1}"/>
-    <map:transform src="stylesheets/page/simple-page2html.xsl"/>
-    <map:serialize type="html"/>
-   </map:match>
-
-   <map:match pattern="jsp/*.htm">
-    <map:read type="jsp" src="/docs/samples/jsp/{1}.jsp" mime-type="text/html" />
-   </map:match>
-
-   <map:match pattern="jsp/*">
-    <map:generate type="jsp" src="/docs/samples/jsp/{1}.jsp"/>
     <map:transform src="stylesheets/page/simple-page2html.xsl"/>
     <map:serialize type="html"/>
    </map:match>

