@Override public void setOption(final OptionValue value) { checkArgument(value.getType() == OptionType.SYSTEM, "OptionType must be SYSTEM."); final String name = value.getName().toLowerCase(); final OptionValidator validator = getValidator(name); validator.validate(value); // validate the option if (options.get(name) == null && value.equals(validator.getDefault())) { return; // if the option is not overridden, ignore setting option to default } options.put(name, value); }
@Override public void setOption(OptionValue value) { final OptionValidator validator = fallback.getValidator(value.getName()); validator.validate(value); // validate the option // fallback if unable to set locally if (!setLocalOption(value)) { fallback.setOption(value); } }
@Override public void validate(OptionValue v) { if (v.getType() != OptionType.QUERY) { throw UserException.validationError() .message("Query level options can only be set at QUERY level scope. Given scope '%s'.", v.getType()) .build(logger); } inner.validate(v); } }
@Test public void ok() { OptionValidator validator = newValidator("foo"); // check no fail... validator.validate(OptionValue.createString(OptionValue.OptionType.QUERY, "test-option", "bar")); }
@Test(expected = UserException.class) public void invalidOption() { OptionValidator validator = newValidator("foo"); validator.validate(newStringValue("bar")); } }
public static void setControls(final UserSession session, final String controls) { validateControlsString(controls); final OptionValue opValue = OptionValue.createString(OptionValue.OptionType.SESSION, NODE_CONTROL_INJECTIONS, controls); final OptionManager options = session.getOptions(); try { NODE_CONTROLS_VALIDATOR.validate(opValue); options.setOption(opValue); } catch (final Exception e) { fail("Could not set controls options: " + e.getMessage()); } session.incrementQueryCount(); }