001 package org.shiftone.jrat.core.command;
002
003 import org.shiftone.jrat.core.spi.Commandlet;
004 import org.shiftone.jrat.util.AtomicLong;
005 import org.shiftone.jrat.util.log.Logger;
006
007 import java.util.Collections;
008 import java.util.Map;
009 import java.util.SortedMap;
010 import java.util.TreeMap;
011
012 /**
013 * @author jeff@shiftone.org (Jeff Drost)
014 */
015 public class CommandletRegistry {
016
017 private static final Logger LOG = Logger.getLogger(CommandletRegistry.class);
018 private SortedMap commandlets = new TreeMap();
019 private AtomicLong sequence = new AtomicLong();
020 private Commandlet defaultCommandlet = new ListRegistryCommandlet(this);
021
022
023 public CommandletRegistry() {
024 register(defaultCommandlet);
025 register(new SystemPropertiesCommandlet());
026 }
027
028 public void register(Commandlet commandlet) {
029 LOG.info("register " + commandlet);
030 commandlets.put(Long.toHexString(sequence.incrementAndGet()), commandlet);
031 }
032
033 public Map getCommandlets() {
034 return Collections.unmodifiableMap(commandlets);
035 }
036
037 public Commandlet getDefaultCommandlet() {
038 return defaultCommandlet;
039 }
040 }