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 2019/09/29 11:09:33 UTC

[isis] branch ISIS-2086 updated (4ecb056 -> 4370d14)

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

danhaywood pushed a change to branch ISIS-2086
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 4ecb056  ISIS-2086: refactors 'isis.reflector.validator.jaxb...' (5 of them) to type-safe config
     add 2206581  Merge pull request #142 from apache/ISIS-2086
     add a97a525  ISIS-2158: fixes MetaModelContext.Delegating self referencing recursion
     add fe492d0  Merge pull request #143 from apache/ISIS-2086
     add c20a0e3  ISIS-2158: minor: java-doc copy & paste error, missing header
     add 67e4ce0  ISIS-2086: fixes tests
     add a3a20dc  ISIS-2158: minor: some compiler warnings cleanup
     add 0bb1469  ISIS-2158: wrapper: redesigns recently introduced async execution
     add d4f78a1  ISIS-2158: wrapper: fixes zero arg async action not using a proxy
     new c932c26  ISIS-2086: refactors 'isis.reflector.facets.cssClass.patterns' to type-safe config
     new cde260a  ISIS-2086: moves PatternsConverter component to higher level
     new 264f9f0  ISIS-2086: cleans up implementation of PatternsConverter component
     new 31d1dd1  ISIS-2086: refactors "isis.reflector.facet.cssClassFa.patterns" to type-safe
     new 4370d14  ISIS-2086: adds TODO, think we need to reinstate some missing code from AuditableFacetForDomainObjectAnnotation

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../isis/applib/services/wrapper/AsyncWrap.java    |  91 +++++++++
 .../applib/services/wrapper/WrapperFactory.java    |  60 +++---
 .../services/wrapper/events/InteractionEvent.java  |   3 +-
 .../org/apache/isis/config/IsisConfigModule.java   |   9 +-
 .../org/apache/isis/config/IsisConfiguration.java  |  78 ++++++-
 .../command/CommandActionsConfiguration.java       |   2 -
 .../publishing/PublishActionsConfiguration.java    |   2 -
 ...ion_getMaxTitleLengthInParentedTables_Test.java |   2 -
 ...mainObjectComparableContractTest_compareTo.java |   1 -
 .../apache/isis/metamodel/MetaModelContext.java    |   4 +-
 ...assFacetOnActionFromConfiguredRegexFactory.java |  32 +--
 .../annotprop/CssClassFaFacetOnMemberFactory.java  |  28 +--
 .../auditing/AuditObjectsConfiguration.java        |   3 +
 .../action/ActionAnnotationFacetFactoryTest.java   |  25 ++-
 .../ActionAnnotationFacetFactoryTest_Command.java  |  25 +--
 ...ctionAnnotationFacetFactoryTest_Publishing.java |  25 +--
 .../ParameterAnnotationFacetFactoryTest.java       |   1 -
 ...romptStyleFacetFromPropertyAnnotation_Test.java |  18 +-
 ...acetForPropertyLayoutAnnotationFactoryTest.java |   1 -
 ...acetForPropertyLayoutAnnotationFactoryTest.java |   2 -
 ...ValidationDigitsAnnotationFacetFactoryTest.java |   1 -
 .../org/apache/isis/wrapper/AsyncWrapDefault.java  | 225 +++++++++++++++++++++
 .../apache/isis/wrapper/WrapperFactoryDefault.java |  18 +-
 .../handlers/DomainObjectInvocationHandler.java    |  45 -----
 .../java/org/apache/isis/testdomain/Smoketest.java |   4 +-
 .../testdomain/commandexecution/WrapperTest.java   |  26 ++-
 .../isis/testdomain/config/FooProperties.java      |  18 ++
 .../isis/extensions/secman/api/SecurityModule.java |   9 +-
 .../permission/ApplicationPermissionValueSet.java  |   9 +-
 .../secman/api/tenancy/ApplicationTenancy.java     |   9 +-
 30 files changed, 559 insertions(+), 217 deletions(-)
 create mode 100644 core/applib/src/main/java/org/apache/isis/applib/services/wrapper/AsyncWrap.java
 create mode 100644 core/runtime-extensions/src/main/java/org/apache/isis/wrapper/AsyncWrapDefault.java


[isis] 02/05: ISIS-2086: moves PatternsConverter component to higher level

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit cde260ab1b9e94c8150e3620620bd7890cba92a3
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 11:44:05 2019 +0100

    ISIS-2086: moves PatternsConverter component to higher level
    
    because this code ends up as being more general purpose than just for CSS class regex patterns.
    
    (cherry picked from commit bc9eade891eacbe713a066888a51b7d068870288)
---
 .../org/apache/isis/config/IsisConfiguration.java  | 77 +++++++++++-----------
 1 file changed, 38 insertions(+), 39 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 5f42451..dc6420a 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -98,45 +98,7 @@ public class IsisConfiguration {
             private final CssClass cssClass = new CssClass();
             @Data
             public static class CssClass {
-
                 private Map<Pattern, String> patterns = new HashMap<>();
-
-                @Component
-                @ConfigurationPropertiesBinding
-                public static class PatternsConverter implements Converter<String, Map<Pattern, String>> {
-                    @Override
-                    public Map<Pattern, String> convert(String source) {
-                        return buildCssClassByPattern(source);
-                    }
-                }
-
-                private final static Pattern CSS_CLASS_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
-
-                private static Map<Pattern, String> buildCssClassByPattern(String cssClassPatterns) {
-                    final Map<Pattern,String> cssClassByPattern = _Maps.newLinkedHashMap();
-                    if(cssClassPatterns != null) {
-                        final StringTokenizer regexToCssClasses = new StringTokenizer(cssClassPatterns, ConfigurationConstants.LIST_SEPARATOR);
-                        final Map<String,String> cssClassByRegex = _Maps.newLinkedHashMap();
-                        while (regexToCssClasses.hasMoreTokens()) {
-                            String regexToCssClass = regexToCssClasses.nextToken().trim();
-                            if (_Strings.isNullOrEmpty(regexToCssClass)) {
-                                continue;
-                            }
-                            final Matcher matcher = CSS_CLASS_REGEX_PATTERN.matcher(regexToCssClass);
-                            if(matcher.matches()) {
-                                cssClassByRegex.put(matcher.group(1), matcher.group(2));
-                            }
-                        }
-                        for (Map.Entry<String, String> entry : cssClassByRegex.entrySet()) {
-                            final String regex = entry.getKey();
-                            final String cssClass = entry.getValue();
-                            cssClassByPattern.put(Pattern.compile(regex), cssClass);
-                        }
-                    }
-                    return cssClassByPattern;
-                }
-
-
             }
 
             private final DomainObjectAnnotation domainObjectAnnotation = new DomainObjectAnnotation();
@@ -470,5 +432,42 @@ public class IsisConfiguration {
         }
 
     }
-    
+
+    @Component
+    @ConfigurationPropertiesBinding
+    public static class PatternsConverter implements Converter<String, Map<Pattern, String>> {
+        @Override
+        public Map<Pattern, String> convert(String source) {
+            return toPatternMap(source);
+        }
+
+        private final static Pattern CSS_CLASS_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
+
+        private static Map<Pattern, String> toPatternMap(String cssClassPatterns) {
+            final Map<Pattern,String> cssClassByPattern = _Maps.newLinkedHashMap();
+            if(cssClassPatterns != null) {
+                final StringTokenizer regexToCssClasses = new StringTokenizer(cssClassPatterns, ConfigurationConstants.LIST_SEPARATOR);
+                final Map<String,String> cssClassByRegex = _Maps.newLinkedHashMap();
+                while (regexToCssClasses.hasMoreTokens()) {
+                    String regexToCssClass = regexToCssClasses.nextToken().trim();
+                    if (_Strings.isNullOrEmpty(regexToCssClass)) {
+                        continue;
+                    }
+                    final Matcher matcher = CSS_CLASS_REGEX_PATTERN.matcher(regexToCssClass);
+                    if(matcher.matches()) {
+                        cssClassByRegex.put(matcher.group(1), matcher.group(2));
+                    }
+                }
+                for (Map.Entry<String, String> entry : cssClassByRegex.entrySet()) {
+                    final String regex = entry.getKey();
+                    final String cssClass = entry.getValue();
+                    cssClassByPattern.put(Pattern.compile(regex), cssClass);
+                }
+            }
+            return cssClassByPattern;
+        }
+
+    }
+
+
 }


[isis] 01/05: ISIS-2086: refactors 'isis.reflector.facets.cssClass.patterns' to type-safe config

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit c932c2610f32fa5f61bbb0c515d5eb74554983a7
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Sep 28 17:38:38 2019 +0100

    ISIS-2086: refactors 'isis.reflector.facets.cssClass.patterns' to type-safe config
---
 .../org/apache/isis/config/IsisConfiguration.java  | 62 ++++++++++++++++++++--
 ...assFacetOnActionFromConfiguredRegexFactory.java | 32 +----------
 2 files changed, 60 insertions(+), 34 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index d258f7f..5f42451 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -18,15 +18,25 @@
  */
 package org.apache.isis.config;
 
-import org.springframework.boot.context.properties.ConfigurationProperties;
+import lombok.Data;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.i18n.TranslationService;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.facets.actions.action.command.CommandActionsConfiguration;
 import org.apache.isis.metamodel.facets.actions.action.publishing.PublishActionsConfiguration;
-
-import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
+import org.springframework.core.convert.converter.Converter;
+import org.springframework.stereotype.Component;
 
 
 /**
@@ -61,6 +71,7 @@ public class IsisConfiguration {
         private final Facet facet = new Facet();
         @Data
         public static class Facet {
+
             private boolean filterVisibility = true;
 
             private final ActionAnnotation actionAnnotation = new ActionAnnotation();
@@ -83,6 +94,51 @@ public class IsisConfiguration {
                 }
             }
 
+             // isis.reflector.facet.cssClass.patterns
+            private final CssClass cssClass = new CssClass();
+            @Data
+            public static class CssClass {
+
+                private Map<Pattern, String> patterns = new HashMap<>();
+
+                @Component
+                @ConfigurationPropertiesBinding
+                public static class PatternsConverter implements Converter<String, Map<Pattern, String>> {
+                    @Override
+                    public Map<Pattern, String> convert(String source) {
+                        return buildCssClassByPattern(source);
+                    }
+                }
+
+                private final static Pattern CSS_CLASS_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
+
+                private static Map<Pattern, String> buildCssClassByPattern(String cssClassPatterns) {
+                    final Map<Pattern,String> cssClassByPattern = _Maps.newLinkedHashMap();
+                    if(cssClassPatterns != null) {
+                        final StringTokenizer regexToCssClasses = new StringTokenizer(cssClassPatterns, ConfigurationConstants.LIST_SEPARATOR);
+                        final Map<String,String> cssClassByRegex = _Maps.newLinkedHashMap();
+                        while (regexToCssClasses.hasMoreTokens()) {
+                            String regexToCssClass = regexToCssClasses.nextToken().trim();
+                            if (_Strings.isNullOrEmpty(regexToCssClass)) {
+                                continue;
+                            }
+                            final Matcher matcher = CSS_CLASS_REGEX_PATTERN.matcher(regexToCssClass);
+                            if(matcher.matches()) {
+                                cssClassByRegex.put(matcher.group(1), matcher.group(2));
+                            }
+                        }
+                        for (Map.Entry<String, String> entry : cssClassByRegex.entrySet()) {
+                            final String regex = entry.getKey();
+                            final String cssClass = entry.getValue();
+                            cssClassByPattern.put(Pattern.compile(regex), cssClass);
+                        }
+                    }
+                    return cssClassByPattern;
+                }
+
+
+            }
+
             private final DomainObjectAnnotation domainObjectAnnotation = new DomainObjectAnnotation();
             @Data
             public static class DomainObjectAnnotation {
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java
index 8fa9653..302831b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclass/annotprop/CssClassFacetOnActionFromConfiguredRegexFactory.java
@@ -92,8 +92,6 @@ public class CssClassFacetOnActionFromConfiguredRegexFactory extends FacetFactor
 
     // -- cssClassFromPattern
 
-    private final static Pattern CSS_CLASS_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
-
     private CssClassFacet createFromConfiguredRegexIfPossible(String name, FacetHolder facetHolder) {
         String value = cssIfAnyFor(name);
         return value != null
@@ -119,38 +117,10 @@ public class CssClassFacetOnActionFromConfiguredRegexFactory extends FacetFactor
     private Map<Pattern, String> getCssClassByPattern() {
         if (cssClassByPattern == null) {
             // build lazily
-            final String cssClassPatterns = getConfigurationLegacy().getString("isis.reflector.facet.cssClass.patterns");
-            this.cssClassByPattern = buildCssClassByPattern(cssClassPatterns);
-        }
-        return cssClassByPattern;
-    }
-
-    private static Map<Pattern, String> buildCssClassByPattern(String cssClassPatterns) {
-        final Map<Pattern,String> cssClassByPattern = _Maps.newLinkedHashMap();
-        if(cssClassPatterns != null) {
-            final StringTokenizer regexToCssClasses = new StringTokenizer(cssClassPatterns, ConfigurationConstants.LIST_SEPARATOR);
-            final Map<String,String> cssClassByRegex = _Maps.newLinkedHashMap();
-            while (regexToCssClasses.hasMoreTokens()) {
-                String regexToCssClass = regexToCssClasses.nextToken().trim();
-                if (_Strings.isNullOrEmpty(regexToCssClass)) {
-                    continue;
-                }
-                final Matcher matcher = CSS_CLASS_REGEX_PATTERN.matcher(regexToCssClass);
-                if(matcher.matches()) {
-                    cssClassByRegex.put(matcher.group(1), matcher.group(2));
-                }
-            }
-            for (Map.Entry<String, String> entry : cssClassByRegex.entrySet()) {
-                final String regex = entry.getKey();
-                final String cssClass = entry.getValue();
-                cssClassByPattern.put(Pattern.compile(regex), cssClass);
-            }
+            this.cssClassByPattern = getConfiguration().getReflector().getFacet().getCssClass().getPatterns();
         }
         return cssClassByPattern;
     }
 
-
-
-
 }
 


[isis] 05/05: ISIS-2086: adds TODO, think we need to reinstate some missing code from AuditableFacetForDomainObjectAnnotation

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 4370d1448f895f573a909f70c6f37efa7954eff5
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 12:01:42 2019 +0100

    ISIS-2086: adds TODO, think we need to reinstate some missing code from AuditableFacetForDomainObjectAnnotation
    
    (cherry picked from commit a7197c57b5b277a735f342bfac9e7bad651d31de)
---
 .../facets/object/domainobject/auditing/AuditObjectsConfiguration.java | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditObjectsConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditObjectsConfiguration.java
index cdb4ba8..67ebdbf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditObjectsConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobject/auditing/AuditObjectsConfiguration.java
@@ -21,6 +21,9 @@ package org.apache.isis.metamodel.facets.object.domainobject.auditing;
 import org.apache.isis.config.IsisConfigurationLegacy;
 import org.apache.isis.metamodel.facets.object.domainobject.Util;
 
+// TODO: v2: why is this enum no longer referenced?
+//  compare AuditableFacetForDomainObjectAnnotation vs PublishedObjectFacetForDomainObjectAnnotation
+//  the latter does read from the configuration, but the former does not.
 public enum AuditObjectsConfiguration {
     ALL,
     NONE;


[isis] 04/05: ISIS-2086: refactors "isis.reflector.facet.cssClassFa.patterns" to type-safe

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 31d1dd1506cf1cce758615cfdbef3d7e1204e1be
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 11:56:34 2019 +0100

    ISIS-2086: refactors "isis.reflector.facet.cssClassFa.patterns" to type-safe
    
    also registers IsisConfiguration.PatternsConverter as a managed bean
    
    (cherry picked from commit 537148a800aeb16533aab6ec3f0cf2b3d895f7c9)
---
 .../org/apache/isis/config/IsisConfigModule.java   |  9 +++----
 .../org/apache/isis/config/IsisConfiguration.java  |  7 +++++-
 .../annotprop/CssClassFaFacetOnMemberFactory.java  | 28 +---------------------
 3 files changed, 12 insertions(+), 32 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfigModule.java b/core/config/src/main/java/org/apache/isis/config/IsisConfigModule.java
index bcb5077..18bbe2a 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfigModule.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfigModule.java
@@ -20,12 +20,13 @@ package org.apache.isis.config;
 
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
 
 @Configuration
-//@Import({
-//    IsisConfiguration.class // not required
-//XXX if this module would contribute any managed beans, these would go here
-//})
+@Import({
+    //IsisConfiguration.class // not required
+    IsisConfiguration.PatternsConverter.class
+})
 @EnableConfigurationProperties(IsisConfiguration.class)
 public class IsisConfigModule {
 
diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 9a5d947..98864df 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -94,12 +94,17 @@ public class IsisConfiguration {
                 }
             }
 
-             // isis.reflector.facet.cssClass.patterns
             private final CssClass cssClass = new CssClass();
             @Data
             public static class CssClass {
                 private Map<Pattern, String> patterns = new HashMap<>();
             }
+            private final CssClassFa cssClassFa = new CssClassFa();
+            @Data
+            public static class CssClassFa {
+                private Map<Pattern, String> patterns = new HashMap<>();
+            }
+
 
             private final DomainObjectAnnotation domainObjectAnnotation = new DomainObjectAnnotation();
             @Data
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
index 284bf44..e8ed533 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
@@ -97,36 +97,10 @@ public class CssClassFaFacetOnMemberFactory extends FacetFactoryAbstract impleme
     }
 
     private Map<Pattern, String> faIconByPattern;
-
     private Map<Pattern, String> getFaIconByPattern() {
         if (faIconByPattern == null) {
             // build lazily
-            final String cssClassFaPatterns = getConfigurationLegacy().getString("isis.reflector.facet.cssClassFa.patterns");
-            this.faIconByPattern = buildFaIconByPattern(cssClassFaPatterns);
-        }
-        return faIconByPattern;
-    }
-
-    private static Map<Pattern, String> buildFaIconByPattern(String cssClassFaPatterns) {
-        final Map<Pattern, String> faIconByPattern = _Maps.newLinkedHashMap();
-        if (cssClassFaPatterns != null) {
-            final StringTokenizer regexToFaIcons = new StringTokenizer(cssClassFaPatterns, ConfigurationConstants.LIST_SEPARATOR);
-            final Map<String, String> faIconByRegex = _Maps.newLinkedHashMap();
-            while (regexToFaIcons.hasMoreTokens()) {
-                String regexToFaIcon = regexToFaIcons.nextToken().trim();
-                if (_Strings.isNullOrEmpty(regexToFaIcon)) {
-                    continue;
-                }
-                final Matcher matcher = FA_ICON_REGEX_PATTERN.matcher(regexToFaIcon);
-                if (matcher.matches()) {
-                    faIconByRegex.put(matcher.group(1), matcher.group(2));
-                }
-            }
-            for (Map.Entry<String, String> entry : faIconByRegex.entrySet()) {
-                final String regex = entry.getKey();
-                final String faIcon = entry.getValue();
-                faIconByPattern.put(Pattern.compile(regex), faIcon);
-            }
+            this.faIconByPattern = getConfiguration().getReflector().getFacet().getCssClassFa().getPatterns();
         }
         return faIconByPattern;
     }


[isis] 03/05: ISIS-2086: cleans up implementation of PatternsConverter component

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 264f9f0c3b88fdbf4da624af7b2c98d417d3c9cc
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Sep 29 11:53:16 2019 +0100

    ISIS-2086: cleans up implementation of PatternsConverter component
    
    (cherry picked from commit 8a69f3d5ce52e2eb66c0a03633144a469f6f2221)
---
 .../org/apache/isis/config/IsisConfiguration.java  | 26 +++++++++++++++-------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index dc6420a..9a5d947 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -441,30 +441,40 @@ public class IsisConfiguration {
             return toPatternMap(source);
         }
 
-        private final static Pattern CSS_CLASS_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
+        /**
+         * The pattern matches definitions like:
+         * <ul>
+         * <li>methodNameRegex:value</li>
+         * </ul>
+         *
+         * <p>
+         *     Used for associating cssClass and cssClassFa (font awesome icon) values to method pattern names.
+         * </p>
+         */
+        private final static Pattern PATTERN_FOR_COLON_SEPARATED_PAIR = Pattern.compile("(?<methodRegex>[^:]+):(?<value>.+)");
 
         private static Map<Pattern, String> toPatternMap(String cssClassPatterns) {
-            final Map<Pattern,String> cssClassByPattern = _Maps.newLinkedHashMap();
+            final Map<Pattern,String> valueByPattern = _Maps.newLinkedHashMap();
             if(cssClassPatterns != null) {
                 final StringTokenizer regexToCssClasses = new StringTokenizer(cssClassPatterns, ConfigurationConstants.LIST_SEPARATOR);
-                final Map<String,String> cssClassByRegex = _Maps.newLinkedHashMap();
+                final Map<String,String> valueByRegex = _Maps.newLinkedHashMap();
                 while (regexToCssClasses.hasMoreTokens()) {
                     String regexToCssClass = regexToCssClasses.nextToken().trim();
                     if (_Strings.isNullOrEmpty(regexToCssClass)) {
                         continue;
                     }
-                    final Matcher matcher = CSS_CLASS_REGEX_PATTERN.matcher(regexToCssClass);
+                    final Matcher matcher = PATTERN_FOR_COLON_SEPARATED_PAIR.matcher(regexToCssClass);
                     if(matcher.matches()) {
-                        cssClassByRegex.put(matcher.group(1), matcher.group(2));
+                        valueByRegex.put(matcher.group("methodRegex"), matcher.group("value"));
                     }
                 }
-                for (Map.Entry<String, String> entry : cssClassByRegex.entrySet()) {
+                for (Map.Entry<String, String> entry : valueByRegex.entrySet()) {
                     final String regex = entry.getKey();
                     final String cssClass = entry.getValue();
-                    cssClassByPattern.put(Pattern.compile(regex), cssClass);
+                    valueByPattern.put(Pattern.compile(regex), cssClass);
                 }
             }
-            return cssClassByPattern;
+            return valueByPattern;
         }
 
     }