[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