Hi all, I don't know, maybe this might be a stupid question/proposal, but why not replicate from usage of wiki:Space.Page to object and their properties. The Page is like a wiki for objects and properties are like pages for spaces.... Is it hard to implement this? I think the more notations... the harder is to see the code and understand it.
wiki:Space.Page:object.property Thanks, Flavius On Thu, Jan 21, 2010 at 12:14 PM, Anca Luca <[email protected]> wrote: > Hi Vincent, > > On 01/21/2010 11:52 AM, Vincent Massol wrote: >> >> On Jan 21, 2010, at 10:34 AM, Anca Luca wrote: >> >>> Hi devs, >>> >>> On 01/19/2010 03:01 PM, Anca Luca wrote: >>>> Hi devs, >>>> >>>> here's a resume of the approach, as it has been voted so far: >>>> 1/ add OBJECT and PROPERTY Entity Types >>>> >>>> 3 +1, 1 -1: Vincent can you lift your veto from this one, if approach >>>> suits you? >>>> >>>> 2/ using a serialization of the form >>>> wiki:Space.Page^className[objectnumber]#property >>>> 2 +1 (or 1 +1, 1 +0.5 if we take into account separators votes) >>> >>> Actually # is causing problems in velocity too, because it's the macro >>> invocation char. For example, this >>> >>> {{velocity}} >>> #macro(property) >>> this is a test macro >>> #end >>> >>> #set($var1 = "wiki:Space.Page^object#property") >>> >>> $var1 >>> {{/velocity}} >>> >>> displays: >>> >>> wiki:Space.Page^objectthis is a test macro >>> >>> Of course, 6th line can be changed to >>> #set($var1 = "wiki:Space.Page^object\#property") >>> and it will work as expected but the I'd really prefer to avoid escaping, >>> since >>> it's known to be problematic. >> >> I'm not sure it's a problem. I can't find many examples where we would use >> object references in velocity scripts and when we do there's a solution (the >> escape as you mentioned). > > I disagree here. I think that's why we're bothering to create these refs, to > be > used in scripts (in their serialized form). I would use them in scripts in > annotations. > Also, the devs will have to escape that hash _every single time_ since macros > can be defined by other sources than themselves and available in the context > they're running their script in (e.g. macros.vm) and collide with the property > name and cause unexpected results. I prefer to avoid this case if possible, > because devs will forget to do that, otherwise put, less bugs than more, if i > have the choice. > From my memories of scripting in XWiki, escaping in velocity can be an issue. > Think about having more sophisticated constructions with strings that contain > calls of object functions with strings as parameters, normally that works but > when it comes to escaping there can be pbs. Or this might have been a problem > only in syntax 1.0 since there were 4 syntaxes on top of eachother, I don't > know, but I prefer to avoid it, if possible. > >> >>> Also, Sergiu suggested at some point using the&s, I prefer to avoid that too >>> for as long as possible since it can cause problems with URLs. >> >> I don't think it would since the character would be URL-encoded. > > it _can_ be url encoded, but nothing guarantees that people wouldn't forget to > do it. otherwise put, less bugs than more if I have the choice. > >> >>> Some proposals would be ^ for object names and pipe or semicolon for >>> properties: >> >> Pipe is hard on some keyboards but it shouldn' t be a showstopper. >> >>> wiki:Space.Page^objectName|prop >>> wiki:Space.Page^objectName;prop >> >> These separators don't feel natural to me. I think I still prefer the hash. >> >>> or, for property separator, we could also think of ! ~> or ^ again. >>> >>> In terms of escaping, it means that every time the property separator >>> actually >>> appears in the property name, it has to be escaped and every time the object >>> separator appears in the object name itself, it has to be escaped. >> >> Yep. >> >>> Knowing this, I'd prefer to keep the ^ as the objectname separator since >>> it's >>> quite an unusual char and chances for it to appear in an object name (which >>> we >>> could think of as "as complex as a document name") are small. For property >>> names >>> though, I really wouldn't expect any non alphadigit character (other than >>> _) to >>> ever appear. >> >> Property names could have any character in the future. > > They can now too, I think, just the same way the object name can have a ^. My > expectation is only a general feeling about how I know programmers name their > field names. It's a question of small probability, not impossibility. > > Even if we expose types creation to 'regular non-devs' users (with a wizard or > something), I still think property names would stay a lot simpler than > document > names, for example (I don't see anyone adding a full sentence as a property > name, with punctuation, and whatever chars, while I see them naming a document > with a sentence). > > Thanks, > Anca > >> >> Thanks >> -Vincent >> >>> >>> Thanks, >>> Anca >>> >>> >>>> a) implementing with indexed references ('multivalued'): >>>> 1 +0.5 , 1 +0, >>>> b) implementing with object names computed as className[number] >>>> 1 +0.5, 1 +1, 1 -1: Vincent, Sergiu, could you reach some sort of an >>>> agreement >>>> on this? >>>> >>>> 3/ how to interpret wiki:Space.Page^className >>>> (wiki:Space.Page^className#property) >>>> >>>> i) consider invalid >>>> 1 -0, 1 +1 >>>> we can consider always valid with the meaning described at >>>> http://n2.nabble.com/proposal-discussion-Object-properties-references-tp4348315p4414596.html >>>> and the approach voted (iii so far, it seems) >>>> >>>> ii) as a list of all objects >>>> not consistent with references model so far >>>> >>>> iii) first object >>>> 1 +0, 1 +0.75, 1 +1 >>>> >>>> iv) object with index 0 >>>> 1 +0 >>>> >>>> Unless there are -1s, I would like to start implementing: >>>> 1/, 2/, a), iii) >>>> >>>> Thanks, >>>> Anca >>>> >>>> >>>> On 01/18/2010 04:54 PM, Anca Luca wrote: >>>>> Hi devs, >>>>> >>>>> to resume, and try to converge to an implementable version, I propose: >>>>> >>>>> 1/ adding only OBJECT and PROPERTY EntityTypes for the moment, referring >>>>> to an >>>>> object instance and a property instance in a document (a property ref >>>>> would have >>>>> an object as a parent which would have a document reference as a parent), >>>>> and >>>>> limiting the implementation to references to properties of object >>>>> instances >>>>> (leaving aside type definitions ftm). >>>>> >>>>> here's my +1 for this. >>>>> >>>>> 2/ using a serialization of the form >>>>> wiki:Space.Page^className[objectnumber]#property and >>>>> >>>>> a) using indexed ('multivalued') references, adding an additional >>>>> IndexedEntityReference class, to which API caller would have to cast. >>>>> ObjectReference would be such an IndexedEntityReference and provide object >>>>> related helper functions. >>>>> >>>>> b) className[objectnumber] is used as an 'object name', it would be the >>>>> name of >>>>> the object reference, and it would be the caller of the generic API that >>>>> would >>>>> have to parse& serialize this kind of strings to actually extract >>>>> classname and >>>>> object index. However, this would again be all hidden behind the >>>>> ObjectReference >>>>> API. >>>>> >>>>> I'm 0.5 and 0.5 between the two, any would suit my purpose. >>>>> >>>>> An additional question is what would wiki:Space.Page^className (and >>>>> wiki:Space.Page^className#property) mean: >>>>> i) nothing, we consider it as invalid reference, we'll fix that later, we >>>>> keep >>>>> it simple ftm >>>>> >>>>> my +1 goes for this >>>>> >>>>> ii) all objects of class className in the document >>>>> >>>>> iii) first object of that class in the document (as >>>>> XWikiDocument#getObject(className) does) >>>>> >>>>> iv) a shortcut for wiki:Space.Page^className[0] (which, note, does not >>>>> necessarily mean the first object in that document, since indexing of >>>>> objs in a >>>>> document is not recomputed when objects are deleted). >>>>> >>>>> WDYT? >>>>> >>>>> Thanks, >>>>> Anca >>>>> >>>>> On 01/13/2010 02:42 PM, Anca Luca wrote: >>>>>> Hi devs, >>>>>> >>>>>> Short story: >>>>>> 1/ add the CLASS, OBJECT, PROPERTY EntityTypes in the model >>>>>> >>>>>> +1 >>>>>> >>>>>> 2/ serialization for referencing a property of an object >>>>>> a) wiki:Space.Page^className[objectNumber]#property >>>>>> b) wiki:Space.Page^className#objectNumber$property >>>>>> +0.75 for b) >>>>>> >>>>>> Long story: >>>>>> >>>>>> 1/ I would need to extend the EntityReference to be able to target a >>>>>> property in an object in a document. >>>>>> For this, I will need to add >>>>>> >>>>>> /** >>>>>> * Represents a Class Entity >>>>>> */ >>>>>> CLASS, >>>>>> >>>>>> /** >>>>>> * Represents an Object Entity. >>>>>> */ >>>>>> OBJECT, >>>>>> >>>>>> /** >>>>>> * Represents a Property Entity >>>>>> */ >>>>>> PROPERTY, >>>>>> >>>>>> in the EntityType. Although I would prefer an extensible framework that >>>>>> would allow to extend the possible entity types without changing an enum >>>>>> in the platform (for any API user to be able to define its own >>>>>> references), I think this is fairly extensible (these are key concepts >>>>>> in the xwiki model and I don't think they would be changed that soon, >>>>>> and their interpretation is flexible, they could be combined with any >>>>>> parent to generate either references to class definitions or instances). >>>>>> here's my +1 for this. >>>>>> >>>>>> 2/ I would also need a 'standard' string serialization for these. Now, >>>>>> there's also the option to do it in my own module (annotations) because >>>>>> only I need it ftm, but I prefer to have a platform wide approach. >>>>>> Opinions? >>>>>> There are 2 choices, with a potentially different combination of >>>>>> separators: >>>>>> >>>>>> a/ wiki:Space.Page^className[objectNumber]#property >>>>>> >>>>>> pros: it's a suggestive way to access objects by number ([] is the >>>>>> standard syntax for array indexed access and the objects are accessed by >>>>>> index), [] is supported by JCR so maybe we should support it too >>>>>> cons: [] is somewhat inconsistent with all other separators which are >>>>>> just one separator, to the left (right) of the entity, harder to >>>>>> implement the [] separators on the current framework >>>>>> >>>>>> b/ wiki:Space.Page^className#objectNumber$property >>>>>> >>>>>> pros: inline with the separator usage we already have (and easier to >>>>>> implement for this reason), could be easier refactored to contain an >>>>>> object name instead of the number >>>>>> cons: $ separator can collide with velocity syntax (can potentially >>>>>> cause trouble when used in velocity -- an alternative could be the pipe >>>>>> |), could be harder to drop the object number part of the reference to >>>>>> refer a property in a class (if wanted, in the future) >>>>>> >>>>>> I have no other argument between a) and b) but the implementation speed >>>>>> one, so I'd go for a b)-like approach, in the spirit of the current >>>>>> separators. >>>>>> >>>>>> WDYT? >>>>>> >>>>>> Thanks, >>>>>> Anca >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

