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 { /** * @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. * Move *DocumentNameSerializer in Model module (currently in xwiki-core) * Move *DocumentNameFactory in Model module (currently in xwiki-core) Here's my +1 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; } }