+ String pathInfo = request.getPathInfo();
+
+ // tokenize path
+ // TODO factorize
+ List<String> tokens = new ArrayList<String>();
+ StringBuffer curr = new StringBuffer();
+ char[] arr = pathInfo.toCharArray();
+ chars: for (int i = 0; i < arr.length; i++) {
+ char c = arr[i];
+ if (c == '/') {
+ if (i == 0 || (i == arr.length - 1))
+ continue chars;
+ if (curr.length() > 0) {
+ tokens.add(curr.toString());
+ curr = new StringBuffer();
+ }
+ } else
+ curr.append(c);
+ }
+ if (curr.length() > 0) {
+ tokens.add(curr.toString());
+ curr = new StringBuffer();
+ }
+
+ // check if repository can be found
+ if (tokens.size() == 0
+ || (tokens.size() == 1 && tokens.get(0).equals("")))
+ return null;
+ // MKCOL on repository or root node doesn't make sense
+ if ((tokens.size() == 1 || tokens.size() == 2)
+ && request.getMethod().equals(MKCOL))
+ return null;
+ String repositoryName = extractRepositoryName(tokens);