Switching code – JSP
<%@ page import="java.net.*, java.io.*, java.security.*" %>
<%
final String mobileSite = "http://live.mobi";
final String desktopSite = "http://google.com";
if(request.getParameter("redirect")!=null && request.getParameter("redirect")=="false") {
  response.sendRedirect(desktopSite);
}
final String DA_URI = "http://detect.deviceatlas.com/query";
String source = "none";
boolean useCookies = true;
boolean useCache = true;
String error = "";
String daJson = null;
final String DA_CACHE_DIR = System.getProperty("java.io.tmpdir")+ System.getProperty("file.separator")+"DeviceAtlasCache"+System.getProperty("file.separator");
String userAgent = request.getHeader("user-agent");
//Look up cookies
if(useCookies) {
  daJson = getCookieValue("Mobi_Mtld_DA_Properties", request.getCookies());
  if(daJson != null && !daJson.equals("null")) {
	source = "cookie";
  }
}
//Look up cache
if(useCache && source.equals("none")) {
  String filename = DA_CACHE_DIR + md5(userAgent) + ".json";
  
  File dir = new File(DA_CACHE_DIR);
  if(!dir.exists() && !dir.mkdirs()) {
	error = "Unable to create cache directory: " + DA_CACHE_DIR + "\n";
  }
  else {
    //Read the cache file if it exists
    daJson = readFileAsString(filename);
    if(daJson!=null && !daJson.trim().equals("null") && !daJson.trim().equals("")) source = "cache";
  }
  
}
//Look up DA webservice if we need to
if(source.equals("none")) {
  URL DA = new URL("http://detect.deviceatlas.com/query?User-Agent=" + URLEncoder.encode(userAgent));
  URLConnection conn = DA.openConnection();
  BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
  String line = null;
  line = br.readLine(); 
  while (line != null) {    
	daJson += line;
    line = br.readLine(); 	
  }  
  br.close();  
  
  if(null!=daJson) {
    source = "webservice";
	
	if(useCookies) {
	  Cookie cookie = new Cookie("Mobi_Mtld_DA_Properties", daJson);
	  response.addCookie(cookie);
	}
	
	if(useCache) {
	  String filename = DA_CACHE_DIR + md5(userAgent) + ".json";
	  writeFile(filename, daJson);
	}
  }
}
String isMobile = parseJson(daJson, "mobileDevice");
//Do the redirect
if(null!=isMobile && isMobile.equals("true")) response.sendRedirect(mobileSite);
else response.sendRedirect(desktopSite);
%>
<%!
//Parse json for property - really basic & assumes flat json file as returned by DA service
static final String parseJson(String json, String property) {
  String[] tokens = json.split(",\\s\"|\":|\\{\"|:\\s|,\\s|\\}");
  for(int i=0;i



