package com.voxeo.tropo.app; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; import java.util.Properties; import javax.servlet.ServletContext; import javax.servlet.sip.SipURI; import javax.servlet.sip.URI; import org.apache.log4j.Logger; public class MockAppMgr extends AbstractLocalApplicationManager implements ApplicationManager { private static final Logger LOG = Logger.getLogger(MockAppMgr.class); private String _appPosition = null; public void init(ServletContext context, Map<String, String> paras) { _appPosition = paras.remove("appPosition"); if (_appPosition == null || _appPosition.length() < 1) { _appPosition = "http://127.0.0.1:8080/script/"; } super.init(context, paras); } /** * The current logic looks for a script using SIP URI's user name as the * script file name. E.g., SIP URL user name is abc.js (or abc_js), it looks * for <sipmethod>/apps/tropo/script/abc.js as the application URL. */ @Override protected Application findApplication(final URI uri) throws InvalidApplicationException, RedirectException { if (uri instanceof SipURI) { try { String name = ((SipURI) uri).getUser(); return createApplication(name, 0, name, null); } catch(Exception e) { LOG.warn("Unable to find the application for " + uri + ", but for test purpose, just use mock.js as test file name"); ; } } try { return createApplication(getURL("mock.js"), getCanonicalType("js"), 0, "mock.js", null); } catch(Exception ex) { throw new InvalidApplicationException(ex); } } public ApplicationURL createURL(String url, String method) throws MalformedURLException, IOException { return new JavaURL(new URL(getURL(url)), method); } @SuppressWarnings("unchecked") protected String getURL(final String name) { return _appPosition + name; } @Override protected Application findApplication(String token, Properties params) throws InvalidApplicationException, RedirectException { return createApplication(token, 0, token, null); } @Override public String toString() { return "Testing Edition"; } }