1 // ======================================================================== 2 // Copyright 2003-2005 Mort Bay Consulting Pty. Ltd. 3 // ------------------------------------------------------------------------ 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // Unless required by applicable law or agreed to in writing, software 9 // distributed under the License is distributed on an "AS IS" BASIS, 10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 // ======================================================================== 14 package org.mortbay.jetty.webapp; 15 16 import org.mortbay.log.Log; 17 import org.mortbay.resource.Resource; 18 /* ------------------------------------------------------------------------------- */ 19 /** 20 * Configure class path from a WEB-INF directory found within a contexts resource base. 21 * 22 * @author gregw 23 */ 24 public class WebInfConfiguration implements Configuration 25 { 26 protected WebAppContext _context; 27 28 public WebInfConfiguration() 29 { 30 } 31 32 /* ------------------------------------------------------------------------------- */ 33 public void setWebAppContext (WebAppContext context) 34 { 35 _context = context; 36 } 37 38 /* ------------------------------------------------------------------------------- */ 39 public WebAppContext getWebAppContext() 40 { 41 return _context; 42 } 43 44 /* ------------------------------------------------------------------------------- */ 45 /** Configure ClassPath. 46 * This method is called before the context ClassLoader is created. 47 * Paths and libraries should be added to the context using the setClassPath, 48 * addClassPath and addClassPaths methods. The default implementation looks 49 * for WEB-INF/classes, WEB-INF/lib/*.zip and WEB-INF/lib/*.jar 50 * @throws Exception 51 */ 52 public void configureClassLoader() 53 throws Exception 54 { 55 //cannot configure if the context is already started 56 if (_context.isStarted()) 57 { 58 if (Log.isDebugEnabled()){Log.debug("Cannot configure webapp after it is started");} 59 return; 60 } 61 62 Resource web_inf=_context.getWebInf(); 63 64 // Add WEB-INF classes and lib classpaths 65 if (web_inf != null && web_inf.isDirectory() && _context.getClassLoader() instanceof WebAppClassLoader) 66 { 67 // Look for classes directory 68 Resource classes= web_inf.addPath("classes/"); 69 if (classes.exists()) 70 ((WebAppClassLoader)_context.getClassLoader()).addClassPath(classes.toString()); 71 72 // Look for jars 73 Resource lib= web_inf.addPath("lib/"); 74 if (lib.exists() || lib.isDirectory()) 75 ((WebAppClassLoader)_context.getClassLoader()).addJars(lib); 76 } 77 78 } 79 80 /* ------------------------------------------------------------------------------- */ 81 public void configureDefaults() throws Exception 82 { 83 } 84 85 /* ------------------------------------------------------------------------------- */ 86 public void configureWebApp() throws Exception 87 { 88 } 89 90 /* ------------------------------------------------------------------------------- */ 91 public void deconfigureWebApp() throws Exception 92 { 93 } 94 95 }