blob: 79fd808795f8a82a9bc9c4736c5b9e3a6864f1a6 [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.tomcat;
import java.util.LinkedList;
import java.util.List;
import org.eclipse.rap.rwt.application.EntryPoint;
import org.eclipse.rap.rwt.cluster.testfixture.internal.server.DelegatingServletEngine;
import org.eclipse.rap.rwt.cluster.testfixture.server.IServletEngine;
import org.eclipse.rap.rwt.cluster.testfixture.server.IServletEngineCluster;
public class TomcatCluster implements IServletEngineCluster {
private final List<DelegatingServletEngine> servletEngines;
public TomcatCluster() {
servletEngines = new LinkedList<DelegatingServletEngine>();
}
public IServletEngine addServletEngine() {
TomcatEngine tomcatEngine = new TomcatEngine();
return addServletEngine( tomcatEngine );
}
public IServletEngine addServletEngine( int port ) {
TomcatEngine tomcatEngine = new TomcatEngine( port );
return addServletEngine( tomcatEngine );
}
public void removeServletEngine( IServletEngine servletEngine ) {
checkBelongsToCluster( servletEngine );
DelegatingServletEngine delegatingServletEngine = ( DelegatingServletEngine )servletEngine;
TomcatEngine tomcatEngine = ( TomcatEngine )delegatingServletEngine.getDelegate();
tomcatEngine.getEngine().setCluster( null );
}
public void start( Class<? extends EntryPoint> entryPointClass ) throws Exception {
for( DelegatingServletEngine servletEngine : servletEngines ) {
configureEngine( ( TomcatEngine )servletEngine.getDelegate() );
servletEngine.start( entryPointClass );
}
}
public void stop() throws Exception {
for( IServletEngine servletEngine : servletEngines ) {
servletEngine.stop();
}
}
private IServletEngine addServletEngine( TomcatEngine tomcatEngine ) {
DelegatingServletEngine result = new DelegatingServletEngine( tomcatEngine );
servletEngines.add( result );
return result;
}
private static void configureEngine( TomcatEngine servletEngine ) {
new ClusterConfigurer( servletEngine.getEngine() ).configure();
}
private void checkBelongsToCluster( IServletEngine servletEngine ) {
if( !servletEngines.contains( servletEngine ) ) {
String msg = "Servlet engine does not belong to cluster: " + servletEngine;
throw new IllegalArgumentException( msg );
}
}
}