File Source: useragentconsolidator.java
1 package net.sourceforge.pebble.logging;
2
3
4 /**
5 * Consolidate UserAgent String to a short name. This explicitly checks for a
6 * few known snippets from the UserAgent that a browser reports. There's a
7 * number of them missing - these are some of the most common as well as some
8 * ancient ones.
9 *
10 * Extracted from {@link net.sourceforge.pebble.web.action.ViewUserAgentsAction}
11 */
/*
P/P * Method: void net.sourceforge.pebble.logging.UserAgentConsolidator()
*/
12 public class UserAgentConsolidator {
13
14 /**
15 * UserAgent identifications that are known. Be careful when you add more: they are
16 * supposed to be checked for matches in the order they appear here. So place more
17 * specific names (e.g. containing a version number) at the beginning, more generic
18 * ones at the end.
19 */
/*
P/P * Method: net.sourceforge.pebble.logging.UserAgentConsolidator__static_init
*
* Postconditions:
* KNOWN_AGENTS == &new String[](UserAgentConsolidator__static_init#1)
* new String[](UserAgentConsolidator__static_init#1) num objects == 1
* KNOWN_AGENTS.length == 18
* KNOWN_AGENTS[...] in Addr_Set{&"MSIE 5.0",&"MSIE 6.0",&"MSIE 7.0",&"MSIE 8.0",&"MSIE 9.0",&"Firefox.1.",&"Firefox.2.",&"Firefox.3.0",&"Firefox.3.5",&"Firefox.3.6",&"Safari",&"Opera",&"Chrome",&"Bloglines",&"Googlebot",&"Feedfetcher-Google",&"Yahoo! Slurp",&"Bing"}
*/
20 private static final String[] KNOWN_AGENTS = new String[] { "MSIE 5.0",
21 "MSIE 6.0", "MSIE 7.0", "MSIE 8.0", "MSIE 9.0", "Firefox/1.",
22 "Firefox/2.", "Firefox/3.0", "Firefox/3.5", "Firefox/3.6", "Safari",
23 "Opera", "Chrome", "Bloglines", "Googlebot", "Feedfetcher-Google",
24 "Yahoo! Slurp", "Bing"}; // Are all of these real? Should we remove old ones?
25
26 /**
27 * Consolidate given user agent to a short name if the agent is recognized,
28 * UserAgentConsolidator.OTHER otherwise.
29 *
30 * @param userAgent
31 * Name that the useragent identifies as
32 * @return short name or UserAgentConsolidator.OTHER
33 */
34 public static String consolidate(String userAgent) {
/*
P/P * Method: String consolidate(String)
*
* Preconditions:
* (soft) init'ed(KNOWN_AGENTS[...])
* (soft) userAgent != null
*
* Postconditions:
* init'ed(return_value)
*
* Test Vectors:
* java.lang.String:contains(...)@37: {0}, {1}
*/
35 String consolidatedUserAgent = "Other"; // not localized...
36 for(String knownAgent : KNOWN_AGENTS) {
37 if (userAgent.contains(knownAgent)) {
38 consolidatedUserAgent = knownAgent;
39 break;
40 }
41 }
42 return consolidatedUserAgent;
43 }
44
45 }
SofCheck Inspector Build Version : 2.22510
| useragentconsolidator.java |
2010-Jun-25 19:40:32 |
| useragentconsolidator.class |
2010-Jul-19 20:23:38 |