killbill-aplcache

osgi: make all servlet routes start with / Register all OSGI

2/15/2013 7:02:25 PM

Details

diff --git a/osgi/src/main/java/com/ning/billing/osgi/http/DefaultServletRouter.java b/osgi/src/main/java/com/ning/billing/osgi/http/DefaultServletRouter.java
index 8196e1b..e822259 100644
--- a/osgi/src/main/java/com/ning/billing/osgi/http/DefaultServletRouter.java
+++ b/osgi/src/main/java/com/ning/billing/osgi/http/DefaultServletRouter.java
@@ -34,11 +34,18 @@ public class DefaultServletRouter implements OSGIServiceRegistration<Servlet> {
     private static final Logger logger = LoggerFactory.getLogger(DefaultServletRouter.class);
 
     // Internal Servlet routing table: map of plugin prefixes to servlet instances.
-    // A plugin prefix can be foo, foo/bar, foo/bar/baz, ... and is mounted on /plugins/<pluginPrefix>
+    // A plugin prefix can be /foo, /foo/bar, /foo/bar/baz, ... and is mounted on /plugins/<pluginPrefix>
     private final Map<String, Servlet> pluginServlets = new ConcurrentHashMap<String, Servlet>();
 
     @Override
-    public void registerService(final String pathPrefix, final Servlet httpServlet) {
+    public void registerService(final String originalPathPrefix, final Servlet httpServlet) {
+        // Enforce each route to start with /
+        final String pathPrefix;
+        if (originalPathPrefix.charAt(0) != '/') {
+            pathPrefix = "/" + originalPathPrefix;
+        } else {
+            pathPrefix = originalPathPrefix;
+        }
         logger.info("Registering OSGI servlet at " + pathPrefix);
         pluginServlets.put(pathPrefix, httpServlet);
     }