public class DynamicOptions
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static interface |
DynamicOptions.BeanParseListener
Implement this if your DynamicBean needs an opportunity to act on the Bean directly before or
after argument parsing.
|
static interface |
DynamicOptions.BeanReceiver
The entity which provided additional options may need a way to receive a reference to the
DynamicBean it provided.
|
static interface |
DynamicOptions.ClassNameProvider
To provide additional options to a command in another classloader, bind a ClassNameProvider
which provides the name of your DynamicBean in the other classLoader.
|
static interface |
DynamicOptions.DynamicBean
To provide additional options, bind a DynamicBean.
|
static interface |
DynamicOptions.ModulesClassNamesProvider
To provide additional Guice bindings for options to a command in another classloader, bind a
ModulesClassNamesProvider which provides the name of your Modules needed for your DynamicBean
in the other classLoader.
|
Modifier and Type | Field and Description |
---|---|
protected java.lang.Object |
bean |
protected java.util.Map<java.lang.String,DynamicOptions.DynamicBean> |
beansByPlugin |
protected com.google.inject.Injector |
injector |
protected static java.util.Map<java.lang.ClassLoader,java.util.Map<java.lang.ClassLoader,java.lang.ref.WeakReference<java.lang.ClassLoader>>> |
mergedClByCls
MergedClassloaders allow us to load classes from both plugin classloaders.
|
Constructor and Description |
---|
DynamicOptions(java.lang.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:
|
Modifier and Type | Method and Description |
---|---|
DynamicOptions.DynamicBean |
getDynamicBean(java.lang.Object bean,
DynamicOptions.DynamicBean dynamicBean) |
protected java.lang.ClassLoader |
getMergedClassLoader(java.lang.ClassLoader beanCl,
java.lang.ClassLoader dynamicBeanCl) |
void |
onBeanParseEnd() |
void |
onBeanParseStart() |
void |
parseDynamicBeans(com.google.gerrit.util.cli.CmdLineParser clp) |
void |
setDynamicBeans() |
protected static java.util.Map<java.lang.ClassLoader,java.util.Map<java.lang.ClassLoader,java.lang.ref.WeakReference<java.lang.ClassLoader>>> mergedClByCls
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.
protected java.lang.Object bean
protected java.util.Map<java.lang.String,DynamicOptions.DynamicBean> beansByPlugin
protected com.google.inject.Injector injector
public DynamicOptions(java.lang.Object bean, com.google.inject.Injector injector, DynamicMap<DynamicOptions.DynamicBean> dynamicBeans)
DynamicOptions pluginOptions = new DynamicOptions(bean, injector, dynamicBeans); pluginOptions.parseDynamicBeans(clp); pluginOptions.setDynamicBeans(); pluginOptions.onBeanParseStart(); // parse arguments here: clp.parseArgument(argv); pluginOptions.onBeanParseEnd();
public DynamicOptions.DynamicBean getDynamicBean(java.lang.Object bean, DynamicOptions.DynamicBean dynamicBean)
protected java.lang.ClassLoader getMergedClassLoader(java.lang.ClassLoader beanCl, java.lang.ClassLoader dynamicBeanCl)
public void parseDynamicBeans(com.google.gerrit.util.cli.CmdLineParser clp)
public void setDynamicBeans()
public void onBeanParseStart()
public void onBeanParseEnd()