All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.wings.session.CachedUserAgentStringParser Maven / Gradle / Ivy

The newest version!
package org.wings.session;

import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import net.sf.uadetector.ReadableUserAgent;
import net.sf.uadetector.UserAgentStringParser;
import net.sf.uadetector.service.UADetectorServiceFactory;

final public class CachedUserAgentStringParser implements UserAgentStringParser {

	final private UserAgentStringParser parser = UADetectorServiceFactory.getCachingAndUpdatingParser();
	
	final private ConcurrentMap cache = new ConcurrentHashMap<>();

	static final private UserAgentStringParser instance = new CachedUserAgentStringParser();
	
	private CachedUserAgentStringParser() {}
	
	static public UserAgentStringParser getParser() {
		return instance;
	}
	
	/**
	 * {@inheritDoc}
	 */
	@Override
    public String getDataVersion() {
		return parser.getDataVersion();
	}

	/**
	 * @⁄null
	 */
	@Override
    public ReadableUserAgent parse(final String userAgentString) {
		ReadableUserAgent result = cache.get(userAgentString);
		if (result == null) {
			result = parser.parse(userAgentString);
			cache.putIfAbsent(userAgentString, result);
		}
		return result;
	}

	@Override
	public void shutdown() {
		// do nothing
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy