[jboss-svn-commits] JBL Code SVN: r14153 - in labs/jbosslabs/trunk/portal-extensions: forge-common/src/java/org/jboss/forge/common and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 10 14:20:17 EDT 2007


Author: wrzep
Date: 2007-08-10 14:20:17 -0400 (Fri, 10 Aug 2007)
New Revision: 14153

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/DownloadingTools.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml
   labs/jbosslabs/trunk/portal-extensions/forge-common/project.xml
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/CountersServiceInterface.java
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDB.java
   labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/project.xml
   labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/DownloadingFilter.java
Log:
JBLAB-882


Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml	2007-08-10 17:33:18 UTC (rev 14152)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/maven.xml	2007-08-10 18:20:17 UTC (rev 14153)
@@ -14,6 +14,7 @@
 
     <goal name="build">
         <attainGoal name="jar" />
+        <ant:copy todir="target" file="../binaries/maven-repo-addons/sitemesh/jars/sitemesh-2.3.jar" overwrite="false"/>
     </goal>
 
     <goal name="deploy">

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/project.xml	2007-08-10 17:33:18 UTC (rev 14152)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/project.xml	2007-08-10 18:20:17 UTC (rev 14153)
@@ -138,6 +138,12 @@
             <artifactId>myfaces-all</artifactId>
             <version>1.1.1</version>
     </dependency>
+    
+    <dependency>
+	    	<groupId>sitemesh</groupId>
+	    	<artifactId>sitemesh</artifactId>
+	    	<version>2.3</version>
+		</dependency>
     </dependencies>
     
     <build>

Added: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/DownloadingTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/DownloadingTools.java	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/DownloadingTools.java	2007-08-10 18:20:17 UTC (rev 14153)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.forge.common;
+
+import java.lang.reflect.Method;
+import javax.servlet.http.HttpServletRequest;
+import org.jboss.logging.Logger;
+
+import com.opensymphony.module.sitemesh.mapper.RobotDecoratorMapper;
+
+/**
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
+ */
+
+public class DownloadingTools {
+
+	private static final String USER_AGENT_HEADER = "User-Agent";
+
+	private static final String[] desiredUserAgents = {
+				"gecko", "opera", "wget", "msie" };
+	// Don't put "mozilla" here. Some bots (including googlebot) have "mozilla"
+	// string as a combatibility flag
+	
+	private static final String ROBOT_DECORADOR_MAPPER_CLASS 
+								= "com.opensymphony.module.sitemesh.mapper."
+								+ "RobotDecoratorMapper";
+	private static final String IS_BOT_METHOD = "isBot";
+
+	private static Logger log = Logger.getLogger(DownloadingTools.class);
+	
+    @SuppressWarnings("unchecked")
+    public static boolean isDesired(HttpServletRequest request) {
+    	
+    	String userAgent = request.getHeader(USER_AGENT_HEADER);
+		
+		if (userAgent != null) {
+			
+			userAgent = userAgent.trim().toLowerCase();
+			
+			for (String agent : desiredUserAgents) {
+				if (userAgent.indexOf(agent) != -1) {
+					return true;
+				}
+			}
+		}
+		
+    	// Not sure, ask sitemesh
+		try {
+			// Reflection in necessary since "isBot" method is private
+			Class<RobotDecoratorMapper> rdmClass = (Class<RobotDecoratorMapper>)
+    		Thread.currentThread().getContextClassLoader().loadClass(ROBOT_DECORADOR_MAPPER_CLASS);
+			
+			Method m = rdmClass.getDeclaredMethod(IS_BOT_METHOD, HttpServletRequest.class);
+			m.setAccessible(true);
+			
+			//TODO logging??
+	
+			return ! ((Boolean) m.invoke(null, request));
+		} catch (Exception e) {
+			log.warn(e);
+		}
+		
+		return true;
+	}
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/CountersServiceInterface.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/CountersServiceInterface.java	2007-08-10 17:33:18 UTC (rev 14152)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/CountersServiceInterface.java	2007-08-10 18:20:17 UTC (rev 14153)
@@ -28,7 +28,7 @@
 /**
  * Interface showing what methods are in Session Bean service.
  * @author Ryszard Kozmik
- *
+ * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
 public interface CountersServiceInterface
 {

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDB.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDB.java	2007-08-10 17:33:18 UTC (rev 14152)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/DownloadCountersDB.java	2007-08-10 18:20:17 UTC (rev 14153)
@@ -34,7 +34,6 @@
 
 import javax.naming.NamingException;
 
-import org.jboss.forge.common.Constants;
 import org.jboss.shotoku.ContentManager;
 
 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/project.xml	2007-08-10 17:33:18 UTC (rev 14152)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/project.xml	2007-08-10 18:20:17 UTC (rev 14153)
@@ -61,13 +61,6 @@
 	    <version>3.2.3</version>
 	    <jar>jbosssx.jar</jar>
 	</dependency>
-	
-    <dependency>
-	    <groupId>sitemesh</groupId>
-	    <artifactId>sitemesh</artifactId>
-	    <version>2.3</version>
-	</dependency>
-	
 
     </dependencies>        
 

Modified: labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/DownloadingFilter.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/DownloadingFilter.java	2007-08-10 17:33:18 UTC (rev 14152)
+++ labs/jbosslabs/trunk/portal-extensions/forge-portal-attr/src/java/org/jboss/forge/portal/DownloadingFilter.java	2007-08-10 18:20:17 UTC (rev 14153)
@@ -34,11 +34,9 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.jboss.forge.common.Constants;
-import org.jboss.forge.common.ForgeHelper;
+import org.jboss.forge.common.DownloadingTools;
 import org.jboss.forge.common.projects.DownloadCounterTools;
 import org.jboss.forge.common.projects.DownloadCountersDB;
-import org.jboss.forge.common.projects.DownloadCountersDescriptor;
-import org.jboss.forge.common.projects.ProjectsHelper;
 
 /**
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
@@ -49,7 +47,7 @@
 public class DownloadingFilter implements Filter {
 
     private static final String URL_PARAM = "url";
-
+	
     public void doFilter(ServletRequest request, ServletResponse response,
                          FilterChain chain) throws IOException, ServletException {
     	
@@ -65,8 +63,16 @@
         		   String portalName = Constants.LABS_PORTAL;
         		   String projectId = resolveProjectId(link);
         		
-        		   count(link, projectId, portalName);
-        	
+        		   boolean desired = DownloadingTools.isDesired(htReq);
+        		   
+        		   System.out.println("isDesired? " + 
+        				   htReq.getHeader("User-agent") + " "
+        				   + desired);
+        		   
+        		   if (desired) {
+        			   count(link, projectId, portalName);
+        		   }
+        			   
         		   ((HttpServletResponse) response).sendRedirect(link);
         		   return;
         	}
@@ -75,8 +81,7 @@
         chain.doFilter(request, response);
     }
 
-
-    private static String resolveProjectId(String link) {
+	private static String resolveProjectId(String link) {
  
     	return link.split(File.separator)[0];
 	}
@@ -88,8 +93,6 @@
 		   // cache
     	   DownloadCountersDB downloadCounters =
 			   			(DownloadCountersDB) DownloadCounterTools.getDesc(portalName);
-		   
-		
    
 		   // Sending the request link to the DownloadCounter to
 		   // increment




More information about the jboss-svn-commits mailing list