103928aee4356845252ac6b662d5c72c29903813eJake Slack//
203928aee4356845252ac6b662d5c72c29903813eJake Slack//  ========================================================================
303928aee4356845252ac6b662d5c72c29903813eJake Slack//  Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
403928aee4356845252ac6b662d5c72c29903813eJake Slack//  ------------------------------------------------------------------------
503928aee4356845252ac6b662d5c72c29903813eJake Slack//  All rights reserved. This program and the accompanying materials
603928aee4356845252ac6b662d5c72c29903813eJake Slack//  are made available under the terms of the Eclipse Public License v1.0
703928aee4356845252ac6b662d5c72c29903813eJake Slack//  and Apache License v2.0 which accompanies this distribution.
803928aee4356845252ac6b662d5c72c29903813eJake Slack//
903928aee4356845252ac6b662d5c72c29903813eJake Slack//      The Eclipse Public License is available at
1003928aee4356845252ac6b662d5c72c29903813eJake Slack//      http://www.eclipse.org/legal/epl-v10.html
1103928aee4356845252ac6b662d5c72c29903813eJake Slack//
1203928aee4356845252ac6b662d5c72c29903813eJake Slack//      The Apache License v2.0 is available at
1303928aee4356845252ac6b662d5c72c29903813eJake Slack//      http://www.opensource.org/licenses/apache2.0.php
1403928aee4356845252ac6b662d5c72c29903813eJake Slack//
1503928aee4356845252ac6b662d5c72c29903813eJake Slack//  You may elect to redistribute this code under either of these licenses.
1603928aee4356845252ac6b662d5c72c29903813eJake Slack//  ========================================================================
1703928aee4356845252ac6b662d5c72c29903813eJake Slack//
1803928aee4356845252ac6b662d5c72c29903813eJake Slack
1903928aee4356845252ac6b662d5c72c29903813eJake Slackpackage org.eclipse.jetty.server.handler;
2003928aee4356845252ac6b662d5c72c29903813eJake Slack
2103928aee4356845252ac6b662d5c72c29903813eJake Slack
2203928aee4356845252ac6b662d5c72c29903813eJake Slackimport java.io.IOException;
2303928aee4356845252ac6b662d5c72c29903813eJake Slack
2403928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.Handler;
2503928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.server.Server;
2603928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.util.component.AggregateLifeCycle;
2703928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.util.log.Log;
2803928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.util.log.Logger;
2903928aee4356845252ac6b662d5c72c29903813eJake Slack
3003928aee4356845252ac6b662d5c72c29903813eJake Slack
3103928aee4356845252ac6b662d5c72c29903813eJake Slack/* ------------------------------------------------------------ */
3203928aee4356845252ac6b662d5c72c29903813eJake Slack/** AbstractHandler.
3303928aee4356845252ac6b662d5c72c29903813eJake Slack *
3403928aee4356845252ac6b662d5c72c29903813eJake Slack *
3503928aee4356845252ac6b662d5c72c29903813eJake Slack */
3603928aee4356845252ac6b662d5c72c29903813eJake Slackpublic abstract class AbstractHandler extends AggregateLifeCycle implements Handler
3703928aee4356845252ac6b662d5c72c29903813eJake Slack{
3803928aee4356845252ac6b662d5c72c29903813eJake Slack    private static final Logger LOG = Log.getLogger(AbstractHandler.class);
3903928aee4356845252ac6b662d5c72c29903813eJake Slack
4003928aee4356845252ac6b662d5c72c29903813eJake Slack    private Server _server;
4103928aee4356845252ac6b662d5c72c29903813eJake Slack
4203928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
4303928aee4356845252ac6b662d5c72c29903813eJake Slack    /**
4403928aee4356845252ac6b662d5c72c29903813eJake Slack     *
4503928aee4356845252ac6b662d5c72c29903813eJake Slack     */
4603928aee4356845252ac6b662d5c72c29903813eJake Slack    public AbstractHandler()
4703928aee4356845252ac6b662d5c72c29903813eJake Slack    {
4803928aee4356845252ac6b662d5c72c29903813eJake Slack    }
4903928aee4356845252ac6b662d5c72c29903813eJake Slack
5003928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
5103928aee4356845252ac6b662d5c72c29903813eJake Slack    /*
5203928aee4356845252ac6b662d5c72c29903813eJake Slack     * @see org.eclipse.thread.LifeCycle#start()
5303928aee4356845252ac6b662d5c72c29903813eJake Slack     */
5403928aee4356845252ac6b662d5c72c29903813eJake Slack    @Override
5503928aee4356845252ac6b662d5c72c29903813eJake Slack    protected void doStart() throws Exception
5603928aee4356845252ac6b662d5c72c29903813eJake Slack    {
5703928aee4356845252ac6b662d5c72c29903813eJake Slack        LOG.debug("starting {}",this);
5803928aee4356845252ac6b662d5c72c29903813eJake Slack        super.doStart();
5903928aee4356845252ac6b662d5c72c29903813eJake Slack    }
6003928aee4356845252ac6b662d5c72c29903813eJake Slack
6103928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
6203928aee4356845252ac6b662d5c72c29903813eJake Slack    /*
6303928aee4356845252ac6b662d5c72c29903813eJake Slack     * @see org.eclipse.thread.LifeCycle#stop()
6403928aee4356845252ac6b662d5c72c29903813eJake Slack     */
6503928aee4356845252ac6b662d5c72c29903813eJake Slack    @Override
6603928aee4356845252ac6b662d5c72c29903813eJake Slack    protected void doStop() throws Exception
6703928aee4356845252ac6b662d5c72c29903813eJake Slack    {
6803928aee4356845252ac6b662d5c72c29903813eJake Slack        LOG.debug("stopping {}",this);
6903928aee4356845252ac6b662d5c72c29903813eJake Slack        super.doStop();
7003928aee4356845252ac6b662d5c72c29903813eJake Slack    }
7103928aee4356845252ac6b662d5c72c29903813eJake Slack
7203928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
7303928aee4356845252ac6b662d5c72c29903813eJake Slack    public void setServer(Server server)
7403928aee4356845252ac6b662d5c72c29903813eJake Slack    {
7503928aee4356845252ac6b662d5c72c29903813eJake Slack        Server old_server=_server;
7603928aee4356845252ac6b662d5c72c29903813eJake Slack        if (old_server!=null && old_server!=server)
7703928aee4356845252ac6b662d5c72c29903813eJake Slack            old_server.getContainer().removeBean(this);
7803928aee4356845252ac6b662d5c72c29903813eJake Slack        _server=server;
7903928aee4356845252ac6b662d5c72c29903813eJake Slack        if (_server!=null && _server!=old_server)
8003928aee4356845252ac6b662d5c72c29903813eJake Slack            _server.getContainer().addBean(this);
8103928aee4356845252ac6b662d5c72c29903813eJake Slack    }
8203928aee4356845252ac6b662d5c72c29903813eJake Slack
8303928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
8403928aee4356845252ac6b662d5c72c29903813eJake Slack    public Server getServer()
8503928aee4356845252ac6b662d5c72c29903813eJake Slack    {
8603928aee4356845252ac6b662d5c72c29903813eJake Slack        return _server;
8703928aee4356845252ac6b662d5c72c29903813eJake Slack    }
8803928aee4356845252ac6b662d5c72c29903813eJake Slack
8903928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
9003928aee4356845252ac6b662d5c72c29903813eJake Slack    public void destroy()
9103928aee4356845252ac6b662d5c72c29903813eJake Slack    {
9203928aee4356845252ac6b662d5c72c29903813eJake Slack        if (!isStopped())
9303928aee4356845252ac6b662d5c72c29903813eJake Slack            throw new IllegalStateException("!STOPPED");
9403928aee4356845252ac6b662d5c72c29903813eJake Slack        super.destroy();
9503928aee4356845252ac6b662d5c72c29903813eJake Slack        if (_server!=null)
9603928aee4356845252ac6b662d5c72c29903813eJake Slack            _server.getContainer().removeBean(this);
9703928aee4356845252ac6b662d5c72c29903813eJake Slack    }
9803928aee4356845252ac6b662d5c72c29903813eJake Slack
9903928aee4356845252ac6b662d5c72c29903813eJake Slack    /* ------------------------------------------------------------ */
10003928aee4356845252ac6b662d5c72c29903813eJake Slack    public void dumpThis(Appendable out) throws IOException
10103928aee4356845252ac6b662d5c72c29903813eJake Slack    {
10203928aee4356845252ac6b662d5c72c29903813eJake Slack        out.append(toString()).append(" - ").append(getState()).append('\n');
10303928aee4356845252ac6b662d5c72c29903813eJake Slack    }
10403928aee4356845252ac6b662d5c72c29903813eJake Slack
10503928aee4356845252ac6b662d5c72c29903813eJake Slack}
106