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;
+    }
 }