UriTemplateUtil { public static String expand(String uriTemplatePath,Map<String, String> map){ List<String> variableNames = getVariableNames(uriTemplatePath); Map<String, String> opMap = newLinkedHashMap(variableNames.size()); for (String variableName : variableNames){ opMap.put(variableName, null); } MapUtil.putAllIfNotNull(opMap, map); UriTemplate uriTemplate = new UriTemplate(uriTemplatePath); URI uri = uriTemplate.expand(opMap); return uri.toString(); } private  UriTemplateUtil(); static String getUriTemplateVariableValue(HttpServletRequest request,String pathVarName); static boolean hasPathVarName(HttpServletRequest request,String pathVarName); static Map<String, String> getUriTemplateVariables(HttpServletRequest request); static String getBestMatchingPattern(HttpServletRequest request); static String expandBestMatchingPattern(HttpServletRequest request,String variableName,String value); static String expandWithVariable(String requestPath,String matchingPatternPath,String variableName,String value); static String expandWithVariable(String matchingPatternPath,String variableName,String value); static String clearVariablesValue(String requestPath,String matchingPatternPath,String[] variableNames); static String retainVariablesValue(String requestPath,String matchingPatternPath,String[] variableNames); static String expand(String uriTemplatePath,Map<String, String> map); static List<String> getVariableNames(String uriTemplatePath);  }
@Test public void testExpand(){ String uriTemplatePath = "/s/c{categoryCode}-m{material}-c{color}-s{size}-k{kind}-s{style}-o{order}.htm"; Map<String, String> map = newHashMap(); map.put("color", "100"); map.put("size", "L"); map.put("K", "aaaa"); LOGGER.debug(UriTemplateUtil.expand(uriTemplatePath, map)); }