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.
>
> 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
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs