On Mon, Dec 14, 2009 at 14:31, Thomas Mortagne <[email protected]> wrote:
On Mon, Dec 14, 2009 at 10:10, Vincent Massol <[email protected]> wrote:
Hi,
Following on the model emails, I'd also like to do the following:
* Introduce a new Model component to access the Model objects from the Execution Context (same as we do for other modules to prevent everyone from directly accessing the EC). For now I have:
/** * Allows accessing Model Objects for current objects (current document, current wiki, current space, etc) placed in * the Execution Context. * * @version $Id$ * @since 2.2M1 */ @ComponentRole public interface Model
Wouldn't ModelContext be more clear unless you plan to make Model interface the entry point of the whole model to not get only contextual informations.
{ /** * @return the current document located in the Execution Context or null if no current document exist */ DocumentName getCurrentDocumentName(); }
I'll also like to add getCurrentWikiName() and getCurrentSpaceName() later on.
Why later for getCurrentWikiName() ? It's as important as the current document I think.
* Move *DocumentNameSerializer in Model module (currently in xwiki-core) * Move *DocumentNameFactory in Model module (currently in xwiki-core)
This will have to be in model sooner or latter so if you are already able to move it now +1
Here's my +1
+1 for the general concept of component getting current model related informations.
I'm not sure actually. Serializers and Factory implementations are not that much model things but for now that's the best place we have so lets say +0.5 :)
Thanks -Vincent
PS: FYI here's how I have implemented Model for now:
/** * Default implementation bridging to the old XWiki Context to get current Model Objects. * * @version $Id$ * @since 2.2M1 */ @Component public class DefaultModel implements Model { /** * The Execution Context from which we get the old XWiki Context from which we get the current Model Objects. */ @Requirement private Execution execution;
/** * {@inheritDoc} * @see org.xwiki.model.Model#getCurrentDocumentName() */ public DocumentName getCurrentDocumentName() { DocumentName result = null; // TODO: This is bridge to the old XWiki Context since we currently don't store the current document in the // new Execution Context yet. Remove when we do so. try { Map<Object, Object> xcontext = (Map<Object, Object>) this.execution.getContext().getProperty("xwikicontext"); Object currentDocument = xcontext.get("doc"); result = (DocumentName) currentDocument .getClass().getMethod("getDocumentName").invoke(currentDocument); } catch (Exception e) { // Shouldn't happen in normal cases. Could happen if the context doesn't contain the old XWiki Context // but that would be a bug in the initialization system somewhere. } return result; } }
_______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
-- Thomas Mortagne
-- Thomas Mortagne