All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jetty.webapp.Configuration Maven / Gradle / Ivy

The newest version!
//
//  ========================================================================
//  Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
//  ------------------------------------------------------------------------
//  All rights reserved. This program and the accompanying materials
//  are made available under the terms of the Eclipse Public License v1.0
//  and Apache License v2.0 which accompanies this distribution.
//
//      The Eclipse Public License is available at
//      http://www.eclipse.org/legal/epl-v10.html
//
//      The Apache License v2.0 is available at
//      http://www.opensource.org/licenses/apache2.0.php
//
//  You may elect to redistribute this code under either of these licenses.
//  ========================================================================
//

package org.eclipse.jetty.webapp;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.ListIterator;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.annotation.Name;


/* ------------------------------------------------------------------------------- */
/** Base Class for WebApplicationContext Configuration.
 * This class can be extended to customize or extend the configuration
 * of the WebApplicationContext. 
 */
public interface Configuration 
{
    public final static String ATTR="org.eclipse.jetty.webapp.configuration";
    
    /* ------------------------------------------------------------------------------- */
    /** Set up for configuration.
     * 

* Typically this step discovers configuration resources * @param context The context to configure * @throws Exception if unable to pre configure */ public void preConfigure (WebAppContext context) throws Exception; /* ------------------------------------------------------------------------------- */ /** Configure WebApp. *

* Typically this step applies the discovered configuration resources to * either the {@link WebAppContext} or the associated {@link MetaData}. * @param context The context to configure * @throws Exception if unable to configure */ public void configure (WebAppContext context) throws Exception; /* ------------------------------------------------------------------------------- */ /** Clear down after configuration. * @param context The context to configure * @throws Exception if unable to post configure */ public void postConfigure (WebAppContext context) throws Exception; /* ------------------------------------------------------------------------------- */ /** DeConfigure WebApp. * This method is called to undo all configuration done. This is * called to allow the context to work correctly over a stop/start cycle * @param context The context to configure * @throws Exception if unable to deconfigure */ public void deconfigure (WebAppContext context) throws Exception; /* ------------------------------------------------------------------------------- */ /** Destroy WebApp. * This method is called to destroy a webappcontext. It is typically called when a context * is removed from a server handler hierarchy by the deployer. * @param context The context to configure * @throws Exception if unable to destroy */ public void destroy (WebAppContext context) throws Exception; /* ------------------------------------------------------------------------------- */ /** Clone configuration instance. *

* Configure an instance of a WebAppContext, based on a template WebAppContext that * has previously been configured by this Configuration. * @param template The template context * @param context The context to configure * @throws Exception if unable to clone */ public void cloneConfigure (WebAppContext template, WebAppContext context) throws Exception; public class ClassList extends ArrayList { /* ------------------------------------------------------------ */ /** Get/Set/Create the server default Configuration ClassList. *

Get the class list from: a Server bean; or the attribute (which can * either be a ClassList instance or an String[] of class names); or a new instance * with default configuration classes.

*

This method also adds the obtained ClassList instance as a dependent bean * on the server and clears the attribute

* @param server The server the default is for * @return the server default ClassList instance of the configuration classes for this server. Changes to this list will change the server default instance. */ public static ClassList setServerDefault(Server server) { ClassList cl=server.getBean(ClassList.class); if (cl!=null) return cl; cl=serverDefault(server); server.addBean(cl); server.setAttribute(ATTR,null); return cl; } /* ------------------------------------------------------------ */ /** Get/Create the server default Configuration ClassList. *

Get the class list from: a Server bean; or the attribute (which can * either be a ClassList instance or an String[] of class names); or a new instance * with default configuration classes. * @param server The server the default is for * @return A copy of the server default ClassList instance of the configuration classes for this server. Changes to the returned list will not change the server default. */ public static ClassList serverDefault(Server server) { ClassList cl=null; if (server!=null) { cl= server.getBean(ClassList.class); if (cl!=null) return new ClassList(cl); Object attr = server.getAttribute(ATTR); if (attr instanceof ClassList) return new ClassList((ClassList)attr); if (attr instanceof String[]) return new ClassList((String[])attr); } return new ClassList(); } public ClassList() { this(WebAppContext.DEFAULT_CONFIGURATION_CLASSES); } public ClassList(String[] classes) { addAll(Arrays.asList(classes)); } public ClassList(List classes) { addAll(classes); } public void addAfter(@Name("afterClass") String afterClass,@Name("configClass")String... configClass) { if (configClass!=null && afterClass!=null) { ListIterator iter = listIterator(); while (iter.hasNext()) { String cc=iter.next(); if (afterClass.equals(cc)) { for (int i=0;i iter = listIterator(); while (iter.hasNext()) { String cc=iter.next(); if (beforeClass.equals(cc)) { iter.previous(); for (int i=0;i iter = listIterator(); while (iter.hasNext()) { String cc=iter.next(); if (replaceClass.equals(cc)) { iter.set(configClass); return; } } } throw new IllegalArgumentException("replaceClass '"+replaceClass+"' not found in "+this); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy