Hi devs,

I'm almost done with my entity reference refactoring and I've just  
realized I have missed something I think. So far the implementation  
only supports Absolute references (i.e the entity reference factory  
always return a reference with all parts filled - you choose to use a  
default factory or a current entity depending on how you wish to  
resolve the names when they have not been provided in the passed  
reference string).

I now think we must also support relative references (i.e. when some  
parts can be null) and that it's up to the user of the api to decide  
if they want to convert a relative reference to an absolute one or not.

Here's a use case: renaming of documents. For exemple documents have  
links specified as a string representing the target doc name. If we  
don't have relative references then we need to decide if we want to  
use the default serializer (all parts printed including wiki name) or  
the compact serializer (only parts different from context reference  
printed). This doesn't support printing only what the user had decided  
to fill. For ex a user might have specified voluntarily the space and  
page name and right now with my implementation he'll get only the page  
name specified if the new space is the same as the space for the  
current doc.

So here's my proposal:

* Entity Reference Factory leaves parts to null when not specified in  
the string representation.
* We add a EntityReference.getAbsoluteReference(EntityReference base)  
method to return an absolute reference. It's resolved against the  
passed base reference (i.e. parts not specified are taken from it)

WDYT?

I'm going to start refactoring my code to do this later today so  
please let me know if you see any pb with it.

Thanks
-Vincent


_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to