package com.adobe.prefs.admin.core; import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Iterables; public final class Paths { private Paths() {} private static final Joiner JOINER = Joiner.on('/'); private static final Splitter SPLITTER = Splitter.on('/'); public static String path(String... segments) { StringBuilder sb = new StringBuilder(); for (String segment : segments) { boolean leftEndsWithSlash = sb.length() != 0 && sb.charAt(sb.length() - 1) == '/'; boolean rightStartsWithSlash = segment != null && !segment.isEmpty() && segment.charAt(0) == '/'; if (!leftEndsWithSlash && !rightStartsWithSlash) { sb.append('/'); } if (leftEndsWithSlash && rightStartsWithSlash) { segment = segment.substring(1); } if (segment != null) { sb.append(segment); } } return JOINER.join(Iterables.transform(SPLITTER.split(sb), UrlIO.ENCODER)); } public static String parent(String path) { if (path.charAt(path.length() - 1) == '/') { path = path.substring(0, path.length() - 1); } final int lastSlash = path.lastIndexOf('/'); if (lastSlash > 0) { return path.substring(0, lastSlash + 1); } else { return null; } } }