This is an automated email from the ASF dual-hosted git repository. ahuber pushed a commit to branch dev/2.0.0/ISIS-1767-jee-7 in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/dev/2.0.0/ISIS-1767-jee-7 by this push: new aec3f28 ISIS-1775 Honor web-app's context path when configuring swagger. aec3f28 is described below commit aec3f286ca96381ba0c7e8e40cc95896408a5dba Author: Andi Huber <ahu...@apache.org> AuthorDate: Sun Nov 12 19:13:37 2017 +0100 ISIS-1775 Honor web-app's context path when configuring swagger. --- .../services/swagger/SwaggerServiceDefault.java | 15 +++- .../isis/core/webapp/WebAppContextSupport.java | 31 +++++++ .../wicket/viewer/IsisWicketApplication.java | 95 +++++++++++----------- 3 files changed, 91 insertions(+), 50 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java index 968a93c..192b5f6 100644 --- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java +++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/swagger/SwaggerServiceDefault.java @@ -22,15 +22,15 @@ import java.util.Map; import javax.annotation.PostConstruct; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.apache.isis.applib.annotation.DomainService; import org.apache.isis.applib.annotation.NatureOfService; import org.apache.isis.applib.annotation.Programmatic; import org.apache.isis.applib.services.swagger.SwaggerService; import org.apache.isis.core.metamodel.services.swagger.internal.SwaggerSpecGenerator; import org.apache.isis.core.metamodel.specloader.SpecificationLoader; +import org.apache.isis.core.webapp.WebAppContextSupport; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @DomainService( nature = NatureOfService.DOMAIN, @@ -48,7 +48,14 @@ public class SwaggerServiceDefault implements SwaggerService { @PostConstruct public void init(final Map<String,String> properties) { - this.basePath = getPropertyElse(properties, KEY_RESTFUL_BASE_PATH, KEY_RESTFUL_BASE_PATH_DEFAULT); + + final String webappContextPath = + getPropertyElse(properties, WebAppContextSupport.WEB_APP_CONTEXT_PATH, "/"); + + final String basePath = + getPropertyElse(properties, KEY_RESTFUL_BASE_PATH, KEY_RESTFUL_BASE_PATH_DEFAULT); + + this.basePath = WebAppContextSupport.prependContextPathIfPresent(webappContextPath, basePath); } static String getPropertyElse(final Map<String, String> properties, final String key, final String dflt) { diff --git a/core/metamodel/src/main/java/org/apache/isis/core/webapp/WebAppContextSupport.java b/core/metamodel/src/main/java/org/apache/isis/core/webapp/WebAppContextSupport.java new file mode 100644 index 0000000..044fe67 --- /dev/null +++ b/core/metamodel/src/main/java/org/apache/isis/core/webapp/WebAppContextSupport.java @@ -0,0 +1,31 @@ +package org.apache.isis.core.webapp; + +import javax.servlet.ServletContext; + +import com.google.common.base.Strings; + +public class WebAppContextSupport { + + /** + * Property name given to the context path of the web application as returned by + * {@link ServletContext#getContextPath()}. + */ + public static final String WEB_APP_CONTEXT_PATH = "application.webapp.context-path"; + + + public static String prependContextPathIfPresent(String contextPath, String path) { + if(Strings.isNullOrEmpty(contextPath) || contextPath.equals("/")) + return path; + + if(!contextPath.startsWith("/")) + throw new IllegalArgumentException( + "contextPath must start with a slash '/' character, got '"+contextPath+"'"); + + if(!path.startsWith("/")) + throw new IllegalArgumentException( + "path must start with a slash '/' character, got '"+path+"'"); + + return contextPath + path; + } + +} diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java index 612b346..d15ac12 100644 --- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java +++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java @@ -30,52 +30,6 @@ import java.util.UUID; import java.util.concurrent.Callable; import java.util.concurrent.Future; -import com.google.common.base.Function; -import com.google.common.base.Joiner; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import com.google.common.io.Resources; -import com.google.inject.Guice; -import com.google.inject.Injector; -import com.google.inject.Module; - -import org.apache.wicket.Application; -import org.apache.wicket.Component; -import org.apache.wicket.ConverterLocator; -import org.apache.wicket.IConverterLocator; -import org.apache.wicket.Page; -import org.apache.wicket.RuntimeConfigurationType; -import org.apache.wicket.SharedResources; -import org.apache.wicket.ajax.AjaxRequestTarget; -import org.apache.wicket.authentication.IAuthenticationStrategy; -import org.apache.wicket.authentication.strategy.DefaultAuthenticationStrategy; -import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication; -import org.apache.wicket.authroles.authentication.AuthenticatedWebSession; -import org.apache.wicket.core.request.mapper.MountedMapper; -import org.apache.wicket.devutils.debugbar.DebugBar; -import org.apache.wicket.devutils.debugbar.InspectorDebugPanel; -import org.apache.wicket.devutils.debugbar.PageSizeDebugPanel; -import org.apache.wicket.devutils.debugbar.SessionSizeDebugPanel; -import org.apache.wicket.devutils.debugbar.VersionDebugContributor; -import org.apache.wicket.devutils.diskstore.DebugDiskDataStore; -import org.apache.wicket.guice.GuiceComponentInjector; -import org.apache.wicket.markup.head.IHeaderResponse; -import org.apache.wicket.markup.head.filter.JavaScriptFilteredIntoFooterHeaderResponse; -import org.apache.wicket.markup.html.IHeaderContributor; -import org.apache.wicket.markup.html.IHeaderResponseDecorator; -import org.apache.wicket.markup.html.WebPage; -import org.apache.wicket.request.cycle.IRequestCycleListener; -import org.apache.wicket.request.cycle.PageRequestHandlerTracker; -import org.apache.wicket.request.cycle.RequestCycleListenerCollection; -import org.apache.wicket.request.resource.CssResourceReference; -import org.apache.wicket.settings.DebugSettings; -import org.apache.wicket.settings.RequestCycleSettings; -import org.apache.wicket.util.IContextProvider; -import org.apache.wicket.util.time.Duration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.wicketstuff.select2.ApplicationSettings; - import org.apache.isis.core.commons.authentication.AuthenticationSession; import org.apache.isis.core.commons.config.IsisConfiguration; import org.apache.isis.core.commons.config.IsisConfigurationDefault; @@ -91,6 +45,7 @@ import org.apache.isis.core.runtime.system.session.IsisSessionFactory; import org.apache.isis.core.runtime.threadpool.ThreadPoolSupport; import org.apache.isis.core.webapp.IsisWebAppBootstrapper; import org.apache.isis.core.webapp.WebAppConstants; +import org.apache.isis.core.webapp.WebAppContextSupport; import org.apache.isis.schema.utils.ChangesDtoUtils; import org.apache.isis.schema.utils.CommandDtoUtils; import org.apache.isis.schema.utils.InteractionDtoUtils; @@ -119,6 +74,51 @@ import org.apache.isis.viewer.wicket.viewer.integration.wicket.ConverterForObjec import org.apache.isis.viewer.wicket.viewer.integration.wicket.ConverterForObjectAdapterMemento; import org.apache.isis.viewer.wicket.viewer.integration.wicket.WebRequestCycleForIsis; import org.apache.isis.viewer.wicket.viewer.settings.IsisResourceSettings; +import org.apache.wicket.Application; +import org.apache.wicket.Component; +import org.apache.wicket.ConverterLocator; +import org.apache.wicket.IConverterLocator; +import org.apache.wicket.Page; +import org.apache.wicket.RuntimeConfigurationType; +import org.apache.wicket.SharedResources; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.authentication.IAuthenticationStrategy; +import org.apache.wicket.authentication.strategy.DefaultAuthenticationStrategy; +import org.apache.wicket.authroles.authentication.AuthenticatedWebApplication; +import org.apache.wicket.authroles.authentication.AuthenticatedWebSession; +import org.apache.wicket.core.request.mapper.MountedMapper; +import org.apache.wicket.devutils.debugbar.DebugBar; +import org.apache.wicket.devutils.debugbar.InspectorDebugPanel; +import org.apache.wicket.devutils.debugbar.PageSizeDebugPanel; +import org.apache.wicket.devutils.debugbar.SessionSizeDebugPanel; +import org.apache.wicket.devutils.debugbar.VersionDebugContributor; +import org.apache.wicket.devutils.diskstore.DebugDiskDataStore; +import org.apache.wicket.guice.GuiceComponentInjector; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.markup.head.filter.JavaScriptFilteredIntoFooterHeaderResponse; +import org.apache.wicket.markup.html.IHeaderContributor; +import org.apache.wicket.markup.html.IHeaderResponseDecorator; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.request.cycle.IRequestCycleListener; +import org.apache.wicket.request.cycle.PageRequestHandlerTracker; +import org.apache.wicket.request.cycle.RequestCycleListenerCollection; +import org.apache.wicket.request.resource.CssResourceReference; +import org.apache.wicket.settings.DebugSettings; +import org.apache.wicket.settings.RequestCycleSettings; +import org.apache.wicket.util.IContextProvider; +import org.apache.wicket.util.time.Duration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.wicketstuff.select2.ApplicationSettings; + +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import com.google.common.io.Resources; +import com.google.inject.Guice; +import com.google.inject.Injector; +import com.google.inject.Module; import de.agilecoders.wicket.core.Bootstrap; import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.BootstrapBaseBehavior; @@ -346,6 +346,9 @@ public class IsisWicketApplication final IsisConfigurationBuilder isisConfigurationBuilder = obtainConfigBuilder(); isisConfigurationBuilder.addDefaultConfigurationResourcesAndPrimers(); + + final String webappContextPath = getServletContext().getContextPath(); + isisConfigurationBuilder.add(WebAppContextSupport.WEB_APP_CONTEXT_PATH, webappContextPath); final IsisConfigurationDefault configuration = isisConfigurationBuilder.getConfiguration(); -- To stop receiving notification emails like this one, please contact ['"commits@isis.apache.org" <commits@isis.apache.org>'].