Fix decoding of project and revision on client side Decoding has to be done by URL.decodeQueryString(...) because only then URL component delimiter characters such as '/' are decoded. Change-Id: Ic804eb77fcbf22f3bc938128368d5175572febec Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java index 40ea088..5d7dd4a 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocScreen.java
@@ -28,8 +28,8 @@ static class Factory implements Screen.EntryPoint { @Override public void onLoad(Screen screen) { - String projectName = URL.decode(screen.getToken(1)); - String revision = URL.decode(screen.getToken(2)); + String projectName = URL.decodeQueryString(screen.getToken(1)); + String revision = URL.decodeQueryString(screen.getToken(2)); String path = screen.getToken(3); screen.show(new XDocScreen(projectName, revision, path)); screen.setWindowTitle(FileInfo.getFileName(path)); @@ -39,7 +39,7 @@ static class HeadFactory implements Screen.EntryPoint { @Override public void onLoad(Screen screen) { - String projectName = URL.decode(screen.getToken(1)); + String projectName = URL.decodeQueryString(screen.getToken(1)); String path = URL.decode(screen.getToken(2)); screen.show(new XDocScreen(projectName, "HEAD", path)); screen.setWindowTitle(FileInfo.getFileName(path));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java index 5f1930c..f3a17dc 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocSideBySideDiffScreen.java
@@ -26,8 +26,8 @@ static class Factory implements Screen.EntryPoint { @Override public void onLoad(Screen screen) { - String change = URL.decode(screen.getToken(1)); - String patchSet = URL.decode(screen.getToken(2)); + String change = URL.decodeQueryString(screen.getToken(1)); + String patchSet = URL.decodeQueryString(screen.getToken(2)); String path = screen.getToken(4); screen.show(new XDocSideBySideDiffScreen(change, patchSet, path)); screen.setWindowTitle(FileInfo.getFileName(path));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java index 42df4d0..043ec9f 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java +++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/XDocUnifiedDiffScreen.java
@@ -26,8 +26,8 @@ static class Factory implements Screen.EntryPoint { @Override public void onLoad(Screen screen) { - String change = URL.decode(screen.getToken(1)); - String patchSet = URL.decode(screen.getToken(2)); + String change = URL.decodeQueryString(screen.getToken(1)); + String patchSet = URL.decodeQueryString(screen.getToken(2)); String path = screen.getToken(4); screen.show(new XDocUnifiedDiffScreen(change, patchSet, path)); screen.setWindowTitle(FileInfo.getFileName(path));