[gatein-commits] gatein SVN: r4989 - in portal/branches/navcontroller/component/web/controller/src: main/java/org/exoplatform/web/controller/metadata and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Nov 9 11:28:49 EST 2010
Author: julien_viet
Date: 2010-11-09 11:28:48 -0500 (Tue, 09 Nov 2010)
New Revision: 4989
Modified:
portal/branches/navcontroller/component/web/controller/src/main/java/gatein_router_1_0.xsd
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/DescriptorBuilder.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/PathParamDescriptor.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternParam.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.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/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/component/web/controller/src/test/java/org/exoplatform/web/controller/router/router.xml
Log:
add required=true|false on a path param, need to impl it though
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/gatein_router_1_0.xsd
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/gatein_router_1_0.xsd 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/gatein_router_1_0.xsd 2010-11-09 16:28:48 UTC (rev 4989)
@@ -64,6 +64,7 @@
</xs:restriction>
</xs:simpleType>
</xs:attribute>
+ <xs:attribute name="required" type="xs:boolean" use="optional"/>
</xs:complexType>
<xs:complexType name="requestParamType">
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/DescriptorBuilder.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/DescriptorBuilder.java 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/DescriptorBuilder.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -110,8 +110,9 @@
String name = reader.getAttributeValue(null, "name");
String pattern = reader.getAttributeValue(null, "pattern");
String encoded = reader.getAttributeValue(null, "encoding");
+ String required = reader.getAttributeValue(null, "required");
EncodingMode encodingMode = "preserve-path".equals(encoded) ? EncodingMode.PRESERVE_PATH : EncodingMode.DEFAULT_FORM;
- routeDesc.addPathParam(QualifiedName.parse(name), pattern, encodingMode);
+ routeDesc.addPathParam(QualifiedName.parse(name), pattern, encodingMode, !"false".equals(required));
}
else if (routeQN.equals(reader.getName()))
{
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/PathParamDescriptor.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/PathParamDescriptor.java 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/PathParamDescriptor.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -38,21 +38,21 @@
/** . */
private final EncodingMode encodingMode;
- public PathParamDescriptor(QualifiedName name, String pattern, EncodingMode encodingMode)
+ /** . */
+ private final boolean required;
+
+ public PathParamDescriptor(QualifiedName name, String pattern, EncodingMode encodingMode, boolean required)
{
if (name == null)
{
throw new NullPointerException("No null name accepted");
}
- if (pattern == null)
- {
- throw new NullPointerException("No null pattern accepted");
- }
//
this.name = name;
this.pattern = pattern;
this.encodingMode = encodingMode;
+ this.required = required;
}
public QualifiedName getName()
@@ -69,4 +69,9 @@
{
return encodingMode;
}
+
+ public boolean isRequired()
+ {
+ return required;
+ }
}
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -92,9 +92,9 @@
return this;
}
- public RouteDescriptor addPathParam(QualifiedName name, String pattern, EncodingMode encodingMode)
+ public RouteDescriptor addPathParam(QualifiedName name, String pattern, EncodingMode encodingMode, boolean required)
{
- return addRequestParam(new PathParamDescriptor(name, pattern, encodingMode));
+ return addRequestParam(new PathParamDescriptor(name, pattern, encodingMode, required));
}
public RouteDescriptor addRequestParam(PathParamDescriptor requestParam)
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternParam.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternParam.java 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/PatternParam.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -39,10 +39,14 @@
/** . */
final Pattern pattern;
- PatternParam(QualifiedName name, EncodingMode encodingMode, Pattern pattern)
+ /** . */
+ final boolean required;
+
+ PatternParam(QualifiedName name, EncodingMode encodingMode, Pattern pattern, boolean required)
{
this.name = name;
this.encodingMode = encodingMode;
this.pattern = pattern;
+ this.required = required;
}
}
Modified: portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -609,17 +609,23 @@
PathParamDescriptor parameterDescriptor = pathParamDescriptors.get(parameterQName);
String regex = "[^/]+";
EncodingMode encodingMode = EncodingMode.DEFAULT_FORM;
+ boolean required = true;
if (parameterDescriptor != null)
{
regex = parameterDescriptor.getPattern();
encodingMode = parameterDescriptor.getEncodingMode();
+ required = parameterDescriptor.isRequired();
}
//
builder.expr("(");
builder.expr(regex);
builder.expr(")");
- parameterPatterns.add(new PatternParam(parameterQName, encodingMode, Pattern.compile("^" + regex + "$")));
+ parameterPatterns.add(new PatternParam(
+ parameterQName,
+ encodingMode,
+ Pattern.compile("^" + regex + "$"),
+ required));
previous = end.get(i) + 1;
}
builder.litteral(path, previous, pos);
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-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -112,7 +112,7 @@
for (String path : paths)
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor(path).addPathParam(QualifiedName.parse("a"), ".*", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor(path).addPathParam(QualifiedName.parse("a"), ".*", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
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-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestDescriptorBuilder.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -59,6 +59,7 @@
assertEquals(QualifiedName.parse("gtn:path"), route1.getPathParams().get(QualifiedName.parse("gtn:path")).getName());
assertEquals(".*", route1.getPathParams().get(QualifiedName.parse("gtn:path")).getPattern());
assertEquals(EncodingMode.DEFAULT_FORM, route1.getPathParams().get(QualifiedName.parse("gtn:path")).getEncodingMode());
+ assertEquals(true, route1.getPathParams().get(QualifiedName.parse("gtn:path")).isRequired());
//
assertTrue(i.hasNext());
@@ -69,6 +70,7 @@
assertEquals(QualifiedName.parse("gtn:path"), route2.getPathParams().get(QualifiedName.parse("gtn:path")).getName());
assertEquals(".*", route2.getPathParams().get(QualifiedName.parse("gtn:path")).getPattern());
assertEquals(EncodingMode.PRESERVE_PATH, route2.getPathParams().get(QualifiedName.parse("gtn:path")).getEncodingMode());
+ assertEquals(true, route2.getPathParams().get(QualifiedName.parse("gtn:path")).isRequired());
//
assertTrue(i.hasNext());
@@ -109,5 +111,18 @@
assertEquals("juu", route6.getRequestParams().get("juu").getMatchName());
assertEquals("juu", route6.getRequestParams().get("juu").getMatchValue());
assertEquals(true, route6.getRequestParams().get("juu").isRequired());
+
+ //
+ assertTrue(i.hasNext());
+ RouteDescriptor route7 = i.next();
+ assertEquals("/{gtn:lang}", route7.getPath());
+ assertEquals(Collections.singleton(QualifiedName.parse("gtn:lang")), route7.getPathParams().keySet());
+ assertEquals(QualifiedName.parse("gtn:lang"), route7.getPathParams().get(QualifiedName.parse("gtn:lang")).getName());
+ assertEquals(null, route7.getPathParams().get(QualifiedName.parse("gtn:lang")).getPattern());
+ assertEquals(EncodingMode.DEFAULT_FORM, route7.getPathParams().get(QualifiedName.parse("gtn:lang")).getEncodingMode());
+ assertEquals(false, route7.getPathParams().get(QualifiedName.parse("gtn:lang")).isRequired());
+
+ //
+ assertFalse(i.hasNext());
}
}
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-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestLegacyPortal.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -49,8 +49,8 @@
addRequestParam(QualifiedName.parse("gtn:action"), "portal:action", null, false).
addRequestParam(QualifiedName.parse("gtn:objectid"), "portal:objectId", null, false).
addRoute(new RouteDescriptor("/public/{gtn:sitename}{gtn:path}").
- addParam(QualifiedName.parse("gtn:access"), "public")).addPathParam(QualifiedName.parse("gtn:path"), ".*", EncodingMode.PRESERVE_PATH).
- addRoute(new RouteDescriptor("/private/{gtn:sitename}{gtn:path}").addPathParam(QualifiedName.parse("gtn:path"), ".*", EncodingMode.PRESERVE_PATH).
+ addParam(QualifiedName.parse("gtn:access"), "public")).addPathParam(QualifiedName.parse("gtn:path"), ".*", EncodingMode.PRESERVE_PATH, true).
+ addRoute(new RouteDescriptor("/private/{gtn:sitename}{gtn:path}").addPathParam(QualifiedName.parse("gtn:path"), ".*", EncodingMode.PRESERVE_PATH, true).
addParam(QualifiedName.parse("gtn:access"), "private"));
//
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-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -107,7 +107,7 @@
public void testWildcardPattern() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.PRESERVE_PATH));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.PRESERVE_PATH, true));
Router router = new Router(routerMD);
//
@@ -120,7 +120,7 @@
public void testDefaultForm() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]+", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]+", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
@@ -130,7 +130,7 @@
public void testPreservePath() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]+", EncodingMode.PRESERVE_PATH));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]+", EncodingMode.PRESERVE_PATH, true));
Router router = new Router(routerMD);
//
@@ -141,7 +141,7 @@
public void testSimplePattern() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
@@ -155,7 +155,7 @@
{
RouterDescriptor routerMD = new RouterDescriptor();
routerMD.addRoute(new RouteDescriptor("/a"));
- routerMD.addRoute(new RouteDescriptor("/{p}/b").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}/b").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
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-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -46,25 +46,25 @@
RouteDescriptor portalRouteMD = new RouteDescriptor("/private/{gtn:sitetype}/{gtn:sitename}{gtn: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);
+ portalRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH, true);
routerMD.addRoute(portalRouteMD);
//
RouteDescriptor portalRouteMD2 = new RouteDescriptor("/private/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
portalRouteMD2.addParam(QualifiedName.create("gtn", "controller"), "site");
- portalRouteMD2.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+ portalRouteMD2.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH, true);
routerMD.addRoute(portalRouteMD2);
//
RouteDescriptor groupRouteMD = new RouteDescriptor("/groups/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
groupRouteMD.addParam(QualifiedName.create("gtn", "controller"), "site");
- groupRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+ groupRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH, true);
routerMD.addRoute(groupRouteMD);
//
RouteDescriptor userRouteMD = new RouteDescriptor("/users/{gtn:sitetype}/{gtn:sitename}{gtn:path}");
userRouteMD.addParam(QualifiedName.create("gtn", "controller"), "site");
- userRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH);
+ userRouteMD.addPathParam(QualifiedName.create("gtn", "path"), ".*", EncodingMode.PRESERVE_PATH, true);
routerMD.addRoute(userRouteMD);
//
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-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java 2010-11-09 16:28:48 UTC (rev 4989)
@@ -76,7 +76,7 @@
public void testSimplePatternPathParam() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
@@ -87,7 +87,7 @@
public void testWildcardPathParam() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.PRESERVE_PATH));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.PRESERVE_PATH, true));
Router router = new Router(routerMD);
//
@@ -99,7 +99,7 @@
public void testFoo() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]*", EncodingMode.PRESERVE_PATH));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]*", EncodingMode.PRESERVE_PATH, true));
Router router = new Router(routerMD);
//
@@ -109,7 +109,7 @@
public void testBar() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]*", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), "[^/]*", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
@@ -119,7 +119,7 @@
public void testWildcardParamPathPreservePathEncoding() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.PRESERVE_PATH));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.PRESERVE_PATH, true));
Router router = new Router(routerMD);
//
@@ -129,7 +129,7 @@
public void testWildcardParamPathDefaultFormEncoded() throws Exception
{
RouterDescriptor routerMD = new RouterDescriptor();
- routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}").addPathParam(QualifiedName.parse("p"), ".*", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
@@ -140,7 +140,7 @@
{
RouterDescriptor routerMD = new RouterDescriptor();
routerMD.addRoute(new RouteDescriptor("/a"));
- routerMD.addRoute(new RouteDescriptor("/{p}/b").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM));
+ routerMD.addRoute(new RouteDescriptor("/{p}/b").addPathParam(QualifiedName.parse("p"), "a", EncodingMode.DEFAULT_FORM, true));
Router router = new Router(routerMD);
//
Modified: portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/router.xml
===================================================================
--- portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/router.xml 2010-11-09 13:45:48 UTC (rev 4988)
+++ portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/router.xml 2010-11-09 16:28:48 UTC (rev 4989)
@@ -34,4 +34,8 @@
<request-param name="juu" matchName="juu" matchValue="juu" required="true"/>
</route>
+ <route path="/{gtn:lang}">
+ <path-param name="gtn:lang" required="false"/>
+ </route>
+
</router>
\ No newline at end of file
More information about the gatein-commits
mailing list