Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Goldthorpe2011-10-03 18:42:15 +0000
committerChris Goldthorpe2011-10-03 18:45:56 +0000
commit40530189922c1deb3a17b767e4ab9759c361c0b0 (patch)
tree59ea7bcb846b0a8f233fdb54ddcc97c6c77a188a /org.eclipse.help.webapp/src/org/eclipse
parent981ec51cc8a0c94f648703f7941448e194642819 (diff)
downloadeclipse.platform.ua-40530189922c1deb3a17b767e4ab9759c361c0b0.tar.gz
eclipse.platform.ua-40530189922c1deb3a17b767e4ab9759c361c0b0.tar.xz
eclipse.platform.ua-40530189922c1deb3a17b767e4ab9759c361c0b0.zip
Bug 359579 - [Webapp] Stack trace displayed in help system for incorrect
nav param value
Diffstat (limited to 'org.eclipse.help.webapp/src/org/eclipse')
-rw-r--r--org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/NavServlet.java36
1 files changed, 34 insertions, 2 deletions
diff --git a/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/NavServlet.java b/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/NavServlet.java
index 955dc0a3b..e0dc0f7ca 100644
--- a/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/NavServlet.java
+++ b/org.eclipse.help.webapp/src/org/eclipse/help/internal/webapp/servlet/NavServlet.java
@@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletResponse;
import org.eclipse.help.ITopic;
import org.eclipse.help.base.AbstractHelpScope;
import org.eclipse.help.internal.HelpPlugin;
+import org.eclipse.help.internal.base.MissingContentManager;
import org.eclipse.help.internal.base.scope.ScopeUtils;
import org.eclipse.help.internal.webapp.WebappResources;
import org.eclipse.help.internal.webapp.data.RequestScope;
@@ -54,8 +55,15 @@ public class NavServlet extends HttpServlet {
req.setCharacterEncoding("UTF-8"); //$NON-NLS-1$
resp.setContentType("text/html; charset=UTF-8"); //$NON-NLS-1$
- String path = req.getPathInfo().substring(1);
- ITopic topic = getTopic(path, locale);
+ String path;
+ ITopic topic;
+ try {
+ path = req.getPathInfo().substring(1);
+ topic = getTopic(path, locale);
+ } catch (Exception e) {
+ showPageNotFoundPage(req, resp);
+ return;
+ }
OutputStream out = resp.getOutputStream();
for (int i = 0; i < filters.length; i++) {
@@ -68,6 +76,30 @@ public class NavServlet extends HttpServlet {
writer.close();
}
+ private void showPageNotFoundPage(HttpServletRequest req,
+ HttpServletResponse resp) {
+ String errorPage = MissingContentManager.getInstance().getPageNotFoundPage(req.getServletPath(), false);
+ if (errorPage != null && errorPage.length() > 0) {
+ String href = req.getRequestURL().toString();
+ int navIndex = href.indexOf("/nav"); //$NON-NLS-1$
+ if (navIndex >= 0 ) {
+ href = href.substring(0, navIndex);
+ href += "/nftopic"; //$NON-NLS-1$
+ if (errorPage.charAt(0) != '/') {
+ href += '/';
+ }
+ href += errorPage;
+ try {
+ resp.sendRedirect(href);
+ return;
+ } catch (IOException e) {
+ // Fall through
+ }
+ }
+ }
+ resp.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+
protected Locale getLocale (HttpServletRequest req, HttpServletResponse resp) {
Locale locale;
String nl = UrlUtil.getLocale(req, resp);

Back to the top