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:30 UTC

[isis] 05/11: ISIS-2264: converts some config props to Optional

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 73c2704728cfc061969c3a09acad17eb5a75a2d4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jan 21 13:11:45 2020 +0000

    ISIS-2264: converts some config props to Optional<T>
---
 .../apache/isis/core/config/IsisConfiguration.java | 20 +++++++++-----
 .../config/viewer/wicket/WebAppContextPath.java    |  5 ++++
 .../ui/components/widgets/favicon/Favicon.java     | 31 +++++++++++++---------
 3 files changed, 38 insertions(+), 18 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 e4ead26..fac0ca3 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
@@ -2329,12 +2329,20 @@ public class IsisConfiguration {
                  */
                 @javax.validation.constraints.Pattern(regexp="^[^/].*$")
                 private String css;
-                
-                // since 2.0
-                private String faviconContentType;
-                
-                // since 2.0
-                private String faviconUrl;
+
+                /**
+                 * Specifies the content type of the favIcon, if any.
+                 */
+                private Optional<String> faviconContentType = Optional.empty();
+
+                /**
+                 * Specifies the URL to use of the favIcon.
+                 *
+                 * <p>
+                 *     This is expected to be a local resource.
+                 * </p>
+                 */
+                private Optional<String> faviconUrl = Optional.empty();
                 
                 /**
                  */
diff --git a/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppContextPath.java b/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppContextPath.java
index 24ffbbc..9383c52 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppContextPath.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/viewer/wicket/WebAppContextPath.java
@@ -19,6 +19,7 @@
 package org.apache.isis.core.config.viewer.wicket;
 
 import java.io.Serializable;
+import java.util.Optional;
 import java.util.regex.Pattern;
 
 import javax.annotation.Nullable;
@@ -100,6 +101,10 @@ public class WebAppContextPath implements Serializable {
         return urlOrLocalPath;
     }
     
+    public Optional<String> prependContextPathIfLocal(final Optional<String> urlOrLocalPath) {
+        return urlOrLocalPath.map(this::prependContextPathIfLocal);
+    }
+
     // -- HELPER
     
     private final Pattern pattern = Pattern.compile("^[/]*(.+?)[/]*$");
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 f4885cc..998f9e4 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
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.widgets.favicon;
 
+import java.util.Optional;
+
 import javax.inject.Inject;
 
 import org.apache.wicket.markup.ComponentTag;
@@ -37,31 +39,36 @@ public class Favicon extends WebComponent {
     @Inject private transient IsisConfiguration isisConfiguration;
     @Inject private transient WebAppContextPath webAppContextPath;
 
-    private String url;
-    private String contentType;
+    private Optional<String> url = Optional.empty();
+    private Optional<String> contentType = Optional.empty();
     
     public Favicon(String id) {
         super(id);
-        if(webAppContextPath!=null) {
-            url = webAppContextPath.prependContextPathIfLocal(isisConfiguration.getViewer().getWicket().getApplication().getFaviconUrl());
-            contentType = isisConfiguration.getViewer().getWicket().getApplication().getFaviconContentType();
-        }
+
     }
 
     @Override
     protected void onConfigure() {
         super.onConfigure();
-        setVisible(!Strings.isEmpty(url));
+
+        if(webAppContextPath != null && isisConfiguration != null) {
+
+            url = isisConfiguration.getViewer().getWicket().getApplication().getFaviconUrl()
+                    .filter(x -> !Strings.isEmpty(x))
+                    .map(webAppContextPath::prependContextPathIfLocal);
+
+            contentType = isisConfiguration.getViewer().getWicket().getApplication().getFaviconContentType()
+                    .filter(x -> !Strings.isEmpty(x));
+        }
+
+        setVisible(url.isPresent());
     }
 
     @Override
     protected void onComponentTag(ComponentTag tag) {
         super.onComponentTag(tag);
 
-        tag.put("href", url);
-
-        if (!Strings.isEmpty(contentType)) {
-            tag.put("type", contentType);
-        }
+        url.ifPresent(url -> tag.put("href", url));
+        contentType.ifPresent(contentType -> tag.put("type", contentType));
     }
 }