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 2020/09/17 08:32:53 UTC
[isis] 02/02: ISIS-2432: fixes TitleFacet precedence:
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
commit 39033dcd23342cfadff47f48257433243b831b37
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 17 10:32:35 2020 +0200
ISIS-2432: fixes TitleFacet precedence:
according to our docs, title() methods should take precedence over
TitleUiEvents
---
...ainObjectLayoutAnnotationUsingTitleUiEvent.java | 70 ++++++++++++++--------
1 file changed, 46 insertions(+), 24 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
index 3eecf50..8cd4d4f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
@@ -38,6 +38,8 @@ import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.util.EventUtil;
+import lombok.val;
+
public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends TitleFacetAbstract {
public static Facet create(
@@ -46,24 +48,26 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
final IsisConfiguration configuration,
final FacetHolder facetHolder) {
+ val isPostForDefault = configuration
+ .getApplib()
+ .getAnnotation()
+ .getDomainObjectLayout()
+ .getTitleUiEvent()
+ .isPostForDefault();
+
return domainObjectLayoutIfAny
.map(DomainObjectLayout::titleUiEvent)
.filter(titleUiEvent -> EventUtil.eventTypeIsPostable(
titleUiEvent,
TitleUiEvent.Noop.class,
TitleUiEvent.Default.class,
- configuration.getApplib().getAnnotation().getDomainObjectLayout().getTitleUiEvent().isPostForDefault()))
+ isPostForDefault))
.map(titleUiEventClass -> {
- final String translationContext;
- if(facetHolder instanceof ObjectSpecification) {
- final ObjectSpecification facetHolderAsSpec = (ObjectSpecification) facetHolder; // bit naughty...
- translationContext = facetHolderAsSpec.getCorrespondingClass().getCanonicalName();
- } else {
- translationContext = null;
- }
-
return new TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent(
- titleUiEventClass, translationContext, metamodelEventService, facetHolder);
+ titleUiEventClass,
+ translationContextFor(facetHolder),
+ metamodelEventService,
+ facetHolder);
})
.orElse(null);
}
@@ -91,6 +95,13 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
if(owningAdapter == null) {
return null;
}
+
+ val underlyingTitleFacet = underlyingTitleFacet();
+ if(underlyingTitleFacet != null) {
+ // underlyingTitleFacet always takes precedence
+ return underlyingTitleFacet.title(owningAdapter);
+ }
+
final TitleUiEvent<Object> titleUiEvent = newTitleUiEvent(owningAdapter);
@@ -100,19 +111,33 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
if(translatedTitle != null) {
return translatedTitle.translate(translationService, translationContext);
}
- final String title = titleUiEvent.getTitle();
-
- if(title == null) {
- // ie no subscribers out there...
- final Facet underlyingFacet = getUnderlyingFacet();
- if(underlyingFacet instanceof TitleFacet) {
- final TitleFacet underlyingTitleFacet = (TitleFacet) underlyingFacet;
- return underlyingTitleFacet.title(owningAdapter);
- }
+ return titleUiEvent.getTitle();
+ }
+
+ @Override
+ public void appendAttributesTo(final Map<String, Object> attributeMap) {
+ super.appendAttributesTo(attributeMap);
+ attributeMap.put("titleUiEventClass", titleUiEventClass);
+ }
+
+ // -- HELPER
+
+ private TitleFacet underlyingTitleFacet() {
+ val underlyingFacet = getUnderlyingFacet();
+ if(underlyingFacet instanceof TitleFacet) {
+ return (TitleFacet) underlyingFacet;
}
- return title;
+ return null;
}
+ private static String translationContextFor(final FacetHolder facetHolder) {
+ if(facetHolder instanceof ObjectSpecification) {
+ val facetHolderAsSpec = (ObjectSpecification) facetHolder; // bit naughty...
+ return facetHolderAsSpec.getCorrespondingClass().getCanonicalName();
+ }
+ return null;
+ }
+
private TitleUiEvent<Object> newTitleUiEvent(final ManagedObject owningAdapter) {
final Object domainObject = owningAdapter.getPojo();
return newTitleUiEvent(domainObject);
@@ -128,8 +153,5 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
}
}
- @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
- super.appendAttributesTo(attributeMap);
- attributeMap.put("titleUiEventClass", titleUiEventClass);
- }
+
}