From d914f739ab0a8155d3acc72aae5b2ddb8ba86817 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Mon, 27 Apr 2015 10:44:51 +0300 Subject: [PATCH] Prepend context path to service URL (#17573) Change-Id: Ie163e97bccace95beec73f3aa9b275b0d77301a0 --- .../internal/VaadinServletConfiguration.java | 2 +- .../spring/server/SpringVaadinServlet.java | 37 +++++++++++-------- .../server/SpringVaadinServletService.java | 6 ++- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/vaadin-spring-boot/src/main/java/com/vaadin/spring/boot/internal/VaadinServletConfiguration.java b/vaadin-spring-boot/src/main/java/com/vaadin/spring/boot/internal/VaadinServletConfiguration.java index 89f6708b2..81f5718b0 100644 --- a/vaadin-spring-boot/src/main/java/com/vaadin/spring/boot/internal/VaadinServletConfiguration.java +++ b/vaadin-spring-boot/src/main/java/com/vaadin/spring/boot/internal/VaadinServletConfiguration.java @@ -201,7 +201,7 @@ protected ServletRegistrationBean createServletRegistrationBean() { // applications to co-exist in the same global "namespace" if (servlet instanceof SpringVaadinServlet && isMappedToRoot()) { SpringVaadinServlet vaadinServlet = (SpringVaadinServlet) servlet; - vaadinServlet.setServiceUrl(DEFAULT_SERVLET_URL_BASE); + vaadinServlet.setServiceUrlPath(DEFAULT_SERVLET_URL_BASE); vaadinServlet.setClearServletPath(true); } diff --git a/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServlet.java b/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServlet.java index 4508e41ec..317cdd343 100644 --- a/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServlet.java +++ b/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServlet.java @@ -60,7 +60,7 @@ public class SpringVaadinServlet extends VaadinServlet { private static final long serialVersionUID = 5371983676318947478L; - private String serviceUrl = null; + private String serviceUrlPath = null; private boolean clearServletPath = false; @@ -100,26 +100,31 @@ public void sessionInit(SessionInitEvent sessionInitEvent) } /** - * Return the service URL (URL for all client-server communication) to use - * if customized, null for the default service URL. + * Return the path of the service URL (URL for all client-server + * communication) relative to the context path. A value of null means that + * the default service path of Vaadin should be used. The path should start + * with a slash. * - * @return service URL or null to use the default + * @return service URL path relative to context path (starting with slash) + * or null to use the default */ - public String getServiceUrl() { - return serviceUrl; + public String getServiceUrlPath() { + return serviceUrlPath; } /** - * Set the service URL (URL for all client-server communication) to use, - * null to use the default service URL. The service URL must be set before - * servlet service instances are created, i.e. before the servlet is placed - * into service by the servlet container. + * Set the path of the service URL (URL for all client-server communication) + * to use, relative to the context path. The value null means that the + * default service URL of Vaadin should be used. The service URL path must + * be set before servlet service instances are created, i.e. before the + * servlet is placed into service by the servlet container. * - * @param serviceUrl - * to use or null for default + * @param serviceUrlPath + * service URL path relative to the context path (starting with a + * slash) or null for default */ - public void setServiceUrl(String serviceUrl) { - this.serviceUrl = serviceUrl; + public void setServiceUrlPath(String serviceUrlPath) { + this.serviceUrlPath = serviceUrlPath; } /** @@ -154,10 +159,10 @@ public void setClearServletPath(boolean clearServletPath) { @Override protected VaadinServletService createServletService( DeploymentConfiguration deploymentConfiguration) - throws ServiceException { + throws ServiceException { // this is needed when using a custom service URL SpringVaadinServletService service = new SpringVaadinServletService( - this, deploymentConfiguration, getServiceUrl()); + this, deploymentConfiguration, getServiceUrlPath()); service.init(); return service; } diff --git a/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServletService.java b/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServletService.java index 613c9cc37..725017c0d 100644 --- a/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServletService.java +++ b/vaadin-spring/src/main/java/com/vaadin/spring/server/SpringVaadinServletService.java @@ -39,7 +39,8 @@ public class SpringVaadinServletService extends VaadinServletService { * @param servlet * @param deploymentConfiguration * @param serviceUrl - * custom service URL to use or null for default + * custom service URL to use (relative to context path, starting + * with a slash) or null for default * @throws ServiceException */ public SpringVaadinServletService(VaadinServlet servlet, @@ -61,7 +62,8 @@ protected List createRequestHandlers() handlers.set(i, new ServletBootstrapHandler() { @Override protected String getServiceUrl(BootstrapContext context) { - return serviceUrl; + return context.getRequest().getContextPath() + + serviceUrl; } }); }