Author: adamw Date: 2005-10-10 15:39:49 -0400 (Mon, 10 Oct 2005) New Revision: 1356 Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java Log: /news, /blog and /downloads redirects for projects Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-10-10 13:41:17 UTC (rev 1355) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-10-10 19:39:49 UTC (rev 1356) @@ -8,6 +8,10 @@ *****************************************/ package org.jboss.forge.common; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.Properties; import javax.mail.Message; @@ -419,4 +423,27 @@ || link.startsWith("https:") || link.startsWith("mailto:") || link.startsWith("news:") || link.startsWith("file:"); } + + /** + * Reads data from the given stream and returnes it as a string. + * @param stream Stream to read from. + * @return Content of the given stream in a from of a string. An empty + * string, in case of any errors. + */ + public static String getString(InputStream stream) { + BufferedReader in = new BufferedReader(new InputStreamReader(stream)); + StringBuffer sb = new StringBuffer(); + String line; + + try { + while ((line = in.readLine()) != null) { + sb.append(line); + sb.append("\n"); + } + } catch (IOException e) { + return ""; + } + + return sb.toString(); + } } Modified: trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java =================================================================== --- trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-10-10 13:41:17 UTC (rev 1355) +++ trunk/forge/portal-extensions/forge-freezone/src/java/org/jboss/forge/projects/freezone/Freezone.java 2005-10-10 19:39:49 UTC (rev 1356) @@ -54,6 +54,7 @@ public void doView(JBossRenderRequest request, JBossRenderResponse response) throws IOException { String requestedPath = request.getParameter(PATH_PARAM); + if (requestedPath == null) { sendResponseNotFound(response); return; @@ -70,6 +71,13 @@ response.setContentType("text/html"); response.getWriter().write(requestedNode.getContent()); } + + private final static String[][] PROJECT_REDIRECTS = { + { "downloads", "downloads" }, + { "news", "blog" }, + { "blog", "blog" }, + { "", "" } + }; @Override protected void processAction(JBossActionRequest request, JBossActionResponse response) @@ -102,13 +110,39 @@ ProjectsHelper.getProjects(portalName).projectExists( new ActionRequestPermissionsChecker(request), tokens[1]); + // Checking for special links, making possible redirects. + if (isProjectLink) { + String projectId = tokens[1]; + String requestedPage = tokens.length > 2 ? tokens[2] : ""; + for (String[] projectRedirect : PROJECT_REDIRECTS) { + if (projectRedirect[0].equals(requestedPage)) { + String url; + + if ("".equals(projectRedirect[1])) { + url = ProjectsHelper.getProjects( + ForgeHelper.LABS_PORTAL).getProjectLink( + projectId); + } else { + url = ProjectsHelper.createPageLink( + ForgeHelper.LABS_PORTAL, projectId, + projectRedirect[1]); + } + + response.sendRedirect(url); + return; + } + } + } + // If the requested path references a project, getting the page from // the project's freezone dir. Otherwise, getting the page from the // default directory. String cmsPath = portalName + "/" + ProjectsHelper.MEMBERS_DIR + "/"; if (isProjectLink) { + String[] limitedTokens = reqPath.split("[/]", 3); + cmsPath += tokens[1] + "/" + ProjectsHelper.FREEZONE_DIR + "/" - + reqPath.split("[/]", 3)[2]; + + (limitedTokens.length > 2 ? limitedTokens[2] : ""); } else { cmsPath += DEFAULT_DIR + "/" + ProjectsHelper.FREEZONE_DIR + reqPath; Modified: trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java =================================================================== --- trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java 2005-10-10 13:41:17 UTC (rev 1355) +++ trunk/forge/portal-extensions/forge-root-redirect/src/java/org/jboss/forge/redirect/RootRedirectFilter.java 2005-10-10 19:39:49 UTC (rev 1356) @@ -14,9 +14,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.projects.ProjectsHelper; - /** * @author adamw */ @@ -31,10 +28,6 @@ return "projects".equals(token) || "products".equals(token); } - private boolean checkUriMainPage(String uri) { - return "".equals(uri) || "/".equals(uri); - } - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException { if ((request instanceof HttpServletRequest) @@ -43,18 +36,14 @@ HttpServletResponse httpResponse = (HttpServletResponse) response; String requestURI = httpRequest.getRequestURI(); - String[] tokens = requestURI.split("[/]", 4); + String[] tokens = requestURI.split("[/]", 3); - String redirectTo; + String redirectTo = "/portal"; - if ((tokens.length > 2) && (!"".equals(tokens[2])) && (checkFirstToken(tokens[1]))) { - // Project redirect. - redirectTo = ProjectsHelper.getProjects(ForgeHelper.LABS_PORTAL).getProjectLink(tokens[2]); - } else if (checkUriMainPage(requestURI)) { - // Main page redirect. - redirectTo = ForgeHelper.createPageLink(ForgeHelper.LABS_PORTAL, "default"); + if ((tokens.length > 2) && (checkFirstToken(tokens[1]))) { + redirectTo += "/" + tokens[2]; } else { - redirectTo = "/portal"+requestURI; + redirectTo += requestURI; } httpResponse.sendRedirect(redirectTo); |