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 2021/05/10 13:02:49 UTC
[isis] branch master updated: ISIS-2648: cleaning up
EntityCollectionModel, also some notes
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 5af25b0 ISIS-2648: cleaning up EntityCollectionModel, also some notes
5af25b0 is described below
commit 5af25b07c5ad8b9eaffeaf5f578d4e0c2e091b17
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 10 15:02:12 2021 +0200
ISIS-2648: cleaning up EntityCollectionModel, also some notes
---
.../wicket/model/models/EntityCollectionModel.java | 57 +++++++++++++---------
.../model/models/EntityCollectionModelDummy.java | 19 --------
.../models/EntityCollectionModelParented.java | 31 +++++-------
.../models/EntityCollectionModelStandalone.java | 20 --------
.../viewer/wicket/model/models/EntityModel.java | 8 +--
.../selector/CollectionSelectorHelper.java | 6 +--
.../selector/CollectionSelectorPanel.java | 3 +-
.../CollectionContentsAsAjaxTablePanel.java | 6 +--
8 files changed, 56 insertions(+), 94 deletions(-)
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
index bf2e326..54a25a3 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModel.java
@@ -112,24 +112,6 @@ extends
return Can.empty();
}
- // -- INTERACTION SUPPORT
-
- /**
- * Returns optionally the a {@link ManagedCollection}, based on whether
- * this is a parented collection.
- */
- Optional<ManagedCollection> getManagedCollection();
-
- default Optional<ManagedObject> getParentObject() {
- return getManagedCollection()
- .map(ManagedCollection::getOwner);
- }
-
- default Optional<ObjectSpecification> getParentObjectSpecification() {
- return getParentObject()
- .map(ManagedObject::getSpecification);
- }
-
// -- TOGGLE SUPPORT
Can<ObjectMemento> getToggleMementosList();
@@ -142,12 +124,41 @@ extends
String getName();
int getPageSize();
- // -- REFACTORING TODO ...
+ // -- PARENTED STUFF
+
+ default Optional<EntityCollectionModelParented> parented() {
+ return this instanceof EntityCollectionModelParented
+ ? Optional.of((EntityCollectionModelParented)this)
+ : Optional.empty();
+ }
+
+ default Optional<Bookmark> parentedHintingBookmark() {
+ return parented()
+ .map(EntityCollectionModelParented::asHintingBookmark);
+ }
+
+ default Optional<ObjectMemento> parentedObjectAdapterMemento() {
+ return parented()
+ .map(EntityCollectionModelParented::getParentObjectAdapterMemento);
+ }
+
+ /**
+ * Returns optionally the a {@link ManagedCollection}, based on whether
+ * this is a parented collection.
+ */
+ default Optional<ManagedCollection> parentedManagedCollection() {
+ return parented()
+ .map(EntityCollectionModelParented::getManagedCollection);
+ }
- @Deprecated
- ObjectMemento getParentObjectAdapterMemento();
+ default Optional<ManagedObject> parentedParentObject() {
+ return parentedManagedCollection()
+ .map(ManagedCollection::getOwner);
+ }
- @Deprecated
- Bookmark asHintingBookmarkIfSupported();
+ default Optional<ObjectSpecification> parentedParentObjectSpecification() {
+ return parentedParentObject()
+ .map(ManagedObject::getSpecification);
+ }
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelDummy.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelDummy.java
index 60ab980..36f7bd0 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelDummy.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelDummy.java
@@ -20,14 +20,10 @@ package org.apache.isis.viewer.wicket.model.models;
import java.util.Collections;
import java.util.List;
-import java.util.Optional;
-import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.interactions.managed.ManagedCollection;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.runtime.memento.ObjectMemento;
import lombok.NonNull;
@@ -53,11 +49,6 @@ extends EntityCollectionModelAbstract {
}
@Override
- public Optional<ManagedCollection> getManagedCollection() {
- return Optional.empty();
- }
-
- @Override
public int getCount() {
return 0;
}
@@ -77,14 +68,4 @@ extends EntityCollectionModelAbstract {
throw _Exceptions.unsupportedOperation();
}
- @Override
- public ObjectMemento getParentObjectAdapterMemento() {
- throw _Exceptions.unsupportedOperation();
- }
-
- @Override
- public Bookmark asHintingBookmarkIfSupported() {
- return null;
- }
-
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java
index 2d92e1a..3613db4 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelParented.java
@@ -29,7 +29,6 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.interactions.managed.ManagedCollection;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.MixedIn;
@@ -51,6 +50,7 @@ implements
private static final long serialVersionUID = 1L;
// TODO parent object model, maybe should not be exposed
+ // maybe could be resolved in the process of decoupling the ActionModel from Wicket
@Getter private final @NonNull EntityModel entityModel;
@Getter(onMethod_ = {@Override}) private int count;
@@ -98,7 +98,7 @@ implements
@Override
public Can<ObjectAction> getAssociatedActions() {
- val managedCollection = getManagedCollection().orElse(null);
+ val managedCollection = getManagedCollection();
if(managedCollection==null) {
return Can.empty();
}
@@ -130,12 +130,8 @@ implements
@Override
protected List<ManagedObject> load() {
- final ManagedObject adapter = getCommonContext()
- .reconstructObject(getParentObjectAdapterMemento());
- final OneToManyAssociation collection = getMetaModel();
-
- final ManagedObject collectionAsAdapter = collection.get(adapter, InteractionInitiatedBy.USER);
+ final ManagedObject collectionAsAdapter = getManagedCollection().getCollectionValue();
val elements = _NullSafe.streamAutodetect(collectionAsAdapter.getPojo())
.filter(_NullSafe::isPresent) // pojos
@@ -149,12 +145,6 @@ implements
}
@Override
- public Optional<ManagedCollection> getManagedCollection() {
- return Optional.of(ManagedCollection
- .of(entityModel.getManagedObject(), getMetaModel(), Where.NOT_SPECIFIED));
- }
-
- @Override
public String getName() {
return getIdentifier().getMemberName();
}
@@ -164,18 +154,21 @@ implements
return collectionMetaModelMemento.getCollection(this::getSpecificationLoader);
}
+ public ManagedCollection getManagedCollection() {
+ return ManagedCollection
+ .of(entityModel.getManagedObject(), getMetaModel(), Where.NOT_SPECIFIED);
+ }
+
public CollectionLayoutData getLayoutData() {
return entityModel.getCollectionLayoutData();
}
- @Override
- public ObjectMemento getParentObjectAdapterMemento() {
- return entityModel.memento();
+ public Bookmark asHintingBookmark() {
+ return entityModel.asHintingBookmarkIfSupported();
}
- @Override
- public Bookmark asHintingBookmarkIfSupported() {
- return entityModel.asHintingBookmarkIfSupported();
+ public ObjectMemento getParentObjectAdapterMemento() {
+ return entityModel.memento();
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelStandalone.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelStandalone.java
index a08ce18..be2bf62 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelStandalone.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityCollectionModelStandalone.java
@@ -19,13 +19,10 @@
package org.apache.isis.viewer.wicket.model.models;
import java.util.List;
-import java.util.Optional;
-import org.apache.isis.applib.services.bookmark.Bookmark;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.core.metamodel.facets.object.plural.PluralFacet;
-import org.apache.isis.core.metamodel.interactions.managed.ManagedCollection;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
import org.apache.isis.core.runtime.memento.ObjectMemento;
@@ -78,13 +75,6 @@ extends EntityCollectionModelAbstract {
return Variant.STANDALONE;
}
- // -- INTERACTION SUPPORT
-
- @Override
- public Optional<ManagedCollection> getManagedCollection() {
- return Optional.empty();
- }
-
// --
private Can<ObjectMemento> mementoList;
@@ -115,15 +105,5 @@ extends EntityCollectionModelAbstract {
return actionModel.getMetaModel();
}
- @Override
- public ObjectMemento getParentObjectAdapterMemento() {
- return null;
- }
-
- @Override
- public Bookmark asHintingBookmarkIfSupported() {
- return null;
- }
-
}
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 cf3bf56..24bc6ce 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
@@ -309,14 +309,14 @@ implements HasRenderingHints, ObjectAdapterModel, UiHintContainer, ObjectUiModel
this.collectionLayoutData = collectionLayoutData;
}
- private transient ManagedObject contextObject;
+ private transient Optional<ManagedObject> contextObject;
@Override @Synchronized
- public boolean isContextAdapter(ManagedObject other) {
+ public boolean isContextAdapter(final ManagedObject other) {
if(contextObject==null) {
- contextObject = getMementoService().reconstructObject(contextAdapterIfAny);
+ contextObject = Optional.ofNullable(getMementoService().reconstructObject(contextAdapterIfAny));
}
- return Objects.equals(contextObject, other);
+ return Objects.equals(contextObject.orElse(null), other);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
index c39643d..d18b114 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorHelper.java
@@ -116,7 +116,7 @@ public class CollectionSelectorHelper implements Serializable {
private String determineInitialFactory() {
// try to load from session, if can
- final Bookmark bookmark = bookmarkHintIfAny();
+ final Bookmark bookmark = collectionModel.parentedHintingBookmark().orElse(null);
final String sessionAttribute = componentHintKey.get(bookmark);
if(sessionAttribute != null) {
return sessionAttribute;
@@ -153,10 +153,6 @@ public class CollectionSelectorHelper implements Serializable {
}
- private Bookmark bookmarkHintIfAny() {
- return collectionModel.asHintingBookmarkIfSupported();
- }
-
private static List<ComponentFactory> ordered(List<ComponentFactory> componentFactories) {
return orderAjaxTableToEnd(componentFactories);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
index bc6b97f..6f7085b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/selector/CollectionSelectorPanel.java
@@ -149,7 +149,8 @@ extends PanelAbstract<List<ManagedObject>, EntityCollectionModel> {
}
Bookmark domainObjectBookmarkIfAny() {
- return CollectionSelectorPanel.this.getModel().asHintingBookmarkIfSupported();
+ return CollectionSelectorPanel.this.getModel().parentedHintingBookmark().orElse(null);
+
}
@Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 34e7b31..5d4944e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -108,7 +108,7 @@ implements CollectionCountProvider {
val collectionModel = getModel();
addTitleColumn(
columns,
- collectionModel.getParentObjectAdapterMemento(),
+ collectionModel.parentedObjectAdapterMemento().orElse(null),
getWicketViewerSettings().getMaxTitleLengthInParentedTables(),
getWicketViewerSettings().getMaxTitleLengthInStandaloneTables());
@@ -159,7 +159,7 @@ implements CollectionCountProvider {
? Where.PARENTED_TABLES
: Where.STANDALONE_TABLES;
- val parentSpecIfAny = collectionModel.getParentObjectSpecification()
+ val parentSpecIfAny = collectionModel.parentedParentObjectSpecification()
.orElse(null);
val propertyById = _Maps.<String, ObjectAssociation>newLinkedHashMap();
@@ -246,7 +246,7 @@ implements CollectionCountProvider {
val collectionModel = getModel();
- final Optional<ManagedObject> parentObject = collectionModel.getParentObject();
+ final Optional<ManagedObject> parentObject = collectionModel.parentedParentObject();
tableColumnOrderServices.stream()
.map(tableColumnOrderService->