// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/JettyBootstrapException.java
// public class JettyBootstrapException extends Exception {
// 
// 	private static final long serialVersionUID = 3855898924513137363L;
// 
// 	public JettyBootstrapException(String s) {
// 		super(s);
// 	}
// 
// 	public JettyBootstrapException(Throwable throwable) {
// 		super(throwable);
// 	}
// 
// 	public JettyBootstrapException(String s, Throwable throwable) {
// 		super(s, throwable);
// 	}
// }
// 
// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/handler/util/JettyLifeCycleLogListener.java
// public class JettyLifeCycleLogListener implements Listener{
// 
// 	private final static Logger LOG = LoggerFactory.getLogger(JettyLifeCycleLogListener.class);
// 	
//     private IJettyHandler<?> iJettyHandler;
// 	
// 	public JettyLifeCycleLogListener(final IJettyHandler<?> iJettyHandler) {
// 	    this.iJettyHandler = iJettyHandler;
// 	}
// 
// 	@Override
// 	public void lifeCycleStarting(LifeCycle event) {
// 	    LOG.trace("Starting {}...", iJettyHandler.toString());
// 	}
// 
// 	@Override
// 	public void lifeCycleStarted(LifeCycle event) {
// 	    LOG.debug("{} Started", iJettyHandler.toString());
// 	}
// 
// 	@Override
// 	public void lifeCycleFailure(LifeCycle event, Throwable cause) {
// 	    LOG.error("Failure {}", iJettyHandler.toString(), cause);
// 	}
// 
// 	@Override
// 	public void lifeCycleStopping(LifeCycle event) {
// 		LOG.trace("Stopping {}...", iJettyHandler.toString());
// 	}
// 
// 	@Override
// 	public void lifeCycleStopped(LifeCycle event) {
// 		LOG.debug("{} Stopped", iJettyHandler.toString());
// 	}
// }


import org.eclipse.jetty.server.Handler;
import org.teknux.jettybootstrap.JettyBootstrapException;
import org.teknux.jettybootstrap.handler.util.JettyLifeCycleLogListener;
import java.text.MessageFormat;
/*******************************************************************************
 * (C) Copyright 2014 Teknux.org (http://teknux.org/).
 *  
 * 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.
 *  
 * Contributors:
 *      "Pierre PINON"
 *      "Francois EYL"
 *      "Laurent MARCHAL"
 *  
 *******************************************************************************/
package org.teknux.jettybootstrap.handler;




abstract public class AbstractJettyHandler<T extends Handler> implements IJettyHandler<T> {

    @Override
    final public T getHandler() throws JettyBootstrapException {
        T handler = createHandler();
        
        handler.addLifeCycleListener(new JettyLifeCycleLogListener(this));
        
        return handler;
    }
    
// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/JettyBootstrapException.java
// public class JettyBootstrapException extends Exception {
// 
// 	private static final long serialVersionUID = 3855898924513137363L;
// 
// 	public JettyBootstrapException(String s) {
// 		super(s);
// 	}
// 
// 	public JettyBootstrapException(Throwable throwable) {
// 		super(throwable);
// 	}
// 
// 	public JettyBootstrapException(String s, Throwable throwable) {
// 		super(s, throwable);
// 	}
// }
// 
// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/handler/util/JettyLifeCycleLogListener.java
// public class JettyLifeCycleLogListener implements Listener{
// 
// 	private final static Logger LOG = LoggerFactory.getLogger(JettyLifeCycleLogListener.class);
// 	
//     private IJettyHandler<?> iJettyHandler;
// 	
// 	public JettyLifeCycleLogListener(final IJettyHandler<?> iJettyHandler) {
// 	    this.iJettyHandler = iJettyHandler;
// 	}
// 
// 	@Override
// 	public void lifeCycleStarting(LifeCycle event) {
// 	    LOG.trace("Starting {}...", iJettyHandler.toString());
// 	}
// 
// 	@Override
// 	public void lifeCycleStarted(LifeCycle event) {
// 	    LOG.debug("{} Started", iJettyHandler.toString());
// 	}
// 
// 	@Override
// 	public void lifeCycleFailure(LifeCycle event, Throwable cause) {
// 	    LOG.error("Failure {}", iJettyHandler.toString(), cause);
// 	}
// 
// 	@Override
// 	public void lifeCycleStopping(LifeCycle event) {
// 		LOG.trace("Stopping {}...", iJettyHandler.toString());
// 	}
// 
// 	@Override
// 	public void lifeCycleStopped(LifeCycle event) {
// 		LOG.debug("{} Stopped", iJettyHandler.toString());
// 	}
// }


// Path: jetty-bootstrap/src/main/java/org/teknux/jettybootstrap/handler/AbstractJettyHandler.java
import org.eclipse.jetty.server.Handler;
import org.teknux.jettybootstrap.JettyBootstrapException;
import org.teknux.jettybootstrap.handler.util.JettyLifeCycleLogListener;
import java.text.MessageFormat;

/*******************************************************************************
 * (C) Copyright 2014 Teknux.org (http://teknux.org/).
 *  
 * 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.
 *  
 * Contributors:
 *      "Pierre PINON"
 *      "Francois EYL"
 *      "Laurent MARCHAL"
 *  
 *******************************************************************************/
package org.teknux.jettybootstrap.handler;




abstract public class AbstractJettyHandler<T extends Handler> implements IJettyHandler<T> {

    @Override
    final public T getHandler() throws JettyBootstrapException {
        T handler = createHandler();
        
        handler.addLifeCycleListener(new JettyLifeCycleLogListener(this));
        
        return handler;
    }
    
    abstract protected T createHandler() throws JettyBootstrapException;