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

