org.browsermob.proxy.jetty.jetty.servlet.JettyWebConfiguration Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of browsermob-proxy Show documentation
Show all versions of browsermob-proxy Show documentation
A programmatic HTTP/S designed for performance and functional testing
//========================================================================
//$Id: JettyWebConfiguration.java,v 1.4 2005/11/18 17:54:05 gregwilkins Exp $
//Copyright 2000-2004 Mort Bay Consulting Pty. Ltd.
//------------------------------------------------------------------------
//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.browsermob.proxy.jetty.jetty.servlet;
import org.apache.commons.logging.Log;
import org.browsermob.proxy.jetty.jetty.servlet.WebApplicationContext.Configuration;
import org.browsermob.proxy.jetty.log.LogFactory;
import org.browsermob.proxy.jetty.util.Resource;
import org.browsermob.proxy.jetty.xml.XmlConfiguration;
/**
*
* JettyWebConfiguration
*
* @author janb
* @version $Revision: 1.4 $ $Date: 2005/11/18 17:54:05 $
*
*/
public class JettyWebConfiguration implements Configuration
{
private static Log log= LogFactory.getLog(JettyWebConfiguration.class);
private WebApplicationContext _context;
/**
* @see org.browsermob.proxy.jetty.jetty.servlet.WebApplicationContext.Configuration#setWebApplicationContext(org.browsermob.proxy.jetty.jetty.servlet.WebApplicationContext)
*/
public void setWebApplicationContext (WebApplicationContext context)
{
_context = context;
}
public WebApplicationContext getWebApplicationContext ()
{
return _context;
}
/** configureClassPath
* Not used.
* @see org.browsermob.proxy.jetty.jetty.servlet.WebApplicationContext.Configuration#configureClassPath()
*/
public void configureClassPath () throws Exception
{
}
/** configureDefaults
* Not used.
* @see org.browsermob.proxy.jetty.jetty.servlet.WebApplicationContext.Configuration#configureDefaults()
*/
public void configureDefaults () throws Exception
{
}
/** configureWebApp
* Apply web-jetty.xml configuration
* @see org.browsermob.proxy.jetty.jetty.servlet.WebApplicationContext.Configuration#configureWebApp()
*/
public void configureWebApp () throws Exception
{
//cannot configure if the _context is already started
if (_context.isStarted())
{
if (log.isDebugEnabled()){log.debug("Cannot configure webapp after it is started");};
return;
}
if(log.isDebugEnabled())
log.debug("Configuring web-jetty.xml");
Resource webInf=getWebApplicationContext().getWebInf();
// handle any WEB-INF descriptors
if(webInf!=null&&webInf.isDirectory())
{
// do jetty.xml file
Resource jetty=webInf.addPath("web-jetty.xml");
if(!jetty.exists())
jetty=webInf.addPath("jetty-web.xml");
if(!getWebApplicationContext().isIgnoreWebJetty()&&jetty.exists())
{
// Give permission to see Jetty classes
String[] old_server_classes = _context.getServerClasses();
String[] server_classes = new String[1+(old_server_classes==null?0:old_server_classes.length)];
server_classes[0]="-org.browsermob.proxy.jetty.";
if (server_classes!=null)
System.arraycopy(old_server_classes, 0, server_classes, 1, old_server_classes.length);
try
{
_context.setServerClasses(server_classes);
if(log.isDebugEnabled())
log.debug("Configure: "+jetty);
XmlConfiguration jetty_config=new XmlConfiguration(jetty.getURL());
jetty_config.configure(getWebApplicationContext());
}
finally
{
if (_context.getServerClasses()==server_classes)
_context.setServerClasses(old_server_classes);
}
}
}
}
}