Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-servlets/src/main/java/org/eclipse/jetty/servlets/UserAgentFilter.java')
-rw-r--r--jetty-servlets/src/main/java/org/eclipse/jetty/servlets/UserAgentFilter.java158
1 files changed, 0 insertions, 158 deletions
diff --git a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/UserAgentFilter.java b/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/UserAgentFilter.java
deleted file mode 100644
index d9e22e8da8..0000000000
--- a/jetty-servlets/src/main/java/org/eclipse/jetty/servlets/UserAgentFilter.java
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// ========================================================================
-// Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
-// ------------------------------------------------------------------------
-// All rights reserved. This program and the accompanying materials
-// are made available under the terms of the Eclipse Public License v1.0
-// and Apache License v2.0 which accompanies this distribution.
-//
-// The Eclipse Public License is available at
-// http://www.eclipse.org/legal/epl-v10.html
-//
-// The Apache License v2.0 is available at
-// http://www.opensource.org/licenses/apache2.0.php
-//
-// You may elect to redistribute this code under either of these licenses.
-// ========================================================================
-//
-
-package org.eclipse.jetty.servlets;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-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;
-
-/* ------------------------------------------------------------ */
-/** User Agent Filter.
- * <p>
- * This filter allows efficient matching of user agent strings for
- * downstream or extended filters to use for browser specific logic.
- * </p>
- * <p>
- * The filter is configured with the following init parameters:
- * <dl>
- * <dt>attribute</dt><dd>If set, then the request attribute of this name is set with the matched user agent string</dd>
- * <dt>cacheSize</dt><dd>The size of the user-agent cache, used to avoid reparsing of user agent strings. The entire cache is flushed
- * when this size is reached</dd>
- * <dt>userAgent</dt><dd>A regex {@link Pattern} to extract the essential elements of the user agent.
- * The concatenation of matched pattern groups is used as the user agent name</dd>
- * <dl>
- * An example value for pattern is <code>(?:Mozilla[^\(]*\(compatible;\s*+([^;]*);.*)|(?:.*?([^\s]+/[^\s]+).*)</code>. These two
- * pattern match the common compatibility user-agent strings and extract the real user agent, failing that, the first
- * element of the agent string is returned.
- *
- *
- */
-public class UserAgentFilter implements Filter
-{
- private static final String __defaultPattern = "(?:Mozilla[^\\(]*\\(compatible;\\s*+([^;]*);.*)|(?:.*?([^\\s]+/[^\\s]+).*)";
- private Pattern _pattern = Pattern.compile(__defaultPattern);
- private Map<String, String> _agentCache = new ConcurrentHashMap<String, String>();
- private int _agentCacheSize=1024;
- private String _attribute;
-
- /* ------------------------------------------------------------ */
- /* (non-Javadoc)
- * @see javax.servlet.Filter#destroy()
- */
- public void destroy()
- {
- }
-
- /* ------------------------------------------------------------ */
- /* (non-Javadoc)
- * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
- */
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
- {
- if (_attribute!=null && _pattern!=null)
- {
- String ua=getUserAgent(request);
- request.setAttribute(_attribute,ua);
- }
- chain.doFilter(request,response);
- }
-
- /* ------------------------------------------------------------ */
- /* (non-Javadoc)
- * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
- */
- public void init(FilterConfig filterConfig) throws ServletException
- {
- _attribute=filterConfig.getInitParameter("attribute");
-
- String p=filterConfig.getInitParameter("userAgent");
- if (p!=null)
- _pattern=Pattern.compile(p);
-
- String size=filterConfig.getInitParameter("cacheSize");
- if (size!=null)
- _agentCacheSize=Integer.parseInt(size);
- }
-
- /* ------------------------------------------------------------ */
- public String getUserAgent(ServletRequest request)
- {
- String ua=((HttpServletRequest)request).getHeader("User-Agent");
- return getUserAgent(ua);
- }
-
- /* ------------------------------------------------------------ */
- /** Get UserAgent.
- * The configured agent patterns are used to match against the passed user agent string.
- * If any patterns match, the concatenation of pattern groups is returned as the user agent
- * string. Match results are cached.
- * @param ua A user agent string
- * @return The matched pattern groups or the original user agent string
- */
- public String getUserAgent(String ua)
- {
- if (ua == null)
- return null;
-
- String tag = _agentCache.get(ua);
-
- if (tag == null)
- {
- if (_pattern != null)
- {
- Matcher matcher = _pattern.matcher(ua);
- if (matcher.matches())
- {
- if (matcher.groupCount() > 0)
- {
- for (int g = 1; g <= matcher.groupCount(); g++)
- {
- String group = matcher.group(g);
- if (group != null)
- tag = tag == null ? group : tag + group;
- }
- }
- else
- {
- tag = matcher.group();
- }
- }
- }
-
- if (tag == null)
- tag = ua;
-
- if (_agentCache.size() >= _agentCacheSize)
- _agentCache.clear();
- _agentCache.put(ua, tag);
- }
-
- return tag;
- }
-}

Back to the top