| /******************************************************************************* |
| * 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 ); |
| } |
| } |
| } |