/** * Creates an {@link OptionHandler} that handles the given {@link Option} annotation * and the {@link Setter} instance. */ @SuppressWarnings("unchecked") protected OptionHandler createOptionHandler(CmdLineParser parser, OptionDef o, Setter setter) { checkNonNull(o, "CmdLineParser"); checkNonNull(o, "OptionDef"); checkNonNull(setter, "Setter"); Class<? extends OptionHandler> h = o.handler(); if(h==OptionHandler.class) { // infer the type Class<?> t = setter.getType(); // enum is the special case if(Enum.class.isAssignableFrom(t)) return new EnumOptionHandler(parser,o,setter,t); OptionHandlerFactory factory = handlers.get(t); if (factory==null) throw new IllegalAnnotationError(Messages.UNKNOWN_HANDLER.format(t)); return factory.getHandler(parser, o, setter); } else { // explicit handler specified return new DefaultConstructorHandlerFactory(h).getHandler(parser, o, setter); } }
/** * Creates an {@link OptionHandler} that handles the given {@link Option} annotation * and the {@link Setter} instance. */ @SuppressWarnings("unchecked") protected OptionHandler createOptionHandler(CmdLineParser parser, OptionDef o, Setter setter) { checkNonNull(o, "CmdLineParser"); checkNonNull(o, "OptionDef"); checkNonNull(setter, "Setter"); Class<? extends OptionHandler> h = o.handler(); if(h==OptionHandler.class) { // infer the type Class<?> t = setter.getType(); // enum is the special case if(Enum.class.isAssignableFrom(t)) return new EnumOptionHandler(parser,o,setter,t); OptionHandlerFactory factory = handlers.get(t); if (factory==null) throw new IllegalAnnotationError(Messages.UNKNOWN_HANDLER.format(t)); return factory.getHandler(parser, o, setter); } else { // explicit handler specified return new DefaultConstructorHandlerFactory(h).getHandler(parser, o, setter); } }
@Override public Class getType() { return setter.getType(); }
@Override public Class<String> getType() { return (Class<String>) proxy.getType(); }
@Override public Class getType() { return setter.getType(); }
@Override public Class<String> getType() { return (Class<String>) proxy.getType(); }
@SuppressWarnings("unchecked") private boolean isPrimitive(final Setter setter) { return setter.getType().isPrimitive(); } }
@SuppressWarnings("unchecked") private boolean isPrimitive(final Setter setter) { return setter.getType().isPrimitive(); } }
@SuppressWarnings("unchecked") private boolean isEnum(final Setter setter) { return Enum.class.isAssignableFrom(setter.getType()); }
@SuppressWarnings("unchecked") private boolean isEnum(final Setter setter) { return Enum.class.isAssignableFrom(setter.getType()); }
@Override public int parseArguments(Parameters params) throws CmdLineException { if (CmdLineOptionsProvider.class.isAssignableFrom(this.setter.getType())) { removeExtraArgs(); } int val = proxy.parseArguments(params); if (CmdLineOptionsProvider.class.isAssignableFrom(this.setter.getType())) { handleExtraArgs(); } return val; }
@Override public int parseArguments(Parameters params) throws CmdLineException { if (CmdLineOptionsProvider.class.isAssignableFrom(this.setter.getType())) { removeExtraArgs(); } int val = proxy.parseArguments(params); if (CmdLineOptionsProvider.class.isAssignableFrom(this.setter.getType())) { handleExtraArgs(); } return val; }
@SuppressWarnings("unchecked") @Override protected OptionHandler createOptionHandler(final OptionDef option, final Setter setter) { if (isHandlerSpecified(option) || isEnum(setter) || isPrimitive(setter)) { return super.createOptionHandler(option, setter); } final Key<OptionHandlerFactory<?>> key = OptionHandlerUtil.keyFor(setter.getType()); Injector i = injector; while (i != null) { if (i.getBindings().containsKey(key)) { return i.getInstance(key).create(this, option, setter); } i = i.getParent(); } return super.createOptionHandler(option, setter); }
/** * Default constructor. * @param parser the parser * @param option the option definition * @param setter the setter * @throws CmdLineException */ public ProxyOptionHandler(CmdLineParser parser, OptionDef option, Setter<? super Object> setter) throws CmdLineException { super(parser, option, setter); OptionDef proxyOption = new OptionDef(option.usage(), option.metaVar(), option.required(), OptionHandler.class, option.isMultiValued()); proxy = parser.createOptionHandler(proxyOption, setter); if (!option.required() && CmdLineOptionsProvider.class.isAssignableFrom(this.setter.getType())) { handleExtraArgs(); } }
/** * Default constructor. * @param parser the parser * @param option the option definition * @param setter the setter * @throws CmdLineException */ public ProxyOptionHandler(CmdLineParser parser, OptionDef option, Setter<? super Object> setter) throws CmdLineException { super(parser, option, setter); OptionDef proxyOption = new OptionDef(option.usage(), option.metaVar(), option.required(), OptionHandler.class, option.isMultiValued()); proxy = parser.createOptionHandler(proxyOption, setter); if (!option.required() && CmdLineOptionsProvider.class.isAssignableFrom(this.setter.getType())) { handleExtraArgs(); } }
@SuppressWarnings("unchecked") @Override protected OptionHandler createOptionHandler(final OptionDef option, final Setter setter) { if (isHandlerSpecified(option) || isEnum(setter) || isPrimitive(setter)) { return super.createOptionHandler(option, setter); } final Key<OptionHandlerFactory<?>> key = OptionHandlerUtil.keyFor(setter.getType()); Injector i = injector; while (i != null) { if (i.getBindings().containsKey(key)) { return i.getInstance(key).create(this, option, setter); } i = i.getParent(); } return super.createOptionHandler(option, setter); }
/** * Creates an {@link OptionHandler} that handles the given {@link Option} annotation * and the {@link Setter} instance. */ @SuppressWarnings("unchecked") protected OptionHandler createOptionHandler(CmdLineParser parser, OptionDef o, Setter setter) { checkNonNull(o, "CmdLineParser"); checkNonNull(o, "OptionDef"); checkNonNull(setter, "Setter"); Class<? extends OptionHandler> h = o.handler(); if(h==OptionHandler.class) { // infer the type Class<?> t = setter.getType(); // enum is the special case if(Enum.class.isAssignableFrom(t)) return new EnumOptionHandler(parser,o,setter,t); OptionHandlerFactory factory = handlers.get(t); if (factory==null) throw new IllegalAnnotationError(Messages.UNKNOWN_HANDLER.format(t)); return factory.getHandler(parser, o, setter); } else { // explicit handler specified return new DefaultConstructorHandlerFactory(h).getHandler(parser, o, setter); } }
/** * Creates an {@link OptionHandler} that handles the given {@link Option} annotation * and the {@link Setter} instance. */ @SuppressWarnings("unchecked") protected OptionHandler createOptionHandler(CmdLineParser parser, OptionDef o, Setter setter) { checkNonNull(o, "CmdLineParser"); checkNonNull(o, "OptionDef"); checkNonNull(setter, "Setter"); Class<? extends OptionHandler> h = o.handler(); if(h==OptionHandler.class) { // infer the type Class<?> t = setter.getType(); // enum is the special case if(Enum.class.isAssignableFrom(t)) return new EnumOptionHandler(parser,o,setter,t); OptionHandlerFactory factory = handlers.get(t); if (factory==null) throw new IllegalAnnotationError(Messages.UNKNOWN_HANDLER.format(t)); return factory.getHandler(parser, o, setter); } else { // explicit handler specified return new DefaultConstructorHandlerFactory(h).getHandler(parser, o, setter); } }