Package com.eviware.soapui.impl.wsdl.mock

Source Code of com.eviware.soapui.impl.wsdl.mock.MockRunnerManagerImpl

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.impl.wsdl.mock;

import java.util.HashMap;
import java.util.Map;
import java.util.Vector;

import org.apache.log4j.Logger;

import com.eviware.soapui.config.MockServiceConfig;
import com.eviware.soapui.model.project.Project;
import com.eviware.soapui.model.testsuite.TestCase;

public class MockRunnerManagerImpl implements MockRunnerManager
{
  private final static Logger log = Logger.getLogger( MockRunnerManagerImpl.class );

  private static Map<String, MockRunnerManager> managers = new HashMap<String, MockRunnerManager>();

  private Map<String, WsdlMockService> mockServices = new HashMap<String, WsdlMockService>();

  private Vector<WsdlMockRunner> mockRunners = new Vector<WsdlMockRunner>();

  private Project project;

  private MockRunnerManagerImpl( Project project )
  {
    this.project = project;
  }

  public static MockRunnerManager getInstance( TestCase testCase )
  {
    if( managers.containsKey( testCase.getId() ) )
    {
      return managers.get( testCase.getId() );
    }
    else
    {
      MockRunnerManager manager = new MockRunnerManagerImpl( testCase.getTestSuite().getProject() );
      managers.put( testCase.getId(), manager );

      return manager;
    }
  }

  public WsdlMockService getMockService( int port, String path )
  {
    String key = port + path;

    WsdlMockService service = mockServices.get( key );
    if( service == null )
    {
      MockServiceConfig mockServiceConfig = MockServiceConfig.Factory.newInstance();
      mockServiceConfig.setPath( path );
      mockServiceConfig.setPort( port );
      mockServiceConfig.setName( port + ":" + path );
      service = new WsdlMockService( project, mockServiceConfig );
      mockServices.put( key, service );
    }

    return service;
  }

  public void start() throws MockRunnerManagerException
  {
    if( log.isDebugEnabled() )
    {
      log.debug( "Starting MockRunnerManager" );
    }

    for( WsdlMockService mockService : mockServices.values() )
    {
      try
      {
        mockRunners.add( mockService.start() );
      }
      catch( Exception e )
      {
        throw new MockRunnerManagerException( "Failed to create a WsdlMockRunner", e );
      }
    }
  }

  public void stop()
  {
    if( log.isDebugEnabled() )
    {
      log.debug( "Stopping MockRunnerManager" );
    }

    for( WsdlMockRunner runner : mockRunners )
    {
      try
      {
        runner.stop();
      }
      catch( Exception e )
      {
        log.error( e );
      }
    }

    mockServices.clear();
    mockRunners.clear();
  }

  public boolean isStarted()
  {
    for( WsdlMockRunner runner : mockRunners )
    {
      if( runner.isRunning() )
      {
        return true;
      }
    }

    return false;
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.mock.MockRunnerManagerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.