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 }