private static ResourcePath construct(String headElement, List<String> fullPath, int nameIndex) { if (nameIndex == -1) { if (headElement == null) { return null; } else { return new ResourcePathHead(headElement); } } else { return new ResourcePath(construct(headElement, fullPath, nameIndex - 1), fullPath.get(nameIndex)); } }
private static ResourcePath construct(String headElement, List<String> fullPath, int nameIndex) { if (nameIndex == -1) { if (headElement == null) { return null; } else { return new ResourcePathHead(headElement); } } else { return new ResourcePath(construct(headElement, fullPath, nameIndex - 1), fullPath.get(nameIndex)); } }
public static ResourcePath parse(String pathString) { String rootElement; int lastIndex; if (pathString.startsWith(WINDOWS_NETWORK_ROOT)) { rootElement = WINDOWS_NETWORK_ROOT; lastIndex = 2; } else if (pathString.startsWith("/")) { rootElement = ""; lastIndex = 1; } else { char first = pathString.charAt(0); if (pathString.length() > 1 && pathString.charAt(1) == ':' && Character.isLetter(first)) { rootElement = Character.toUpperCase(first) + ":"; lastIndex = 2; if (pathString.length() > 2 && (pathString.charAt(2) == '/' || pathString.charAt(2) == '\\')) { lastIndex = 3; } } else { throw new IllegalArgumentException("The path string [" + pathString + "] is not an absolute path starting at a drive root"); } } DynamicArray<String> results = tokenizePathFragment(pathString, lastIndex); results = normalizePath(results); return construct(rootElement, results, results.size() - 1); }
public static ResourcePath parse(String pathString) { String rootElement; int lastIndex; if (pathString.startsWith(WINDOWS_NETWORK_ROOT)) { rootElement = WINDOWS_NETWORK_ROOT; lastIndex = 2; } else if (pathString.startsWith("/")) { rootElement = ""; lastIndex = 1; } else { char first = pathString.charAt(0); if (pathString.length() > 1 && pathString.charAt(1) == ':' && Character.isLetter(first)) { rootElement = Character.toUpperCase(first) + ":"; lastIndex = 2; if (pathString.length() > 2 && (pathString.charAt(2) == '/' || pathString.charAt(2) == '\\')) { lastIndex = 3; } } else { throw new IllegalArgumentException("The path string [" + pathString + "] is not an absolute path starting at a drive root"); } } DynamicArray<String> results = tokenizePathFragment(pathString, lastIndex); results = normalizePath(results); return construct(rootElement, results, results.size() - 1); }