Class DynamicOptions


  • public class DynamicOptions
    extends Object
    Helper class to define and parse options from plugins on ssh and RestAPI commands.
    • Field Detail

      • mergedClByCls

        protected static Map<ClassLoader,​Map<ClassLoader,​WeakReference<ClassLoader>>> mergedClByCls
        MergedClassloaders allow us to load classes from both plugin classloaders. Store the merged classloaders in a Map to avoid creating a new classloader for each invocation. Use a WeakHashMap to avoid leaking these MergedClassLoaders once either plugin is unloaded. Since the WeakHashMap only takes care of ensuring the Keys can get garbage collected, use WeakReferences to store the MergedClassloaders in the WeakHashMap.

        Outter keys are the bean plugin's classloaders (the plugin being extended)

        Inner keys are the dynamicBeans plugin's classloaders (the extending plugin)

        The value is the MergedClassLoader representing the merging of the outter and inner key classloaders.

      • injector

        protected com.google.inject.Injector injector
    • Constructor Detail

      • DynamicOptions

        public DynamicOptions​(Object bean,
                              com.google.inject.Injector injector,
                              DynamicMap<DynamicOptions.DynamicBean> dynamicBeans)
        Internal: For Gerrit to include options from DynamicBeans, setup a DynamicMap and instantiate this class so the following methods can be called if desired:
            DynamicOptions pluginOptions = new DynamicOptions(bean, injector, dynamicBeans);
            pluginOptions.parseDynamicBeans(clp);
            pluginOptions.setDynamicBeans();
            pluginOptions.onBeanParseStart();
        
            // parse arguments here:  clp.parseArgument(argv);
        
            pluginOptions.onBeanParseEnd();
         
    • Method Detail

      • parseDynamicBeans

        public void parseDynamicBeans​(com.google.gerrit.util.cli.CmdLineParser clp)
      • setDynamicBeans

        public void setDynamicBeans()
      • onBeanParseStart

        public void onBeanParseStart()
      • onBeanParseEnd

        public void onBeanParseEnd()