On Tue, Nov 15, 2011 at 17:11, Vincent Massol <vincent(a)massol.net> wrote:
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/cea424914f40ce924afbc49b3159…
)
:
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.h…
>
> 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>.
I would means that this should not cause so many additional constructors,
if we list them individually.
So your have not the same vision then I have :)
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…
Not my goals, just want to be explicit and easy to use.
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?
I simply provide the need constructor, no more.
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?
I suggest not to have loosely typed parameters, but strong one, like Locale
and Version.
Also the goal is to have unknown parameters so how can you do a mapping
for something unknown? :)
That is clearly not my goal, why do you want unknown parameters on Document
Reference ?
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
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs
--
Denis Gervalle
SOFTEC sa - CEO
eGuilde sarl - CTO