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/01 15:20:18 UTC
[isis] branch master updated: ISIS-1720: supposed fix for
CssClassFaFacetOnMemberFromConfiguredRegex static naming optimization
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 4777baa ISIS-1720: supposed fix for CssClassFaFacetOnMemberFromConfiguredRegex static naming optimization
4777baa is described below
commit 4777baa8658f2daa523c472653aa3fd79d1692e9
Author: andi-huber <ah...@apache.org>
AuthorDate: Thu Jul 1 17:20:01 2021 +0200
ISIS-1720: supposed fix for CssClassFaFacetOnMemberFromConfiguredRegex
static naming optimization
(removes the invalid class cast)
---
...CssClassFaFacetOnMemberFromConfiguredRegex.java | 45 +++++++++++++++-------
1 file changed, 31 insertions(+), 14 deletions(-)
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 6450732..8980c7d 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
@@ -52,6 +52,11 @@ extends CssClassFaImperativeFacetAbstract {
private final @NonNull Map<Pattern, String> faIconByPattern;
private final @NonNull MemberNamedFacet memberNamedFacet;
+ /**
+ * if the memberNamedFacet provides static names, we can also provide a static CssClassFaFactory
+ */
+ private final @NonNull Optional<CssClassFaFactory> staticCssClassFaFactory;
+
public static Optional<CssClassFaFacet> create(final ObjectAction objectAction) {
return objectAction.lookupFacet(MemberNamedFacet.class)
.map(memberNamedFacet->new CssClassFaFacetOnMemberFromConfiguredRegex(memberNamedFacet, objectAction));
@@ -63,28 +68,32 @@ extends CssClassFaImperativeFacetAbstract {
super(holder);
this.faIconByPattern = getConfiguration().getApplib().getAnnotation().getActionLayout().getCssClassFa().getPatterns();
this.memberNamedFacet = memberNamedFacet;
+
+ // an optimization, not strictly required
+ this.staticCssClassFaFactory = memberNamedFacet
+ .getSpecialization()
+ .left()
+ .map(hasStaticName->hasStaticName.translated())
+ .flatMap(this::cssClassFaFactoryForMemberFriendlyName);
}
@Override
public CssClassFaFactory getCssClassFaFactory(final Supplier<ManagedObject> domainObjectProvider) {
- return memberNamedFacet
- .getSpecialization()
- .left() // if the memberNamedFacet provides static names, just reuse its specialization as CssClassFaFactory
- .map(CssClassFaFactory.class::cast)
+ return staticCssClassFaFactory
.orElseGet(()->new CssClassFaFactory() {
@Override
public CssClassFaPosition getPosition() {
- return createFromConfiguredRegexIfPossible(domainObjectProvider)
- .map(CssClassFaStaticFacetAbstract::getPosition)
+ return cssClassFaFactoryForConfiguredRegexIfPossible(domainObjectProvider)
+ .map(CssClassFaFactory::getPosition)
.orElse(CssClassFaPosition.LEFT);
}
@Override
public Stream<String> streamCssClasses() {
- return createFromConfiguredRegexIfPossible(domainObjectProvider)
- .map(CssClassFaStaticFacetAbstract::streamCssClasses)
+ return cssClassFaFactoryForConfiguredRegexIfPossible(domainObjectProvider)
+ .map(CssClassFaFactory::streamCssClasses)
.orElseGet(Stream::empty);
}
@@ -105,19 +114,26 @@ extends CssClassFaImperativeFacetAbstract {
return Optional.empty();
}
- /**
- * @implNote because {@link CssClassFaStaticFacetAbstract} has all the fa-icon logic,
- * we simply reuse it here by creating an anonymous instance
- */
- private Optional<CssClassFaStaticFacetAbstract> createFromConfiguredRegexIfPossible(
+ private Optional<CssClassFaFactory> cssClassFaFactoryForConfiguredRegexIfPossible(
final Supplier<ManagedObject> domainObjectProvider) {
final String memberFriendlyName = memberNamedFacet
.getSpecialization()
.fold(
- hasStaticName->hasStaticName.translated(),
+ hasStaticName->hasStaticName.translated(), // unexpected code reach, due to optimization above
hasImperativeName->hasImperativeName.textElseNull(domainObjectProvider.get()));
+ return cssClassFaFactoryForMemberFriendlyName(memberFriendlyName);
+
+ }
+
+ /**
+ * @implNote because {@link CssClassFaStaticFacetAbstract} has all the fa-icon logic,
+ * we simply reuse it here by creating an anonymous instance
+ */
+ private Optional<CssClassFaFactory> cssClassFaFactoryForMemberFriendlyName(
+ final String memberFriendlyName) {
+
return _Strings.nonEmpty(memberFriendlyName)
.flatMap(this::faIconIfAnyFor)
.map(_faIcon->{
@@ -137,4 +153,5 @@ extends CssClassFaImperativeFacetAbstract {
});
}
+
}