Make Jetty context path handling less restrictive
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 3 Nov 2022 04:47:13 +0000 (05:47 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 3 Nov 2022 04:47:13 +0000 (05:47 +0100)
org.argeo.cms.lib.jetty/src/org/argeo/cms/jetty/JettyHttpServer.java
swt/rcp/org.argeo.cms.swt.rcp/src/org/argeo/cms/ui/rcp/servlet/CmsRcpServletFactory.java

index 11cce74cdc2e1b50a0b8294fa0b30a8d61a27c45..d393e4b2b28b402ffbe2af1c5dcb514c8b691c7a 100644 (file)
@@ -241,10 +241,10 @@ public class JettyHttpServer extends HttpsServer {
 
        @Override
        public synchronized HttpContext createContext(String path) {
+               if (!path.endsWith("/"))
+                       path = path + "/";
                if (contexts.containsKey(path))
                        throw new IllegalArgumentException("Context " + path + " already exists");
-               if (!path.endsWith("/"))
-                       throw new IllegalArgumentException("Path " + path + " should end with a /");
 
                JettyHttpContext httpContext = new ServletHttpContext(this, path);
                contexts.put(path, httpContext);
index 9c2f3095cb5dc987f6055e66ded44bce0eb28e52..778cd1b217728f67c0d858bb40b6ffb753eba150 100644 (file)
@@ -24,7 +24,7 @@ import com.sun.net.httpserver.HttpServer;
 /** Publishes one {@link CmsRcpServlet} per {@link CmsApp}. */
 public class CmsRcpServletFactory {
        private final static Logger logger = System.getLogger(CmsRcpServletFactory.class.getName());
-       private CompletableFuture<HttpServer> httpServer =new CompletableFuture<>();
+       private CompletableFuture<HttpServer> httpServer = new CompletableFuture<>();
 
        public void init() {
 
@@ -56,6 +56,9 @@ public class CmsRcpServletFactory {
                                                logger.log(Level.DEBUG, "Opened RCP UI  " + uiName + " of  CMS App /" + contextName);
                                        }
                                });
+                       }).exceptionally(e -> {
+                               logger.log(Level.ERROR, "Cannot register RCO app " + contextName, e);
+                               return null;
                        });
                        logger.log(Level.DEBUG, "Registered RCP CMS APP /" + contextName);
                }