package ddth.dasp.hetty; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.lang3.StringUtils; public class HettyUrlCreator implements IUrlCreator { private String urlSuffix; public void setUrlSuffix(String urlSuffix) { this.urlSuffix = urlSuffix; } public String getUrlSuffix() { return urlSuffix; } /** * {@inheritDoc} */ @Override public String createUrl(String[] pathParams, Map<String, Object> urlParams) { return createUrl(pathParams, urlParams, null, null); } /** * {@inheritDoc} */ @Override public String createUrl(String[] pathParams, Map<String, Object> urlParams, String host) { return createUrl(pathParams, urlParams, host, null); } /** * {@inheritDoc} */ @Override public String createUrl(String[] pathParams, Map<String, Object> urlParams, String host, String scheme) { StringBuilder sb = new StringBuilder(); // host & scheme if (!StringUtils.isBlank(host)) { if (!StringUtils.isBlank(scheme)) { sb.append(scheme.replaceAll("\\W+$", "")).append(":"); } sb.append("//").append(host.replaceAll("^\\/+", "").replaceAll("\\/+$", "")); } // path params if (pathParams != null && pathParams.length > 0) { for (String param : pathParams) { sb.append("/").append(param); } if (!StringUtils.isBlank(urlSuffix)) { sb.append(urlSuffix); } } else { sb.append("/"); } // url params if (urlParams != null && urlParams.size() > 0) { sb.append("?"); for (Entry<String, Object> entry : urlParams.entrySet()) { sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&"); } } return sb.toString(); } }