/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.gwc.web.layer; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; import org.apache.wicket.Component; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.model.IModel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.validation.IValidatable; import org.apache.wicket.validation.IValidator; import org.apache.wicket.validation.ValidationError; import org.geowebcache.filter.parameters.RegexParameterFilter; import org.geowebcache.filter.parameters.CaseNormalizer; /** * Subform that displays basic information about a ParameterFilter * @author Kevin Smith, OpenGeo * */ public class RegexParameterFilterSubform extends AbstractParameterFilterSubform<RegexParameterFilter> { static final private IValidator<String> REGEXP_VALIDATOR = new IValidator<String>() { private static final long serialVersionUID = 3753607592277740081L; @Override public void validate(IValidatable<String> validatable) { final String regex = validatable.getValue(); try{ Pattern.compile(regex); } catch (PatternSyntaxException ex) { ValidationError error = new ValidationError(); error.setMessage("Invalid Regular expression"); error.addKey(getClass().getSimpleName() + "." + "invalidRegularExpression"); validatable.error(error); } } }; /** serialVersionUID */ private static final long serialVersionUID = 1L; private Component normalize; public RegexParameterFilterSubform(String id, IModel<RegexParameterFilter> model) { super(id, model); final Component defaultValue; defaultValue = new TextField<String>("defaultValue", new PropertyModel<String>(model, "defaultValue")); add(defaultValue); final TextField<String> regex; regex = new TextField<String>("regex", new PropertyModel<String>(model, "regex")); regex.add(REGEXP_VALIDATOR); add(regex); normalize = new CaseNormalizerSubform("normalize", new PropertyModel<CaseNormalizer>(model, "normalize")); add(normalize); } }