Current Configuration Manager

 
load
  kernel.loadGBean(config...)

loadGBeans
  startGBean(configName)
  invoke(configuName, "loadGBeans"...)

start
  invoke(configName, "startRecursiveGBeans")

stop
  invoke(configName, "stopGBeans")

loadRecursive
  call load for a config and all parents

unload
  invoke(configName, "unloadGBeans")
  stopGBean(configName)
  unloadGBean(configName)

New Configuration Manager

 
load(configId)
  foreach unloaded child to parent
    kernel.loadGBean(config)

  foreach unloaded parent to child
    startGBean(configName)

  foreach unloaded parent to child
    invoke(configuName, "loadGBeans"...)

  increment loaded count on configId

start(configId)
  foreach unstarted parent to child
    invoke(configName, "startRecursiveGBeans")

stop(configId) - does not stop any parents
  invoke(configName, "startRecursiveGBeans")

unload(configId)
  decrement loaded count on configId
  foreach config without a reference count and without childern with a reference count
    invoke(configName, "unloadGBeans")
    stopGBean(configName)
    unloadGBean(configName)