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;

Reply via email to