You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/09/22 19:33:35 UTC
svn commit: r1388851 - in
/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing:
Route.java RouterValve.java SimpleRouter.java
Author: rmannibucau
Date: Sat Sep 22 17:33:34 2012
New Revision: 1388851
URL: http://svn.apache.org/viewvc?rev=1388851&view=rev
Log:
better router logic
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/Route.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/RouterValve.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/SimpleRouter.java
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/Route.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/Route.java?rev=1388851&r1=1388850&r2=1388851&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/Route.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/Route.java Sat Sep 22 17:33:34 2012
@@ -41,7 +41,7 @@ public class Route {
return this;
}
- public String cleanDestination() {
+ public String cleanDestination(final String prefix) {
String destination = this.destination;
final Matcher matcher = this.matcher.get();
@@ -54,7 +54,10 @@ public class Route {
this.matcher.remove(); // single call to this method
- return destination;
+ if (prefix == null) {
+ return destination;
+ }
+ return destination.substring(prefix.length());
}
public String getOrigin() {
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/RouterValve.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/RouterValve.java?rev=1388851&r1=1388850&r2=1388851&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/RouterValve.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/RouterValve.java Sat Sep 22 17:33:34 2012
@@ -44,7 +44,11 @@ public class RouterValve extends ValveBa
return;
}
- response.sendRedirect(destination);
+ if (router.hasPrefix()) {
+ request.getRequestDispatcher(destination).forward(request, response);
+ } else {
+ response.sendRedirect(destination);
+ }
}
public void setConfigurationPath(URL configurationPath) {
Modified: openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/SimpleRouter.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/SimpleRouter.java?rev=1388851&r1=1388850&r2=1388851&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/SimpleRouter.java (original)
+++ openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/routing/SimpleRouter.java Sat Sep 22 17:33:34 2012
@@ -91,7 +91,7 @@ public class SimpleRouter {
final Route cachedRoute = cache.get(uri);
if (cachedRoute != null) {
cachedRoute.matches(uri);
- return cachedRoute.cleanDestination();
+ return cachedRoute.cleanDestination(prefix);
}
for (Route route : routes) {
@@ -99,7 +99,7 @@ public class SimpleRouter {
if (route.getOrigin().equals(uri)) {
cache.put(uri, route);
}
- return route.cleanDestination();
+ return route.cleanDestination(prefix);
}
}
@@ -207,4 +207,12 @@ public class SimpleRouter {
}
}
}
+
+ public boolean hasPrefix() {
+ return prefix != null && !prefix.isEmpty();
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
}