[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