From stefano@locus.apache.org Sat May 6 11:13:00 2000 Return-Path: Mailing-List: contact cocoon-dev-help@xml.apache.org; run by ezmlm Delivered-To: mailing list cocoon-dev@xml.apache.org Received: (qmail 29732 invoked by uid 500); 6 May 2000 11:13:00 -0000 Delivered-To: apmail-xml-cocoon-cvs@apache.org Received: (qmail 29729 invoked by uid 1010); 6 May 2000 11:13:00 -0000 Date: 6 May 2000 11:13:00 -0000 Message-ID: <20000506111300.29728.qmail@locus.apache.org> From: stefano@locus.apache.org To: xml-cocoon-cvs@apache.org Subject: cvs commit: xml-cocoon/src/org/apache/cocoon Engine.java Utils.java stefano 00/05/06 04:13:00 Modified: src/org/apache/cocoon Engine.java Utils.java Log: now stylesheet URI are relative to the URI space, even when absolute NOTE: I don't know how portable this is. It works on JServ, make sure it works on your system and report back ASAP. Thanks Revision Changes Path 1.26 +3 -2 xml-cocoon/src/org/apache/cocoon/Engine.java Index: Engine.java =================================================================== RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Engine.java,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- Engine.java 2000/04/26 23:32:09 1.25 +++ Engine.java 2000/05/06 11:13:00 1.26 @@ -1,4 +1,4 @@ -/*-- $Id: Engine.java,v 1.25 2000/04/26 23:32:09 stefano Exp $ -- +/*-- $Id: Engine.java,v 1.26 2000/05/06 11:13:00 stefano Exp $ -- ============================================================================ The Apache Software License, Version 1.1 @@ -73,7 +73,7 @@ * This class implements the engine that does all the document processing. * * @author Stefano Mazzocchi - * @version $Revision: 1.25 $ $Date: 2000/04/26 23:32:09 $ + * @version $Revision: 1.26 $ $Date: 2000/05/06 11:13:00 $ */ public class Engine implements Defaults { @@ -295,6 +295,7 @@ environment.put("browser", browsers.map(agent)); environment.put("request", request); environment.put("response", response); + environment.put("context", servletContext); // process the document through the document processors while (true) { 1.14 +28 -9 xml-cocoon/src/org/apache/cocoon/Utils.java Index: Utils.java =================================================================== RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Utils.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- Utils.java 2000/05/03 12:57:36 1.13 +++ Utils.java 2000/05/06 11:13:00 1.14 @@ -1,4 +1,4 @@ -/*-- $Id: Utils.java,v 1.13 2000/05/03 12:57:36 stefano Exp $ -- +/*-- $Id: Utils.java,v 1.14 2000/05/06 11:13:00 stefano Exp $ -- ============================================================================ The Apache Software License, Version 1.1 @@ -61,7 +61,7 @@ * Utility methods for Cocoon and its classes. * * @author Stefano Mazzocchi - * @version $Revision: 1.13 $ $Date: 2000/05/03 12:57:36 $ + * @version $Revision: 1.14 $ $Date: 2000/05/06 11:13:00 $ */ public final class Utils { @@ -173,7 +173,7 @@ key = key.replace('=',' ').trim(); // remove whitespace and '=' attributes.put(key, token); } - } catch(NoSuchElementException nsee) { + } catch (NoSuchElementException nsee) { // ignore white-space at the end of pseudo-list } } @@ -230,12 +230,14 @@ * So, for now, leave the dirty code even if totally deprecated and work * out a better solution in the future. */ - public static String getBasename(HttpServletRequest request, Object context) { + public static final String getBasename(HttpServletRequest request, Object context) { + String path; + try { // detect if the engine supports at least Servlet API 2.2 request.getContextPath(); // we need to check this in case we've been included in a servlet or jsp - String path = (String) request.getAttribute("javax.servlet.include.servlet_path"); + path = (String) request.getAttribute("javax.servlet.include.servlet_path"); // otherwise, we find it out ourselves if (path == null) path = request.getServletPath(); @@ -249,8 +251,6 @@ throw new RuntimeException("Cannot access non-file/war resources"); } } catch (NoSuchMethodError e) { - String path; - // if there is no such method we must be in Servlet API 2.1 if (request.getPathInfo() != null) { // this must be Apache JServ @@ -268,6 +268,25 @@ } /* + * Returns the base path for the request. + */ + public static final String getBasepath(HttpServletRequest request, Object context) { + String basename = getBasename(request, context); + return basename.substring(0, basename.lastIndexOf('/') + 1); + } + + /* + * Returns the base path for the request. + */ + public static final String getRootpath(HttpServletRequest request, Object context) { + // FIXME (SM): I have _no_absolute_idea_ how much this is portable. The whole + // architecture should be based on URL rather than Files to allow the + // use of Servlet 2.2 getResource() to void calling such nasty methods + // but for now, well, it's the best I can do :( + return request.getRealPath("/"); + } + + /* * Returns the stack trace as a string */ public static final String getStackTraceAsString(Throwable e) { @@ -276,7 +295,7 @@ e.printStackTrace(writer); return bytes.toString(); } - + /* * Returns the resource pointed by the given location. */ @@ -319,5 +338,5 @@ } return resource; - } + } }