/** * Returns the parameters identifier for the given parameters map * * @param parameters * @return * @deprecated Use {@link ParametersUtils#getId(Map)} instead */ public static String getParametersId(Map<String, String> parameters) { return ParametersUtils.getId(parameters); }
/** * Returns the parameters identifier for the given parameters map * * @param parameters * @return */ public static String getId(Map<String, String> parameters) { if (parameters == null || parameters.size() == 0) { return null; } String parametersKvp = getLegacyParametersKvp(parameters); return ParametersUtils.buildKey(parametersKvp); }
/** * Turns the parameter list into a sorted KVP string * * @param parameters * @return */ public static String getKvp(Map<String, String> parameters) { return parameters .entrySet() .stream() .sorted(derivedComparator(Entry::getKey)) .map(e -> String.join("=", encUTF8(e.getKey()), encUTF8(e.getValue()))) .collect(Collectors.joining("&")); }
protected void persistParameterMap(TileObject stObj) { if (Objects.nonNull(stObj.getParametersId())) { putLayerMetadata( stObj.getLayerName(), "parameters." + stObj.getParametersId(), ParametersUtils.getKvp(stObj.getParameters())); } }
@Override public Map<String, Optional<Map<String, String>>> getParametersMapping(String layerName) { Properties p = getLayerMetadata(layerName); return getParameterIds(layerName) .stream() .collect( Collectors.toMap( (id) -> id, (id) -> { String kvp = p.getProperty("parameters." + id); if (Objects.isNull(kvp)) { return Optional.empty(); } kvp = urlDecUtf8(kvp); return Optional.of(ParametersUtils.getMap(kvp)); })); }
/** @deprecated Use {@link ParametersUtils#buildKey(String)} instead */ public static String buildKey(String parametersKvp) { return ParametersUtils.buildKey(parametersKvp); }
/** * Turns the a sorted KVP string into a parameter map. * * <p>This should only be used for parsing strings created by {@link #getKvp(Map)} not for * parsing raw query strings * * @param kvp * @return */ public static Map<String, String> getMap(String kvp) { return Arrays.stream(kvp.split("&")) .filter(((Predicate<String>) String::isEmpty).negate()) .map(pair -> pair.split("=", 2)) .collect(Collectors.toMap(p -> decUTF8(p[0]), p -> decUTF8(p[1]))); }
@Test public void testTwoToKVP() { Map<String, String> parameters = new TreeMap<>(); parameters.put("test1", "blah1"); parameters.put("test2", "blah2"); String result = ParametersUtils.getKvp(parameters); assertThat(result, Matchers.equalTo("test1=blah1&test2=blah2")); }
@Test public void testEmptyToMap() { Map<String, String> result = ParametersUtils.getMap(""); assertThat(result.entrySet(), empty()); }
/** * If the provided parameters id is null a new one will be build based on the provided * parameters. */ private static String handleParametersId(String parametersId, Map<String, String> parameters) { if (parametersId != null) { // the provided parameters id is ok return parametersId; } // computing a new parameters id based on the provided parameters String computedParametersId = ParametersUtils.getId(parameters); if (computedParametersId == null) { // the provided parameter are null or empty let's use the string 'null' as parameter id return "null"; } return computedParametersId; }
@Test public void testAmpToKVP() { Map<String, String> parameters = new TreeMap<>(); parameters.put("&test1", "&blah1"); parameters.put("te&st2", "bl&ah2"); parameters.put("test3&", "blah3&"); String result = ParametersUtils.getKvp(parameters); assertThat( result, Matchers.equalTo("%26test1=%26blah1&te%26st2=bl%26ah2&test3%26=blah3%26")); }
@Test public void testEqualsToMap() { Map<String, String> result = ParametersUtils.getMap("%3Dtest1=%3Dblah1&te%3Dst2=bl%3Dah2&test3%3D=blah3%3D"); assertThat( result, hasEntries( entry(equalTo("=test1"), equalTo("=blah1")), entry(equalTo("te=st2"), equalTo("bl=ah2")), entry(equalTo("test3="), equalTo("blah3=")))); }
/** * If the provided parameters id is null a new one will be build based on the provided * parameters. */ private static String handleParametersId(String parametersId, Map<String, String> parameters) { if (parametersId != null) { // the provided parameters id is ok return parametersId; } // computing a new parameters id based on the provided parameters String computedParametersId = ParametersUtils.getId(parameters); if (computedParametersId == null) { // the provided parameter are null or empty let's use the string 'null' as parameter id return "null"; } return computedParametersId; }
@Test public void testEqualsToKVP() { Map<String, String> parameters = new TreeMap<>(); parameters.put("=test1", "=blah1"); parameters.put("te=st2", "bl=ah2"); parameters.put("test3=", "blah3="); String result = ParametersUtils.getKvp(parameters); assertThat( result, Matchers.equalTo("%3Dtest1=%3Dblah1&te%3Dst2=bl%3Dah2&test3%3D=blah3%3D")); }
@Test public void testAmpToMap() { Map<String, String> result = ParametersUtils.getMap("%26test1=%26blah1&te%26st2=bl%26ah2&test3%26=blah3%26"); assertThat( result, hasEntries( entry(equalTo("&test1"), equalTo("&blah1")), entry(equalTo("te&st2"), equalTo("bl&ah2")), entry(equalTo("test3&"), equalTo("blah3&")))); }
public TileRange( String layerName, String gridSetId, int zoomStart, int zoomStop, long[][] rangeBounds, MimeType mimeType, Map<String, String> parameters) { this( layerName, gridSetId, zoomStart, zoomStop, rangeBounds, mimeType, parameters, ParametersUtils.getId(parameters)); }
protected void persistParameterMap(TileObject stObj) { if (Objects.nonNull(stObj.getParametersId())) { putLayerMetadata( stObj.getLayerName(), "parameters." + stObj.getParametersId(), ParametersUtils.getKvp(stObj.getParameters())); } } }