You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/01/21 16:09:28 UTC

[isis] 03/11: ISIS-2264: removes all of WebAppConfiguration state, just use IsisConfiguration

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 67253f37e5966bf30d0be7f69f9d625657dae39d
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jan 21 11:29:02 2020 +0000

    ISIS-2264: removes all of WebAppConfiguration state, just use IsisConfiguration
    
    WebAppConfiguration remains just as a utility bean to make certain URLs context sensitive
---
 .../apache/isis/core/config/IsisConfiguration.java |  2 +
 .../config/viewer/wicket/WebAppConfiguration.java  | 65 +---------------------
 .../menubars/MenuBarsLoaderServiceDefault.java     | 42 +++++++-------
 .../wicket/ui/components/welcome/WelcomePanel.java |  2 +-
 .../ui/components/widgets/favicon/Favicon.java     |  2 +-
 .../ui/components/widgets/navbar/BrandLogo.java    |  6 +-
 .../ui/components/widgets/navbar/BrandName.java    |  4 +-
 .../isis/viewer/wicket/ui/pages/PageAbstract.java  |  4 +-
 .../accmngt/AccountManagementPageAbstract.java     |  4 +-
 .../wicket/ui/pages/mmverror/MmvErrorPage.java     |  4 +-
 10 files changed, 40 insertions(+), 95 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index 91bd5ac..e4ead26 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -2327,6 +2327,7 @@ public class IsisConfiguration {
                  *     Spring by default under <code>static</code> package).
                  * </p>
                  */
+                @javax.validation.constraints.Pattern(regexp="^[^/].*$")
                 private String css;
                 
                 // since 2.0
@@ -2346,6 +2347,7 @@ public class IsisConfiguration {
                  *     Spring by default under <code>static</code> package).
                  * </p>
                  */
+                @javax.validation.constraints.Pattern(regexp="^[^/].*$")
                 private String js;
 
                 /**
diff --git a/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppConfiguration.java
index 14b5de9..527f8c5 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppConfiguration.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.config.viewer.wicket;
 
-import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
@@ -26,16 +25,11 @@ import javax.inject.Singleton;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Primary;
 import org.springframework.core.annotation.Order;
-import org.springframework.core.io.AbstractResource;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.core.config.IsisConfiguration;
 
-import lombok.Getter;
-import lombok.val;
-
 /**
  * @since 2.0 
  */
@@ -47,73 +41,16 @@ import lombok.val;
 @Qualifier("Default")
 public class WebAppConfiguration {
     
-    private final IsisConfiguration isisConfiguration;
     private final WebAppContextPath webAppContextPath;
 
-    @Getter private AbstractResource menubarsLayoutXml;
-    
-    // URLs *not* sensitive to context path (remove any leading /)
-    @Getter private String applicationCss;
-    @Getter private String applicationJs;
-    @Getter private String welcomeMessage;
-
-    // URLs sensitive to context path (add context-path)
-    @Getter private String faviconUrl;
-    @Getter private String brandLogoHeader;
-    @Getter private String brandLogoSignin;
-
     @Inject
     public WebAppConfiguration(
-            final IsisConfiguration isisConfiguration,
             final WebAppContextPath webAppContextPath) {
-        this.isisConfiguration = isisConfiguration;
         this.webAppContextPath = webAppContextPath;
     }
 
-    @PostConstruct
-    public void init() {
-
-        this.menubarsLayoutXml = lookup(getIsisConfiguration().getViewer().getWicket().getApplication().getMenubarsLayoutXml());
-        
-        this.applicationCss = ignoreLeadingSlash(getIsisConfiguration().getViewer().getWicket().getApplication().getCss());
-        this.applicationJs = ignoreLeadingSlash(getIsisConfiguration().getViewer().getWicket().getApplication().getJs());
-
-        this.brandLogoHeader = contextPathSensitive(getIsisConfiguration().getViewer().getWicket().getApplication().getBrandLogoHeader());
-        this.brandLogoSignin = contextPathSensitive(getIsisConfiguration().getViewer().getWicket().getApplication().getBrandLogoSignin());
-        this.faviconUrl = contextPathSensitive(getIsisConfiguration().getViewer().getWicket().getApplication().getFaviconUrl());
-        
-        val welcome = getIsisConfiguration().getViewer().getWicket().getWelcome();
-        
-        this.welcomeMessage = ignoreLeadingSlash(welcome.getText());
-
-    }
-
-    private IsisConfiguration getIsisConfiguration() {
-        return isisConfiguration;
-    }
-
-
-    // -- HELPER
-
-    private String contextPathSensitive(String url) {
+    public String contextPathSensitive(String url) {
         return webAppContextPath.prependContextPathIfLocal(url); 
     }
-    
-    private String ignoreLeadingSlash(String url) {
-        if(url==null || url.length()<2) {
-            return url;
-        }
-        return url.startsWith("/")
-                ? url.substring(1)
-                        : url;
-    }
-    
-    private ClassPathResource lookup(String path) {
-        if(path == null) {
-            return lookup("menubars.layout.xml"); // try lookup default name
-        }
-        return new ClassPathResource(path);
-    }
-    
 
 }
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java
index e553226..bffe94e 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/menubars/MenuBarsLoaderServiceDefault.java
@@ -23,12 +23,15 @@ import java.util.Optional;
 
 import javax.inject.Inject;
 import javax.inject.Named;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.annotation.Primary;
 import org.springframework.core.annotation.Order;
 import org.springframework.core.io.AbstractResource;
+import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
@@ -37,6 +40,7 @@ import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.menu.MenuBarsLoaderService;
 import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.commons.internal.environment.IsisSystemEnvironment;
+import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.viewer.wicket.WebAppConfiguration;
 
 import lombok.val;
@@ -50,10 +54,23 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2
 public class MenuBarsLoaderServiceDefault implements MenuBarsLoaderService {
 
-    @Inject private IsisSystemEnvironment isisSystemEnvironment;
-    @Inject private JaxbService jaxbService;
-    @Autowired(required = false) private WebAppConfiguration webAppConfigBean;
-    
+    private final IsisSystemEnvironment isisSystemEnvironment;
+    private final JaxbService jaxbService;
+
+    private final ClassPathResource menubarsLayoutXmlResource;
+
+    @Inject
+    public MenuBarsLoaderServiceDefault(
+            final IsisSystemEnvironment isisSystemEnvironment,
+            final JaxbService jaxbService,
+            final IsisConfiguration isisConfiguration) {
+        this.isisSystemEnvironment = isisSystemEnvironment;
+        this.jaxbService = jaxbService;
+
+        this.menubarsLayoutXmlResource =
+                new ClassPathResource(isisConfiguration.getViewer().getWicket().getApplication().getMenubarsLayoutXml());
+    }
+
     @Override
     public boolean supportsReloading() {
         return isisSystemEnvironment.isPrototyping();
@@ -62,17 +79,8 @@ public class MenuBarsLoaderServiceDefault implements MenuBarsLoaderService {
     @Override
     public BS3MenuBars menuBars() {
 
-        val menubarsLayoutResource = Optional.ofNullable(webAppConfigBean)
-                .map(WebAppConfiguration::getMenubarsLayoutXml)
-                .orElse(null);
-
-        if(menubarsLayoutResource==null) {
-            warnNotFound();
-            return null;
-        }
-
-        val xmlString = loadMenubarsLayoutResource(menubarsLayoutResource);
-        if(xmlString==null) {
+        val xmlString = loadMenubarsLayoutResource(menubarsLayoutXmlResource);
+        if(xmlString == null) {
             warnNotFound();
             return null;
         }
@@ -121,9 +129,5 @@ public class MenuBarsLoaderServiceDefault implements MenuBarsLoaderService {
                         WebAppConfiguration.class.getName()), 
                 cause);
     }
-
-    
-
-    
 }
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/welcome/WelcomePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/welcome/WelcomePanel.java
index ae4a15d..40924e8 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/welcome/WelcomePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/welcome/WelcomePanel.java
@@ -43,7 +43,7 @@ public class WelcomePanel extends PanelAbstract<WelcomeModel> {
     public WelcomePanel(final String id, final WelcomeModel model) {
         super(id, model);
 
-        String welcomeMessage = webAppConfigBean.getWelcomeMessage();
+        String welcomeMessage = getIsisConfiguration().getViewer().getWicket().getWelcome().getText();
 
         model.setObject(welcomeMessage);
         final Label label = new Label(ID_MESSAGE, welcomeMessage);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/favicon/Favicon.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/favicon/Favicon.java
index 8081f84..036b1af 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/favicon/Favicon.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/favicon/Favicon.java
@@ -43,7 +43,7 @@ public class Favicon extends WebComponent {
     public Favicon(String id) {
         super(id);
         if(webAppConfigBean!=null) {
-            url = webAppConfigBean.getFaviconUrl();
+            url = webAppConfigBean.contextPathSensitive(isisConfiguration.getViewer().getWicket().getApplication().getFaviconUrl());
             contentType = isisConfiguration.getViewer().getWicket().getApplication().getFaviconContentType();
         }
     }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java
index 0c02212..1debc11 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandLogo.java
@@ -23,6 +23,7 @@ import javax.inject.Inject;
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebComponent;
 
+import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.viewer.wicket.WebAppConfiguration;
 
 /**
@@ -34,7 +35,8 @@ public class BrandLogo extends WebComponent {
 
     private final Placement placement;
 
-    @Inject private WebAppConfiguration webAppConfigBean;
+    @Inject private transient WebAppConfiguration webAppConfigBean;
+    @Inject private transient IsisConfiguration isisConfiguration;
 
     /**
      * Constructor.
@@ -61,7 +63,7 @@ public class BrandLogo extends WebComponent {
     }
 
     private String url() {
-        String logoHeaderUrl = webAppConfigBean.getBrandLogoHeader();
+        String logoHeaderUrl = webAppConfigBean.contextPathSensitive(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoHeader()) .getBrandLogoHeader();
         String logoSigninUrl = webAppConfigBean.getBrandLogoSignin();
 
         return placement.urlFor(logoHeaderUrl, logoSigninUrl);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java
index 1e69e77..7b152ef 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/navbar/BrandName.java
@@ -54,8 +54,8 @@ public class BrandName extends Label {
         
         if(webAppConfigBean!=null) {
             applicationName = isisConfiguration.getViewer().getWicket().getApplication().getName();
-            logoHeaderUrl = webAppConfigBean.getBrandLogoHeader();
-            logoSigninUrl = webAppConfigBean.getBrandLogoSignin();
+            logoHeaderUrl = webAppConfigBean.contextPathSensitive(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoHeader());
+            logoSigninUrl = webAppConfigBean.contextPathSensitive(isisConfiguration.getViewer().getWicket().getApplication().getBrandLogoSignin());
         }
 
         setDefaultModel(Model.of(applicationName));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index a42901e..65e03c5 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -267,11 +267,11 @@ public abstract class PageAbstract extends WebPageBase implements ActionPromptPr
         final JGrowlBehaviour jGrowlBehaviour = new JGrowlBehaviour(getCommonContext());
         jGrowlBehaviour.renderFeedbackMessages(response);
 
-        String applicationCss = getWebAppConfigBean().getApplicationCss();
+        String applicationCss = getIsisConfiguration().getViewer().getWicket().getApplication().getCss();
         if(applicationCss != null) {
             response.render(CssReferenceHeaderItem.forUrl(applicationCss));
         }
-        String applicationJs = getWebAppConfigBean().getApplicationJs();
+        String applicationJs = getIsisConfiguration().getViewer().getWicket().getApplication().getJs();
         if(applicationJs != null) {
             response.render(JavaScriptReferenceHeaderItem.forUrl(applicationJs));
         }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
index e25c5ee..d36d53c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/accmngt/AccountManagementPageAbstract.java
@@ -116,11 +116,11 @@ public class AccountManagementPageAbstract extends WebPageBase {
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(
                 BootstrapJavaScriptReference.instance())));
 
-        String applicationCss = getWebAppConfigBean().getApplicationCss();
+        String applicationCss = getIsisConfiguration().getViewer().getWicket().getApplication().getCss();
         if(applicationCss != null) {
             response.render(CssReferenceHeaderItem.forUrl(applicationCss));
         }
-        String applicationJs = getWebAppConfigBean().getApplicationJs();
+        String applicationJs = getIsisConfiguration().getViewer().getWicket().getApplication().getJs();
         if(applicationJs != null) {
             response.render(JavaScriptReferenceHeaderItem.forUrl(applicationJs));
         }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
index 121f5d1..312d000 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/mmverror/MmvErrorPage.java
@@ -95,11 +95,11 @@ public class MmvErrorPage extends WebPageBase {
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(Application.get().getJavaScriptLibrarySettings().getJQueryReference())));
         response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(BootstrapJavaScriptReference.instance())));
 
-        String applicationCss = getWebAppConfigBean().getApplicationCss();
+        String applicationCss = getIsisConfiguration().getViewer().getWicket().getApplication().getCss();
         if(applicationCss != null) {
             response.render(CssReferenceHeaderItem.forUrl(applicationCss));
         }
-        String applicationJs = getWebAppConfigBean().getApplicationJs();
+        String applicationJs = getIsisConfiguration().getViewer().getWicket().getApplication().getJs();
         if(applicationJs != null) {
             response.render(JavaScriptReferenceHeaderItem.forUrl(applicationJs));
         }