package org.gcube.oidc; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.List; import java.util.Map; import java.util.TreeMap; public class URLEncodedContextMapper extends SlashSeparatedContextMapper { public URLEncodedContextMapper(Map> resourceName2AccessRoles) { super(decodeContextNames(resourceName2AccessRoles)); } private static Map> decodeContextNames(Map> resourceName2AccessRoles) { Map> decodedResourceName2AccessRoles = new TreeMap<>(); for (String encodedContext : resourceName2AccessRoles.keySet()) { try { decodedResourceName2AccessRoles.put(URLDecoder.decode(encodedContext, "UTF-8"), resourceName2AccessRoles.get(encodedContext)); } catch (UnsupportedEncodingException e) { logger.error("Cannot URL decode context name: " + encodedContext, e); } } return decodedResourceName2AccessRoles; } }