Package org.bladerunnerjs.plugin.plugins.appdeployer

Source Code of org.bladerunnerjs.plugin.plugins.appdeployer.AppDeploymentObserverPlugin$Messages

package org.bladerunnerjs.plugin.plugins.appdeployer;

import java.io.IOException;
import java.net.ServerSocket;

import org.bladerunnerjs.appserver.BRJSApplicationServer;
import org.bladerunnerjs.logging.Logger;
import org.bladerunnerjs.model.App;
import org.bladerunnerjs.model.BRJS;
import org.bladerunnerjs.model.engine.Node;
import org.bladerunnerjs.model.events.AppDeployedEvent;
import org.bladerunnerjs.model.exception.ConfigException;
import org.bladerunnerjs.plugin.Event;
import org.bladerunnerjs.plugin.EventObserver;
import org.bladerunnerjs.plugin.ModelObserverPlugin;
import org.bladerunnerjs.plugin.base.AbstractModelObserverPlugin;


public class AppDeploymentObserverPlugin extends AbstractModelObserverPlugin implements EventObserver, ModelObserverPlugin
{
 
  // TODO: this message is currently only used by an integration test and not by BRJS command runner
  public class Messages {
    public static final String NEW_APP_LOG_MSG = "New app '%s' found, creating deploy file.";
    public static final String NEW_APP_APPSERVER_NOT_RUNNING_MSG = "New app '%s' found but appserver is not running. Deploy file will not be crated.";
  }
 
  private Logger logger;
  private BRJS brjs;

  @Override
  public void setBRJS(BRJS brjs)
  {
    this.brjs = brjs;
    brjs.addObserver( AppDeployedEvent.class, this );
    logger = brjs.logger(this.getClass());
  }

  @Override
  public void onEventEmitted(Event event, Node node)
  {
    App app = (App) node;
   
    try
    {
      if (isAppServerRunning()) {
        logger.debug(Messages.NEW_APP_LOG_MSG, app.getName());
        app.file(BRJSApplicationServer.DEPLOY_APP_FILENAME).createNewFile();
      } else {
        logger.debug(Messages.NEW_APP_APPSERVER_NOT_RUNNING_MSG, app.getName());
      }
    }
    catch(Exception ex)
    {
      throw new RuntimeException(ex);
    }
  }
 
  private boolean isAppServerRunning() throws ConfigException {
    int appserverPort = brjs.bladerunnerConf().getJettyPort();
    try (ServerSocket socket = new ServerSocket(appserverPort))
    {
      socket.getClass(); /* reference socket to prevent the compiler complaining that is isn't referenced */
      return false;
    }
    catch (IOException ex)
    {
      return true;
    }
  }

}
TOP

Related Classes of org.bladerunnerjs.plugin.plugins.appdeployer.AppDeploymentObserverPlugin$Messages

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.