completely got rid of getHref function in INode, just using getUrl from now on.
added optional root prototype name for getUrl.
This commit is contained in:
parent
1be9b1687b
commit
a041b8ec78
3 changed files with 23 additions and 20 deletions
|
@ -100,9 +100,7 @@ public interface INode {
|
||||||
public void setContent (String content);
|
public void setContent (String content);
|
||||||
public byte[] getContent ();
|
public byte[] getContent ();
|
||||||
public String getText ();
|
public String getText ();
|
||||||
public String getUrl (INode root, INode userroot, String tmpname);
|
public String getUrl (INode root, INode users, String tmpname, String rootproto);
|
||||||
public String getHref (INode root, INode userroot, String tmpname, String prefix);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -736,11 +736,7 @@ public class Node implements INode, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getHref (INode root, INode userroot, String tmpname, String prefix) {
|
public String getUrl (INode root, INode users, String tmpname, String rootproto) {
|
||||||
return prefix + getUrl (root, userroot, tmpname);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUrl (INode root, INode userroot, String tmpname) {
|
|
||||||
throw new RuntimeException ("HREFs on transient (non-db based) Nodes not supported");
|
throw new RuntimeException ("HREFs on transient (non-db based) Nodes not supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1796,34 +1796,43 @@ public class Node implements INode, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public String getHref (INode root, INode userroot, String tmpname, String prefix) {
|
|
||||||
return prefix + getUrl (root, userroot, tmpname);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the path to eiter the general data-root or the user root, depending on
|
* Get the path to eiter the general data-root or the user root, depending on
|
||||||
* where this node is located.
|
* where this node is located.
|
||||||
*/
|
*/
|
||||||
public String getUrl (INode root, INode userroot, String tmpname) {
|
public String getUrl (INode root, INode users, String tmpname, String rootproto) {
|
||||||
// String fullname = "";
|
|
||||||
String divider = "/";
|
String divider = "/";
|
||||||
StringBuffer b = new StringBuffer ();
|
StringBuffer b = new StringBuffer ();
|
||||||
INode p = this;
|
INode p = this;
|
||||||
int loopWatch = 0;
|
int loopWatch = 0;
|
||||||
while (p != null && p.getParent () != null && p != root && p != userroot) {
|
|
||||||
|
while (p != null && p.getParent () != null && p != root) {
|
||||||
|
|
||||||
|
if (rootproto != null && rootproto.equals (p.getPrototype ()))
|
||||||
|
break;
|
||||||
|
|
||||||
b.insert (0, divider);
|
b.insert (0, divider);
|
||||||
b.insert (0, UrlEncoder.encode (p.getNameOrID ()));
|
|
||||||
|
// users always have a canonical URL like /users/username
|
||||||
if ("user".equals (p.getPrototype ())) {
|
if ("user".equals (p.getPrototype ())) {
|
||||||
b.insert (0, "users"+divider);
|
b.insert (0, UrlEncoder.encode (p.getName ()));
|
||||||
|
p = users;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b.insert (0, UrlEncoder.encode (p.getNameOrID ()));
|
||||||
|
|
||||||
p = p.getParent ();
|
p = p.getParent ();
|
||||||
|
|
||||||
if (loopWatch++ > 10)
|
if (loopWatch++ > 20)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (p == users) {
|
||||||
|
b.insert (0, divider);
|
||||||
|
b.insert (0, "users");
|
||||||
|
}
|
||||||
return b.toString()+UrlEncoder.encode (tmpname);
|
return b.toString()+UrlEncoder.encode (tmpname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue