Author: julien_viet
Date: 2010-09-11 16:27:14 -0400 (Sat, 11 Sep 2010)
New Revision: 4153
Added:
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/RouteDescriptor.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterDescriptor.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/router.xml
portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/router.xml
Removed:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java
Modified:
portal/branches/navcontroller/component/web/controller/pom.xml
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/WebRequestHandler.java
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/router/Route.java
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.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/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/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java
portal/branches/navcontroller/packaging/module/src/main/javascript/portal.packaging.module.js
portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/web.xml
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.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/PortalURL.java
Log:
- integrated the router framework with the portal url framework
- restrited how the portal servlet is mapped by using the "/" default mapping
- now routes are declared in a router.xml configuration
Modified: portal/branches/navcontroller/component/web/controller/pom.xml
===================================================================
--- portal/branches/navcontroller/component/web/controller/pom.xml 2010-09-11 12:12:12 UTC
(rev 4152)
+++ portal/branches/navcontroller/component/web/controller/pom.xml 2010-09-11 20:27:14 UTC
(rev 4153)
@@ -40,5 +40,10 @@
<groupId>org.exoplatform.portal</groupId>
<artifactId>exo.portal.component.web.resources</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.codehaus.staxmate</groupId>
+ <artifactId>staxmate</artifactId>
+ <version>2.0.0</version>
+ </dependency>
</dependencies>
</project>
Added:
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
(rev 0)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/gatein_router_1_0.xsd 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+
+ Copyright (C) 2009 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.
+
+-->
+
+<xs:schema
+
targetNamespace="http://www.gatein.org/xml/ns/gatein_router_1_0"
+
xmlns="http://www.gatein.org/xml/ns/gatein_router_1_0"
+
xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0">
+
+ <xs:element name="router" type="routerType" />
+
+ <xs:complexType name="routerType">
+ <xs:sequence>
+ <xs:element name="route" type="routeType"
minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="routeType">
+ <xs:sequence>
+ <xs:element name="parameter" type="parameterType"
minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="route" type="routeType"
minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="path" type="xs:string"
use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="parameterType">
+ <xs:attribute name="name" type="xs:string"
use="required"/>
+ <xs:attribute name="value" type="xs:string"
use="required"/>
+ </xs:complexType>
+
+</xs:schema>
\ No newline at end of file
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebAppController.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -22,14 +22,16 @@
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.component.RequestLifeCycle;
+import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.web.application.Application;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.RouteMetaData;
-import org.exoplatform.web.controller.metadata.RouterMetaData;
+import org.exoplatform.web.controller.metadata.DescriptorBuilder;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
import org.exoplatform.web.controller.router.Router;
import org.gatein.common.logging.Logger;
import org.gatein.common.logging.LoggerFactory;
+import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -37,6 +39,8 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
/**
* Created by The eXo Platform SAS
@@ -75,12 +79,21 @@
*
* @throws Exception
*/
- public WebAppController() throws Exception
+ public WebAppController(ConfigurationManager configurationManager) throws Exception
{
- applications_ = new HashMap<String, Application>();
- attributes_ = new HashMap<String, Object>();
+ // Read configuration (a bit hardcoded for now)
+ URL routerURL =
configurationManager.getResource("war:/conf/router.xml");
+ XMLStreamReader routerReader =
XMLInputFactory.newInstance().createXMLStreamReader(routerURL.openStream());
+ RouterDescriptor routerDesc = new DescriptorBuilder().build(routerReader);
+
+ // Build router from configuration
+ Router router = new Router(routerDesc);
+
+ //
+ this.applications_ = new HashMap<String, Application>();
+ this.attributes_ = new HashMap<String, Object>();
this.handlers = new HashMap<String, WebRequestHandler>();
- this.router = new Router(new RouterMetaData());
+ this.router = router;
}
public Object getAttribute(String name, Object value)
@@ -117,22 +130,7 @@
public void register(WebRequestHandler handler) throws Exception
{
- for (String path : handler.getPath())
- {
- RouteMetaData routeMetaData = new RouteMetaData(path);
-
- //
- String handlerKey = handler.getClass().getSimpleName();
-
- //
- routeMetaData.addParameter(HANDLER_PARAM, handlerKey);
-
- //
- handlers.put(handlerKey, handler);
-
- //
- router.addRoute(routeMetaData);
- }
+ handlers.put(handler.getHandlerName(), handler);
}
/**
Modified:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java
===================================================================
---
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/WebRequestHandler.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -40,7 +40,7 @@
}
- abstract public String[] getPath();
+ public abstract String getHandlerName();
abstract public void execute(ControllerContext context) throws Exception;
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/QualifiedName.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -28,6 +28,22 @@
public class QualifiedName
{
+ public static QualifiedName parse(String qname)
+ {
+ if (qname.length() > 0)
+ {
+ if (qname.charAt(0) == '{')
+ {
+ int index = qname.indexOf('}', 1);
+ if (index != -1)
+ {
+ return new QualifiedName(qname.substring(1, index), qname.substring(index
+ 1));
+ }
+ }
+ }
+ return new QualifiedName(qname);
+ }
+
/** . */
private final String qualifier;
Added:
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
(rev 0)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/DescriptorBuilder.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,72 @@
+/*
+ * 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.metadata;
+
+import org.codehaus.staxmate.SMInputFactory;
+import org.codehaus.staxmate.in.SMHierarchicCursor;
+import org.codehaus.staxmate.in.SMInputCursor;
+import org.exoplatform.web.controller.QualifiedName;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamReader;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public class DescriptorBuilder
+{
+
+ /** . */
+ private static final QName routeQN = new
QName("http://www.gatein.org/xml/ns/gatein_router_1_0", "route");
+
+ /** . */
+ private static final QName parameterQN = new
QName("http://www.gatein.org/xml/ns/gatein_router_1_0", "parameter");
+
+ public RouterDescriptor build(XMLStreamReader reader) throws Exception
+ {
+ RouterDescriptor routerDesc = new RouterDescriptor();
+ SMHierarchicCursor routerC = SMInputFactory.rootElementCursor(reader);
+ routerC.getNext();
+
+ //
+ SMInputCursor routeC = routerC.childElementCursor(routeQN);
+ while (routeC.getNext() != null)
+ {
+ String path = routeC.getAttrValue("path");
+ RouteDescriptor routeDesc = new RouteDescriptor(path);
+
+ //
+ SMInputCursor parameterC = routeC.childElementCursor(parameterQN);
+ while (parameterC.getNext() != null)
+ {
+ String name = parameterC.getAttrValue("name");
+ String value = parameterC.getAttrValue("value");
+ routeDesc.addParameter(QualifiedName.parse(name), value);
+ }
+
+ //
+ routerDesc.addRoute(routeDesc);
+ }
+
+ //
+ return routerDesc;
+ }
+}
Copied:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java
(from rev 4147,
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java)
===================================================================
---
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java
(rev 0)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteDescriptor.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,66 @@
+/*
+ * 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.metadata;
+
+import org.exoplatform.web.controller.QualifiedName;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public class RouteDescriptor
+{
+
+ /** . */
+ private final String path;
+
+ /** . */
+ private final Map<QualifiedName, String> parameters;
+
+ public RouteDescriptor(String path)
+ {
+ this.path = path;
+ this.parameters = new HashMap<QualifiedName, String>();
+ }
+
+ public String getPath()
+ {
+ return path;
+ }
+
+ public RouteDescriptor addParameter(QualifiedName name, String value)
+ {
+ parameters.put(name, value);
+ return this;
+ }
+
+ public RouteDescriptor addParameter(String name, String value)
+ {
+ return addParameter(new QualifiedName(name), value);
+ }
+
+ public Map<QualifiedName, String> getParameters()
+ {
+ return parameters;
+ }
+}
Deleted:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java
===================================================================
---
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouteMetaData.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -1,66 +0,0 @@
-/*
- * 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.metadata;
-
-import org.exoplatform.web.controller.QualifiedName;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
- * @version $Revision$
- */
-public class RouteMetaData
-{
-
- /** . */
- private final String path;
-
- /** . */
- private final Map<QualifiedName, String> parameters;
-
- public RouteMetaData(String path)
- {
- this.path = path;
- this.parameters = new HashMap<QualifiedName, String>();
- }
-
- public String getPath()
- {
- return path;
- }
-
- public RouteMetaData addParameter(QualifiedName name, String value)
- {
- parameters.put(name, value);
- return this;
- }
-
- public RouteMetaData addParameter(String name, String value)
- {
- return addParameter(new QualifiedName(name), value);
- }
-
- public Map<QualifiedName, String> getParameters()
- {
- return parameters;
- }
-}
Copied:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterDescriptor.java
(from rev 4147,
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java)
===================================================================
---
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterDescriptor.java
(rev 0)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterDescriptor.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,55 @@
+/*
+ * 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.metadata;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public class RouterDescriptor
+{
+
+ /** . */
+ private final List<RouteDescriptor> routes;
+
+ public RouterDescriptor()
+ {
+ this.routes = new ArrayList<RouteDescriptor>();
+ }
+
+ public void addRoute(RouteDescriptor controller)
+ {
+ if (controller == null)
+ {
+ throw new NullPointerException();
+ }
+
+ //
+ routes.add(controller);
+ }
+
+ public Iterable<RouteDescriptor> getRoutes()
+ {
+ return routes;
+ }
+}
Deleted:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java
===================================================================
---
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/metadata/RouterMetaData.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -1,55 +0,0 @@
-/*
- * 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.metadata;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
- * @version $Revision$
- */
-public class RouterMetaData
-{
-
- /** . */
- private final Map<String, RouteMetaData> routes;
-
- public RouterMetaData()
- {
- this.routes = new HashMap<String, RouteMetaData>();
- }
-
- public void addRoute(RouteMetaData controller)
- {
- if (controller == null)
- {
- throw new NullPointerException();
- }
-
- //
- routes.put(controller.getPath(), controller);
- }
-
- public Iterable<RouteMetaData> getRoutes()
- {
- return routes.values();
- }
-}
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Route.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -386,8 +386,13 @@
}
else
{
- SimpleRoute route = new SimpleRoute(this, path.substring(0, pos));
- simpleRoutes.put(route.value, route);
+ String segment = path.substring(0, pos);
+ SimpleRoute route = simpleRoutes.get(segment);
+ if (route == null)
+ {
+ route = new SimpleRoute(this, segment);
+ simpleRoutes.put(route.value, route);
+ }
next = route;
}
}
Modified:
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java
===================================================================
---
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/main/java/org/exoplatform/web/controller/router/Router.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -20,8 +20,8 @@
package org.exoplatform.web.controller.router;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.RouteMetaData;
-import org.exoplatform.web.controller.metadata.RouterMetaData;
+import org.exoplatform.web.controller.metadata.RouteDescriptor;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
import java.io.IOException;
import java.util.HashMap;
@@ -37,18 +37,18 @@
/** . */
final Route root;
- public Router(RouterMetaData metaData)
+ public Router(RouterDescriptor metaData)
{
this.root = new Route();
//
- for (RouteMetaData routeMetaData : metaData.getRoutes())
+ for (RouteDescriptor routeMetaData : metaData.getRoutes())
{
addRoute(routeMetaData);
}
}
- public void addRoute(RouteMetaData routeMetaData)
+ public void addRoute(RouteDescriptor routeMetaData)
{
root.append(routeMetaData.getPath(), routeMetaData.getParameters());
}
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestBuildRoute.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -21,8 +21,8 @@
import junit.framework.TestCase;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.RouteMetaData;
-import org.exoplatform.web.controller.metadata.RouterMetaData;
+import org.exoplatform.web.controller.metadata.RouteDescriptor;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
import java.util.Collections;
import java.util.Map;
@@ -39,8 +39,8 @@
String[] paths = {"/",""};
for (String path : paths)
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData(path));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor(path));
Router router = new Router(routerMD);
Route expectedRoute = new Route();
assertEquals(expectedRoute, router.root);
@@ -52,8 +52,8 @@
String[] paths = {"/a","a"};
for (String path : paths)
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData(path));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor(path));
Router router = new Router(routerMD);
Route expectedRoute = new Route();
SimpleRoute a = new SimpleRoute(expectedRoute, "a");
@@ -67,8 +67,8 @@
String[] paths = {"/{a}","{a}"};
for (String path : paths)
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData(path));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor(path));
Router router = new Router(routerMD);
//
@@ -90,8 +90,8 @@
String[] paths = {"/{{q}a}","{{q}a}"};
for (String path : paths)
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData(path));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor(path));
Router router = new Router(routerMD);
//
@@ -113,8 +113,8 @@
String[] paths = {"/{a:.*}","{a:.*}"};
for (String path : paths)
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData(path));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor(path));
Router router = new Router(routerMD);
//
@@ -131,6 +131,19 @@
}
}
+ public void testSamePrefix()
+ {
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/public/foo"));
+ routerMD.addRoute(new RouteDescriptor("/public/bar"));
+
+ //
+ Router router = new Router(routerMD);
+ Route publicRoute = router.root.simpleRoutes.get("public");
+ assertNotNull(publicRoute.simpleRoutes.get("foo"));
+ assertNotNull(publicRoute.simpleRoutes.get("bar"));
+ }
+
private void assertEquals(Route expectedRoute, Route route)
{
assertEquals(expectedRoute.getClass(), route.getClass());
Added:
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
(rev 0)
+++
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestDescriptorBuilder.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,74 @@
+/*
+ * 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.WebAppController;
+import org.exoplatform.web.controller.metadata.DescriptorBuilder;
+import org.exoplatform.web.controller.metadata.RouteDescriptor;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+import java.net.URL;
+import java.util.Collections;
+import java.util.Iterator;
+
+/**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public class TestDescriptorBuilder extends TestCase
+{
+
+ public void testFoo() throws Exception
+ {
+
+ URL routerURL = TestDescriptorBuilder.class.getResource("router.xml");
+ XMLStreamReader routerReader =
XMLInputFactory.newInstance().createXMLStreamReader(routerURL.openStream());
+ RouterDescriptor routerDesc = new DescriptorBuilder().build(routerReader);
+
+ Iterator<RouteDescriptor> i = routerDesc.getRoutes().iterator();
+
+ //
+ assertTrue(i.hasNext());
+ RouteDescriptor route1 = i.next();
+ assertEquals("/public/{{gtn}sitename}{{gtn}path:.*}", route1.getPath());
+ assertEquals(Collections.singletonMap(WebAppController.HANDLER_PARAM,
"portal"), route1.getParameters());
+
+ //
+ assertTrue(i.hasNext());
+ RouteDescriptor route2 = i.next();
+ assertEquals("/private/{{gtn}sitename}{{gtn}path:.*}",
route2.getPath());
+ assertEquals(Collections.singletonMap(WebAppController.HANDLER_PARAM,
"portal"), route2.getParameters());
+
+ //
+ assertTrue(i.hasNext());
+ RouteDescriptor route3 = i.next();
+ assertEquals("/upload", route3.getPath());
+ assertEquals(Collections.singletonMap(WebAppController.HANDLER_PARAM,
"upload"), route3.getParameters());
+
+ //
+ assertTrue(i.hasNext());
+ RouteDescriptor route4 = i.next();
+ assertEquals("/download", route4.getPath());
+ assertEquals(Collections.singletonMap(WebAppController.HANDLER_PARAM,
"download"), route4.getParameters());
+ }
+}
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestMatch.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -20,8 +20,8 @@
package org.exoplatform.web.controller.router;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.RouteMetaData;
-import org.exoplatform.web.controller.metadata.RouterMetaData;
+import org.exoplatform.web.controller.metadata.RouteDescriptor;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
import java.util.Collections;
@@ -34,8 +34,8 @@
public void testRoot() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/"));
Router router = new Router(routerMD);
//
@@ -53,8 +53,8 @@
public void testA() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/a"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/a"));
Router router = new Router(routerMD);
//
@@ -87,8 +87,8 @@
public void testAB() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/a/b"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/a/b"));
Router router = new Router( routerMD);
//
@@ -121,25 +121,25 @@
public void testParameter() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/{p}"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/{p}"));
Router router = new Router(routerMD);
assertEquals(Collections.singletonMap(new QualifiedName("p"),
"a"), router.process(("/a")));
}
public void testParameterPropagationToDescendants() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/").addParameter("p",
"a"));
- routerMD.addRoute(new RouteMetaData("/a"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/").addParameter("p",
"a"));
+ routerMD.addRoute(new RouteDescriptor("/a"));
Router router = new Router(routerMD);
assertEquals(Collections.singletonMap(new QualifiedName("p"),
"a"), router.process(("/a")));
}
public void testWildcardPattern() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/{p:.*}"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/{p:.*}"));
Router router = new Router(routerMD);
//
@@ -157,8 +157,8 @@
public void testSimplePattern() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/{p:a}"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/{p:a}"));
Router router = new Router(routerMD);
//
@@ -176,9 +176,9 @@
public void testPrecedence() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/a"));
- routerMD.addRoute(new RouteMetaData("/{p:a}/b"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/a"));
+ routerMD.addRoute(new RouteDescriptor("/{p:a}/b"));
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestPortalConfiguration.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -20,8 +20,8 @@
package org.exoplatform.web.controller.router;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.RouteMetaData;
-import org.exoplatform.web.controller.metadata.RouterMetaData;
+import org.exoplatform.web.controller.metadata.RouteDescriptor;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
import java.util.HashMap;
import java.util.Map;
@@ -39,22 +39,22 @@
@Override
protected void setUp() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
+ RouterDescriptor routerMD = new RouterDescriptor();
//
- RouteMetaData portalRouteMD = new
RouteMetaData("/private/{{gtn}sitename}{{gtn}path:.*}");
+ RouteDescriptor portalRouteMD = new
RouteDescriptor("/private/{{gtn}sitename}{{gtn}path:.*}");
portalRouteMD.addParameter(new QualifiedName("gtn",
"controller"), "site");
portalRouteMD.addParameter(new QualifiedName("gtn",
"sitetype"), "portal");
routerMD.addRoute(portalRouteMD);
//
- RouteMetaData groupRouteMD = new
RouteMetaData("/groups/{{gtn}sitename}{{gtn}path:.*}");
+ RouteDescriptor groupRouteMD = new
RouteDescriptor("/groups/{{gtn}sitename}{{gtn}path:.*}");
portalRouteMD.addParameter(new QualifiedName("gtn",
"controller"), "site");
groupRouteMD.addParameter(new QualifiedName("gtn", "sitetype"),
"group");
routerMD.addRoute(groupRouteMD);
//
- RouteMetaData userRouteMD = new
RouteMetaData("/users/{{gtn}sitename}{{gtn}path:.*}");
+ RouteDescriptor userRouteMD = new
RouteDescriptor("/users/{{gtn}sitename}{{gtn}path:.*}");
portalRouteMD.addParameter(new QualifiedName("gtn",
"controller"), "site");
userRouteMD.addParameter(new QualifiedName("gtn", "sitetype"),
"user");
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/TestRender.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -20,8 +20,8 @@
package org.exoplatform.web.controller.router;
import org.exoplatform.web.controller.QualifiedName;
-import org.exoplatform.web.controller.metadata.RouteMetaData;
-import org.exoplatform.web.controller.metadata.RouterMetaData;
+import org.exoplatform.web.controller.metadata.RouteDescriptor;
+import org.exoplatform.web.controller.metadata.RouterDescriptor;
import java.util.Collections;
@@ -34,8 +34,8 @@
public void testRoot() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/"));
Router router = new Router(routerMD);
//
@@ -44,8 +44,8 @@
public void testA() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/a"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/a"));
Router router = new Router(routerMD);
//
@@ -54,8 +54,8 @@
public void testAB() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/a/b"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/a/b"));
Router router = new Router( routerMD);
//
@@ -64,8 +64,8 @@
public void testParameter() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/{p}"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/{p}"));
Router router = new Router(routerMD);
//
@@ -75,8 +75,8 @@
public void testWildcardPattern() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/{p:.*}"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/{p:.*}"));
Router router = new Router(routerMD);
//
@@ -91,8 +91,8 @@
public void testSimplePattern() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/{p:a}"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/{p:a}"));
Router router = new Router(routerMD);
//
@@ -104,9 +104,9 @@
public void testPrecedence() throws Exception
{
- RouterMetaData routerMD = new RouterMetaData();
- routerMD.addRoute(new RouteMetaData("/a"));
- routerMD.addRoute(new RouteMetaData("/{p:a}/b"));
+ RouterDescriptor routerMD = new RouterDescriptor();
+ routerMD.addRoute(new RouteDescriptor("/a"));
+ routerMD.addRoute(new RouteDescriptor("/{p:a}/b"));
Router router = new Router(routerMD);
//
Added:
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
(rev 0)
+++
portal/branches/navcontroller/component/web/controller/src/test/java/org/exoplatform/web/controller/router/router.xml 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,22 @@
+<router
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_router_1_0
http://www.gatein.org/xml/ns/gatein_router_1_0"
+
xmlns="http://www.gatein.org/xml/ns/gatein_router_1_0">
+
+ <route path="/public/{{gtn}sitename}{{gtn}path:.*}">
+ <parameter name="{gtn}handler" value="portal"/>
+ </route>
+
+ <route path="/private/{{gtn}sitename}{{gtn}path:.*}">
+ <parameter name="{gtn}handler" value="portal"/>
+ </route>
+
+ <route path="/upload">
+ <parameter name="{gtn}handler" value="upload"/>
+ </route>
+
+ <route path="/download">
+ <parameter name="{gtn}handler" value="download"/>
+ </route>
+
+</router>
\ No newline at end of file
Modified:
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java
===================================================================
---
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/DownloadHandler.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -26,12 +26,10 @@
import org.exoplatform.web.ControllerContext;
import org.exoplatform.web.WebAppController;
import org.exoplatform.web.WebRequestHandler;
-import org.exoplatform.web.controller.QualifiedName;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
-import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -45,10 +43,9 @@
public class DownloadHandler extends WebRequestHandler
{
- @Override
- public String[] getPath()
+ public String getHandlerName()
{
- return new String[]{"/download"};
+ return "download";
}
@Override
Modified:
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java
===================================================================
---
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/component/web/server/src/main/java/org/exoplatform/web/handler/UploadHandler.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -27,11 +27,9 @@
import org.exoplatform.web.ControllerContext;
import org.exoplatform.web.WebAppController;
import org.exoplatform.web.WebRequestHandler;
-import org.exoplatform.web.controller.QualifiedName;
import java.io.Writer;
import java.net.URLEncoder;
-import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -49,10 +47,9 @@
PROGRESS, UPLOAD, DELETE, ABORT
}
- @Override
- public String[] getPath()
+ public String getHandlerName()
{
- return new String[]{"/upload"};
+ return "upload";
}
@Override
Modified:
portal/branches/navcontroller/packaging/module/src/main/javascript/portal.packaging.module.js
===================================================================
---
portal/branches/navcontroller/packaging/module/src/main/javascript/portal.packaging.module.js 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/packaging/module/src/main/javascript/portal.packaging.module.js 2010-09-11
20:27:14 UTC (rev 4153)
@@ -100,6 +100,8 @@
module.component.web = {}
module.component.web.controller =
new Project("org.exoplatform.portal",
"exo.portal.component.web.controller", "jar", module.version).
+ addDependency(new Project("org.codehaus.staxmate", "staxmate",
"jar", "2.0.0")).
+ addDependency(new Project("org.codehaus.woodstox", "stax2-api",
"jar", "3.0.2")).
addDependency(module.component.common);
module.component.web.security =
Added: portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/router.xml
===================================================================
--- portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/router.xml
(rev 0)
+++
portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/conf/router.xml 2010-09-11
20:27:14 UTC (rev 4153)
@@ -0,0 +1,29 @@
+<router
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_router_1_0
http://www.gatein.org/xml/ns/gatein_router_1_0"
+
xmlns="http://www.gatein.org/xml/ns/gatein_router_1_0">
+
+ <route path="/public/{{gtn}sitename}{{gtn}path:.*}">
+ <parameter name="{gtn}handler" value="portal"/>
+ </route>
+
+ <route path="/private/{{gtn}sitename}{{gtn}path:.*}">
+ <parameter name="{gtn}handler" value="portal"/>
+ </route>
+
+ <route path="/upload">
+ <parameter name="{gtn}handler" value="upload"/>
+ </route>
+
+ <route path="/download">
+ <parameter name="{gtn}handler" value="download"/>
+ </route>
+
+ <!-- Map the sitemap navigation on the /foo path -->
+ <route path="/foo">
+ <parameter name="{gtn}sitename" value="classic"/>
+ <parameter name="{gtn}path" value="/sitemap"/>
+ <parameter name="{gtn}handler" value="portal"/>
+ </route>
+
+</router>
\ No newline at end of file
Modified: portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/web.xml
===================================================================
--- portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/web.xml 2010-09-11
12:12:12 UTC (rev 4152)
+++ portal/branches/navcontroller/web/portal/src/main/webapp/WEB-INF/web.xml 2010-09-11
20:27:14 UTC (rev 4153)
@@ -97,7 +97,7 @@
<filter-mapping>
<filter-name>RememberMeFilter</filter-name>
- <url-pattern>/public/*</url-pattern>
+ <servlet-name>portal</servlet-name>
</filter-mapping>
<filter-mapping>
@@ -261,30 +261,7 @@
<servlet-name>javascript</servlet-name>
<url-pattern>/javascript/*</url-pattern>
</servlet-mapping>
- <servlet-mapping>
- <servlet-name>portal</servlet-name>
- <url-pattern>/private/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>portal</servlet-name>
- <url-pattern>/public/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>portal</servlet-name>
- <url-pattern>/admin/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>portal</servlet-name>
- <url-pattern>/service</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>portal</servlet-name>
- <url-pattern>/upload/*</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>portal</servlet-name>
- <url-pattern>/download/*</url-pattern>
- </servlet-mapping>
+
<servlet-mapping>
<servlet-name>RestServer</servlet-name>
<url-pattern>/rest/*</url-pattern>
@@ -296,6 +273,11 @@
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>portal</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
<servlet-name>GateInServlet</servlet-name>
<url-pattern>/gateinservlet</url-pattern>
</servlet-mapping>
Modified:
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java
===================================================================
---
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestContext.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -36,8 +36,10 @@
import org.exoplatform.services.log.Log;
import org.exoplatform.services.resources.Orientation;
import org.exoplatform.web.ControllerContext;
+import org.exoplatform.web.WebAppController;
import org.exoplatform.web.application.JavascriptManager;
import org.exoplatform.web.application.URLBuilder;
+import org.exoplatform.web.controller.QualifiedName;
import org.exoplatform.web.url.LocatorProvider;
import org.exoplatform.web.url.ResourceLocator;
import org.exoplatform.web.url.ResourceType;
@@ -225,8 +227,14 @@
portalOwner_ = requestSiteName;
nodePath_ = requestPath;
- portalURI = requestURI_.substring(0, requestURI_.lastIndexOf(nodePath_)) +
"/";
+// portalURI = requestURI_.substring(0, requestURI_.lastIndexOf(nodePath_)) +
"/";
+ Map<QualifiedName, String> tmp = new HashMap<QualifiedName, String>();
+ tmp.put(WebAppController.HANDLER_PARAM, "portal");
+ tmp.put(PortalRequestHandler.REQUEST_SITE_NAME, requestSiteName);
+ tmp.put(PortalRequestHandler.REQUEST_PATH, "");
+ portalURI = controllerContext.renderURL(tmp);
+ //
if (requestURI_.indexOf("/public/") >= 0)
{
accessPath = PUBLIC_ACCESS;
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-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/application/PortalRequestHandler.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -57,12 +57,9 @@
/** . */
public static final QualifiedName REQUEST_SITE_NAME = new
QualifiedName("gtn", "sitename");
- /** . */
- private String[] PATHS = {"/public/{{gtn}sitename}{{gtn}path:.*}",
"/private/{{gtn}sitename}{{gtn}path:.*}"};
-
- public String[] getPath()
+ public String getHandlerName()
{
- return PATHS;
+ return "portal";
}
/**
Modified:
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/PortalURL.java
===================================================================
---
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/PortalURL.java 2010-09-11
12:12:12 UTC (rev 4152)
+++
portal/branches/navcontroller/webui/portal/src/main/java/org/exoplatform/portal/url/PortalURL.java 2010-09-11
20:27:14 UTC (rev 4153)
@@ -89,7 +89,7 @@
Map<QualifiedName, String> parameters = new HashMap<QualifiedName,
String>();
parameters.put(PortalRequestHandler.REQUEST_PATH, builder.toString());
parameters.put(PortalRequestHandler.REQUEST_SITE_NAME, "classic");
- parameters.put(WebAppController.HANDLER_PARAM,
PortalRequestHandler.class.getSimpleName());
+ parameters.put(WebAppController.HANDLER_PARAM, "portal");
//
ControllerContext controllerContext = requestContext.getControllerContext();