public AbstractLocator(String abstractPath, Form queryForm, ClientInfo clientInfo) {
		this.abstractPath = abstractPath.endsWith("/") ? abstractPath.substring(0, abstractPath.length()-1) : abstractPath;
		this.queryString = URLDecoder.decode(queryForm.getQueryString());
		this.queryForm = queryForm;
		this.clientInfo = clientInfo;
		
		GlobalConfiguration conf = GlobalConfiguration.getInstance();
		this.abstractPath = conf.getProperty("server-basepath") + this.abstractPath;

		String ticket = queryForm.getFirstValue("ticket", true);
		LOG.debug("ticket = "+ticket);
		LOG.debug("abstract path = "+abstractPath);
		
		if (ticket == null) {
			//TODO: check with smithers if ticket is required for this video
			status = Status.CLIENT_ERROR_FORBIDDEN;
			return;
		} else {
			if (ticket.indexOf("?") > -1) {
				ticket = ticket.substring(0, ticket.indexOf("?"));
				LOG.debug("new ticket = "+ticket);
			}
			
			String wowzaUri = conf.getProperty("wowza-server-uri");

			Request request = new Request(Method.GET, wowzaUri+"/acl/ticket/"+ticket);
			Client client = new Client(Protocol.HTTP);
			Response response = client.handle(request);
			
			//TODO: add support for ip whitelisting instead of ticketing
			
			try {
				Document fsxml = DocumentHelper.parseText(response.getEntityAsText());
				String uri = fsxml.selectSingleNode("//properties/uri") == null ? null : fsxml.selectSingleNode("//properties/uri").getText();
				//String fsxmlStatus = fsxml.selectSingleNode("//properties/status") == null ? null : fsxml.selectSingleNode("//properties/status").getText();
				
				String domainPath = abstractPath.indexOf("/domain/") == -1 ? abstractPath : abstractPath.substring(abstractPath.indexOf("/domain/"));
				
				if (uri != null && uri.startsWith(domainPath)) {
					status = Status.REDIRECTION_SEE_OTHER;
					return;
				}
				status = Status.CLIENT_ERROR_FORBIDDEN;
				request.release();
				response.release();
				return;
			} catch (DocumentException e) {
				status = Status.SERVER_ERROR_INTERNAL;
				request.release();
				response.release();
				return;
			}
		}		
	}