| /******************************************************************************* |
| * 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.http.HttpSession; |
| |
| import org.eclipse.rap.rwt.application.EntryPoint; |
| import org.eclipse.rap.rwt.cluster.testfixture.server.IServletEngine; |
| |
| |
| public class DelegatingServletEngine implements IServletEngine { |
| |
| private final IServletEngine delegate; |
| private boolean running; |
| |
| public DelegatingServletEngine( IServletEngine delegate ) { |
| this.delegate = delegate; |
| } |
| |
| public IServletEngine getDelegate() { |
| return delegate; |
| } |
| |
| public void start( Class<? extends EntryPoint> entryPointClass ) throws Exception { |
| checkNotNull( entryPointClass ); |
| checkNotRunning(); |
| delegate.start( entryPointClass ); |
| running = true; |
| } |
| |
| public void stop() throws Exception { |
| stop( 0 ); |
| } |
| |
| public void stop( int timeout ) throws Exception { |
| if( running ) { |
| delegate.stop( timeout ); |
| running = false; |
| } |
| } |
| |
| public int getPort() { |
| return delegate.getPort(); |
| } |
| |
| public HttpSession[] getSessions() { |
| if( !running ) { |
| String msg = "Sessions can only be accessed while the servlet engine is running."; |
| throw new IllegalStateException( msg ); |
| } |
| return delegate.getSessions(); |
| } |
| |
| private void checkNotNull( Class<? extends EntryPoint> entryPointClass ) { |
| if( entryPointClass == null ) { |
| throw new NullPointerException( "entryPointClass" ); |
| } |
| } |
| |
| private void checkNotRunning() { |
| if( running ) { |
| throw new IllegalStateException( "Servlet engine was already started: " + this ); |
| } |
| } |
| } |