package com.nominanuda.jsweb.host; import org.mozilla.javascript.Callable; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.ScriptableObject; import com.nominanuda.rhino.StruScriptableConvertor; import com.nominanuda.springmvc.Sitemap; import com.nominanuda.zen.obj.Obj; public class Location extends ScriptableObject implements Callable { private static final long serialVersionUID = 3193397575047488553L; private StruScriptableConvertor dataStructScriptableConvertor = new StruScriptableConvertor(); private Sitemap sitemap; @Override public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) { String id = (String) args[0]; Scriptable params = (args.length > 1 ? (Scriptable) args[1] : null); return sitemap.getUrl(id, params != null ? (Obj) dataStructScriptableConvertor.fromScriptable(params) : null); } @Override public String getClassName() { return "Function"; } public void setSitemap(Sitemap s) { sitemap = s; } }