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/11/12 09:01:03 UTC
[isis] branch master updated: ISIS-2877: fixes mixed-in prop. or
coll. not being recognized correctly within DataTableModel.Memento
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 54d5613 ISIS-2877: fixes mixed-in prop. or coll. not being recognized correctly within DataTableModel.Memento
54d5613 is described below
commit 54d56131289acce76a1d641086c956da469c624e
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Nov 12 10:00:53 2021 +0100
ISIS-2877: fixes mixed-in prop. or coll. not being recognized correctly
within DataTableModel.Memento
---
.../java/org/apache/isis/applib/Identifier.java | 9 ++++++++-
.../interactions/managed/ManagedMember.java | 21 +++++++++++++--------
.../managed/nonscalar/DataTableModel.java | 7 ++++++-
...ishingVm_publishingEnabledAnnotatedEntities.java | 2 +-
4 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/Identifier.java b/api/applib/src/main/java/org/apache/isis/applib/Identifier.java
index 2498759..5a90ff8 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/Identifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/Identifier.java
@@ -63,7 +63,14 @@ implements
* (Future work, might introduce a new Type: eg. PARAMETER)
*/
public static enum Type {
- CLASS, PROPERTY_OR_COLLECTION, ACTION;
+ CLASS,
+ PROPERTY_OR_COLLECTION,
+ /**
+ * Mixed in <i>Properties</i> and mixed in <i>Collections</i> are both categorized
+ * as {@link #ACTION}
+ * @apiNote future work might deal with this ambiguity
+ */
+ ACTION;
public boolean isAction() { return this == ACTION; }
public boolean isPropertyOrCollection() { return this == PROPERTY_OR_COLLECTION; }
public boolean isClass() { return this == CLASS; }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
index 62b532a..ec2364b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedMember.java
@@ -50,21 +50,21 @@ implements ManagedFeature {
@RequiredArgsConstructor
public static enum MemberType {
PROPERTY(OneToOneAssociation.class, (spec, propertyId)->
- spec.getAssociation(propertyId)
- .map(property->property.isOneToOneAssociation()?property:null)),
+ spec.getAssociation(propertyId)
+ .map(property->property.isOneToOneAssociation()?property:null)),
COLLECTION(OneToManyAssociation.class, (spec, collectionId)->
- spec.getAssociation(collectionId)
- .map(collection->collection.isOneToManyAssociation()?collection:null)),
+ spec.getAssociation(collectionId)
+ .map(collection->collection.isOneToManyAssociation()?collection:null)),
ACTION(ObjectAction.class, (spec, actionId)->
- spec.getAction(actionId));
+ spec.getAction(actionId));
@Getter private final Class<? extends ObjectMember> memberType;
private final BiFunction<
- ObjectSpecification, String,
- Optional<? extends ObjectMember>
- > memberProvider;
+ ObjectSpecification,
+ String,
+ Optional<? extends ObjectMember>> memberProvider;
public <T extends ObjectMember> Optional<T> lookup(
final @NonNull ManagedObject owner,
@@ -74,6 +74,11 @@ implements ManagedFeature {
return _Casts.uncheckedCast(member);
}
+ public boolean isPropertyOrCollection() {
+ return this == PROPERTY
+ || this == COLLECTION;
+ }
+
}
/**
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
index 2af0504..8b04518 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/nonscalar/DataTableModel.java
@@ -44,6 +44,7 @@ import org.apache.isis.core.metamodel.interactions.managed.ManagedAction;
import org.apache.isis.core.metamodel.interactions.managed.ManagedAction.MementoForArgs;
import org.apache.isis.core.metamodel.interactions.managed.ManagedCollection;
import org.apache.isis.core.metamodel.interactions.managed.ManagedMember;
+import org.apache.isis.core.metamodel.interactions.managed.ManagedMember.MemberType;
import org.apache.isis.core.metamodel.interactions.managed.MultiselectChoices;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
@@ -240,13 +241,16 @@ implements MultiselectChoices {
final @Nullable DataTableModel table,
final @Nullable MementoForArgs argsMemento) {
val managedMember = table.managedMember;
+
return new Memento(
managedMember.getIdentifier(),
+ managedMember.getMemberType(),
table.where,
argsMemento);
}
private final Identifier featureId;
+ private final MemberType memberType;
private final Where where;
private final MementoForArgs argsMemento;
@@ -254,7 +258,8 @@ implements MultiselectChoices {
val memberId = featureId.getMemberLogicalName();
- if(featureId.getType().isPropertyOrCollection()) {
+ if(memberType.isPropertyOrCollection()) {
+ //if(featureId.getType().isPropertyOrCollection()) {
// bypass domain events
val collInteraction = CollectionInteraction.start(owner, memberId, where);
val managedColl = collInteraction.getManagedCollection().orElseThrow();
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
index 61c0877..273c6df 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
@@ -34,7 +34,7 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObje
public class DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities {
@SuppressWarnings("unused")
- private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
+ private final DomainObjectEntityChangePublishingVm mixee;
public List<? extends DomainObjectEntityChangePublishingEnabledEntity> coll() {
return publishingEnabledEntities.all();