001 // Copyright 2005 The Apache Software Foundation 002 // 003 // Licensed under the Apache License, Version 2.0 (the "License"); 004 // you may not use this file except in compliance with the License. 005 // You may obtain a copy of the License at 006 // 007 // http://www.apache.org/licenses/LICENSE-2.0 008 // 009 // Unless required by applicable law or agreed to in writing, software 010 // distributed under the License is distributed on an "AS IS" BASIS, 011 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012 // See the License for the specific language governing permissions and 013 // limitations under the License. 014 015 package org.apache.tapestry.web; 016 017 import java.io.InputStream; 018 import java.net.URL; 019 import java.util.Set; 020 021 import org.apache.tapestry.describe.Describable; 022 023 /** 024 * A representation of a set of servlets (or portlets) packaged together as a web application 025 * archive. Attributes stored within the context are global to all 'lets (but not distributed across 026 * a server cluster). 027 * 028 * @author Howard M. Lewis Ship 029 */ 030 public interface WebContext extends AttributeHolder, InitializationParameterHolder, Describable 031 { 032 /** 033 * Returns a URL to the resource that is mapped to a specified path. The path must begin with a 034 * "/" and is interpreted as relative to the current context root. 035 */ 036 037 URL getResource(String path); 038 039 /** 040 * Returns the MIME type of the specified file, or null if the MIME type is not known. 041 */ 042 String getMimeType(String resourcePath); 043 044 /** 045 * Returns a directory-like listing of all the paths to resources within 046 * the web application whose longest sub-path matches the supplied 047 * path argument. Paths indicating subdirectory paths end with a slash (/). 048 * The returned paths are all relative to the root of the web application 049 * and have a leading '/'. 050 * @param path partial path used to match the resources, which must start with a '/' 051 * @return a Set containing the directory listing, or null if there are no resources 052 * in the web application whose path begins with the supplied path. 053 */ 054 Set getResourcePaths(String path); 055 056 /** 057 * Returns the resource located at the named path as an <code>InputStream</code> 058 * object. 059 * @param path a <code>String</code> specifying the path to the resource 060 * @return the <code>InputStream</code> returned to the servlet, 061 * or <code>null</code> if no resource exists at the specified path 062 */ 063 InputStream getResourceAsStream(String path); 064 065 /** 066 * Returns a <code>String</code> containing the real path for a given virtual path. 067 * For example, the path "/index.html" returns the absolute file path 068 * on the server's filesystem would be served by a request for 069 * "http://host/contextPath/index.html", where contextPath is the 070 * context path of this WebContext. 071 * 072 * @param path a <code>String</code> specifying a virtual path 073 * @return a <code>String</code> specifying the real path, or <code>null</code> if the 074 * translation cannot be performed 075 */ 076 String getRealPath(String path); 077 }