This is an automated email from the ASF dual-hosted git repository. danhaywood pushed a commit to branch ISIS-3183 in repository https://gitbox.apache.org/repos/asf/isis.git
commit 5b2a058e9a9351912e8c452f6d73a2bb270e1f44 Author: Dan Haywood <[email protected]> AuthorDate: Fri Aug 26 13:46:50 2022 +0100 ISIS-3181: adds guard when target's adapter is unknown. --- .../entity/icontitle/EntityIconAndTitlePanel.java | 44 +++++++++++++--------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java index 4b2718e57a..5f2f5ad803 100644 --- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java +++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java @@ -30,6 +30,7 @@ import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFactor import org.apache.isis.core.metamodel.spec.ManagedObject; import org.apache.isis.core.metamodel.spec.ManagedObjects; import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil; +import org.apache.isis.core.metamodel.spec.ObjectSpecification; import org.apache.isis.core.metamodel.spec.PackedManagedObject; import org.apache.isis.viewer.wicket.model.models.EntityModel; import org.apache.isis.viewer.wicket.model.models.ObjectAdapterModel; @@ -103,32 +104,41 @@ extends PanelAbstract<ManagedObject, ObjectAdapterModel> { private AbstractLink createLinkWithIconAndTitle() { + ObjectSpecification typeOfSpecification = getModel().getTypeOfSpecification(); final ManagedObject targetAdapter = getTargetAdapter(); final AbstractLink link = createDynamicallyVisibleLink(targetAdapter); if(targetAdapter != null) { - val spec = targetAdapter.getSpecification(); - - final String iconName = spec.getIconName(targetAdapter); - final CssClassFaFactory cssClassFaFactory = spec.getCssClassFaFactory().orElse(null); - if (iconName != null || cssClassFaFactory == null) { - Wkt.imageAddCachable(link, ID_ENTITY_ICON, - getImageResourceCache().resourceReferenceFor(targetAdapter)); - WktComponents.permanentlyHide(link, ID_ENTITY_FONT_AWESOME); - } else { - Label dummy = Wkt.labelAdd(link, ID_ENTITY_FONT_AWESOME, ""); - Wkt.cssAppend(dummy, cssClassFaFactory.asSpaceSeparatedWithAdditional("fa-2x")); + if (ManagedObjects.isNullOrUnspecifiedOrEmpty(targetAdapter)) { WktComponents.permanentlyHide(link, ID_ENTITY_ICON); - } + final String title = "(no object)"; + Wkt.labelAdd(link, ID_ENTITY_TITLE, titleAbbreviated(title)); - final String title = determineTitle(); - Wkt.labelAdd(link, ID_ENTITY_TITLE, titleAbbreviated(title)); + } else { - String entityTypeName = determineFriendlyType() // from actual underlying model - .orElseGet(targetAdapter.getSpecification()::getSingularName); // not sure if this code path is ever reached - WktTooltips.addTooltip(link, entityTypeName, title); + val spec = targetAdapter.getSpecification(); + + final String iconName = spec.getIconName(targetAdapter); + final CssClassFaFactory cssClassFaFactory = spec.getCssClassFaFactory().orElse(null); + if (iconName != null || cssClassFaFactory == null) { + Wkt.imageAddCachable(link, ID_ENTITY_ICON, + getImageResourceCache().resourceReferenceFor(targetAdapter)); + WktComponents.permanentlyHide(link, ID_ENTITY_FONT_AWESOME); + } else { + Label dummy = Wkt.labelAdd(link, ID_ENTITY_FONT_AWESOME, ""); + Wkt.cssAppend(dummy, cssClassFaFactory.asSpaceSeparatedWithAdditional("fa-2x")); + WktComponents.permanentlyHide(link, ID_ENTITY_ICON); + } + + final String title = determineTitle(); + Wkt.labelAdd(link, ID_ENTITY_TITLE, titleAbbreviated(title)); + + String entityTypeName = determineFriendlyType() // from actual underlying model + .orElseGet(spec::getSingularName); // not sure if this code path is ever reached + WktTooltips.addTooltip(link, entityTypeName, title); + } } return link;
