You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/07/20 13:50:28 UTC

[isis] branch master updated: ISIS-2811: only lazily compile patterns after config has settled

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

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


The following commit(s) were added to refs/heads/master by this push:
     new fac69aa  ISIS-2811: only lazily compile patterns after config has settled
fac69aa is described below

commit fac69aa6c569d1ac708e5a9c144767c294c1b719
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jul 20 15:50:15 2021 +0200

    ISIS-2811: only lazily compile patterns after config has settled
---
 .../apache/isis/core/config/IsisConfiguration.java    | 19 ++++++++++++-------
 ...sClassFacetOnActionFromConfiguredRegexFactory.java |  2 +-
 .../CssClassFaFacetOnMemberFromConfiguredRegex.java   |  2 +-
 3 files changed, 14 insertions(+), 9 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 f693a85..fcc0e4a 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
@@ -66,8 +66,6 @@ import org.apache.isis.applib.services.userreg.EmailNotificationService;
 import org.apache.isis.applib.services.userreg.UserRegistrationService;
 import org.apache.isis.applib.services.userui.UserMenu;
 import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.core.config.IsisConfiguration.Core;
-import org.apache.isis.core.config.IsisConfiguration.Viewer;
 import org.apache.isis.core.config.metamodel.facets.DefaultViewConfiguration;
 import org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
 import org.apache.isis.core.config.metamodel.facets.PublishingPolicies.ActionPublishingPolicy;
@@ -786,11 +784,14 @@ public class IsisConfiguration {
                      *     {@link org.apache.isis.applib.annotation.ActionLayout#cssClass()}.
                      * </p>
                      */
-                    private Map<Pattern, String> patterns = asMap(
+                    private String[] patterns = {
                                     "delete.*:btn-danger",
                                     "discard.*:btn-warning",
-                                    "remove.*:btn-warning"
-                    );
+                                    "remove.*:btn-warning"};
+
+                    @Getter(lazy = true)
+                    private final Map<Pattern, String> patternsAsMap = asMap(getPatterns());
+
                 }
 
                 private final CssClassFa cssClassFa = new CssClassFa();
@@ -810,7 +811,7 @@ public class IsisConfiguration {
                      *     {@link org.apache.isis.applib.annotation.ActionLayout#cssClassFa()}.
                      * </p>
                      */
-                    private Map<Pattern, String> patterns = asMap(
+                    private String[] patterns = {
                             "add.*:fa-plus-square",
                             "all.*:fa-list",
                             "approve.*:fa-thumbs-o-up",
@@ -856,7 +857,11 @@ public class IsisConfiguration {
                             "update.*:fa-edit",
                             "upload.*:fa-upload",
                             "verify.*:fa-check-circle",
-                            "view.*:fa-search");
+                            "view.*:fa-search"};
+
+                    @Getter(lazy = true)
+                    private final Map<Pattern, String> patternsAsMap = asMap(getPatterns());
+
                 }
             }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java
index cd57bd8..09ae198 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java
@@ -41,7 +41,7 @@ extends FacetFactoryAbstract {
     @Inject
     public CssClassFacetOnActionFromConfiguredRegexFactory(final MetaModelContext mmc) {
         super(mmc, FeatureType.ACTIONS_ONLY);
-        this.cssClassByPattern = getConfiguration().getApplib().getAnnotation().getActionLayout().getCssClass().getPatterns();
+        this.cssClassByPattern = getConfiguration().getApplib().getAnnotation().getActionLayout().getCssClass().getPatternsAsMap();
     }
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
index adbd615..ca81539 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
@@ -67,7 +67,7 @@ extends CssClassFaImperativeFacetAbstract {
             final MemberNamedFacet memberNamedFacet,
             final FacetHolder holder) {
         super(holder);
-        this.faIconByPattern = getConfiguration().getApplib().getAnnotation().getActionLayout().getCssClassFa().getPatterns();
+        this.faIconByPattern = getConfiguration().getApplib().getAnnotation().getActionLayout().getCssClassFa().getPatternsAsMap();
         this.memberNamedFacet = memberNamedFacet;
 
         // an optimization, not strictly required