Fix project links to be query links
Instead of using the older "#project,merged,name" anchor for a
project link and rewriting it in the dispatcher, use the search
query link directly.
Change-Id: I27c3cfe54bbb35f5b6197fd504a22a53c21adf4b
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java b/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java
index 358f656..43541b7 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/PageLinks.java
@@ -69,21 +69,28 @@
return "q," + KeyUtil.encode(query) + "," + TOP;
}
- public static String toProject(final Project.NameKey proj, Status status) {
+ public static String projectQuery(Project.NameKey proj, Status status) {
switch (status) {
case ABANDONED:
- return "project,abandoned," + proj.toString() + ",n,z";
+ return "status:abandoned " + op("project", proj.get());
case MERGED:
- return "project,merged," + proj.toString() + ",n,z";
+ return "status:merged " + op("project", proj.get());
case NEW:
case SUBMITTED:
default:
- return "project,open," + proj.toString() + ",n,z";
+ return "status:open " + op("project", proj.get());
}
}
+ public static String op(String name, String value) {
+ if (value.indexOf(' ') >= 0) {
+ return name + ":\"" + value + "\"";
+ }
+ return name + ":" + value;
+ }
+
protected PageLinks() {
}
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
index 5c07a80..f93fd5e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/Dispatcher.java
@@ -30,6 +30,7 @@
import static com.google.gerrit.common.PageLinks.SETTINGS_PROJECTS;
import static com.google.gerrit.common.PageLinks.SETTINGS_SSHKEYS;
import static com.google.gerrit.common.PageLinks.SETTINGS_WEBIDENT;
+import static com.google.gerrit.common.PageLinks.op;
import com.google.gerrit.client.account.MyAgreementsScreen;
import com.google.gerrit.client.account.MyContactInformationScreen;
@@ -202,7 +203,7 @@
final int c = s.indexOf(',');
Project.NameKey proj = Project.NameKey.parse(s.substring(0, c));
return QueryScreen.forQuery( //
- "status:open " + QueryScreen.op("project", proj.get()), //
+ "status:open " + op("project", proj.get()), //
s.substring(c + 1));
}
@@ -212,7 +213,7 @@
final int c = s.indexOf(',');
Project.NameKey proj = Project.NameKey.parse(s.substring(0, c));
return QueryScreen.forQuery( //
- "status:merged " + QueryScreen.op("project", proj.get()), //
+ "status:merged " + op("project", proj.get()), //
s.substring(c + 1));
}
@@ -222,7 +223,7 @@
final int c = s.indexOf(',');
Project.NameKey proj = Project.NameKey.parse(s.substring(0, c));
return QueryScreen.forQuery( //
- "status:abandoned " + QueryScreen.op("project", proj.get()), //
+ "status:abandoned " + op("project", proj.get()), //
s.substring(c + 1));
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java
index 3ddfeff..c600569 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/QueryScreen.java
@@ -24,13 +24,6 @@
public class QueryScreen extends PagedSingleListScreen {
- public static String op(String name, String value) {
- if (value.indexOf(' ') >= 0) {
- return name + ":\"" + value + "\"";
- }
- return name + ":" + value;
- }
-
public static QueryScreen forQuery(String query) {
return forQuery(query, PageLinks.TOP);
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java
index 2c18448..b2c4c3e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/ui/ProjectLink.java
@@ -32,7 +32,7 @@
public ProjectLink(final String text, final Project.NameKey proj,
Change.Status stat) {
- super(text, PageLinks.toProject(proj, stat));
+ super(text, PageLinks.toChangeQuery(PageLinks.projectQuery(proj, stat)));
status = stat;
project = proj;
}
@@ -43,20 +43,6 @@
}
private Screen createScreen() {
- switch (status) {
- case ABANDONED:
- return QueryScreen.forQuery("status:abandoned "
- + QueryScreen.op("project", project.get()));
-
- case MERGED:
- return QueryScreen.forQuery("status:merged "
- + QueryScreen.op("project", project.get()));
-
- case NEW:
- case SUBMITTED:
- default:
- return QueryScreen.forQuery("status:open "
- + QueryScreen.op("project", project.get()));
- }
+ return QueryScreen.forQuery(PageLinks.projectQuery(project, status));
}
}
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/ProjectServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/ProjectServlet.java
index 336d2fe..3f7f68d 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/ProjectServlet.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/ProjectServlet.java
@@ -115,7 +115,8 @@
StringBuilder r = new StringBuilder();
r.append(urlProvider.get());
r.append('#');
- r.append(PageLinks.toProject(dst, Change.Status.NEW));
+ r.append(PageLinks.toChangeQuery(PageLinks.projectQuery(dst,
+ Change.Status.NEW)));
rsp.sendRedirect(r.toString());
}
});