Package com.ebiznext.soapui

Source Code of com.ebiznext.soapui.SoapUICoreExt$MonitorThread

/**
*
*/
package com.ebiznext.soapui;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

import org.apache.log4j.Logger;

import com.eviware.soapui.DefaultSoapUICore;
import com.eviware.soapui.model.mock.MockRunner;
import com.eviware.soapui.model.settings.Settings;
import com.eviware.soapui.monitor.MockEngine;
import com.eviware.soapui.settings.HttpSettings;

/**
* @author stephane.manciot@ebiznext.com
*
*/
public class SoapUICoreExt extends DefaultSoapUICore {

  private int stopPort = 8081;

  public SoapUICoreExt() {
    super(null, DEFAULT_SETTINGS_FILE);
    getSettings().setBoolean(HttpSettings.LEAVE_MOCKENGINE, true);
  }

  public void setStopPort(int stopPort){
    this.stopPort = stopPort;
  }

  /* (non-Javadoc)
   * @see com.eviware.soapui.DefaultSoapUICore#buildMockEngine()
   */
  @Override
  protected MockEngine buildMockEngine() {
    MockEngine engine = super.buildMockEngine();
    Thread monitor = new MonitorThread(getSettings(), engine, stopPort);
        monitor.start();
    return engine;
  }

  private static class MonitorThread extends Thread {

    private ServerSocket socket;

    private MockEngine instance;

    private Settings settings;

    private final static Logger log = Logger.getLogger( MonitorThread.class );

    public MonitorThread(Settings settings, MockEngine instance, int port) {
      this.instance = instance;
      this.settings = settings;
      setDaemon(true);
      setName("StopMonitor");
      try {
        socket = new ServerSocket(port, 1,
            InetAddress.getByName("127.0.0.1"));
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }

    @Override
    public void run() {
      log.info("*** running jetty 'stop' thread");
      Socket accept;
      try {
        accept = socket.accept();
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(accept.getInputStream()));
        reader.readLine();
        log.info("*** stopping jetty embedded server");
        settings.setBoolean(HttpSettings.LEAVE_MOCKENGINE, false);
        for(MockRunner mockRunner : instance.getMockRunners()){
          log.info("Stopping SoapUI SBT MockService Runner started on port => "
              + mockRunner.getMockService().getPort());
          instance.stopMockService(mockRunner);
        }
        settings.setBoolean(HttpSettings.LEAVE_MOCKENGINE, true);
        accept.close();
        socket.close();
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
  }
}
TOP

Related Classes of com.ebiznext.soapui.SoapUICoreExt$MonitorThread

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.