blob: 41bdd62dc98e933b9de48e9c0002afa8c39887a5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 EclipseSource and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.rwt.cluster.testfixture.internal.server;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.eclipse.rap.rwt.application.Application;
import org.eclipse.rap.rwt.application.ApplicationConfiguration;
import org.eclipse.rap.rwt.application.ApplicationRunner;
import org.eclipse.rap.rwt.application.EntryPoint;
import org.eclipse.rap.rwt.application.Application.OperationMode;
import org.eclipse.rap.rwt.cluster.testfixture.server.IServletEngine;
public class RWTStartup {
public static ServletContextListener createServletContextListener(
Class<? extends EntryPoint> entryPointClass )
{
return new TestApplicationController( entryPointClass );
}
private static class TestApplicationController implements ServletContextListener {
private final Class<? extends EntryPoint> entryPointClass;
private ApplicationRunner applicationRunner;
private TestApplicationController( Class<? extends EntryPoint> entryPointClass ) {
this.entryPointClass = entryPointClass;
}
public void contextInitialized( ServletContextEvent event ) {
ApplicationConfiguration configuration = new TestApplicationConfigurator( entryPointClass );
applicationRunner = new ApplicationRunner( configuration, event.getServletContext() );
applicationRunner.start();
}
public void contextDestroyed( ServletContextEvent event ) {
applicationRunner.stop();
}
}
private static class TestApplicationConfigurator implements ApplicationConfiguration {
private final Class<? extends EntryPoint> entryPointClass;
private TestApplicationConfigurator( Class<? extends EntryPoint> entryPointClass ) {
this.entryPointClass = entryPointClass;
}
public void configure( Application configuration ) {
configuration.setOperationMode( OperationMode.SESSION_FAILOVER );
configuration.addEntryPoint( IServletEngine.SERVLET_PATH, entryPointClass, null );
}
}
}