/** * @return a list with an empty string for the default style, and any other style name verbatim */ private List<String> getStyles(List<ParameterFilter> parameterFilters) { List<String> styles = new ArrayList<String>(2); styles.add(""); // the default style if (parameterFilters != null) { for (ParameterFilter filter : parameterFilters) { if (!"STYLES".equalsIgnoreCase(filter.getKey())) { continue; } final String defaultStyle = filter.getDefaultValue(); for (String style : filter.getLegalValues()) { if (!defaultStyle.equals(style)) { styles.add(style); } } } } return styles; }
private boolean filterApplies(Map<String, ParameterFilter> filters, GetMapRequest request, String key, StringBuilder requestMistmatchTarget) { ParameterFilter parameterFilter = filters.get(key); if (parameterFilter == null) { requestMistmatchTarget.append("no parameter filter exists for ").append(key); return false; } String parameter = request.getRawKvp().get(key); boolean applies = parameterFilter.applies(parameter); if (!applies) { requestMistmatchTarget.append(key).append( " does not apply to parameter filter of the same name"); } return applies; }
@Override protected ParameterFilter readResolve() { super.readResolve(); Preconditions.checkState( this.getKey().equalsIgnoreCase("STYLES"), "StyleParameterFilter must have a key of \"STYLES\""); return this; } }
public static List<ParameterFilter> getLayerDimensions(List<ParameterFilter> filters) { List<ParameterFilter> dimensions = new ArrayList<ParameterFilter>(0); if (filters != null) { dimensions = filters.stream() .filter( filter -> !"STYLES".equalsIgnoreCase(filter.getKey()) && filter.getLegalValues() != null) .collect(Collectors.toList()); } return dimensions; } }
/** * Is the given value exactly a value that could be produced by the filter. * * @param value * @return * @throws ParameterException */ public boolean isFilteredValue(final String value) { if (Objects.equal(value, this.getDefaultValue())) { return true; } if (Optional.ofNullable(this.getLegalValues()) .map(values -> values.contains(value)) .orElse(false)) { return true; } try { return Objects.equal(value, this.apply(value)); } catch (ParameterException ex) { return false; } } }
/** * @return default parameter filters, with keys normalized to upper case, or an empty map if no * parameter filters are defined */ public Map<String, String> getDefaultParameterFilters() { if (defaultParameterFilterValues == null) { List<ParameterFilter> parameterFilters = getParameterFilters(); if (parameterFilters == null || parameterFilters.size() == 0) { defaultParameterFilterValues = Collections.emptyMap(); } else { Map<String, String> defaults = new HashMap<String, String>(); for (ParameterFilter parameterFilter : parameterFilters) { String key = parameterFilter.getKey().toUpperCase(); String defaultValue = decodeDimensionValue(parameterFilter.getDefaultValue()); defaults.put(key, defaultValue); } defaultParameterFilterValues = Collections.unmodifiableMap(defaults); } } return defaultParameterFilterValues; }
public void testGetModifiableParameters() throws GeoWebCacheException { layerInfoTileLayer = new GeoServerTileLayer(layerInfo, defaults, gridSetBroker); ParameterFilter stylesParamFilter = layerInfoTileLayer.getParameterFilters().get(0); List<String> legalValues = stylesParamFilter.getLegalValues(); Map<String, String> requestParams; Map<String, String> modifiedParams; requestParams = Collections.singletonMap("sTyLeS", ""); modifiedParams = layerInfoTileLayer.getModifiableParameters(requestParams, "UTF-8"); assertEquals(0, modifiedParams.size()); for (String legalStyle : legalValues) { requestParams = new HashMap<String, String>(); requestParams.put("sTyLeS", legalStyle); modifiedParams = layerInfoTileLayer.getModifiableParameters(requestParams, "UTF-8"); if (legalStyle.equals(stylesParamFilter.getDefaultValue())) { assertEquals(0, modifiedParams.size()); } else { assertEquals(Collections.singletonMap("STYLES", legalStyle), modifiedParams); } } }
/** * Returns the default style name, or an empty string if set to use the layer specified default */ public String getRealDefault() { // Bypass the special processing this class normally does on the default value return super.getDefaultValue(); }
/** @see org.geoserver.gwc.layer.GeoServerTileLayerInfo#cachedStyles() */ @Override public ImmutableSet<String> cachedStyles() { ParameterFilter styleQualifier = getParameterFilter("STYLES"); try { if (styleQualifier != null) { List<String> styles = styleQualifier.getLegalValues(); if (styles != null) { return ImmutableSet.copyOf(styles); } } } catch (IllegalStateException ex) { LOGGER.log(Level.WARNING, "StyleParameterFilter was not initialized properly", ex); } return ImmutableSet.of(); }
final String key = pfilter.getKey(); final String value = parameters.get(key); if (Objects.isNull(value)) { return !pfilter.isFilteredValue(
/** * @see java.lang.Object#clone() */ @Override public GeoServerTileLayerInfoImpl clone() { GeoServerTileLayerInfoImpl clone; try { clone = (GeoServerTileLayerInfoImpl) super.clone(); } catch (CloneNotSupportedException e) { throw propagate(e); } clone.metaWidthHeight = metaWidthHeight.clone(); clone.gridSubsets = nonNull(null); for (XMLGridSubset gs : gridSubsets) { clone.gridSubsets.add(gs.clone()); } clone.mimeFormats = nonNull(null); clone.mimeFormats.addAll(mimeFormats); clone.parameterFilters = nonNull(null); for (ParameterFilter pf : parameterFilters) { clone.parameterFilters.add(pf.clone()); } return clone; }
@Override public boolean addParameterFilter(ParameterFilter parameterFilter) { return parameterFiltersMap.put(parameterFilter.getKey().toUpperCase(), parameterFilter) != null; }
private void dimensionDescription(XMLBuilder xml, ParameterFilter filter, List<String> values) throws IOException { xml.indentElement("Dimension"); xml.simpleElement("ows:Identifier", filter.getKey(), false); String defaultStr = TileLayer.encodeDimensionValue(filter.getDefaultValue()); xml.simpleElement("Default", defaultStr, false); Iterator<String> iter = values.iterator(); while (iter.hasNext()) { String value = TileLayer.encodeDimensionValue(iter.next()); xml.simpleElement("Value", value, false); } xml.endElement("Dimension"); }
@Override public String getDefaultValue() { checkInitialized(); String name = super.getDefaultValue(); if (name.isEmpty()) { // Default is not set so use the default from the layer if (defaultStyle == null) return ""; return defaultStyle; } else { // Default is set so use it return name; } }
private void layerDimensions(XMLBuilder xml, TileLayer layer, List<ParameterFilter> filters) throws IOException { List<ParameterFilter> layerDimensions = WMTSUtils.getLayerDimensions(filters); for (ParameterFilter dimension : layerDimensions) { dimensionDescription(xml, dimension, dimension.getLegalValues()); } }
/** @see java.lang.Object#clone() */ @Override public GeoServerTileLayerInfoImpl clone() { GeoServerTileLayerInfoImpl clone; try { clone = (GeoServerTileLayerInfoImpl) super.clone(); } catch (CloneNotSupportedException e) { throw propagate(e); } clone.metaWidthHeight = metaWidthHeight.clone(); clone.gridSubsets = nonNull((Set<XMLGridSubset>) null); for (XMLGridSubset gs : gridSubsets) { clone.gridSubsets.add(gs.clone()); } clone.mimeFormats = nonNull((Set<String>) null); clone.mimeFormats.addAll(mimeFormats); clone.parameterFiltersMap = nonNull((Map<String, ParameterFilter>) null); for (ParameterFilter pf : parameterFiltersMap.values()) { clone.addParameterFilter(pf.clone()); } return clone; }
/** * @return a list with an empty string for the default style, and any other style name verbatim */ private List<String> getStyles(List<ParameterFilter> parameterFilters) { List<String> styles = new ArrayList<String>(2); styles.add("");// the default style if (parameterFilters != null) { for (ParameterFilter filter : parameterFilters) { if (!"STYLES".equalsIgnoreCase(filter.getKey())) { continue; } final String defaultStyle = filter.getDefaultValue(); for (String style : filter.getLegalValues()) { if (!defaultStyle.equals(style)) { styles.add(style); } } } } return styles; }
public static ParameterFilter findParameterFilter(final String paramName, Set<ParameterFilter> parameterFilters) { if (parameterFilters == null || parameterFilters.size() == 0) { return null; } for (ParameterFilter pf : parameterFilters) { if (paramName.equalsIgnoreCase(pf.getKey())) { return pf; } } return null; }