removed local reval field from all function classes
added href postprocessing with skin to NodeHref
This commit is contained in:
parent
5e04d833f1
commit
1be9b1687b
1 changed files with 42 additions and 39 deletions
|
@ -25,6 +25,7 @@ import org.xml.sax.InputSource;
|
||||||
public class HopExtension {
|
public class HopExtension {
|
||||||
|
|
||||||
protected Application app;
|
protected Application app;
|
||||||
|
protected RequestEvaluator reval;
|
||||||
|
|
||||||
public HopExtension () {
|
public HopExtension () {
|
||||||
super();
|
super();
|
||||||
|
@ -36,6 +37,7 @@ public class HopExtension {
|
||||||
*/
|
*/
|
||||||
public void initializeExtension (RequestEvaluator reval) throws EcmaScriptException {
|
public void initializeExtension (RequestEvaluator reval) throws EcmaScriptException {
|
||||||
|
|
||||||
|
this.reval = reval;
|
||||||
this.app = reval.app;
|
this.app = reval.app;
|
||||||
Evaluator evaluator = reval.evaluator;
|
Evaluator evaluator = reval.evaluator;
|
||||||
GlobalObject go = evaluator.getGlobalObject();
|
GlobalObject go = evaluator.getGlobalObject();
|
||||||
|
@ -65,7 +67,7 @@ public class HopExtension {
|
||||||
reval.esNodePrototype.putHiddenProperty ("addAt", new NodeAddAt ("addAt", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("addAt", new NodeAddAt ("addAt", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("remove", new NodeRemove ("remove", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("remove", new NodeRemove ("remove", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("link", new NodeLink ("link", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("link", new NodeLink ("link", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("list", new NodeList ("list", evaluator, fp, reval));
|
reval.esNodePrototype.putHiddenProperty ("list", new NodeList ("list", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("set", new NodeSet ("set", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("set", new NodeSet ("set", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("get", new NodeGet ("get", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("get", new NodeGet ("get", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("count", new NodeCount ("count", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("count", new NodeCount ("count", evaluator, fp));
|
||||||
|
@ -80,19 +82,19 @@ public class HopExtension {
|
||||||
reval.esNodePrototype.putHiddenProperty ("href", new NodeHref ("href", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("href", new NodeHref ("href", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("setParent", new NodeSetParent ("setParent", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("setParent", new NodeSetParent ("setParent", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty ("invalidate", new NodeInvalidate ("invalidate", evaluator, fp));
|
reval.esNodePrototype.putHiddenProperty ("invalidate", new NodeInvalidate ("invalidate", evaluator, fp));
|
||||||
reval.esNodePrototype.putHiddenProperty("renderSkin", new RenderSkin ("renderSkin", evaluator, fp, reval, false, false));
|
reval.esNodePrototype.putHiddenProperty("renderSkin", new RenderSkin ("renderSkin", evaluator, fp, false, false));
|
||||||
reval.esNodePrototype.putHiddenProperty("renderSkinAsString", new RenderSkin ("renderSkinAsString", evaluator, fp, reval, false, true));
|
reval.esNodePrototype.putHiddenProperty("renderSkinAsString", new RenderSkin ("renderSkinAsString", evaluator, fp, false, true));
|
||||||
|
|
||||||
// methods that give access to properties and global user lists
|
// methods that give access to properties and global user lists
|
||||||
go.putHiddenProperty("Node", node); // register the constructor for a plain Node object.
|
go.putHiddenProperty("Node", node); // register the constructor for a plain Node object.
|
||||||
go.putHiddenProperty("HopObject", node); // HopObject is the new name for node.
|
go.putHiddenProperty("HopObject", node); // HopObject is the new name for node.
|
||||||
go.putHiddenProperty("getProperty", new GlobalGetProperty ("getProperty", evaluator, fp));
|
go.putHiddenProperty("getProperty", new GlobalGetProperty ("getProperty", evaluator, fp));
|
||||||
go.putHiddenProperty("token", new GlobalGetProperty ("token", evaluator, fp));
|
go.putHiddenProperty("token", new GlobalGetProperty ("token", evaluator, fp));
|
||||||
go.putHiddenProperty("getUser", new GlobalGetUser ("getUser", evaluator, fp, reval));
|
go.putHiddenProperty("getUser", new GlobalGetUser ("getUser", evaluator, fp));
|
||||||
go.putHiddenProperty("getUserBySession", new GlobalGetUserBySession ("getUserBySession", evaluator, fp, reval));
|
go.putHiddenProperty("getUserBySession", new GlobalGetUserBySession ("getUserBySession", evaluator, fp));
|
||||||
go.putHiddenProperty("getAllUsers", new GlobalGetAllUsers ("getAllUsers", evaluator, fp, reval));
|
go.putHiddenProperty("getAllUsers", new GlobalGetAllUsers ("getAllUsers", evaluator, fp));
|
||||||
go.putHiddenProperty("getActiveUsers", new GlobalGetActiveUsers ("getActiveUsers", evaluator, fp, reval));
|
go.putHiddenProperty("getActiveUsers", new GlobalGetActiveUsers ("getActiveUsers", evaluator, fp));
|
||||||
go.putHiddenProperty("countActiveUsers", new GlobalCountActiveUsers ("countActiveUsers", evaluator, fp, reval));
|
go.putHiddenProperty("countActiveUsers", new GlobalCountActiveUsers ("countActiveUsers", evaluator, fp));
|
||||||
go.putHiddenProperty("isActive", new GlobalIsActive ("isActive", evaluator, fp));
|
go.putHiddenProperty("isActive", new GlobalIsActive ("isActive", evaluator, fp));
|
||||||
go.putHiddenProperty("getAge", new GlobalGetAge ("getAge", evaluator, fp));
|
go.putHiddenProperty("getAge", new GlobalGetAge ("getAge", evaluator, fp));
|
||||||
go.putHiddenProperty("getURL", new GlobalGetURL ("getURL", evaluator, fp));
|
go.putHiddenProperty("getURL", new GlobalGetURL ("getURL", evaluator, fp));
|
||||||
|
@ -106,15 +108,15 @@ public class HopExtension {
|
||||||
go.putHiddenProperty("jdomize", new GlobalJDOM ("jdomize", evaluator, fp));
|
go.putHiddenProperty("jdomize", new GlobalJDOM ("jdomize", evaluator, fp));
|
||||||
go.putHiddenProperty("getSkin", new GlobalGetSkin ("getSkin", evaluator, fp));
|
go.putHiddenProperty("getSkin", new GlobalGetSkin ("getSkin", evaluator, fp));
|
||||||
go.putHiddenProperty("createSkin", new GlobalCreateSkin ("createSkin", evaluator, fp));
|
go.putHiddenProperty("createSkin", new GlobalCreateSkin ("createSkin", evaluator, fp));
|
||||||
go.putHiddenProperty("renderSkin", new RenderSkin ("renderSkin", evaluator, fp, reval, true, false));
|
go.putHiddenProperty("renderSkin", new RenderSkin ("renderSkin", evaluator, fp, true, false));
|
||||||
go.putHiddenProperty("renderSkinAsString", new RenderSkin ("renderSkinAsString", evaluator, fp, reval, true, true));
|
go.putHiddenProperty("renderSkinAsString", new RenderSkin ("renderSkinAsString", evaluator, fp, true, true));
|
||||||
go.putHiddenProperty("authenticate", new GlobalAuthenticate ("authenticate", evaluator, fp));
|
go.putHiddenProperty("authenticate", new GlobalAuthenticate ("authenticate", evaluator, fp));
|
||||||
go.deleteProperty("exit", "exit".hashCode());
|
go.deleteProperty("exit", "exit".hashCode());
|
||||||
|
|
||||||
// and some methods for session management from JS...
|
// and some methods for session management from JS...
|
||||||
reval.esUserPrototype.putHiddenProperty("logon", new UserLogin ("logon", evaluator, fp));
|
reval.esUserPrototype.putHiddenProperty("logon", new UserLogin ("logon", evaluator, fp));
|
||||||
reval.esUserPrototype.putHiddenProperty("login", new UserLogin ("login", evaluator, fp));
|
reval.esUserPrototype.putHiddenProperty("login", new UserLogin ("login", evaluator, fp));
|
||||||
reval.esUserPrototype.putHiddenProperty("register", new UserRegister ("register", evaluator, fp, reval));
|
reval.esUserPrototype.putHiddenProperty("register", new UserRegister ("register", evaluator, fp));
|
||||||
reval.esUserPrototype.putHiddenProperty("logout", new UserLogout ("logout", evaluator, fp));
|
reval.esUserPrototype.putHiddenProperty("logout", new UserLogout ("logout", evaluator, fp));
|
||||||
reval.esUserPrototype.putHiddenProperty("onSince", new UserOnSince ("onSince", evaluator, fp));
|
reval.esUserPrototype.putHiddenProperty("onSince", new UserOnSince ("onSince", evaluator, fp));
|
||||||
reval.esUserPrototype.putHiddenProperty("lastActive", new UserLastActive ("lastActive", evaluator, fp));
|
reval.esUserPrototype.putHiddenProperty("lastActive", new UserLastActive ("lastActive", evaluator, fp));
|
||||||
|
@ -189,10 +191,8 @@ public class HopExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
class NodeList extends BuiltinFunctionObject {
|
class NodeList extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
NodeList (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
NodeList (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super(fp, evaluator, name, 0);
|
super(fp, evaluator, name, 0);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction(ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction(ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
ESNode node = (ESNode) thisObject;
|
ESNode node = (ESNode) thisObject;
|
||||||
|
@ -477,10 +477,8 @@ public class HopExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
class UserRegister extends BuiltinFunctionObject {
|
class UserRegister extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
UserRegister (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
UserRegister (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super (fp, evaluator, name, 2);
|
super (fp, evaluator, name, 2);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
if (arguments.length < 2)
|
if (arguments.length < 2)
|
||||||
|
@ -609,13 +607,10 @@ public class HopExtension {
|
||||||
* Render a skin
|
* Render a skin
|
||||||
*/
|
*/
|
||||||
class RenderSkin extends BuiltinFunctionObject {
|
class RenderSkin extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
|
||||||
boolean global;
|
boolean global;
|
||||||
boolean asString;
|
boolean asString;
|
||||||
RenderSkin (String name, Evaluator evaluator, FunctionPrototype fp,
|
RenderSkin (String name, Evaluator evaluator, FunctionPrototype fp, boolean global, boolean asString) {
|
||||||
RequestEvaluator reval, boolean global, boolean asString) {
|
|
||||||
super (fp, evaluator, name, 1);
|
super (fp, evaluator, name, 1);
|
||||||
this.reval = reval;
|
|
||||||
this.global = global;
|
this.global = global;
|
||||||
this.asString = asString;
|
this.asString = asString;
|
||||||
}
|
}
|
||||||
|
@ -657,10 +652,8 @@ public class HopExtension {
|
||||||
|
|
||||||
|
|
||||||
class GlobalGetUser extends BuiltinFunctionObject {
|
class GlobalGetUser extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
GlobalGetUser (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
GlobalGetUser (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super (fp, evaluator, name, 1);
|
super (fp, evaluator, name, 1);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
INode user = null;
|
INode user = null;
|
||||||
|
@ -675,10 +668,8 @@ public class HopExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
class GlobalGetUserBySession extends BuiltinFunctionObject {
|
class GlobalGetUserBySession extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
GlobalGetUserBySession (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
GlobalGetUserBySession (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super (fp, evaluator, name, 1);
|
super (fp, evaluator, name, 1);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
User user = null;
|
User user = null;
|
||||||
|
@ -695,10 +686,8 @@ public class HopExtension {
|
||||||
|
|
||||||
|
|
||||||
class GlobalGetAllUsers extends BuiltinFunctionObject {
|
class GlobalGetAllUsers extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
GlobalGetAllUsers (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
GlobalGetAllUsers (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super (fp, evaluator, name, 1);
|
super (fp, evaluator, name, 1);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
INode users = app.getUserRoot ();
|
INode users = app.getUserRoot ();
|
||||||
|
@ -714,17 +703,13 @@ public class HopExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
class GlobalGetActiveUsers extends BuiltinFunctionObject {
|
class GlobalGetActiveUsers extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
GlobalGetActiveUsers (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
GlobalGetActiveUsers (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super (fp, evaluator, name, 1);
|
super (fp, evaluator, name, 1);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
Hashtable sessions = (Hashtable) app.sessions.clone ();
|
Hashtable sessions = (Hashtable) app.sessions.clone ();
|
||||||
int l = sessions.size ();
|
|
||||||
ESObject ap = this.evaluator.getArrayPrototype();
|
ESObject ap = this.evaluator.getArrayPrototype();
|
||||||
ArrayPrototype theArray = new ArrayPrototype (ap, this.evaluator);
|
ArrayPrototype theArray = new ArrayPrototype (ap, this.evaluator);
|
||||||
theArray.setSize(l);
|
|
||||||
int i=0;
|
int i=0;
|
||||||
Hashtable visited = new Hashtable ();
|
Hashtable visited = new Hashtable ();
|
||||||
for (Enumeration e=sessions.elements(); e.hasMoreElements(); ) {
|
for (Enumeration e=sessions.elements(); e.hasMoreElements(); ) {
|
||||||
|
@ -739,10 +724,8 @@ public class HopExtension {
|
||||||
}
|
}
|
||||||
|
|
||||||
class GlobalCountActiveUsers extends BuiltinFunctionObject {
|
class GlobalCountActiveUsers extends BuiltinFunctionObject {
|
||||||
RequestEvaluator reval;
|
GlobalCountActiveUsers (String name, Evaluator evaluator, FunctionPrototype fp) {
|
||||||
GlobalCountActiveUsers (String name, Evaluator evaluator, FunctionPrototype fp, RequestEvaluator reval) {
|
|
||||||
super (fp, evaluator, name, 1);
|
super (fp, evaluator, name, 1);
|
||||||
this.reval = reval;
|
|
||||||
}
|
}
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
return new ESNumber (app.sessions.size ());
|
return new ESNumber (app.sessions.size ());
|
||||||
|
@ -1000,7 +983,27 @@ public class HopExtension {
|
||||||
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
public ESValue callFunction (ESObject thisObject, ESValue[] arguments) throws EcmaScriptException {
|
||||||
INode n = ((ESNode) thisObject).getNode ();
|
INode n = ((ESNode) thisObject).getNode ();
|
||||||
String tmpname = arguments.length == 0 ? "" : arguments[0].toString ();
|
String tmpname = arguments.length == 0 ? "" : arguments[0].toString ();
|
||||||
return new ESString (app.getNodeHref (n, tmpname));
|
String basicHref =app.getNodeHref (n, tmpname);
|
||||||
|
String hrefSkin = app.props.getProperty ("hrefSkin");
|
||||||
|
if (hrefSkin != null) {
|
||||||
|
// we need to post-process the href with a skin for this application
|
||||||
|
for (int i=reval.reqPath.size()-1; i>=0; i--) {
|
||||||
|
ESNode esn = (ESNode) reval.reqPath.getProperty (i);
|
||||||
|
INode sn = esn.getNode ();
|
||||||
|
Prototype p = app.getPrototype (sn);
|
||||||
|
if (p != null) {
|
||||||
|
Skin s = p.getSkin (hrefSkin);
|
||||||
|
if (s != null) {
|
||||||
|
reval.res.pushStringBuffer ();
|
||||||
|
ESObject param = new ObjectPrototype (null, reval.evaluator);
|
||||||
|
param.putProperty ("path", new ESString (basicHref), "path".hashCode ());
|
||||||
|
s.render (reval, esn, param);
|
||||||
|
return new ESString (reval.res.popStringBuffer ());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return new ESString (basicHref);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue