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/05/15 05:27:36 UTC

[isis] 01/02: ISIS-2340: converts BookmarkableModel class->interface, introduces ManagedObjectModel

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 7c6997d9819f87bf2016fe2b823b2b119699971c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri May 15 05:55:13 2020 +0200

    ISIS-2340: converts BookmarkableModel class->interface, introduces
    ManagedObjectModel
---
 .../webapp/context/IsisWebAppCommonContext.java    |   2 +-
 .../viewer/wicket/model/models/ActionModel.java    |   6 +-
 .../wicket/model/models/BookmarkableModel.java     |  17 +-
 .../viewer/wicket/model/models/EntityModel.java    |   4 +-
 .../wicket/model/models/FormExecutorContext.java   |   3 +-
 .../wicket/model/models/ManagedObjectModel.java    | 175 +++++++++++++++++++++
 .../viewer/wicket/model/models/ModelAbstract.java  |   3 +-
 .../viewer/wicket/ui/components/LabelBase.java     |   4 +-
 .../wicket/ui/components/WebComponentBase.java     |   3 +-
 .../isis/viewer/wicket/ui/pages/WebPageBase.java   |   5 +-
 .../wicket/ui/panels/FormExecutorDefault.java      |   5 +-
 .../wicket/ui/panels/FormExecutorStrategy.java     |   6 +-
 .../isis/viewer/wicket/ui/panels/PanelBase.java    |   5 +-
 .../AuthenticatedWebSessionForIsis.java            |   6 +-
 14 files changed, 207 insertions(+), 37 deletions(-)

diff --git a/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java b/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java
index d9be52b..7038cf5 100644
--- a/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java
+++ b/core/webapp/src/main/java/org/apache/isis/core/webapp/context/IsisWebAppCommonContext.java
@@ -136,7 +136,7 @@ public class IsisWebAppCommonContext implements MetaModelContext.Delegating {
     
     // -- FOR THOSE THAT IMPLEMENT BY DELEGATION
     
-    public static interface Delegating {
+    public static interface HasCommonContext {
         
         IsisWebAppCommonContext getCommonContext();
         
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 63e996e..d7ca6a7 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -63,9 +63,9 @@ import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
 
 import lombok.val;
 
-public class ActionModel 
-extends BookmarkableModel<ManagedObject> 
-implements FormUiModel, FormExecutorContext {
+public final class ActionModel 
+extends ManagedObjectModel 
+implements FormUiModel, FormExecutorContext, BookmarkableModel<ManagedObject> {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkableModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkableModel.java
index cbbdf90..d5c3514 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkableModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/BookmarkableModel.java
@@ -21,23 +21,10 @@ package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 
-import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 import org.apache.isis.viewer.common.model.HasTitle;
 
-public abstract class BookmarkableModel<T> 
-extends ModelAbstract<T>  
-implements HasTitle {
-
-    private static final long serialVersionUID = 1L;
-
-    public BookmarkableModel(IsisWebAppCommonContext commonContext) {
-        super(commonContext);
-    }
-
-    public BookmarkableModel(IsisWebAppCommonContext commonContext, T t) {
-        super(commonContext, t);
-    }
-
+public interface BookmarkableModel<T> 
+extends HasTitle {
 
     /**
      * So can be bookmarked / added to <tt>BookmarkedPagesModel</tt>.
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 013df02..75e9da6 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
@@ -68,8 +68,8 @@ import lombok.extern.log4j.Log4j2;
  */
 @Log4j2
 public class EntityModel 
-extends BookmarkableModel<ManagedObject> 
-implements ObjectAdapterModel, UiHintContainer, ObjectUiModel {
+extends ManagedObjectModel 
+implements ObjectAdapterModel, UiHintContainer, ObjectUiModel, BookmarkableModel<ManagedObject> {
 
     private static final long serialVersionUID = 1L;
     
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
index 2f4a8da..b4c8ab7 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/FormExecutorContext.java
@@ -20,10 +20,11 @@
 package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 import org.apache.isis.viewer.common.model.HasParentUiModel;
 
 public interface FormExecutorContext 
-extends HasParentUiModel<EntityModel> {
+extends HasParentUiModel<EntityModel>, HasCommonContext {
 
     PromptStyle getPromptStyle();
 
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
new file mode 100644
index 0000000..2b6cb54
--- /dev/null
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ManagedObjectModel.java
@@ -0,0 +1,175 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.viewer.wicket.model.models;
+
+import java.util.Objects;
+import java.util.Optional;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.core.commons.internal.base._Casts;
+import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
+import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+
+import lombok.NonNull;
+import lombok.val;
+
+/**
+ * 
+ * @since 2.0
+ *
+ */
+public abstract class ManagedObjectModel
+extends ModelAbstract<ManagedObject> {
+
+    private static final long serialVersionUID = 1L;
+
+    private ObjectMemento memento;
+    
+    protected ManagedObjectModel(
+            @NonNull IsisWebAppCommonContext commonContext) {
+        this(commonContext, null);
+    }
+    
+    protected ManagedObjectModel(
+            @NonNull IsisWebAppCommonContext commonContext, 
+            @Nullable ObjectMemento initialMemento) {
+
+        super(commonContext);
+        this.memento = initialMemento;
+    }
+
+
+    @Override
+    protected ManagedObject load() {
+        if (memento == null) {
+            return null;
+        }
+        return super.getCommonContext().reconstructObject(memento);
+    }
+
+    @Override
+    public void setObject(final ManagedObject adapter) {
+
+        if(ManagedObject.isNullOrUnspecifiedOrEmpty(adapter)) {
+            super.setObject(null);
+            return;
+        }
+
+        super.setObject(adapter);
+
+        if(adapter.getSpecification().isParentedOrFreeCollection()) {
+            val pojo = adapter.getPojo();
+            memento = super.getMementoService()
+                    .mementoForPojos(_Casts.uncheckedCast(pojo), getTypeOfSpecificationId()
+                            .orElseGet(()->adapter.getElementSpecification().get().getSpecId()));
+        } else {
+
+            memento = super.getMementoService().mementoForObject(adapter);
+        }
+    }
+    
+    public Bookmark asHintingBookmarkIfSupported() {
+        return memento!=null
+                ? memento.asHintingBookmarkIfSupported()
+                : null;
+    }
+
+    public Bookmark asBookmarkIfSupported() {
+        return memento!=null
+                ? memento.asBookmarkIfSupported()
+                : null;
+    }
+    
+    public String oidStringIfSupported() {
+        return memento!=null
+                ? memento.toString()
+                : null;
+    }
+    
+    /**
+     * @implNote free of side-effects, used for serialization
+     */
+    public Optional<ObjectSpecId> getTypeOfSpecificationId() {
+        return Optional.ofNullable(memento)
+                .map(ObjectMemento::getObjectSpecId);
+    }
+    
+    public boolean hasAsRootPolicy() {
+        return hasBookmarkPolicy(BookmarkPolicy.AS_ROOT);
+    }
+
+    public boolean hasAsChildPolicy() {
+        return hasBookmarkPolicy(BookmarkPolicy.AS_CHILD);
+    }
+
+    private boolean hasBookmarkPolicy(final BookmarkPolicy policy) {
+        final BookmarkPolicyFacet facet = getBookmarkPolicyFacetIfAny();
+        return facet != null && facet.value() == policy;
+    }
+
+    private BookmarkPolicyFacet getBookmarkPolicyFacetIfAny() {
+        final ObjectSpecId specId = getTypeOfSpecificationId().orElse(null);
+        final ObjectSpecification objectSpec = super.getSpecificationLoader().lookupBySpecIdElseLoad(specId);
+        return objectSpec.getFacet(BookmarkPolicyFacet.class);
+    }
+    
+    
+    private transient ObjectSpecification objectSpec; 
+    public ObjectSpecification getTypeOfSpecification() {
+        if(objectSpec==null) {
+            val specId = getTypeOfSpecificationId().orElse(null);
+            objectSpec = super.getSpecificationLoader().lookupBySpecIdElseLoad(specId); 
+        }
+        return objectSpec;
+    }
+    
+    
+    @Deprecated //TODO do not expose this implementation detail
+    public ObjectMemento memento() {
+        return memento;
+    }
+    
+    @Deprecated //TODO do not expose this implementation detail
+    public void memento(ObjectMemento memento) {
+        this.memento = memento;
+    }
+    
+    
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(memento);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if(obj instanceof ManagedObjectModel) {
+            val other = (ManagedObjectModel) obj;
+            return Objects.equals(this.memento, other.memento);
+        }
+        return false;
+    }
+
+}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
index 8fd7a49..06c0aab 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ModelAbstract.java
@@ -23,6 +23,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
 
 import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 
 import lombok.NonNull;
 
@@ -32,7 +33,7 @@ import lombok.NonNull;
  */
 public abstract class ModelAbstract<T> 
 extends LoadableDetachableModel<T> 
-implements IsisWebAppCommonContext.Delegating {
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/LabelBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/LabelBase.java
index 88988b8..8b2fe47 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/LabelBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/LabelBase.java
@@ -18,13 +18,13 @@
  */
 package org.apache.isis.viewer.wicket.ui.components;
 
-import org.apache.wicket.markup.html.WebComponent;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.IModel;
 
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.viewer.wicket.WebAppContextPath;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
 
 /**
@@ -33,7 +33,7 @@ import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
  */
 public abstract class LabelBase
 extends Label
-implements IsisWebAppCommonContext.Delegating {
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/WebComponentBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/WebComponentBase.java
index 9aea7b6..91828f6 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/WebComponentBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/WebComponentBase.java
@@ -24,6 +24,7 @@ import org.apache.wicket.model.IModel;
 import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.viewer.wicket.WebAppContextPath;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
 
 /**
@@ -32,7 +33,7 @@ import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
  */
 public abstract class WebComponentBase
 extends WebComponent
-implements IsisWebAppCommonContext.Delegating {
+implements HasCommonContext {
 
     public WebComponentBase(final String id) {
         super(id);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
index 4ecfec5..345657d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/WebPageBase.java
@@ -26,13 +26,16 @@ import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.config.viewer.wicket.WebAppContextPath;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
 
 /**
  * Provides all the system dependencies for sub-classes.
  * @since 2.0
  */
-public abstract class WebPageBase extends WebPage implements IsisWebAppCommonContext.Delegating {
+public abstract class WebPageBase
+extends WebPage 
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
     
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index 7265d6d..a78e541 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -56,12 +56,11 @@ import org.apache.isis.core.security.authentication.AuthenticationSession;
 import org.apache.isis.core.security.authentication.MessageBroker;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
 import org.apache.isis.core.webapp.context.memento.ObjectMemento;
-import org.apache.isis.viewer.common.model.HasParentUiModel;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
-import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.FormExecutor;
+import org.apache.isis.viewer.wicket.model.models.FormExecutorContext;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOrClobPanelAbstract;
 import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
@@ -72,7 +71,7 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 @Log4j2
-public final class FormExecutorDefault<M extends BookmarkableModel<ManagedObject> & HasParentUiModel<EntityModel>>
+public final class FormExecutorDefault<M extends FormExecutorContext>
 implements FormExecutor {
 
     private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
index 633840c..4977c8a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorStrategy.java
@@ -21,11 +21,9 @@ package org.apache.isis.viewer.wicket.ui.panels;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 
 import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.viewer.common.model.HasParentUiModel;
-import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
-import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.FormExecutorContext;
 
-public interface FormExecutorStrategy<M extends BookmarkableModel<ManagedObject> & HasParentUiModel<EntityModel>> {
+public interface FormExecutorStrategy<M extends FormExecutorContext> {
 
     M getModel();
 
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
index 2bd6f7c..fea5f5a 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelBase.java
@@ -34,6 +34,7 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.runtime.iactn.IsisInteractionFactory;
 import org.apache.isis.core.security.authentication.MessageBroker;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 import org.apache.isis.viewer.common.model.header.HeaderUiModel;
 import org.apache.isis.viewer.common.model.header.HeaderUiModelProvider;
 import org.apache.isis.viewer.wicket.model.common.CommonContextUtils;
@@ -52,7 +53,9 @@ import org.apache.isis.viewer.wicket.ui.pages.PageNavigationService;
  * Provides the <em>common context</em> for all implementing sub-classes.
  * @since 2.0
  */
-public class PanelBase<T> extends GenericPanel<T> implements IsisWebAppCommonContext.Delegating {
+public class PanelBase<T> 
+extends GenericPanel<T>
+implements HasCommonContext {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
index 6b02ef5..212e246 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/AuthenticatedWebSessionForIsis.java
@@ -39,6 +39,7 @@ import org.apache.isis.core.security.authentication.AuthenticationRequestPasswor
 import org.apache.isis.core.security.authentication.AuthenticationSession;
 import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
+import org.apache.isis.core.webapp.context.IsisWebAppCommonContext.HasCommonContext;
 import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModel;
 import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.BreadcrumbModelProvider;
@@ -53,8 +54,9 @@ import lombok.val;
  * also tracks thread usage (so that multiple concurrent requests are all
  * associated with the same session).
  */
-public class AuthenticatedWebSessionForIsis extends AuthenticatedWebSession 
-implements BreadcrumbModelProvider, BookmarkedPagesModelProvider, IsisWebAppCommonContext.Delegating {
+public class AuthenticatedWebSessionForIsis 
+extends AuthenticatedWebSession 
+implements BreadcrumbModelProvider, BookmarkedPagesModelProvider, HasCommonContext {
 
     private static final long serialVersionUID = 1L;