jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Kick <gk5...@kickstyle.net>
Subject Re: residual definition xml implementation
Date Sat, 15 Apr 2006 08:11:47 GMT
your response actually outlines the reason i brought it up.  although  
the spec uses the * notation in its definitions, it pretty clearly  

"...to indicate that a property or child node definition is residual,  
the value returned by ItemDefinition.getName() is “*”. However, “*”  
is not a valid value for the property jcr:name in a
nt:propertyDefinition or nt:childNodeDefinition node (because  
jcr:name it is a NAME property, not a STRING).  As a result, an in- 
content definition of a residual item will simply not have a jcr:name  

so, i would refute your #1 by saying that although the JCR spec is  
littered with *s for readability, it quite specifically doesn't imply  
the use of "*" as a name because it simply isn't of type name.  in  
fact, the ebnf starting on page 67 states that a onecharsimplename,  
the only applicable non-terminal for a one character name, is "(* Any  
Unicode character except: '.', '/', ':', '[', ']', '*', ''', '"', '|'  
or any whitespace character *)".  so i would say that it is pretty  
obvious that * is not used as a valid value for that attribute.

further, it seems that the only reason that new QName("", "*")  
doesn't fail with an exception is that "The local part is not  
validated as a NCName as specified in Namespaces in XML" as stated in  
the javadoc for QName.  If it were, it would have to be either a  
"Letter" as defined by http://www.w3.org/TR/REC-xml/ or an '_'.   
again, it doesn't qualify.

so i guess that my point would be that i agree that neither is  
clearer, but i definitely question the validity.  specifically, the  
fact that many node type definitions aren't valid under nt:nodeType  
is worrisome.

now, of course this isn't detrimental, but if future revisions opt to  
start type-checking in appropriate places, it could be a mess.  but  
if there is a better reason for the * than it was chosen to be  
implemented as such, i could certainly reconsider my position.

thanks for hearing me out,

greg kick

On Apr 15, 2006, at 12:38 AM, Jukka Zitting wrote:

> Hi,
> On 4/15/06, Greg Kick <gk5885@kickstyle.net> wrote:
>> i have a quick question about node type definitions.  jackrabbit
>> consistently (NodeTypeWriter, custom_nodetypes.xml, etc.) uses
>> name="*" for residual definitions in the xml format.  however, p. 144
>> of the jsr170 spec says that * is not a valid name and the attribute
>> should be dropped for residual definitions.  so the question is
>> whether it was used on purpose in jackrabbit or if this is a
>> mistake.  i haven't looked at the code much, but it seems like it
>> would actually be harder to implement with the * than without...
>> anyway, a little insight would be appreciated because googleing the
>> archives gave me nothing.
> It is arguable whether name="*" or no name attribute is clearer, but
> both are valid solutions as there is no fear of collision between "*"
> and any valid property name. I suppose the main reasons for using "*"
> is that 1) the JCR specification uses "*" as the "name" of residual
> definitions, and that 2) the Jackrabbit internals use the
> ItemDef.ANY_NAME constant (defined as: new QName("", "*")) to identify
> residual definitions.
> BR,
> Jukka Zitting
> --
> Yukatan - http://yukatan.fi/ - info@yukatan.fi
> Software craftsmanship, JCR consulting, and Java development

View raw message