|
FileResourceLoader |
|
/* ** Luxor - XML User Interface Language (XUL) Toolkit ** Copyright (c) 2001, 2002 by Gerald Bauer ** ** This program is free software. ** ** You may redistribute it and/or modify it under the terms of the GNU ** General Public License as published by the Free Software Foundation. ** Version 2 of the license should be included with this distribution in ** the file LICENSE, as well as License.html. If the license is not ** included with this distribution, you may find a copy at the FSF web ** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the ** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. ** ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR ** REDISTRIBUTION OF THIS SOFTWARE. ** */ package luxor.http.loader; import java.io.*; import luxor.core.*; import luxor.http.resource.*; import luxor.spi.*; import luxor.status.*; public class FileResourceLoader implements WebResourceLoader { static Logger T = Logger.getLogger( FileResourceLoader.class ); private File _documentRootDir; private String _indexFileName = "index.html"; public FileResourceLoader( File documentRootDir ) { _documentRootDir = documentRootDir; } public WebResource getResource( String name ) { try { if( name.endsWith( "/" ) ) { // check if index filename exits // if it doesn't we create a directory view File indexFile = new File( _documentRootDir, name.substring( 1 ) + _indexFileName ); if( !indexFile.canRead() ) { // index file doesn't exists // index file doesn't exist // create directory // todo: put this in a method // todo: make it work for jar (not a high priority) // cut off leading / - leave trailing as it does no harm // note: for root there is only one / // fix: check if directory exists! File dir = new File( _documentRootDir, name.substring( 1 ) ); if( !dir.exists() ) return null; DirectoryResource res = new DirectoryResource( name, dir ); return res; } else { // index file does exist; fall through and treat it like an ordinary file name += _indexFileName; } } // strip leading / in request file File file = new File( _documentRootDir, name.substring( 1 ) ); if( !file.canRead() ) return null; FileResource res = new FileResource( name, file ); return res; } catch( IOException ioex ) { Xul.error( "failed to retrieve resource '" + name + "': " + ioex.toString() ); return null; } } }
|
FileResourceLoader |
|