All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.vertx.mods.CRaSHBusMod Maven / Gradle / Ivy

package org.vertx.mods;

import org.crsh.shell.Shell;
import org.crsh.shell.ShellFactory;
import org.vertx.java.busmods.BusModBase;
import org.vertx.java.core.Handler;
import org.vertx.java.core.eventbus.Message;
import org.vertx.java.core.json.JsonArray;
import org.vertx.java.core.json.JsonObject;

import java.util.LinkedList;

/** @author Julien Viet */
public class CRaSHBusMod extends BusModBase {

  /** . */
  private VertxPluginLifeCycle lifeCycle;

  @Override
  public void start() {
    try {
      ClassLoader loader = Thread.currentThread().getContextClassLoader();
      lifeCycle = new VertxPluginLifeCycle(loader, this);
      lifeCycle.start();
      getVertx().eventBus().registerHandler("crash.execute", new Handler>() {
        @Override
        public void handle(Message event) {
          JsonArray requestsArray = event.body().getArray("requests");
          String replyTo = event.body().getString("replyTo");
          LinkedList requests = new LinkedList<>();
          for (Object o : requestsArray) {
            requests.add(o.toString());
          }
          ShellFactory factory = lifeCycle.getContext().getPlugin(ShellFactory.class);
          Shell shell = factory.create(null);
          VertxProcessContext context = new VertxProcessContext(
              getVertx().eventBus(),
              shell,
              requests,
              replyTo);
          context.run();
        }
      });
    }
    catch (Exception e) {
      throw new RuntimeException("Could not start mod", e);
    }
  }

  @Override
  public void stop() {
    if (lifeCycle != null) {
      lifeCycle.stop();
      lifeCycle = null;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy