<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#ffffff">
Hi Balz<br>
<br>
It seems to me that the Javadoc of <br>
<br>
src/core/java/org/wyona/yarep/core/Node.java#addNode(String, int)<br>
<br>
is pretty clear or please feel free to suggest a better wording.<br>
<br>
Re the Virtual Filesystem implementation I would suggest that we
check the name for slashes<br>
and throw an exception such that it is clear that one should not use
the method (1) like this.<br>
<br>
WDYT?<br>
<br>
Thanks<br>
<br>
Michael<br>
<br>
On 4/11/11 9:32 AM, Balz Schreier wrote:
<blockquote
cite="mid:BANLkTimQo7LKcbJDNLOQLEni+mYYeg6kKw@mail.gmail.com"
type="cite">Hi,
<div><br>
</div>
<div>I have detected the following (at least for me) unexpected
behaviour and it should get corrected, the fix is very easy, so
I don't send a patch for this.</div>
<div><br>
</div>
<div><b>Use Case:</b></div>
<div>You have prepared a Yarep path (e.g.
"/vouchers/thisisanidstring.xml"), and you want to add this node
now to a repository.</div>
<div><br>
</div>
<div><b>Solution:</b></div>
<div>there are two ways in Yanel how to do that:</div>
<div>1) <span class="Apple-style-span" style="color: rgb(77, 144,
114); font-family: Monaco; font-size: 11px;">repo.getRootNode().addNode(yarepPath,
NodeType.RESOURCE);</span></div>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1038.35">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4d9072}
</style>
<div><br>
</div>
<div>2) <span class="Apple-style-span" style="color: rgb(77, 144,
114); font-family: Monaco; font-size: 11px;">YarepUtil.addNodes(repo,
yarepPath, NodeType.<span class="s1">RESOURCE</span>);</span></div>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1038.35">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
span.s1 {color: #0027cc}
</style>
<div><br>
</div>
<div>of course, yarepPath = "/vouchers/thisisanidstring.xml" in
both scenarios.</div>
<meta charset="utf-8">
<div><br>
</div>
<div>Unexpected result:</div>
<div>1) Does store the new node under
"//vouchers/thisisanidstring.xml", starting with a double
slash!! --> Index also contains then that path</div>
<div>2) Correct, stores node under
"/vouchers/thisisanidstring.xml"</div>
<div><br>
</div>
<div><br>
</div>
<div><b>How to fix it:</b></div>
<div><br>
</div>
<div>Class VirtualFileSystemNode:</div>
<div><br>
</div>
<div>Currently this code looks like this:</div>
<div>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1038.35">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4f76cb}
span.s1 {color: #4f76cb}
span.s2 {color: #90afcb}
span.s3 {color: #931a68}
span.s4 {color: #3834ff}
</style>
<p class="p1"> <span class="s1">/**</span></p>
<p class="p2"> * <span class="s2">@see</span>
org.wyona.yarep.core.Node#addNode(java.lang.String, int)</p>
<p class="p2"> */</p>
<p class="p1"> <span class="s3">public</span> Node
addNode(String name, <span class="s3">int</span> type) <span
class="s3">throws</span> RepositoryException {</p>
<p class="p1"> String newPath = getPath() + <span
class="s4">"/"</span> + name;</p>
<p class="p1"> <span class="s3">if</span>
(getPath().endsWith(<span class="s4">"/"</span>)) {</p>
<p class="p1"> newPath = getPath() + name;</p>
<p class="p1"> }</p>
</div>
<div><br>
</div>
<div>Corrected code would be:</div>
<div>
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="1038.35">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px}
span.s1 {color: #931a68}
span.s2 {color: #3834ff}
</style>
<p class="p1"> String newPath = <span class="s1">null</span>;</p>
<p class="p1"> <span class="s1">if</span>
(name.startsWith(<span class="s2">"/"</span>)) {</p>
<p class="p1"> name = name.substring(1);</p>
<p class="p1"> }</p>
<p class="p1"> <span class="s1">if</span>
(getPath().endsWith(<span class="s2">"/"</span>)) {</p>
<p class="p1"> newPath = getPath() + name;</p>
<p class="p1"> } <span class="s1">else</span> {</p>
<p class="p1"> newPath = getPath() + <span
class="s2">"/"</span> + name;</p>
<p class="p1"> }</p>
<p class="p2"> </p>
</div>
<div><br>
</div>
<div>Alternative:</div>
<div>If you think that this should not get fixed, I would add a
clear Javadoc saying that the "String name" parameter MUST BE
RELATIVE.</div>
<div><br>
</div>
<div>What do you think?</div>
<div>Cheers</div>
<div>Balz</div>
<meta charset="utf-8">
<meta charset="utf-8">
</blockquote>
<br>
</body>
</html>