package net.sourceforge.wurfl.spring;
import javax.servlet.http.HttpServletRequest;
import net.sourceforge.wurfl.core.WURFLManager;
import net.sourceforge.wurfl.core.request.DefaultWURFLRequestFactory;
import net.sourceforge.wurfl.core.request.WURFLRequestFactory;
import org.springframework.mobile.device.Device;
import org.springframework.mobile.device.DeviceResolver;
/**
* WURFL-based device resolver.
* WURL provides a comprehensive catalog of Devices and their capabilities.
* See http://wurfl.sourceforge.net for more information.
* @author Keith Donald
*/
public class WurflDeviceResolver implements DeviceResolver {
private final WURFLManager wurflManager;
private final WURFLRequestFactory requestFactory;
/**
* Creates a new Wurfl-based device resolution service.
* @param wurflManager the central WURFL manager object to delegate to.
*/
public WurflDeviceResolver(WURFLManager wurflManager) {
this(wurflManager, new DefaultWURFLRequestFactory());
}
/**
* Creates a new Wurfl-based device resolution service.
* @param wurflManager the central WURFL manager object to delegate to
* @param requestFactory a custom WurflRequest factory
*/
public WurflDeviceResolver(WURFLManager wurflManager, WURFLRequestFactory requestFactory) {
this.wurflManager = wurflManager;
this.requestFactory = requestFactory;
}
public Device resolveDevice(HttpServletRequest request) {
return new WurflDevice(wurflManager.getDeviceForRequest(requestFactory.createRequest(request)));
}
}