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

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

package org.vertx.mods;

import org.crsh.plugin.PluginContext;
import org.crsh.plugin.PluginLifeCycle;
import org.crsh.plugin.ServiceLoaderDiscovery;
import org.crsh.vfs.FS;
import org.crsh.vfs.Path;
import org.vertx.java.core.json.JsonArray;
import org.vertx.java.core.json.JsonObject;
import org.vertx.java.platform.Verticle;

import java.io.File;
import java.util.Collections;
import java.util.HashMap;
import java.util.Properties;

/** @author Julien Viet */
class VertxPluginLifeCycle extends PluginLifeCycle {

  /** . */
  private final ClassLoader loader;

  /** . */
  private final Verticle verticle;

  /** . */
  private final PluginContext context;

  VertxPluginLifeCycle(ClassLoader loader, Verticle verticle) throws Exception {

    //
    HashMap attributes = new HashMap();
    attributes.put("vertx", verticle.getVertx());
    attributes.put("container", verticle.getContainer());

    //
    JsonObject verticleConfig = verticle.getContainer().config();

    // Build configuration
    Properties config = new Properties();
    for (String s : verticleConfig.getFieldNames()) {
      if (s.startsWith("crash.")) {
        String value = "" + verticleConfig.getField(s);
        config.put(s, value);
      }
    }
    setConfig(config);

    //
    FS confFS = new FS();

    //
    FS cmdFS = new FS();
    cmdFS.mount(loader, Path.get("/crash/commands/"));
    Object o = verticleConfig.getField("cmd");
    if (o instanceof String) {
      cmdFS.mount(new File((String)o));
    } else if (o instanceof JsonArray) {
      JsonArray array = (JsonArray)o;
      for (Object e : array) {
        if (e instanceof String) {
          cmdFS.mount(new File((String)e));
        }
      }
    }

    //
    PluginContext context = new PluginContext(
        new ServiceLoaderDiscovery(loader),
        Collections.unmodifiableMap(attributes),
        cmdFS,
        confFS,
        loader);

    //
    this.loader = loader;
    this.verticle = verticle;
    this.context = context;
  }

  void start() {
    context.refresh();
    start(context);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy