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/04/17 13:49:05 UTC

[isis] branch master updated: ISIS-2340: serialization fixes (part 3)

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 980b4f7  ISIS-2340: serialization fixes (part 3)
980b4f7 is described below

commit 980b4f7912d95b3f8173931241115fdfd6bab84e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Apr 17 15:48:50 2020 +0200

    ISIS-2340: serialization fixes (part 3)
---
 .../isis/viewer/wicket/model/links/LinkAndLabel.java  |  3 ++-
 .../isis/viewer/wicket/model/models/EntityModel.java  | 19 ++++++++++++++-----
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
index a9e4533..fd2a386 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/links/LinkAndLabel.java
@@ -92,7 +92,8 @@ public final class LinkAndLabel extends ActionUiModel<AbstractLink> implements S
             this.named = target.getNamed();
             this.actionHolder = (EntityModel) target.getActionHolder();
             // make sure we do this without side-effects
-            this.actionHolderSpecId = actionHolder.getTypeOfSpecification().getSpecId(); 
+            this.actionHolderSpecId = actionHolder.getTypeOfSpecificationId()
+                    .orElseThrow(_Exceptions::unexpectedCodeReach); 
             this.objectActionId = target.getObjectAction().getId();
         }
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 93e2268..a1dda83 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -21,6 +21,7 @@ package org.apache.isis.viewer.wicket.model.models;
 
 import java.io.Serializable;
 import java.util.Map;
+import java.util.Optional;
 
 import javax.annotation.Nullable;
 
@@ -66,7 +67,7 @@ extends BookmarkableModel<ManagedObject>
 implements ObjectAdapterModel, UiHintContainer, ObjectUiModel {
 
     private static final long serialVersionUID = 1L;
-
+    
     // -- FACTORY METHODS FOR PAGE PARAMETERS
 
     /**
@@ -90,6 +91,7 @@ implements ObjectAdapterModel, UiHintContainer, ObjectUiModel {
     }
 
     private final Map<PropertyMemento, ScalarModel> propertyScalarModels;
+    
     private ObjectMemento adapterMemento;
     private ObjectMemento contextAdapterIfAny;
 
@@ -264,10 +266,17 @@ implements ObjectAdapterModel, UiHintContainer, ObjectUiModel {
      */
     @Override
     public ObjectSpecification getTypeOfSpecification() {
-        if (adapterMemento == null) {
-            return null;
-        }
-        return getSpecificationFor(adapterMemento.getObjectSpecId());
+        return getTypeOfSpecificationId()
+                .map(this::getSpecificationFor)
+                .orElse(null);
+    }
+    
+    /**
+     * @implNote free of side-effects, used for serialization
+     */
+    public Optional<ObjectSpecId> getTypeOfSpecificationId() {
+        return Optional.ofNullable(adapterMemento)
+                .map(ObjectMemento::getObjectSpecId);
     }
 
     private ObjectSpecification getSpecificationFor(ObjectSpecId objectSpecId) {