On Nov 15, 2011, at 5:03 PM, Denis Gervalle wrote:

> Hi Devs,
> 
> The implementation of the immutable version of reference is almost ready
> now. It introduce the parameters on reference as suggested, but we now have
> a discussion on how the constructors of "typed" entity reference should be.
> 
> My initial dev was to provide constructor like:

you're missing something here :)

> But Vincent have different vision of this, here its comment extracted from

I don't have a different vision. It's just that you limited your proposal to 
just Locale which clearly isn't good enough.

> GitHub (
> https://github.com/xwiki/xwiki-platform/commit/cea424914f40ce924afbc49b3159bc8934251aac#commitcomment-721603)
> :
> 
> My proposal was:
>> - generic params in EntityReference
>> - helpers methods for get/setLocale and get/setVersion in DocumentReference
>> 
>> Now the fact that we're making the refs immutable changed this since it's
>> no longer possible.
>> 
>> I don't think multiplying the constructor signatures is a good idea.
>> 
>> We could either have:
>> 
>> public DocumentReference(String wikiName, List spaceNames, String
>> pageName, Map<String, Object> parameters)
>> 
>> or
>> 
>> public DocumentReference(String wikiName, List spaceNames, String
>> pageName, Pair<String, Object>... parameters)
>> 
>> where Pair is
>> http://commons.apache.org/lang/api-3.0-beta/org/apache/commons/lang3/Pair.html
>> 
>> Maybe this needs some discussion on the devs list rather than here to make
>> sure everyone sees it?
>> 
> 
> I am myself not really happy with that since I dislike the idea that
> parameter are generic on "typed" references.
> Do not like either the idea to provide keys for creating a Map or Pairs,
> since the implementation details that use Map should not be so exposed IMO.
> 
> There should not be so much parameter on a single "typed" reference,

I don't understand this sentence.

The Map is <String, Object>.

> and
> these should be easy to provide. Creating Maps in java is not fun in syntax
> for that IMO, and is far too open.

Sure but the goal here is not to redo java…

> I had propose using overloaded constructor like
> 
> public DocumentReference(String wikiName, List<String> spaceNames, String
> pageName, Locale locale)

Again, this doesn't work. It only works for a **single** parameter. It doesn't 
work for multiple parameters. How do you specify the Locale or some unknown 
String param?

> or if something more flexible should be used
> 
> public DocumentReference(String wikiName, List<String> spaceNames, String
> pageName, Object... parameters)
> 
> where parameters is later interpreted based on object type and limited to
> those used for a given typed reference.

This doesn't work. If I have 2 parameters of type String, how do you map them 
automatically?

Also the goal is to have unknown parameters so how can you do a mapping for 
something unknown? :)

Thanks
-Vincent

> Here Vincent comments on this:
> 
>> The automatic mapping idea seems a bad idea to me (too magic and doesn't
>> work in a lot of cases).
> 
> 
> Maybe some of you have an even better idea ?
> 
> Denis
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to