/** * Add a {@link RegexParameterFilter} set accept anything, replacing any existing filter for the * same parameter. * * @param tileLayerInfo layer to update the filter on * @param paramKey key for the parameter * @param createParam create a new filter if there is none to replace for the specified key */ public static void updateAcceptAllRegExParameterFilter( final GeoServerTileLayerInfo tileLayerInfo, final String paramKey, boolean createParam) { createParam |= tileLayerInfo.removeParameterFilter(paramKey); if (createParam) { RegexParameterFilter filter = new RegexParameterFilter(); filter.setKey(paramKey); filter.setDefaultValue(""); filter.setRegex(".*"); tileLayerInfo.addParameterFilter(filter); } }
@Override public RegexParameterFilter clone() { RegexParameterFilter clone = new RegexParameterFilter(); clone.setDefaultValue(getDefaultValue()); clone.setKey(getKey()); clone.regex = regex; clone.setNormalize(getNormalize().clone()); return clone; }
@Override public String apply(String str) throws ParameterException { if (str == null || str.length() == 0) { return getDefaultValue(); } if (getMatcher(str).matches()) { return getNormalize().apply(str); } throw new ParameterException(str + " violates filter for parameter " + getKey()); }
/** @param regex the regex to set. {@literal null} will be treated as default value. */ public void setRegex(@Nullable String regex) { if (regex == null) regex = DEFAULT_EXPRESSION; this.regex = regex; this.pat = compile(this.regex, getNormalize().getCase()); }
mimeFormats.add("image/png"); List<ParameterFilter> parameterFilters = new ArrayList<ParameterFilter>(); RegexParameterFilter filter = new RegexParameterFilter(); filter.setKey("time"); filter.setRegex("\\d{2}:\\d{2}"); parameterFilters.add(filter); TileLayer tileLayer =
@Test public void testNormalizeLocale() throws Exception { filter.setRegex("f\u0131o|B\u0131r|BIZ"); filter.setNormalize(new CaseNormalizer(Case.LOWER, Locale.forLanguageTag("tr"))); assertThat(filter.getLegalValues(), nullValue()); for (String test : Arrays.asList("f\u0131o", "B\u0131r", "BIZ")) { assertThat(filter.applies(test), is(true)); assertThat(filter.apply(test), equalTo(test.toLowerCase(Locale.forLanguageTag("tr")))); } for (String test : Arrays.asList( "F\u0131o", "FIO", "B\u0131R", "b\u0131r", "BIR", "BIz", "b\u0131z")) { assertThat(filter.applies(test), is(true)); assertThat(filter.apply(test), equalTo(test.toLowerCase(Locale.forLanguageTag("tr")))); } for (String test : Arrays.asList("f\u0131oo", "f\u0131", "B\u0131", "BB\u0131rr", "BI", "BBIZ")) { assertThat(filter.applies(test), is(false)); try { filter.apply(test); fail(); } catch (Exception ex) { assertThat(ex, instanceOf(ParameterException.class)); } } assertThat(filter.apply(null), equalTo("Default")); assertThat(filter.apply(""), equalTo("Default")); }
@Test public void testCloneable() throws Exception { filter.setNormalize(new CaseNormalizer(Case.UPPER, Locale.ENGLISH)); RegexParameterFilter clone = filter.clone(); assertThat(clone.getDefaultValue(), equalTo(filter.getDefaultValue())); assertThat(clone.getRegex(), equalTo(filter.getRegex())); assertThat( clone.getNormalize().getConfiguredLocale(), equalTo(filter.getNormalize().getConfiguredLocale())); assertThat(clone.getNormalize().getCase(), equalTo(filter.getNormalize().getCase())); } }
@Test public void testBasic() throws Exception { assertThat( filter.getNormalize(), allOf( hasProperty("case", equalTo(Case.NONE)), hasProperty("locale", equalTo(Locale.getDefault())))); assertThat(filter.getLegalValues(), nullValue()); assertThat(filter.applies(test), is(true)); assertThat(filter.apply(test), equalTo(test)); assertThat(filter.applies(test), is(false)); try { filter.apply(test); fail(); } catch (Exception ex) { assertThat(filter.applies(test), is(false)); try { filter.apply(test); fail(); } catch (Exception ex) { assertThat(filter.apply(null), equalTo("Default")); assertThat(filter.apply(""), equalTo("Default"));
public void testUpdateAcceptAllRegExParameterFilter() { GeoServerTileLayerInfo info = defaultVectorInfo; TileLayerInfoUtil.updateAcceptAllRegExParameterFilter(info, "ENV", true); ParameterFilter filter = TileLayerInfoUtil.findParameterFilter("ENV", info.getParameterFilters()); assertTrue(filter instanceof RegexParameterFilter); assertEquals(".*", ((RegexParameterFilter) filter).getRegex()); TileLayerInfoUtil.updateAcceptAllRegExParameterFilter(info, "ENV", true); ParameterFilter filter2 = TileLayerInfoUtil.findParameterFilter("ENV", info.getParameterFilters()); assertNotSame(filter, filter2); assertEquals(filter, filter2); TileLayerInfoUtil.updateAcceptAllRegExParameterFilter(info, "ENV", false); assertNull(TileLayerInfoUtil.findParameterFilter("ENV", info.getParameterFilters())); }
@Override public void setNormalize(CaseNormalizer normalize) { super.setNormalize(normalize); this.pat = compile(this.regex, getNormalize().getCase()); }
public static void updateAcceptAllRegExParameterFilter( final GeoServerTileLayerInfo tileLayerInfo, final String paramKey, boolean createParam) { Set<ParameterFilter> parameterFilters = tileLayerInfo.getParameterFilters(); for (Iterator<? extends ParameterFilter> it = parameterFilters.iterator(); it.hasNext();) { ParameterFilter parameterFilter = it.next(); String key = parameterFilter.getKey(); if (paramKey.equalsIgnoreCase(key)) { it.remove(); break; } } if (createParam) { RegexParameterFilter filter = new RegexParameterFilter(); filter.setKey(paramKey); filter.setDefaultValue(""); filter.setRegex(".*"); tileLayerInfo.getParameterFilters().add(filter); } }
@Before public void setUp() { filter = new RegexParameterFilter(); filter.setKey("TEST"); filter.setRegex("foo|Bar|BAZ"); filter.setDefaultValue("Default"); xs = new GeoWebCacheXStream(); xs = XMLConfiguration.getConfiguredXStream(xs, new StaticWebApplicationContext()); }
for (Map.Entry<String, String> entry : this.cachedParameters.entrySet()) { if (entry.getKey() != "") { RegexParameterFilter f = new RegexParameterFilter(); f.setRegex(".*"); f.setKey(entry.getKey()); f.setDefaultValue(entry.getValue()); paramFilters.add(f);
strParam.getValues().addAll(Arrays.asList("today", "yesterday", "tomorrow")); RegexParameterFilter regExParam = new RegexParameterFilter(); regExParam.setKey("CQL_FILTER"); regExParam.setDefaultValue("INCLUDE"); regExParam.setRegex(".*");
RegexParameterFilter parameterFilter = new RegexParameterFilter(); parameterFilter.setKey(CQL_FILTER_PARAMETER_NAME); parameterFilter.setDefaultValue(""); parameterFilter.setRegex("value='.*'"); filters.add(parameterFilter);