[jboss-svn-commits] JBL Code SVN: r18761 - labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Mar 7 12:12:08 EST 2008
Author: szimano
Date: 2008-03-07 12:12:08 -0500 (Fri, 07 Mar 2008)
New Revision: 18761
Added:
labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/WikiComRedirectFilter.java
Log:
wiki .com redirect filter
Added: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/WikiComRedirectFilter.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/WikiComRedirectFilter.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/WikiComRedirectFilter.java 2008-03-07 17:12:08 UTC (rev 18761)
@@ -0,0 +1,116 @@
+/*
+ * JBoss Labs. http://labs.jboss.com/jbosslabs
+ *
+ * Copyright (C) 2008 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+ * Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+ */
+
+package org.jboss.forge.portal;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.jboss.logging.Logger;
+
+/**
+ * @author tomaszszymanski
+ *
+ * This filter redirects all requests from domain/wiki_context (for example
+ * jboss.com/wiki) to wikidomain/request (for example wiki.jboss.org/wiki).
+ *
+ * Example configuration
+ * <filter>
+ * <filter-name>wikiComRedirect</filter-name>
+ * <filter-class>org.jboss.forge.portal.WikiComRedirectFilter</filter-class>
+ * <init-param>
+ * <param-name>WIKI_DOMAIN</param-name>
+ * <param-value>wiki.jboss.org</param-value>
+ * <description>Domain that wiki is running on</description>
+ * </init-param>
+ * <init-param>
+ * <param-name>WIKI_CONTEXT</param-name>
+ * <param-value>/wiki</param-value>
+ * <description>Wiki context</description>
+ * </init-param>
+ * </filter>
+ *
+ * <filter-mapping>
+ * <filter-name>wikiComRedirect</filter-name>
+ * <url-pattern>/*</url-pattern>
+ * </filter-mapping>
+ */
+public class WikiComRedirectFilter implements Filter {
+
+ private static final String WIKI_DOMAIN = "WIKI_DOMAIN";
+ private static final String WIKI_CONTEXT = "WIKI_CONTEXT";
+
+ private String wikiDomain;
+ private String[] wikiContext;
+
+ private static final Logger log = Logger
+ .getLogger(WikiComRedirectFilter.class);
+
+ public void destroy() {
+
+ }
+
+ public void doFilter(ServletRequest request, ServletResponse response,
+ FilterChain chain) throws IOException, ServletException {
+ HttpServletRequest htReq = (HttpServletRequest) request;
+
+ // check if wiki context was requested
+ if (contextInsideWiki(htReq.getRequestURI())) {
+
+ // do redirect to wiki domain
+ HttpServletResponse htRes = (HttpServletResponse) response;
+
+ htRes.sendRedirect((htReq.isSecure() ? "https" : "http") + "://"
+ + wikiDomain + htReq.getRequestURI());
+ return;
+ }
+
+ // if request is OK - just render.
+
+ chain.doFilter(request, response);
+ }
+
+ private boolean contextInsideWiki(String requestURI) {
+ for (String wikiCon : wikiContext) {
+ if (requestURI.startsWith(wikiCon)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public void init(FilterConfig config) throws ServletException {
+ wikiDomain = config.getInitParameter(WIKI_DOMAIN);
+ wikiContext = config.getInitParameter(WIKI_CONTEXT).split(",");
+ }
+
+}
More information about the jboss-svn-commits
mailing list