// ======================================================================== // Copyright 2006-2007 Sabre Holdings. // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ======================================================================== package org.mortbay.jetty.ant; import java.io.File; import java.util.Iterator; import java.util.List; import org.mortbay.jetty.ant.utils.TaskLog; import org.mortbay.jetty.plus.webapp.Configuration; import org.mortbay.jetty.webapp.WebAppClassLoader; /** * This configuration object provides additional way to inject application * properties into the configured web application. The list of classpath files, * the application base directory and web.xml file could be specified in this * way. * * @author Jakub Pawlowicz */ public class JettyWebAppConfiguration extends Configuration { /** List of classpath files. */ private List classPathFiles; /** Web application root directory. */ private File webAppBaseDir; /** Web application web.xml file. */ private File webXmlFile; private File webDefaultXmlFile; public JettyWebAppConfiguration() throws ClassNotFoundException { } public File getWebDefaultXmlFile() { return this.webDefaultXmlFile; } public void setWebDefaultXmlFile(File webDefaultXmlfile) { this.webDefaultXmlFile = webDefaultXmlfile; } public void setClassPathFiles(List classPathFiles) { this.classPathFiles = classPathFiles; } public void setWebAppBaseDir(File webAppBaseDir) { this.webAppBaseDir = webAppBaseDir; } public void setWebXmlFile(File webXmlFile) { this.webXmlFile = webXmlFile; if (webXmlFile.exists()) { TaskLog.log("web.xml file = " + webXmlFile); } } /** * Adds classpath files into web application classloader. * * @see Configuration#configureClassLoader() */ public void configureClassLoader() throws Exception { Iterator filesIterator = classPathFiles.iterator(); while (filesIterator.hasNext()) { File classPathFile = (File) filesIterator.next(); if (classPathFile.exists()) { ((WebAppClassLoader) getWebAppContext().getClassLoader()) .addClassPath(classPathFile.getCanonicalPath()); } } } /** * Sets web.xml and base directory for the configured web application. * * @see Configuration#configureWebApp() */ public void configureWebApp() throws Exception { if (getWebAppContext().isStarted()) { TaskLog.log("Cannot configure webapp after it is started"); return; } getWebAppContext().setResourceBase(webAppBaseDir.getAbsolutePath()); if (webXmlFile.exists()) { configure(webXmlFile.toURL().toString()); } bindUserTransaction(); lockCompEnv(); } }