On Apr 4, 2009, at 11:56 AM, Thomas Mortagne wrote:

> Shouldn't we have only one component which do the
> serialize/unserialize to make sure the same rule is applied in the two
> way ? It seems weird to me to be able to change the way to parse a
> document reference and let the document reference creation to another
> implementation.

I think they are two separate thing. We have several factories that  
create DocumentNames:
- the one that takes some input of the form wiki:space:page
- the one that takes a URL... /xwiki/bin/view/Main/Space/Page
- possibly other ones

Then in term of serialization again there are different ways of  
serializing and it doesn't have to be the same as the factory.

What's very important is that we NEVER use the String reference inside  
XWiki. It's only at the boundaries that the factories/serializer  
should be used and inside we must use only DocumentName (we need to  
refactor the bridge to take DocumentName instead of String docName  
everywhere BTW.

Thanks
-Vincent

> On Fri, Apr 3, 2009 at 22:48, vmassol <[email protected] 
> > wrote:
>> Author: vmassol
>> Date: 2009-04-03 22:48:34 +0200 (Fri, 03 Apr 2009)
>> New Revision: 18236
>>
>> Added:
>>   platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/java/ 
>> org/xwiki/bridge/DocumentNameFactory.java
>>   platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/java/ 
>> org/xwiki/bridge/DocumentNameSerializer.java
>>   platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameFactory.java
>>   platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameSerializer.java
>>   platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameFactoryTest.java
>>   platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameSerializerTest.java
>> Modified:
>>   platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/ 
>> resources/META-INF/plexus/components.xml
>> Log:
>> XWIKI-3501: Add Document Name factory and serializer
>>
>> Merged from trunk (rev 18235)
>>
>>
>> Added: platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/ 
>> java/org/xwiki/bridge/DocumentNameFactory.java
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/ 
>> java/org/xwiki/bridge/ 
>> DocumentNameFactory.java                          (rev 0)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/ 
>> java/org/xwiki/bridge/DocumentNameFactory.java  2009-04-03 20:48:34  
>> UTC (rev 18236)
>> @@ -0,0 +1,41 @@
>> +/*
>> + * See the NOTICE file distributed with this work for additional
>> + * information regarding copyright ownership.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  
>> MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.xwiki.bridge;
>> +
>> +/**
>> + * Generate a Document Name from a raw string reference.
>> + *
>> + * @version $Id: $
>> + * @since 1.8.1
>> + */
>> +public interface DocumentNameFactory
>> +{
>> +    /**
>> +     * Role for looking up implementing components.
>> +     */
>> +    String ROLE = DocumentNameFactory.class.getName();
>> +
>> +    /**
>> +     * @param reference the document's name as a string using a  
>> textual format (eg {...@code wiki:space.page}).
>> +     *        The supported format is up to implementers of this  
>> method.
>> +     * @return the object representing a document reference
>> +     */
>> +    DocumentName createDocumentName(String reference);
>> +}
>>
>> Added: platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/ 
>> java/org/xwiki/bridge/DocumentNameSerializer.java
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/ 
>> java/org/xwiki/bridge/ 
>> DocumentNameSerializer.java                               (rev 0)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-bridge/src/main/ 
>> java/org/xwiki/bridge/DocumentNameSerializer.java       2009-04-03  
>> 20:48:34 UTC (rev 18236)
>> @@ -0,0 +1,41 @@
>> +/*
>> + * See the NOTICE file distributed with this work for additional
>> + * information regarding copyright ownership.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  
>> MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.xwiki.bridge;
>> +
>> +/**
>> + * Generate a fully qualified document reference string (ie of the  
>> form
>> + * {...@code wiki:space.page}) out of a {...@link DocumentName}.
>> + *
>> + * @version $Id: $
>> + * @since 1.8.1
>> + */
>> +public interface DocumentNameSerializer
>> +{
>> +    /**
>> +     * Role for looking up implementing components.
>> +     */
>> +    String ROLE = DocumentNameSerializer.class.getName();
>> +
>> +    /**
>> +     * @param documentName the document name to serialize
>> +     * @return the fully qualified document reference string (ie  
>> of the form {...@code wiki:space.page})
>> +     */
>> +    String serialize(DocumentName documentName);
>> +}
>>
>> Added: platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/ 
>> java/com/xpn/xwiki/doc/DefaultDocumentNameFactory.java
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/java/ 
>> com/xpn/xwiki/doc/ 
>> DefaultDocumentNameFactory.java                            (rev 0)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameFactory.java    2009-04-03  
>> 20:48:34 UTC (rev 18236)
>> @@ -0,0 +1,163 @@
>> +/*
>> + * See the NOTICE file distributed with this work for additional
>> + * information regarding copyright ownership.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  
>> MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package com.xpn.xwiki.doc;
>> +
>> +import org.apache.commons.lang.StringUtils;
>> +import org.xwiki.bridge.DocumentName;
>> +import org.xwiki.bridge.DocumentNameFactory;
>> +import org.xwiki.context.Execution;
>> +
>> +import com.xpn.xwiki.XWikiContext;
>> +
>> +/**
>> + * Generate a Document Name from a raw string reference.
>> + *
>> + * @version $Id: $
>> + * @since 1.8.1
>> + */
>> +public class DefaultDocumentNameFactory implements  
>> DocumentNameFactory
>> +{
>> +    /**
>> +     * Default space to use when the user has not specified any  
>> space and there's no current space set in the context.
>> +     */
>> +    private static final String DEFAULT_SPACE = "XWiki";
>> +
>> +    /**
>> +     * Default page name when the user has not specified the page  
>> name.
>> +     */
>> +    private static final String DEFAULT_PAGE = "WebHome";
>> +
>> +    /**
>> +     * Default wiki to use when the user has not specified any  
>> wiki and there's no current wiki set in the context.
>> +     */
>> +    private static final String DEFAULT_WIKI = "xwiki";
>> +
>> +    private static final String WIKI_SEPARATOR = ":";
>> +
>> +    private static final String SPACE_SEPARATOR = ".";
>> +
>> +    /**
>> +     * Execution context handler, needed for accessing the  
>> XWikiContext.
>> +     */
>> +    private Execution execution;
>> +
>> +    public DocumentName createDocumentName(String reference)
>> +    {
>> +        String wiki;
>> +        String space;
>> +        String page;
>> +
>> +        if (StringUtils.isBlank(reference)) {
>> +            wiki = getDefaultWikiName();
>> +            space = getDefaultSpaceName();
>> +            page = DEFAULT_PAGE;
>> +        } else {
>> +
>> +            // Step 1: Extract the wiki name
>> +
>> +            // We allow the wiki separator in wiki names and thus  
>> we look for the last wiki sep in the reference.
>> +            // TODO: Note that this was done to have the same  
>> behavior of XWikiDocument.setFullName() but it would
>> +            //       seem better to me to allow the wiki sep in  
>> space names rather than in wiki names (since wiki
>> +            //       names are constrained by database schema  
>> names).
>> +            int spaceSeparatorPosition;
>> +            int wikiSeparatorPosition =  
>> reference.lastIndexOf(WIKI_SEPARATOR);
>> +            if (wikiSeparatorPosition != -1) {
>> +                wiki = reference.substring(0,  
>> wikiSeparatorPosition);
>> +                if (wiki.length() == 0) {
>> +                    wiki = getDefaultWikiName();
>> +                }
>> +
>> +                spaceSeparatorPosition =  
>> reference.indexOf(SPACE_SEPARATOR, wikiSeparatorPosition);
>> +            } else {
>> +                // No wiki separator, use default wiki.
>> +                wiki = getDefaultWikiName();
>> +
>> +                // We allow space sep in space names and thus we  
>> look for the last space sep in the reference.
>> +                // TODO: Note that this was done to have the same  
>> behavior of XWikiDocument.setFullName() but it would
>> +                //       seem better to me to allow space sep in  
>> pages names rather than in space names (since users
>> +                //       want more liberty in page names and  
>> usually create pages in existing spaces).
>> +                spaceSeparatorPosition =  
>> reference.lastIndexOf(SPACE_SEPARATOR);
>> +            }
>> +
>> +            // Step 2: Extract the space and page names
>> +
>> +            if (spaceSeparatorPosition != -1) {
>> +                space = reference.substring(wikiSeparatorPosition  
>> + WIKI_SEPARATOR.length(),
>> +                    spaceSeparatorPosition);
>> +                if (space.length() == 0) {
>> +                    space = getDefaultSpaceName();
>> +                }
>> +
>> +                // Make sure the space separator is not the last  
>> char of the reference
>> +                if (spaceSeparatorPosition +  
>> SPACE_SEPARATOR.length() < reference.length()) {
>> +                    page =  
>> reference.substring(spaceSeparatorPosition +  
>> SPACE_SEPARATOR.length());
>> +                } else {
>> +                    page = DEFAULT_PAGE;
>> +                }
>> +            } else {
>> +                // No space separator the whole substring is thus  
>> the page.
>> +                space = getDefaultSpaceName();
>> +
>> +                // Make sure the wiki separator is not the last  
>> char of the reference
>> +                if (wikiSeparatorPosition == -1
>> +                    || wikiSeparatorPosition +  
>> WIKI_SEPARATOR.length() < reference.length())
>> +                {
>> +                    page =  
>> reference.substring(wikiSeparatorPosition + WIKI_SEPARATOR.length());
>> +                } else {
>> +                    page = DEFAULT_PAGE;
>> +                }
>> +            }
>> +        }
>> +
>> +        return new DocumentName(wiki, space, page);
>> +    }
>> +
>> +    private String getDefaultWikiName()
>> +    {
>> +        String wiki = getContext().getDatabase();
>> +        if (wiki == null) {
>> +            wiki = DEFAULT_WIKI;
>> +        }
>> +        return wiki;
>> +    }
>> +
>> +    private String getDefaultSpaceName()
>> +    {
>> +        String space;
>> +        XWikiDocument currentDocument = getContext().getDoc();
>> +        if (currentDocument == null) {
>> +            space = DEFAULT_SPACE;
>> +        } else {
>> +            space = currentDocument.getSpace();
>> +            if (space == null) {
>> +                space = DEFAULT_SPACE;
>> +            }
>> +        }
>> +        return space;
>> +    }
>> +
>> +    /**
>> +     * @return the XWiki Context used to bridge with the old API
>> +     */
>> +    private XWikiContext getContext()
>> +    {
>> +        return (XWikiContext)  
>> this.execution.getContext().getProperty("xwikicontext");
>> +    }
>> +}
>>
>> Added: platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/ 
>> java/com/xpn/xwiki/doc/DefaultDocumentNameSerializer.java
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/java/ 
>> com/xpn/xwiki/doc/ 
>> DefaultDocumentNameSerializer.java                         (rev 0)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameSerializer.java 2009-04-03  
>> 20:48:34 UTC (rev 18236)
>> @@ -0,0 +1,51 @@
>> +/*
>> + * See the NOTICE file distributed with this work for additional
>> + * information regarding copyright ownership.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  
>> MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package com.xpn.xwiki.doc;
>> +
>> +import org.xwiki.bridge.DocumentName;
>> +import org.xwiki.bridge.DocumentNameSerializer;
>> +
>> +/**
>> + * Generate a fully qualified document reference string (ie of the  
>> form
>> + * {...@code <wiki>:<space>.<page>} out of a {...@link DocumentName}.
>> + *
>> + * @version $Id: $
>> + * @since 1.8.1
>> + */
>> +public class DefaultDocumentNameSerializer implements  
>> DocumentNameSerializer
>> +{
>> +    /**
>> +     * {...@inheritdoc}
>> +     * @see DocumentNameSerializer#serialize(DocumentName)
>> +     */
>> +    public String serialize(DocumentName documentName)
>> +    {
>> +        // A valid DocumentName must not have any null value and  
>> thus we don't need to check for nulls here.
>> +        // It's the responsibility of creators of DocumentName  
>> factories to ensure it's valid.
>> +        StringBuffer result = new StringBuffer();
>> +        result.append(documentName.getWiki());
>> +        result.append(':');
>> +        result.append(documentName.getSpace());
>> +        result.append('.');
>> +        result.append(documentName.getPage());
>> +
>> +        return result.toString();
>> +    }
>> +}
>>
>> Modified: platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/ 
>> resources/META-INF/plexus/components.xml
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/ 
>> resources/META-INF/plexus/components.xml  2009-04-03 20:46:01 UTC  
>> (rev 18235)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-core/src/main/ 
>> resources/META-INF/plexus/components.xml  2009-04-03 20:48:34 UTC  
>> (rev 18236)
>> @@ -51,7 +51,6 @@
>>       <role-hint>default</role-hint>
>>        
>> <implementation>com.xpn.xwiki.doc.DefaultDocumentAccessBridge</ 
>> implementation>
>>       <instantiation-strategy>singleton</instantiation-strategy>
>> -      <lifecycle-handler>xwiki</lifecycle-handler>
>>       <requirements>
>>         <requirement>
>>           <role>org.xwiki.context.Execution</role>
>> @@ -59,11 +58,27 @@
>>       </requirements>
>>     </component>
>>     <component>
>> +      <role>org.xwiki.bridge.DocumentNameFactory</role>
>> +      <role-hint>default</role-hint>
>> +       
>> <implementation>com.xpn.xwiki.doc.DefaultDocumentNameFactory</ 
>> implementation>
>> +      <instantiation-strategy>singleton</instantiation-strategy>
>> +      <requirements>
>> +        <requirement>
>> +          <role>org.xwiki.context.Execution</role>
>> +        </requirement>
>> +      </requirements>
>> +    </component>
>> +    <component>
>> +      <role>org.xwiki.bridge.DocumentNameSerializer</role>
>> +      <role-hint>default</role-hint>
>> +       
>> <implementation>com.xpn.xwiki.doc.DefaultDocumentNameSerializer</ 
>> implementation>
>> +      <instantiation-strategy>singleton</instantiation-strategy>
>> +    </component>
>> +    <component>
>>       <role>org.xwiki.bridge.SkinAccessBridge</role>
>>       <role-hint>default</role-hint>
>>       <implementation>com.xpn.xwiki.DefaultSkinAccessBridge</ 
>> implementation>
>>       <instantiation-strategy>singleton</instantiation-strategy>
>> -      <lifecycle-handler>xwiki</lifecycle-handler>
>>       <requirements>
>>         <requirement>
>>           <role>org.xwiki.context.Execution</role>
>>
>> Added: platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/ 
>> java/com/xpn/xwiki/doc/DefaultDocumentNameFactoryTest.java
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/java/ 
>> com/xpn/xwiki/doc/ 
>> DefaultDocumentNameFactoryTest.java                                 
>> (rev 0)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameFactoryTest.java         
>> 2009-04-03 20:48:34 UTC (rev 18236)
>> @@ -0,0 +1,119 @@
>> +/*
>> + * See the NOTICE file distributed with this work for additional
>> + * information regarding copyright ownership.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  
>> MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package com.xpn.xwiki.doc;
>> +
>> +import org.xwiki.bridge.DocumentName;
>> +import org.xwiki.bridge.DocumentNameFactory;
>> +
>> +import com.xpn.xwiki.test.AbstractBridgedXWikiComponentTestCase;
>> +
>> +/**
>> + * Unit tests for {...@link DocumentNameFactory}.
>> + *
>> + * @version $Id: $
>> + * @since 1.8.1
>> + */
>> +public class DefaultDocumentNameFactoryTest extends  
>> AbstractBridgedXWikiComponentTestCase
>> +{
>> +    private DocumentNameFactory factory;
>> +
>> +    protected void setUp() throws Exception
>> +    {
>> +        super.setUp();
>> +        this.factory = (DocumentNameFactory)  
>> getComponentManager().lookup(DocumentNameFactory.ROLE);
>> +    }
>> +
>> +    public void testCreateDocumentNameWhenCurrentDocSet() throws  
>> Exception
>> +    {
>> +        getContext().setDatabase("testwiki");
>> +        XWikiDocument document = new XWikiDocument();
>> +        document.setSpace("testspace");
>> +        getContext().setDoc(document);
>> +        verify("testwiki", "testspace");
>> +    }
>> +
>> +    public void testCreateDocumentNameWhenNoCurrentDoc() throws  
>> Exception
>> +    {
>> +        verify("xwiki", "XWiki");
>> +    }
>> +
>> +    private void verify(String expectedDefaultWiki, String  
>> expectedDefaultSpace)
>> +    {
>> +        DocumentName name =  
>> factory.createDocumentName("wiki:space.page");
>> +        assertEquals("wiki", name.getWiki());
>> +        assertEquals("space", name.getSpace());
>> +        assertEquals("page", name.getPage());
>> +
>> +        name = factory.createDocumentName("wiki1:wiki2:page");
>> +        assertEquals("wiki1:wiki2", name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("page", name.getPage());
>> +
>> +        name = factory.createDocumentName("wiki:");
>> +        assertEquals("wiki", name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +
>> +        name = factory.createDocumentName("wiki1.wiki2:page");
>> +        assertEquals("wiki1.wiki2", name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("page", name.getPage());
>> +
>> +        name = factory.createDocumentName("wiki:page");
>> +        assertEquals("wiki", name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("page", name.getPage());
>> +
>> +        name = factory.createDocumentName("wiki:space.");
>> +        assertEquals("wiki", name.getWiki());
>> +        assertEquals("space", name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +
>> +        name = factory.createDocumentName("space.");
>> +        assertEquals(expectedDefaultWiki, name.getWiki());
>> +        assertEquals("space", name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +
>> +        name = factory.createDocumentName("page");
>> +        assertEquals(expectedDefaultWiki, name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("page", name.getPage());
>> +
>> +        name = factory.createDocumentName(".");
>> +        assertEquals(expectedDefaultWiki, name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +
>> +        name = factory.createDocumentName(":");
>> +        assertEquals(expectedDefaultWiki, name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +
>> +        name = factory.createDocumentName(null);
>> +        assertEquals(expectedDefaultWiki, name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +
>> +        name = factory.createDocumentName("");
>> +        assertEquals(expectedDefaultWiki, name.getWiki());
>> +        assertEquals(expectedDefaultSpace, name.getSpace());
>> +        assertEquals("WebHome", name.getPage());
>> +    }
>> +}
>>
>> Added: platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/ 
>> java/com/xpn/xwiki/doc/DefaultDocumentNameSerializerTest.java
>> ===================================================================
>> --- platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/java/ 
>> com/xpn/xwiki/doc/ 
>> DefaultDocumentNameSerializerTest.java                              
>> (rev 0)
>> +++ platform/core/branches/xwiki-core-1.8/xwiki-core/src/test/java/ 
>> com/xpn/xwiki/doc/DefaultDocumentNameSerializerTest.java      
>> 2009-04-03 20:48:34 UTC (rev 18236)
>> @@ -0,0 +1,41 @@
>> +/*
>> + * See the NOTICE file distributed with this work for additional
>> + * information regarding copyright ownership.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,  
>> MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package com.xpn.xwiki.doc;
>> +
>> +import org.xwiki.bridge.DocumentName;
>> +import org.xwiki.bridge.DocumentNameSerializer;
>> +import org.xwiki.test.AbstractXWikiComponentTestCase;
>> +
>> +/**
>> + * Unit tests for {...@link DocumentNameSerializer}.
>> + *
>> + * @version $Id: $
>> + * @since 1.8.1
>> + */
>> +public class DefaultDocumentNameSerializerTest extends  
>> AbstractXWikiComponentTestCase
>> +{
>> +    public void testSerialize() throws Exception
>> +    {
>> +        DocumentNameSerializer serializer =
>> +            (DocumentNameSerializer)  
>> getComponentManager().lookup(DocumentNameSerializer.ROLE);
>> +        DocumentName name = new DocumentName("wiki", "space",  
>> "page");
>> +        assertEquals("wiki:space.page", serializer.serialize(name));
>> +    }
>> +}
>>
>> _______________________________________________
>> notifications mailing list
>> [email protected]
>> http://lists.xwiki.org/mailman/listinfo/notifications
>>
>
>
>
> -- 
> Thomas Mortagne
> _______________________________________________
> notifications mailing list
> [email protected]
> http://lists.xwiki.org/mailman/listinfo/notifications

_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to