Package org.jboss.fresh.shell.commands

Source Code of org.jboss.fresh.shell.commands.EventCentralQueryExe

package org.jboss.fresh.shell.commands;

import org.jboss.fresh.io.BufferWriter;
import org.jboss.fresh.io.PrintWriter2;
import org.jboss.fresh.shell.AbstractExecutable;
import org.jboss.fresh.events.EventCentral;
import org.jboss.fresh.registry.RegistryContext;
import org.jboss.fresh.ctx.Context;

import java.util.Map;
import java.util.Iterator;
import javax.naming.NamingException;


public class EventCentralQueryExe extends AbstractExecutable {
  private static transient org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(EventCentralQueryExe.class);

  /**
   We set the current active project projekt.
   */

  public void process(String exepath, String[] params) throws Exception {
    log.debug("entered");

    PrintWriter2 out = new PrintWriter2(new BufferWriter(getStdOut()));

    boolean lb = false;
    boolean ll = false;
    boolean lr = false;
    boolean all = false;
    boolean help = false;

    String name = null;


    // see what to do:
    for (int i = 0; i < params.length; i++) {
      String val = params[i];

      if (val.equals("--lb")) {
        lb = true;
      } else if (val.equals("--ll")) {
        ll = true;
      } else if (val.equals("--lr")) {
        lr = true;
      } else if (val.equals("--name")) {
        if(i<params.length-1) {
          name = params[++i];
        } else {
          error("Parameter --name should be followed by registry name pointing to EventCentral instance");
          return;
        }
      } else if (val.equals("-a") || val.equals("--all")) {
        all = true;
      } else if (val.equals("-h") || val.equals("--help")) {
        help = true;
      }
    }

    if (params.length == 0 || help) {
      out.println("Usage: ecquery [-a] ( --lb | --ll | --lr ) [--name <lookup_name>] ");
      out.println("    --lb: list broadcasters");
      out.println("    --ll: list listeners");
      out.println("    --lr: list routers");
      out.println("    -a, --all:  include hidden");
      out.println("       --name:  get the object for the specified name");
      out.println("    -h, --help : this help");
      out.close();
      log.debug("done");
      return;
    }


    EventCentral ec = null;

    if (name != null) {
      RegistryContext ctx = new RegistryContext();
      try {
         ec = (EventCentral) ctx.lookup(name);
      } catch(ClassCastException ex) {
        error("Object bound in registry under " + name + " is not a valid EventCentral object: " + ctx.lookup(name));
        return;
      } catch(NamingException ex) {
        log.error("Failed to retrieve EventCentral: ", ex);
        error("Failed to find EventCentral with registry name: " + name);
        return;
      }
    } else {
      Context ctx = getShell().getContext();
      ec = (EventCentral) ctx.get("EventCentral");
    }

    if(ec == null) {
      error("Failed to locate EventCentral (make sure you specify EventCentral lookup name, or make sure instance is available in shell context under 'EventCentral')");
      return;
    }


    if(ll) {

      Map listeners = ec.getListeners(all);

      Iterator it = listeners.entrySet().iterator();
      while(it.hasNext()) {
        Map.Entry ent = (Map.Entry) it.next();

        EventCentral.ListenerData ldat = (EventCentral.ListenerData) ent.getValue();
        out.println(ent.getKey() + ": " + ldat.getFilter() + " - " + ldat.getListener());
      }
    } else if(lb) {
      Map broadcasters = ec.getBroadcasters(all);

      Iterator it = broadcasters.entrySet().iterator();
      while(it.hasNext()) {
        Map.Entry ent = (Map.Entry) it.next();
        out.println(ent.getKey() + ": " + ent.getValue());
      }
    }

    log.debug("done");
  }
}
TOP

Related Classes of org.jboss.fresh.shell.commands.EventCentralQueryExe

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.