package io.onedev.server.web.mapper; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import org.apache.wicket.request.Url; import org.apache.wicket.util.encoding.UrlEncoder; import com.google.common.base.Splitter; public class PathAwareUrl extends Url { private static final long serialVersionUID = 1L; public PathAwareUrl(Url url) { super(url); } @Override public String getPath(Charset charset) { StringBuilder path = new StringBuilder(); boolean slash = false; for (String segment : getSegments()) { if (slash) { path.append('/'); } if (segment.indexOf('/') != -1) { Url url = new Url(Splitter.on('/').splitToList(segment), StandardCharsets.UTF_8); path.append(url.getPath()); } else { path.append(UrlEncoder.PATH_INSTANCE.encode(segment, charset)); } slash = true; } return path.toString(); } }