[gatein-commits] gatein SVN: r4950 - in portal/branches/navcontroller: component/web/controller/src/main/java/org/exoplatform/web/controller and 5 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Nov 4 22:54:24 EDT 2010


Author: julien_viet
Date: 2010-11-04 22:54:23 -0400 (Thu, 04 Nov 2010)
New Revision: 4950

Added:
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestQualifiedName.java
Modified:
   portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
   portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestDescriptorBuilder.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestHierarchy.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestLegacyPortal.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java
   portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java
   portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/default-router.xml
   portal/branches/navcontroller/webui/framework/src/main/java/org/exoplatform/webui/url/ComponentLocator.java
   portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
   portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/navigation/NavigationLocator.java
Log:
fine tune QualifiedName class


Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -57,7 +57,7 @@
 {
 
    /** . */
-   public static final QualifiedName HANDLER_PARAM = new QualifiedName("gtn", "handler");
+   public static final QualifiedName HANDLER_PARAM = QualifiedName.create("gtn", "handler");
 
    /** . */
    protected static Logger log = LoggerFactory.getLogger(WebAppController.class);

Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -19,77 +19,133 @@
 
 package org.exoplatform.web.controller;
 
+import org.jboss.util.NullArgumentException;
+
 /**
- * A qualified name that is a qualifier and a name. It can be seen as a simplified version of an XML QName
- * that retains only the prefix (qualifier) and the local name (name) and leaves out the namespace.
+ * <p>A qualified name that is a qualifier and a name. It can be seen as a simplified version of an XML QName
+ * that retains only the prefix (qualifier) and the local name (name) and leaves out the namespace.</p>
  *
+ * <p>Qualified names have a string representation that is equals to the concatenation of the qualifier
+ * and name separated by a colon (:) character. When the </p>
+ *
  * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
  * @version $Revision$
  */
 public class QualifiedName
 {
 
-   public static QualifiedName parse(String qname)
+   /**
+    * Parse the string representation of a qname and returns a qualified name.
+    *
+    * @param qname the qname to parse
+    * @return the corresponding qualified name
+    * @throws NullArgumentException if the qname argument is null
+    * @throws IllegalArgumentException if the qname argument contains more than one colon character
+    */
+   public static QualifiedName parse(String qname) throws NullArgumentException, IllegalArgumentException
    {
+      if (qname == null)
+      {
+         throw new NullPointerException("No null argument accepted");
+      }
       if (qname.length() > 0)
       {
          int index = qname.indexOf(':');
          if (index > -1)
          {
-            return new QualifiedName(qname.substring(0, index), qname.substring(index + 1));
+            return create(qname.substring(0, index), qname.substring(index + 1));
          }
       }
-      return new QualifiedName(qname);
+      return create(qname);
    }
 
-   /** . */
-   private final String qualifier;
-
-   /** . */
-   private final String name;
-
    /**
-    * Creates a qualified name with an empty string qualifier.
+    * Creates a qualified name.
     *
+    * @param qualifier the qualifier
     * @param name the name
+    * @return the qualified name
+    * @throws NullPointerException if any argument is null
+    * @throws IllegalArgumentException if any argument contains a colon character
     */
-   public QualifiedName(String name)
+   public static QualifiedName create(String qualifier, String name) throws NullPointerException, IllegalArgumentException
    {
-      this("", name);
+      return new QualifiedName(qualifier, name);
    }
 
    /**
-    * Creates a qualified name.
+    * Creates a qualified name with an empty string qualifier.
     *
-    * @param qualifier the qualifier
     * @param name the name
+    * @return the qualified name
+    * @throws NullPointerException if any argument is null
+    * @throws IllegalArgumentException if any argument contains a colon character
     */
-   public QualifiedName(String qualifier, String name)
+   public static QualifiedName create(String name) throws NullPointerException, IllegalArgumentException
    {
+      return new QualifiedName(name);
+   }
+
+   /** The qualifier. */
+   private final String qualifier;
+
+   /** The name. */
+   private final String name;
+
+   private QualifiedName(String name) throws NullPointerException, IllegalArgumentException
+   {
+      this("", name);
+   }
+
+   private QualifiedName(String qualifier, String name) throws NullPointerException, IllegalArgumentException
+   {
       if (qualifier == null)
       {
          throw new NullPointerException("No null prefix accepted");
       }
+      if (qualifier.indexOf(':') != -1)
+      {
+         throw new IllegalArgumentException("The name '" + qualifier + "' must not contain a colon character");
+      }
       if (name == null)
       {
          throw new NullPointerException("No null prefix accepted");
       }
+      if (name.indexOf(':') != -1)
+      {
+         throw new IllegalArgumentException("The name '" + name + "' must not contain a colon character");
+      }
 
       //
       this.qualifier = qualifier;
       this.name = name;
    }
 
+   /**
+    * Returns the qualifier.
+    *
+    * @return the qualifier
+    */
    public String getQualifier()
    {
       return qualifier;
    }
 
+   /**
+    * Returns the name.
+    *
+    * @return the name
+    */
    public String getName()
    {
       return name;
    }
 
+   /**
+    * Returns the string representation.
+    *
+    * @return the string representation
+    */
    public String getValue()
    {
       if (qualifier.isEmpty())

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -24,8 +24,6 @@
 import org.exoplatform.web.controller.metadata.RouteDescriptor;
 import org.exoplatform.web.controller.metadata.RouterDescriptor;
 
-import java.util.Collections;
-
 /**
  * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
  * @version $Revision$
@@ -75,7 +73,7 @@
          PatternRoute patternRoute = router.root.getPattern(0);
          assertEquals("^([^/]+)", patternRoute.pattern.toString());
          assertEquals(1, patternRoute.params.size());
-         assertEquals(new QualifiedName("a"), patternRoute.params.get(0).name);
+         assertEquals(QualifiedName.create("a"), patternRoute.params.get(0).name);
          assertEquals("^[^/]+$", patternRoute.params.get(0).pattern.toString());
          assertEquals(EncodingMode.DEFAULT_FORM, patternRoute.params.get(0).encodingMode);
          assertEquals(2, patternRoute.chunks.size());
@@ -99,7 +97,7 @@
          PatternRoute patternRoute = router.root.getPattern(0);
          assertEquals("^([^/]+)", patternRoute.pattern.toString());
          assertEquals(1, patternRoute.params.size());
-         assertEquals(new QualifiedName("q", "a"), patternRoute.params.get(0).name);
+         assertEquals(QualifiedName.create("q", "a"), patternRoute.params.get(0).name);
          assertEquals("^[^/]+$", patternRoute.params.get(0).pattern.toString());
          assertEquals(EncodingMode.DEFAULT_FORM, patternRoute.params.get(0).encodingMode);
          assertEquals(2, patternRoute.chunks.size());
@@ -123,7 +121,7 @@
          PatternRoute patternRoute = router.root.getPattern(0);
          assertEquals("^(.*)", patternRoute.pattern.toString());
          assertEquals(1, patternRoute.params.size());
-         assertEquals(new QualifiedName("a"), patternRoute.params.get(0).name);
+         assertEquals(QualifiedName.create("a"), patternRoute.params.get(0).name);
          assertEquals("^.*$", patternRoute.params.get(0).pattern.toString());
          assertEquals(EncodingMode.DEFAULT_FORM, patternRoute.params.get(0).encodingMode);
          assertEquals(2, patternRoute.chunks.size());

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestDescriptorBuilder.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestDescriptorBuilder.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestDescriptorBuilder.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -86,11 +86,11 @@
       assertTrue(i.hasNext());
       RouteDescriptor route5 = i.next();
       assertEquals("/a", route5.getPath());
-      assertEquals(Collections.singletonMap(new QualifiedName("a"), "a_value"), route5.getParams());
+      assertEquals(Collections.singletonMap(QualifiedName.create("a"), "a_value"), route5.getParams());
       assertEquals(1, route5.getChildren().size());
       RouteDescriptor route5_1 = route5.getChildren().get(0);
       assertEquals("/b", route5_1.getPath());
-      assertEquals(Collections.singletonMap(new QualifiedName("b"), "b_value"), route5_1.getParams());
+      assertEquals(Collections.singletonMap(QualifiedName.create("b"), "b_value"), route5_1.getParams());
 
       //
       assertTrue(i.hasNext());

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestHierarchy.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestHierarchy.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestHierarchy.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -45,12 +45,12 @@
       Router router = new Router(new RouterDescriptor().addRoute(descriptor));
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("foo"), "bar"), router.route("/a"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("foo"), "bar"), router.route("/a"));
 
       //
       Map<QualifiedName, String> expected = new HashMap<QualifiedName, String>();
-      expected.put(new QualifiedName("foo"), "bar");
-      expected.put(new QualifiedName("juu"), "daa");
+      expected.put(QualifiedName.create("foo"), "bar");
+      expected.put(QualifiedName.create("juu"), "daa");
       assertEquals(expected, router.route("/a/b"));
    }
 }

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestLegacyPortal.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestLegacyPortal.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestLegacyPortal.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -63,11 +63,11 @@
    public void testPrivateClassicComponent() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "handler"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "access"), "private");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "");
-      expectedParameters.put(new QualifiedName("gtn", "componentid"), "foo");
+      expectedParameters.put(QualifiedName.create("gtn", "handler"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "access"), "private");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "");
+      expectedParameters.put(QualifiedName.create("gtn", "componentid"), "foo");
 
       //
       assertEquals(expectedParameters, router.route("/private/classic", Collections.singletonMap("portal:componentId", new String[]{"foo"})));
@@ -77,10 +77,10 @@
    public void testPrivateClassic() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "handler"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "access"), "private");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "");
+      expectedParameters.put(QualifiedName.create("gtn", "handler"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "access"), "private");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "");
 
       //
       assertEquals(expectedParameters, router.route("/private/classic"));
@@ -90,10 +90,10 @@
    public void testPrivateClassicSlash() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "handler"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "access"), "private");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/");
+      expectedParameters.put(QualifiedName.create("gtn", "handler"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "access"), "private");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/");
 
       //
       assertEquals(expectedParameters, router.route("/private/classic/"));
@@ -103,11 +103,11 @@
    public void testPrivateClassicSlashComponent() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "handler"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "access"), "private");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/");
-      expectedParameters.put(new QualifiedName("gtn", "componentid"), "foo");
+      expectedParameters.put(QualifiedName.create("gtn", "handler"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "access"), "private");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/");
+      expectedParameters.put(QualifiedName.create("gtn", "componentid"), "foo");
 
       //
       assertEquals(expectedParameters, router.route("/private/classic/", Collections.singletonMap("portal:componentId", new String[]{"foo"})));
@@ -117,10 +117,10 @@
    public void testPrivateClassicHome() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "handler"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "access"), "private");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/home");
+      expectedParameters.put(QualifiedName.create("gtn", "handler"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "access"), "private");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/home");
 
       //
       assertEquals(expectedParameters, router.route("/private/classic/home"));
@@ -130,11 +130,11 @@
    public void testPrivateClassicHomeComponent() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "handler"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "access"), "private");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/home");
-      expectedParameters.put(new QualifiedName("gtn", "componentid"), "foo");
+      expectedParameters.put(QualifiedName.create("gtn", "handler"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "access"), "private");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/home");
+      expectedParameters.put(QualifiedName.create("gtn", "componentid"), "foo");
 
       //
       assertEquals(expectedParameters, router.route("/private/classic/home", Collections.singletonMap("portal:componentId", new String[]{"foo"})));

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -90,7 +90,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.route("/a"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "a"), router.route("/a"));
    }
 
    public void testParameterPropagationToDescendants() throws Exception
@@ -101,7 +101,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.route("/a"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "a"), router.route("/a"));
    }
 
    public void testWildcardPattern() throws Exception
@@ -111,10 +111,10 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), ""), router.route("/"));
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.route("/a"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), ""), router.route("/"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "a"), router.route("/a"));
       assertNull(router.route("a"));
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "a/b"), router.route("/a/b"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "a/b"), router.route("/a/b"));
    }
 
    public void testDefaultForm() throws Exception
@@ -124,7 +124,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "/"), router.route("/~"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "/"), router.route("/~"));
    }
 
    public void testSimplePattern() throws Exception
@@ -134,7 +134,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.route("/a"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "a"), router.route("/a"));
       assertNull(router.route("a"));
       assertNull(router.route("/ab"));
       assertNull(router.route("ab"));
@@ -151,7 +151,7 @@
       assertNull(router.route("a"));
       assertEquals(Collections.<QualifiedName, String>emptyMap(), router.route("/a"));
       assertEquals(Collections.<QualifiedName, String>emptyMap(), router.route("/a/"));
-      assertEquals(Collections.singletonMap(new QualifiedName("p"), "a"), router.route("/a/b"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("p"), "a"), router.route("/a/b"));
    }
 
    public void testTwoRules1() throws Exception
@@ -162,7 +162,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(Collections.singletonMap(new QualifiedName("b"), "b"), router.route("/a"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("b"), "b"), router.route("/a"));
       assertEquals(Collections.<QualifiedName, String>emptyMap(), router.route("/a/b"));
    }
 
@@ -175,9 +175,9 @@
 
       //
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("a"), "a");
-      expectedParameters.put(new QualifiedName("b"), "b");
+      expectedParameters.put(QualifiedName.create("a"), "a");
+      expectedParameters.put(QualifiedName.create("b"), "b");
       assertEquals(expectedParameters, router.route("/a"));
-      assertEquals(Collections.singletonMap(new QualifiedName("a"), "a"), router.route("/a/b"));
+      assertEquals(Collections.singletonMap(QualifiedName.create("a"), "a"), router.route("/a/b"));
    }
 }

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -44,27 +44,27 @@
 
       //
       RouteDescriptor portalRouteMD = new RouteDescriptor("/private/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
-      portalRouteMD.addParam(new QualifiedName("gtn", "controller"), "site");
-      portalRouteMD.addRequestParam(new QualifiedName("gtn", "componentid"), "portal:componentId", null, false);
-      portalRouteMD.addPathParam(new QualifiedName("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+      portalRouteMD.addParam(QualifiedName.create("gtn", "controller"), "site");
+      portalRouteMD.addRequestParam(QualifiedName.create("gtn", "componentid"), "portal:componentId", null, false);
+      portalRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
       routerMD.addRoute(portalRouteMD);
 
       //
       RouteDescriptor portalRouteMD2 = new RouteDescriptor("/private/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
-      portalRouteMD2.addParam(new QualifiedName("gtn", "controller"), "site");
-      portalRouteMD2.addPathParam(new QualifiedName("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+      portalRouteMD2.addParam(QualifiedName.create("gtn", "controller"), "site");
+      portalRouteMD2.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
       routerMD.addRoute(portalRouteMD2);
 
       //
       RouteDescriptor groupRouteMD = new RouteDescriptor("/groups/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
-      groupRouteMD.addParam(new QualifiedName("gtn", "controller"), "site");
-      groupRouteMD.addPathParam(new QualifiedName("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+      groupRouteMD.addParam(QualifiedName.create("gtn", "controller"), "site");
+      groupRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
       routerMD.addRoute(groupRouteMD);
 
       //
       RouteDescriptor userRouteMD = new RouteDescriptor("/users/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
-      userRouteMD.addParam(new QualifiedName("gtn", "controller"), "site");
-      userRouteMD.addPathParam(new QualifiedName("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+      userRouteMD.addParam(QualifiedName.create("gtn", "controller"), "site");
+      userRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
       routerMD.addRoute(userRouteMD);
 
       //
@@ -74,11 +74,11 @@
    public void testComponent() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "controller"), "site");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "sitetype"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/");
-      expectedParameters.put(new QualifiedName("gtn", "componentid"), "foo");
+      expectedParameters.put(QualifiedName.create("gtn", "controller"), "site");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "sitetype"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/");
+      expectedParameters.put(QualifiedName.create("gtn", "componentid"), "foo");
 
       //
       assertEquals(expectedParameters, router.route("/private/portal/classic/", Collections.singletonMap("portal:componentId", new String[]{"foo"})));
@@ -88,10 +88,10 @@
    public void testPrivateClassic() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "controller"), "site");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "sitetype"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "");
+      expectedParameters.put(QualifiedName.create("gtn", "controller"), "site");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "sitetype"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "");
 
       //
       assertEquals(expectedParameters, router.route("/private/portal/classic"));
@@ -101,10 +101,10 @@
    public void testPrivateClassicSlash() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "controller"), "site");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "sitetype"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/");
+      expectedParameters.put(QualifiedName.create("gtn", "controller"), "site");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "sitetype"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/");
 
       //
       assertEquals(expectedParameters, router.route("/private/portal/classic/"));
@@ -114,10 +114,10 @@
    public void testPrivateClassicHome() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "controller"), "site");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "classic");
-      expectedParameters.put(new QualifiedName("gtn", "sitetype"), "portal");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/home");
+      expectedParameters.put(QualifiedName.create("gtn", "controller"), "site");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "classic");
+      expectedParameters.put(QualifiedName.create("gtn", "sitetype"), "portal");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/home");
 
       //
       assertEquals(expectedParameters, router.route("/private/portal/classic/home"));
@@ -127,20 +127,20 @@
    public void testSiteType() throws Exception
    {
       Map<QualifiedName, String> expectedParameters = new HashMap<QualifiedName, String>();
-      expectedParameters.put(new QualifiedName("gtn", "controller"), "site");
-      expectedParameters.put(new QualifiedName("gtn", "sitetype"), "group");
-      expectedParameters.put(new QualifiedName("gtn", "sitename"), "platform_administrator");
-      expectedParameters.put(new QualifiedName("gtn", "path"), "/administration/registry");
+      expectedParameters.put(QualifiedName.create("gtn", "controller"), "site");
+      expectedParameters.put(QualifiedName.create("gtn", "sitetype"), "group");
+      expectedParameters.put(QualifiedName.create("gtn", "sitename"), "platform_administrator");
+      expectedParameters.put(QualifiedName.create("gtn", "path"), "/administration/registry");
 
       //
       assertEquals(expectedParameters, router.route("/private/group/platform_administrator/administration/registry"));
       assertEquals("/private/group/platform_administrator/administration/registry", router.render(expectedParameters));
       
       Map<QualifiedName, String> expectedParameters1 = new HashMap<QualifiedName, String>();
-      expectedParameters1.put(new QualifiedName("gtn", "controller"), "site");
-      expectedParameters1.put(new QualifiedName("gtn", "sitetype"), "user");
-      expectedParameters1.put(new QualifiedName("gtn", "sitename"), "root");
-      expectedParameters1.put(new QualifiedName("gtn", "path"), "/tab_0");
+      expectedParameters1.put(QualifiedName.create("gtn", "controller"), "site");
+      expectedParameters1.put(QualifiedName.create("gtn", "sitetype"), "user");
+      expectedParameters1.put(QualifiedName.create("gtn", "sitename"), "root");
+      expectedParameters1.put(QualifiedName.create("gtn", "path"), "/tab_0");
       
       //
       assertEquals(expectedParameters1, router.route("/private/user/root/tab_0"));

Added: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestQualifiedName.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestQualifiedName.java	                        (rev 0)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestQualifiedName.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2010 eXo Platform SAS.
+ *
+ * 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.exoplatform.web.controller.router;
+
+import junit.framework.TestCase;
+import org.exoplatform.web.controller.QualifiedName;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class TestQualifiedName extends TestCase
+{
+
+   public void testQualifiedName()
+   {
+      QualifiedName qd1 = QualifiedName.create("a", "bc");
+      assertEquals("a", qd1.getQualifier());
+      assertEquals("bc", qd1.getName());
+      assertEquals("a:bc", qd1.getValue());
+
+      //
+      QualifiedName qd2 = QualifiedName.parse("a:bc");
+      assertEquals("a", qd2.getQualifier());
+      assertEquals("bc", qd2.getName());
+      assertEquals("a:bc", qd2.getValue());
+
+      //
+      assertTrue(qd1.equals(qd2));
+      assertTrue(qd2.equals(qd1));
+      assertTrue(qd1.equals(qd1));
+      assertTrue(qd2.equals(qd2));
+
+      //
+      assertEquals(qd1.hashCode(), qd2.hashCode());
+   }
+
+   public void testEmptyQualifier()
+   {
+      QualifiedName qd1 = QualifiedName.create("abc");
+      assertEquals("", qd1.getQualifier());
+      assertEquals("abc", qd1.getName());
+      assertEquals("abc", qd1.getValue());
+
+      //
+      QualifiedName qd2 = QualifiedName.parse("abc");
+      assertEquals("", qd2.getQualifier());
+      assertEquals("abc", qd2.getName());
+      assertEquals("abc", qd2.getValue());
+
+      //
+      assertTrue(qd1.equals(qd2));
+      assertTrue(qd2.equals(qd1));
+      assertTrue(qd1.equals(qd1));
+      assertTrue(qd2.equals(qd2));
+
+      //
+      assertEquals(qd1.hashCode(), qd2.hashCode());
+   }
+
+   public void testNPEInCtor()
+   {
+      try
+      {
+         QualifiedName.create(null);
+         fail();
+      }
+      catch (NullPointerException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.create("a", null);
+         fail();
+      }
+      catch (NullPointerException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.create(null, "a");
+         fail();
+      }
+      catch (NullPointerException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.create(null, null);
+         fail();
+      }
+      catch (NullPointerException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.parse(null);
+         fail();
+      }
+      catch (NullPointerException ignore)
+      {
+      }
+   }
+
+   public void testIAEInCtor()
+   {
+      try
+      {
+         QualifiedName.create("a:b");
+         fail();
+      }
+      catch (IllegalArgumentException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.create(":", "a");
+         fail();
+      }
+      catch (IllegalArgumentException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.create("a", ":");
+         fail();
+      }
+      catch (IllegalArgumentException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.create(":", ":");
+         fail();
+      }
+      catch (IllegalArgumentException ignore)
+      {
+      }
+      try
+      {
+         QualifiedName.parse("::");
+         fail();
+      }
+      catch (IllegalArgumentException ignore)
+      {
+      }
+   }
+}

Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -69,7 +69,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals("/a", router.render(Collections.singletonMap(new QualifiedName("p"), "a")));
+      assertEquals("/a", router.render(Collections.singletonMap(QualifiedName.create("p"), "a")));
       assertNull(router.render(Collections.<QualifiedName, String>emptyMap()));
    }
 
@@ -80,8 +80,8 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals("/a", router.render(Collections.singletonMap(new QualifiedName("p"), "a")));
-      assertNull(router.render(Collections.singletonMap(new QualifiedName("p"), "ab")));
+      assertEquals("/a", router.render(Collections.singletonMap(QualifiedName.create("p"), "a")));
+      assertNull(router.render(Collections.singletonMap(QualifiedName.create("p"), "ab")));
    }
 
    public void testWildcardPathParam() throws Exception
@@ -91,9 +91,9 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals("/", router.render(Collections.singletonMap(new QualifiedName("p"), "")));
-      assertEquals("/a", router.render(Collections.singletonMap(new QualifiedName("p"), "a")));
-      assertEquals("/a/b", router.render(Collections.singletonMap(new QualifiedName("p"), "a/b")));
+      assertEquals("/", router.render(Collections.singletonMap(QualifiedName.create("p"), "")));
+      assertEquals("/a", router.render(Collections.singletonMap(QualifiedName.create("p"), "a")));
+      assertEquals("/a/b", router.render(Collections.singletonMap(QualifiedName.create("p"), "a/b")));
    }
 
    public void testFoo() throws Exception
@@ -103,7 +103,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals(null, router.render(Collections.singletonMap(new QualifiedName("p"), "/")));
+      assertEquals(null, router.render(Collections.singletonMap(QualifiedName.create("p"), "/")));
    }
 
    public void testBar() throws Exception
@@ -113,7 +113,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals("/~", router.render(Collections.singletonMap(new QualifiedName("p"), "/")));
+      assertEquals("/~", router.render(Collections.singletonMap(QualifiedName.create("p"), "/")));
    }
 
    public void testWildcardParamPathPreservePathEncoding() throws Exception
@@ -123,7 +123,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals("//", router.render(Collections.singletonMap(new QualifiedName("p"), "/")));
+      assertEquals("//", router.render(Collections.singletonMap(QualifiedName.create("p"), "/")));
    }
 
    public void testWildcardParamPathDefaultFormEncoded() throws Exception
@@ -133,7 +133,7 @@
       Router router = new Router(routerMD);
 
       //
-      assertEquals("/~", router.render(Collections.singletonMap(new QualifiedName("p"), "/")));
+      assertEquals("/~", router.render(Collections.singletonMap(QualifiedName.create("p"), "/")));
    }
 
    public void testPrecedence() throws Exception
@@ -147,6 +147,6 @@
       assertEquals("/a", router.render(Collections.<QualifiedName, String>emptyMap()));
 
       //
-      assertEquals("/a/b", router.render(Collections.singletonMap(new QualifiedName("p"), "a")));
+      assertEquals("/a/b", router.render(Collections.singletonMap(QualifiedName.create("p"), "a")));
    }
 }

Modified: portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/default-router.xml
===================================================================
--- portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/default-router.xml	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/default-router.xml	2010-11-05 02:54:23 UTC (rev 4950)
@@ -37,10 +37,17 @@
     </route>
 
     <!-- The group access -->
-    <route path="/groups/{gtn:sitename}{gtn:path}">
+    <route path="/groups">
       <route-param name="gtn:access" value="private"/>
-      <route-param name="gtn:sitetype" value="group"/>
-      <path-param name="gtn:path" pattern=".*" encoding="preserve-path"/>
+      <route path="/">
+        <route-param name="gtn:sitetype" value="portal"/>
+        <route-param name="gtn:sitename" value="classic"/>
+        <route-param name="gtn:path" value="/groupnavigation"/>
+      </route>
+      <route path="/{gtn:sitename}{gtn:path}">
+        <route-param name="gtn:sitetype" value="group"/>
+        <path-param name="gtn:path" pattern=".*" encoding="preserve-path"/>
+      </route>
     </route>
 
     <!-- The user access -->

Modified: portal/branches/navcontroller/webui/framework/src/main/java/org/exoplatform/webui/url/ComponentLocator.java
===================================================================
--- portal/branches/navcontroller/webui/framework/src/main/java/org/exoplatform/webui/url/ComponentLocator.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/webui/framework/src/main/java/org/exoplatform/webui/url/ComponentLocator.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -41,16 +41,16 @@
    public static final ResourceType<UIComponent, ComponentLocator> TYPE = new ResourceType<UIComponent, ComponentLocator>() {};
 
    /** . */
-   public static final QualifiedName COMPONENT = new QualifiedName("gtn", "componentid");
+   public static final QualifiedName COMPONENT = QualifiedName.create("gtn", "componentid");
 
    /** . */
-   public static final QualifiedName ACTION = new QualifiedName("gtn", "action");
+   public static final QualifiedName ACTION = QualifiedName.create("gtn", "action");
 
    /** . */
-   public static final QualifiedName TARGET = new QualifiedName("gtn", "objectid");
+   public static final QualifiedName TARGET = QualifiedName.create("gtn", "objectid");
 
    /** . */
-   public static final QualifiedName PATH = new QualifiedName("gtn", "path");
+   public static final QualifiedName PATH = QualifiedName.create("gtn", "path");
 
    /** . */
    private static final Set<QualifiedName> NAMES = Collections.unmodifiableSet(Tools.toSet(COMPONENT, ACTION, TARGET, PATH));

Modified: portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java
===================================================================
--- portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -57,16 +57,16 @@
    public static final String PRIVATE_ACCESS = "private";
 
    /** . */
-   public static final QualifiedName REQUEST_PATH = new QualifiedName("gtn", "path");
+   public static final QualifiedName REQUEST_PATH = QualifiedName.create("gtn", "path");
 
    /** . */
-   public static final QualifiedName REQUEST_SITE_TYPE = new QualifiedName("gtn", "sitetype");
+   public static final QualifiedName REQUEST_SITE_TYPE = QualifiedName.create("gtn", "sitetype");
 
    /** . */
-   public static final QualifiedName REQUEST_SITE_NAME = new QualifiedName("gtn", "sitename");
+   public static final QualifiedName REQUEST_SITE_NAME = QualifiedName.create("gtn", "sitename");
 
    /** . */
-   public static final QualifiedName ACCESS = new QualifiedName("gtn", "access");
+   public static final QualifiedName ACCESS = QualifiedName.create("gtn", "access");
 
    public String getHandlerName()
    {

Modified: portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/navigation/NavigationLocator.java
===================================================================
--- portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/navigation/NavigationLocator.java	2010-11-05 02:22:01 UTC (rev 4949)
+++ portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/navigation/NavigationLocator.java	2010-11-05 02:54:23 UTC (rev 4950)
@@ -36,16 +36,16 @@
 {
 
    /** . */
-   public static final QualifiedName PATH = new QualifiedName("gtn", "path");
+   public static final QualifiedName PATH = QualifiedName.create("gtn", "path");
 
    /** . */
-   public static final QualifiedName REQUEST_SITE_TYPE = new QualifiedName("gtn", "sitetype");
+   public static final QualifiedName REQUEST_SITE_TYPE = QualifiedName.create("gtn", "sitetype");
    
    /** . */
-   public static final QualifiedName REQUEST_SITE_NAME = new QualifiedName("gtn", "sitename");
+   public static final QualifiedName REQUEST_SITE_NAME = QualifiedName.create("gtn", "sitename");
    
    /** . */
-   public static final QualifiedName ACCESS = new QualifiedName("gtn", "access");
+   public static final QualifiedName ACCESS = QualifiedName.create("gtn", "access");
 
    /** . */
    public static final ResourceType<NavigationResource, NavigationLocator> TYPE = new ResourceType<NavigationResource, NavigationLocator>(){};



More information about the gatein-commits mailing list