Rename GitilesView's TreePath to PathPart

We originally chose "TreePath" instead of "Path" to distinguish between
the whole URL path, e.g. /repo/name/+/tree/path, from the portion of the
path referring to the tree, e.g. /tree/path. However, this portion no
longer necessarily refers to a tree, e.g. in /+refs/heads?format=TEXT.
Change the name appropriately.

Change-Id: Iefa930e60f5780bc9d9446cf3e5b13fa90e9d926
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
index dee229b..73be524 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
@@ -134,14 +134,14 @@
           .copyFrom(view)
           .setRevision(rev.getId().equals(commit) ? rev.getName() : commit.name(), commit)
           .setOldRevision(Revision.NULL)
-          .setTreePath(null);
+          .setPathPart(null);
       data.put("logUrl", logView.toUrl());
     }
     if (keys.keys.contains("tree")) {
       data.put("tree", ObjectId.toString(commit.getTree()));
     }
     if (keys.keys.contains("treeUrl")) {
-      data.put("treeUrl", GitilesView.path().copyFrom(view).setTreePath("/").toUrl());
+      data.put("treeUrl", GitilesView.path().copyFrom(view).setPathPart("/").toUrl());
     }
     if (keys.keys.contains("parents")) {
       data.put("parents", toSoyData(view, commit.getParents()));
@@ -191,7 +191,7 @@
     // viewing a diff against one of the parents.
     for (RevCommit parent : parents) {
       String name = parent.name();
-      GitilesView.Builder diff = GitilesView.diff().copyFrom(view).setTreePath("");
+      GitilesView.Builder diff = GitilesView.diff().copyFrom(view).setPathPart("");
       String parentName;
       if (parents.length == 1) {
         parentName = view.getRevision().getName() + "^";
@@ -218,7 +218,7 @@
   private Object computeDiffTree(RevCommit commit) throws IOException {
     AbstractTreeIterator oldTree;
     GitilesView.Builder diffUrl = GitilesView.diff().copyFrom(view)
-        .setTreePath("");
+        .setPathPart("");
     Revision oldRevision;
     switch (commit.getParentCount()) {
       case 0:
@@ -249,14 +249,14 @@
           entry.put("path", e.getNewPath());
           entry.put("url", GitilesView.path()
               .copyFrom(view)
-              .setTreePath(e.getNewPath())
+              .setPathPart(e.getNewPath())
               .toUrl());
         } else {
           entry.put("path", e.getOldPath());
           entry.put("url", GitilesView.path()
               .copyFrom(view)
               .setRevision(oldRevision)
-              .setTreePath(e.getOldPath())
+              .setPathPart(e.getOldPath())
               .toUrl());
         }
         entry.put("diffUrl", diffUrl.setAnchor("F" + result.size()).toUrl());
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
index ba661e8..a8fdeec 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
@@ -98,7 +98,7 @@
       OutputStream out = res.getOutputStream();
       try {
         out.write(html[0].getBytes(Charsets.UTF_8));
-        formatHtmlDiff(out, repo, walk, oldTree, newTree, view.getTreePath());
+        formatHtmlDiff(out, repo, walk, oldTree, newTree, view.getPathPart());
         out.write(html[1].getBytes(Charsets.UTF_8));
       } finally {
         out.close();
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
index ca6315e..16f5a54 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -198,7 +198,7 @@
       return revision;
     }
 
-    public Builder setTreePath(String path) {
+    public Builder setPathPart(String path) {
       switch (type) {
         case PATH:
         case DIFF:
@@ -213,7 +213,7 @@
       }
     }
 
-    public String getTreePath() {
+    public String getPathPart() {
       return path;
     }
 
@@ -425,7 +425,7 @@
     }
   }
 
-  public String getTreePath() {
+  public String getPathPart() {
     return path;
   }
 
@@ -535,15 +535,15 @@
     if (type == Type.DIFF) {
       // TODO(dborowitz): Tweak the breadcrumbs template to allow us to render
       // separate links in "old..new".
-      breadcrumbs.add(breadcrumb(getRevisionRange(), diff().copyFrom(this).setTreePath("")));
+      breadcrumbs.add(breadcrumb(getRevisionRange(), diff().copyFrom(this).setPathPart("")));
     } else if (type == Type.LOG) {
       if (revision != Revision.NULL) {
         // TODO(dborowitz): Add something in the navigation area (probably not
         // a breadcrumb) to allow switching between /+log/ and /+/.
         if (oldRevision == Revision.NULL) {
-          breadcrumbs.add(breadcrumb(revision.getName(), log().copyFrom(this).setTreePath(null)));
+          breadcrumbs.add(breadcrumb(revision.getName(), log().copyFrom(this).setPathPart(null)));
         } else {
-          breadcrumbs.add(breadcrumb(getRevisionRange(), log().copyFrom(this).setTreePath(null)));
+          breadcrumbs.add(breadcrumb(getRevisionRange(), log().copyFrom(this).setPathPart(null)));
         }
       } else {
         breadcrumbs.add(breadcrumb(Constants.HEAD, log().copyFrom(this)));
@@ -555,7 +555,7 @@
     if (path != null) {
       if (type != Type.LOG && type != Type.REFS) {
         // The "." breadcrumb would be no different for LOG or REFS.
-        breadcrumbs.add(breadcrumb(".", copyWithPath().setTreePath("")));
+        breadcrumbs.add(breadcrumb(".", copyWithPath().setPathPart("")));
       }
       StringBuilder cur = new StringBuilder();
       List<String> parts = ImmutableList.copyOf(Paths.SPLITTER.omitEmptyStrings().split(path));
@@ -567,7 +567,7 @@
         String part = parts.get(i);
         cur.append(part).append('/');
         String curPath = cur.toString();
-        Builder builder = copyWithPath().setTreePath(curPath);
+        Builder builder = copyWithPath().setPathPart(curPath);
         if (hasSingleTree != null && i < parts.size() - 1 && hasSingleTree.get(i)) {
           builder.replaceParam(PathServlet.AUTODIVE_PARAM, PathServlet.NO_AUTODIVE_VALUE);
         }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
index 8942438..470e3b6 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
@@ -102,27 +102,27 @@
     } else if ("tree".equals(action)) {
       view = GitilesView.path()
           .setRevision(Objects.firstNonNull(hashBase, Revision.HEAD))
-          .setTreePath(path);
+          .setPathPart(path);
     } else if (("blob".equals(action) || "blob_plain".equals(action))
         && hashBase != null && !path.isEmpty()) {
       view = GitilesView.path()
           .setRevision(hashBase)
-          .setTreePath(path);
+          .setPathPart(path);
     } else if ("commitdiff".equals(action) && hash != null) {
       view = GitilesView.diff()
           .setOldRevision(Objects.firstNonNull(hashParent, Revision.NULL))
           .setRevision(hash)
-          .setTreePath("");
+          .setPathPart("");
     } else if ("blobdiff".equals(action) && !path.isEmpty()
         && hashParentBase != null && hashBase != null) {
       view = GitilesView.diff()
           .setOldRevision(hashParentBase)
           .setRevision(hashBase)
-          .setTreePath(path);
+          .setPathPart(path);
     } else if ("history".equals(action) && !path.isEmpty()) {
       view = GitilesView.log()
           .setRevision(Objects.firstNonNull(hashBase, Revision.HEAD))
-          .setTreePath(path);
+          .setPathPart(path);
     } else {
       // Gitiles does not provide an RSS feed (a=rss,atom,opml)
       // Any other URL is out of date and not valid anymore.
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
index f3dcc43..4915ba2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -180,8 +180,8 @@
     if (view.getOldRevision() != Revision.NULL) {
       walk.markUninteresting(walk.parseCommit(view.getOldRevision().getId()));
     }
-    if (!Strings.isNullOrEmpty(view.getTreePath())) {
-      walk.setTreeFilter(FollowFilter.create(view.getTreePath()));
+    if (!Strings.isNullOrEmpty(view.getPathPart())) {
+      walk.setTreeFilter(FollowFilter.create(view.getPathPart()));
     }
     return walk;
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
index e52cdf6..9debef2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -139,7 +139,7 @@
       tw.addTree(root);
       tw.setRecursive(false);
       FileType type;
-      String path = view.getTreePath();
+      String path = view.getPathPart();
       List<Boolean> hasSingleTree;
 
       if (path.isEmpty()) {
@@ -270,7 +270,7 @@
     GitilesView view = ViewFilter.getView(req);
     List<String> autodive = view.getParameters().get(AUTODIVE_PARAM);
     if (autodive.size() != 1 || !NO_AUTODIVE_VALUE.equals(autodive.get(0))) {
-      byte[] path = Constants.encode(view.getTreePath());
+      byte[] path = Constants.encode(view.getPathPart());
       CanonicalTreeParser child = getOnlyChildSubtree(rw, id, path);
       if (child != null) {
         while (true) {
@@ -283,7 +283,7 @@
           child = next;
         }
         res.sendRedirect(GitilesView.path().copyFrom(view)
-            .setTreePath(
+            .setPathPart(
                 RawParseUtils.decode(child.getEntryPathBuffer(), 0, child.getEntryPathLength()))
             .toUrl());
         return;
@@ -291,7 +291,7 @@
     }
     // TODO(sop): Allow caching trees by SHA-1 when no S cookie is sent.
     renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
-        "title", !view.getTreePath().isEmpty() ? view.getTreePath() : "/",
+        "title", !view.getPathPart().isEmpty() ? view.getPathPart() : "/",
         "breadcrumbs", view.getBreadcrumbs(hasSingleTree),
         "type", FileType.TREE.toString(),
         "data", new TreeSoyData(rw, view).toSoyData(id, tw)));
@@ -312,7 +312,7 @@
     GitilesView view = ViewFilter.getView(req);
     // TODO(sop): Allow caching files by SHA-1 when no S cookie is sent.
     renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
-        "title", ViewFilter.getView(req).getTreePath(),
+        "title", ViewFilter.getView(req).getPathPart(),
         "breadcrumbs", view.getBreadcrumbs(hasSingleTree),
         "type", FileType.forEntry(tw).toString(),
         "data", new BlobSoyData(rw, view).toSoyData(tw.getPathString(), tw.getObjectId(0))));
@@ -335,7 +335,7 @@
       data.put("data", null);
       data.put("size", Long.toString(loader.getSize()));
       renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
-          "title", ViewFilter.getView(req).getTreePath(),
+          "title", ViewFilter.getView(req).getPathPart(),
           "breadcrumbs", view.getBreadcrumbs(hasSingleTree),
           "type", FileType.REGULAR_FILE.toString(),
           "data", data));
@@ -345,10 +345,10 @@
     String url = resolveTargetUrl(
         GitilesView.path()
             .copyFrom(view)
-            .setTreePath(dirname(view.getTreePath()))
+            .setPathPart(dirname(view.getPathPart()))
             .build(),
         target);
-    data.put("title", view.getTreePath());
+    data.put("title", view.getPathPart());
     data.put("target", target);
     if (url != null) {
       data.put("targetUrl", url);
@@ -356,7 +356,7 @@
 
     // TODO(sop): Allow caching files by SHA-1 when no S cookie is sent.
     renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
-        "title", ViewFilter.getView(req).getTreePath(),
+        "title", ViewFilter.getView(req).getPathPart(),
         "breadcrumbs", view.getBreadcrumbs(hasSingleTree),
         "type", FileType.SYMLINK.toString(),
         "data", data));
@@ -380,7 +380,7 @@
       TreeWalk tw, RevTree root, List<Boolean> hasSingleTree) throws IOException {
     GitilesView view = ViewFilter.getView(req);
     SubmoduleWalk sw = SubmoduleWalk.forPath(ServletUtils.getRepository(req), root,
-        view.getTreePath());
+        view.getPathPart());
 
     String modulesUrl;
     String remoteUrl = null;
@@ -412,7 +412,7 @@
 
     // TODO(sop): Allow caching links by SHA-1 when no S cookie is sent.
     renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
-        "title", view.getTreePath(),
+        "title", view.getPathPart(),
         "type", FileType.GITLINK.toString(),
         "data", data));
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index fd5e793..ba52d37 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -57,7 +57,7 @@
   @Override
   protected void doGetHtml(HttpServletRequest req, HttpServletResponse res)
       throws IOException {
-    if (!ViewFilter.getView(req).getTreePath().isEmpty()) {
+    if (!ViewFilter.getView(req).getPathPart().isEmpty()) {
       res.setStatus(SC_NOT_FOUND);
       return;
     }
@@ -77,7 +77,7 @@
       throws IOException {
     GitilesView view = ViewFilter.getView(req);
     Map<String, Ref> refs = getRefs(ServletUtils.getRepository(req).getRefDatabase(),
-        view.getTreePath());
+        view.getPathPart());
     TextRefAdvertiser adv = new TextRefAdvertiser(startRenderText(req, res));
     adv.setDerefTags(true);
     adv.send(refs);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
index 4893208..6c7ec06 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
@@ -47,13 +47,13 @@
   static final int MAX_SYMLINK_SIZE = 16 << 10;
 
   static String resolveTargetUrl(GitilesView view, String target) {
-    String resolved = Paths.simplifyPathUpToRoot(target, view.getTreePath());
+    String resolved = Paths.simplifyPathUpToRoot(target, view.getPathPart());
     if (resolved == null) {
       return null;
     }
     return GitilesView.path()
         .copyFrom(view)
-        .setTreePath(resolved)
+        .setPathPart(resolved)
         .toUrl();
   }
 
@@ -86,11 +86,11 @@
 
       switch (view.getType()) {
         case PATH:
-          urlBuilder.setTreePath(view.getTreePath() + "/" + name);
+          urlBuilder.setPathPart(view.getPathPart() + "/" + name);
           break;
         case REVISION:
           // Got here from a tag pointing at a tree.
-          urlBuilder.setTreePath(name);
+          urlBuilder.setPathPart(name);
           break;
         default:
           throw new IllegalStateException(String.format(
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
index c24b4f0..6dd167c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
@@ -103,7 +103,7 @@
     if (repoName.isEmpty()) {
       return GitilesView.hostIndex();
     } else if (command.equals(CMD_REFS)) {
-      return GitilesView.refs().setRepositoryName(repoName).setTreePath(path);
+      return GitilesView.refs().setRepositoryName(repoName).setPathPart(path);
     } else if (command.equals(CMD_LOG) && (path.isEmpty() || path.equals("/"))) {
       return GitilesView.log().setRepositoryName(repoName);
     } else if (command.isEmpty()) {
@@ -124,15 +124,15 @@
     command = getCommand(command, result, path);
     GitilesView.Builder view;
     if (CMD_LOG.equals(command)) {
-      view = GitilesView.log().setTreePath(path);
+      view = GitilesView.log().setPathPart(path);
     } else if (CMD_SHOW.equals(command)) {
       if (path.isEmpty()) {
         view = GitilesView.revision();
       } else {
-        view = GitilesView.path().setTreePath(path);
+        view = GitilesView.path().setPathPart(path);
       }
     } else if (CMD_DIFF.equals(command)) {
-      view = GitilesView.diff().setTreePath(path);
+      view = GitilesView.diff().setPathPart(path);
     } else if (CMD_REFS.equals(command)) {
       view = GitilesView.repositoryIndex();
     } else {
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
index e3794de..49d8405 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/GitilesViewTest.java
@@ -40,7 +40,7 @@
     assertEquals("host", view.getHostName());
     assertNull(view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/?format=HTML", view.toUrl());
@@ -54,7 +54,7 @@
     assertEquals("host", HOST.getHostName());
     assertNull(HOST.getRepositoryName());
     assertEquals(Revision.NULL, HOST.getRevision());
-    assertNull(HOST.getTreePath());
+    assertNull(HOST.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/?format=HTML", HOST.toUrl());
@@ -73,7 +73,7 @@
     assertEquals("host", view.getHostName());
     assertNull(view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertEquals(
         ImmutableListMultimap.of(
             "foo", "foovalue",
@@ -106,7 +106,7 @@
     assertEquals("host", view.getHostName());
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/", view.toUrl());
@@ -128,7 +128,7 @@
     assertEquals("host", view.getHostName());
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+refs", view.toUrl());
@@ -153,7 +153,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master", view.toUrl());
@@ -171,7 +171,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/")
+        .setPathPart("/")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -180,7 +180,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master/", view.toUrl());
@@ -199,7 +199,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/file")
+        .setPathPart("/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -208,7 +208,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertEquals("file", view.getTreePath());
+    assertEquals("file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master/file", view.toUrl());
@@ -228,7 +228,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -237,7 +237,7 @@
     assertEquals("foo/bar", view.getRepositoryName());
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master/path/to/a/file", view.toUrl());
@@ -262,7 +262,7 @@
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
         .setOldRevision(Revision.unpeeled("master^", parent))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -272,7 +272,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals("master^", view.getOldRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master%5E%21/path/to/a/file", view.toUrl());
@@ -295,7 +295,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -305,7 +305,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/master%5E%21/path/to/a/file", view.toUrl());
@@ -330,7 +330,7 @@
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
         .setOldRevision(Revision.unpeeled("efab5678", other))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -340,7 +340,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals("efab5678", view.getOldRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+/efab5678..master/path/to/a/file", view.toUrl());
@@ -372,7 +372,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/master", view.toUrl());
@@ -399,7 +399,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("abcd1234", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/abcd1234", view.toUrl());
@@ -417,7 +417,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -427,7 +427,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/master/path/to/a/file", view.toUrl());
@@ -451,7 +451,7 @@
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
         .setOldRevision(Revision.unpeeled("master^", parent))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b", view.getServletPath());
@@ -461,7 +461,7 @@
     assertEquals(id, view.getRevision().getId());
     assertEquals("master", view.getRevision().getName());
     assertEquals("master^", view.getOldRevision().getName());
-    assertEquals("path/to/a/file", view.getTreePath());
+    assertEquals("path/to/a/file", view.getPathPart());
     assertTrue(HOST.getParameters().isEmpty());
 
     assertEquals("/b/foo/bar/+log/master%5E..master/path/to/a/file", view.toUrl());
@@ -509,7 +509,7 @@
         .setRepositoryName("foo?bar")
         .setRevision(Revision.unpeeled("ba/d#name", id))
         .setOldRevision(Revision.unpeeled("other\"na/me", parent))
-        .setTreePath("we ird/pa'th/name")
+        .setPathPart("we ird/pa'th/name")
         .putParam("k e y", "val/ue")
         .setAnchor("anc#hor")
         .build();
@@ -523,7 +523,7 @@
     assertEquals("ba/d#name", view.getRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
     assertEquals("other\"na/me", view.getOldRevision().getName());
-    assertEquals("we ird/pa'th/name", view.getTreePath());
+    assertEquals("we ird/pa'th/name", view.getPathPart());
     assertEquals(ImmutableListMultimap.<String, String> of("k e y", "val/ue"),
         view.getParameters());
 
@@ -549,7 +549,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("/path/to/a/file")
+        .setPathPart("/path/to/a/file")
         .build();
 
     assertEquals("/b/foo/bar/+/master/path/to/a/file", view.toUrl());
@@ -583,7 +583,7 @@
         .copyFrom(HOST)
         .setRepositoryName("foo/bar")
         .setRevision(Revision.unpeeled("master", id))
-        .setTreePath("")
+        .setPathPart("")
         .build();
 
     assertEquals("/b/foo/bar/+/master/", view.toUrl());
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
index 85423d9..a0fa78a 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/TreeSoyDataTest.java
@@ -45,7 +45,7 @@
         .setHostName("host")
         .setRepositoryName("repo")
         .setRevision(Revision.unpeeled("m", id))
-        .setTreePath("a/b/c")
+        .setPathPart("a/b/c")
         .build();
     assertNull(resolveTargetUrl(view, "/foo"));
     assertEquals("/x/repo/+/m/a", resolveTargetUrl(view, "../../"));
diff --git a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
index 712ddf5..fdb291c 100644
--- a/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
+++ b/gitiles-servlet/src/test/java/com/google/gitiles/ViewFilterTest.java
@@ -84,7 +84,7 @@
     assertNull(view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testRepositoryIndex() throws Exception {
@@ -93,7 +93,7 @@
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testRefs() throws Exception {
@@ -104,35 +104,35 @@
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+refs/");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+refs/heads");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("heads", view.getTreePath());
+    assertEquals("heads", view.getPathPart());
 
     view = getView("/repo/+refs/heads/");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("heads", view.getTreePath());
+    assertEquals("heads", view.getPathPart());
 
     view = getView("/repo/+refs/heads/master");
     assertEquals(Type.REFS, view.getType());
     assertEquals("repo", view.getRepositoryName());
     assertEquals(Revision.NULL, view.getRevision());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("heads/master", view.getTreePath());
+    assertEquals("heads/master", view.getPathPart());
   }
 
   public void testBranches() throws Exception {
@@ -144,25 +144,25 @@
     assertEquals(Type.REVISION, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/heads/master");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("heads/master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/refs/heads/master");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("refs/heads/master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/stable");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("stable", view.getRevision().getName());
     assertEquals(stable, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testAmbiguousBranchAndTag() throws Exception {
@@ -174,31 +174,31 @@
     assertEquals(Type.REVISION, view.getType());
     assertEquals("name", view.getRevision().getName());
     assertEquals(tag, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/heads/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("heads/name", view.getRevision().getName());
     assertEquals(branch, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/refs/heads/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("refs/heads/name", view.getRevision().getName());
     assertEquals(branch, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/tags/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("tags/name", view.getRevision().getName());
     assertEquals(tag, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+show/refs/tags/name");
     assertEquals(Type.REVISION, view.getType());
     assertEquals("refs/tags/name", view.getRevision().getName());
     assertEquals(tag, view.getRevision().getId());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
   }
 
   public void testPath() throws Exception {
@@ -208,22 +208,22 @@
     view = getView("/repo/+show/master/");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+show/master/foo");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+show/master/foo/");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+show/master/foo/bar");
     assertEquals(Type.PATH, view.getType());
     assertEquals(master, view.getRevision().getId());
-    assertEquals("foo/bar", view.getTreePath());
+    assertEquals("foo/bar", view.getPathPart());
   }
 
   public void testMultipleSlashes() throws Exception {
@@ -248,7 +248,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+diff/master^..master/");
     assertEquals(Type.DIFF, view.getType());
@@ -256,7 +256,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+diff/master^..master/foo");
     assertEquals(Type.DIFF, view.getType());
@@ -264,7 +264,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+diff/refs/heads/master^..refs/heads/master");
     assertEquals(Type.DIFF, view.getType());
@@ -272,7 +272,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("refs/heads/master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
   }
 
   public void testDiffAgainstEmptyCommit() throws Exception {
@@ -282,7 +282,7 @@
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
   }
 
   public void testLog() throws Exception {
@@ -293,33 +293,33 @@
     view = getView("/repo/+log");
     assertEquals(Type.LOG, view.getType());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+log/");
     assertEquals(Type.LOG, view.getType());
     assertEquals(Revision.NULL, view.getRevision());
-    assertNull(view.getTreePath());
+    assertNull(view.getPathPart());
 
     view = getView("/repo/+log/master");
     assertEquals(Type.LOG, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master/");
     assertEquals(Type.LOG, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master/foo");
     assertEquals(Type.LOG, view.getType());
     assertEquals("master", view.getRevision().getName());
     assertEquals(master, view.getRevision().getId());
     assertEquals(Revision.NULL, view.getOldRevision());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+log/master^..master");
     assertEquals(Type.LOG, view.getType());
@@ -327,7 +327,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master^..master/");
     assertEquals(Type.LOG, view.getType());
@@ -335,7 +335,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
 
     view = getView("/repo/+log/master^..master/foo");
     assertEquals(Type.LOG, view.getType());
@@ -343,7 +343,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("foo", view.getTreePath());
+    assertEquals("foo", view.getPathPart());
 
     view = getView("/repo/+log/refs/heads/master^..refs/heads/master");
     assertEquals(Type.LOG, view.getType());
@@ -351,7 +351,7 @@
     assertEquals(master, view.getRevision().getId());
     assertEquals("refs/heads/master^", view.getOldRevision().getName());
     assertEquals(parent, view.getOldRevision().getId());
-    assertEquals("", view.getTreePath());
+    assertEquals("", view.getPathPart());
   }
 
   private GitilesView getView(String pathAndQuery) throws ServletException, IOException {