/** * Parses an execution path from the provided path string in the format /segment1/segment2[index]/segmentN * * @param pathString the path string * * @return a parsed execution path */ public static ExecutionPath parse(String pathString) { pathString = pathString == null ? "" : pathString; pathString = pathString.trim(); StringTokenizer st = new StringTokenizer(pathString, "/[]", true); ExecutionPath path = ExecutionPath.rootPath(); while (st.hasMoreTokens()) { String token = st.nextToken(); if ("/".equals(token)) { assertTrue(st.hasMoreTokens(), mkErrMsg(), pathString); path = path.segment(st.nextToken()); } else if ("[".equals(token)) { assertTrue(st.countTokens() >= 2, mkErrMsg(), pathString); path = path.segment(Integer.parseInt(st.nextToken())); String closingBrace = st.nextToken(); assertTrue(closingBrace.equals("]"), mkErrMsg(), pathString); } else { throw new AssertException(format(mkErrMsg(), pathString)); } } return path; }
/** * Parses an execution path from the provided path string in the format /segment1/segment2[index]/segmentN * * @param pathString the path string * * @return a parsed execution path */ public static ExecutionPath parse(String pathString) { pathString = pathString == null ? "" : pathString; pathString = pathString.trim(); StringTokenizer st = new StringTokenizer(pathString, "/[]", true); ExecutionPath path = ExecutionPath.rootPath(); while (st.hasMoreTokens()) { String token = st.nextToken(); if ("/".equals(token)) { assertTrue(st.hasMoreTokens(), mkErrMsg(), pathString); path = path.segment(st.nextToken()); } else if ("[".equals(token)) { assertTrue(st.countTokens() >= 2, mkErrMsg(), pathString); path = path.segment(Integer.parseInt(st.nextToken())); String closingBrace = st.nextToken(); assertTrue(closingBrace.equals("]"), mkErrMsg(), pathString); } else { throw new AssertException(format(mkErrMsg(), pathString)); } } return path; }