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 08:52:13 UTC

[isis] branch master updated: ISIS-2340: separate some pending model stuff from ScalarModel

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 ae477b2  ISIS-2340: separate some pending model stuff from ScalarModel
ae477b2 is described below

commit ae477b2dba804c3f4e4c91ec31d8446a10194d37
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri May 15 10:52:04 2020 +0200

    ISIS-2340: separate some pending model stuff from ScalarModel
---
 .../viewer/wicket/model/models/ScalarModel.java    | 71 +++-------------------
 .../model/models/ScalarModelWithMultiPending.java  | 36 +++++++++--
 .../model/models/ScalarModelWithPending.java       | 49 +++++++++++----
 .../components/scalars/ScalarPanelAbstract2.java   |  2 +-
 .../scalars/reference/ReferencePanel.java          |  2 +-
 .../ui/components/widgets/select2/Select2.java     |  4 +-
 6 files changed, 79 insertions(+), 85 deletions(-)

diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 5870253..2a47171 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.viewer.wicket.model.models;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Optional;
@@ -211,11 +210,11 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
             val pojos = objectAdapter.getPojo();
             val memento = super.getMementoService()
                     .mementoForPojos(_Casts.uncheckedCast(pojos), getTypeOfSpecification().getSpecId());
-            setPending(memento);
+            setPendingMemento(memento);
         } else {
             val memento = super.getMementoService()
                     .mementoForObject(objectAdapter);
-            setPending(memento);
+            setPendingMemento(memento);
         }
     }
     
@@ -255,60 +254,6 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
         return Collections.unmodifiableList(linkAndLabels);
     }
 
-    /**
-     * @return
-     */
-    public ScalarModelWithPending asScalarModelWithPending() {
-        return new ScalarModelWithPending(){
-
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ObjectMemento getPending() {
-                return ScalarModel.this.getPending();
-            }
-
-            @Override
-            public void setPending(ObjectMemento pending) {
-                ScalarModel.this.setPending(pending);
-            }
-
-            @Override
-            public ScalarModel getScalarModel() {
-                return ScalarModel.this;
-            }
-        };
-    }
-
-    /**
-     * @return
-     */
-    public ScalarModelWithMultiPending asScalarModelWithMultiPending() {
-        return new ScalarModelWithMultiPending(){
-
-            private static final long serialVersionUID = 1L;
-
-            @Override
-            public ArrayList<ObjectMemento> getMultiPending() {
-                ObjectMemento pendingMemento = ScalarModel.this.getPending();
-                return ObjectMemento.unwrapList(pendingMemento)
-                        .orElse(null);
-            }
-
-            @Override
-            public void setMultiPending(final ArrayList<ObjectMemento> pending) {
-                ObjectSpecId specId = getScalarModel().getTypeOfSpecification().getSpecId();
-                ObjectMemento adapterMemento = ObjectMemento.wrapMementoList(pending, specId);
-                ScalarModel.this.setPending(adapterMemento);
-            }
-
-            @Override
-            public ScalarModel getScalarModel() {
-                return ScalarModel.this;
-            }
-        };
-    }
-
     @Override
     public PromptStyle getPromptStyle() {
         final PromptStyleFacet facet = getFacet(PromptStyleFacet.class);
@@ -521,11 +466,11 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
             return hasPending ? getPendingAdapter() : pendingValueModel.getObject();
         }
 
-        public ObjectMemento getPending() {
+        public ObjectMemento getPendingMemento() {
             return pending;
         }
 
-        public void setPending(ObjectMemento selectedAdapterMemento) {
+        public void setPendingMemento(ObjectMemento selectedAdapterMemento) {
             this.pending = selectedAdapterMemento;
             hasPending=true;
         }
@@ -540,12 +485,12 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
         return pendingModel.getPendingAdapter();
     }
 
-    public ObjectMemento getPending() {
-        return pendingModel.getPending();
+    public ObjectMemento getPendingMemento() {
+        return pendingModel.getPendingMemento();
     }
 
-    public void setPending(ObjectMemento selectedAdapterMemento) {
-        pendingModel.setPending(selectedAdapterMemento);
+    public void setPendingMemento(ObjectMemento selectedAdapterMemento) {
+        pendingModel.setPendingMemento(selectedAdapterMemento);
     }
 
     public void clearPending() {
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithMultiPending.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithMultiPending.java
index 2f4ac90..506b211 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithMultiPending.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithMultiPending.java
@@ -21,7 +21,6 @@ package org.apache.isis.viewer.wicket.model.models;
 import java.io.Serializable;
 import java.util.ArrayList;
 
-import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
@@ -41,15 +40,42 @@ public interface ScalarModelWithMultiPending extends Serializable {
     public void setMultiPending(ArrayList<ObjectMemento> pending);
 
     public ScalarModel getScalarModel();
+    
+    public static Model<ArrayList<ObjectMemento>> create(ScalarModel scalarModel) {
+        return Factory.createModel(Factory.asScalarModelWithMultiPending(scalarModel));
+    }
+    
 
     @Log4j2
-    static class Util {
+    static class Factory {
+
+        private static ScalarModelWithMultiPending asScalarModelWithMultiPending(final ScalarModel scalarModel) {
+            return new ScalarModelWithMultiPending(){
+
+                private static final long serialVersionUID = 1L;
+
+                @Override
+                public ArrayList<ObjectMemento> getMultiPending() {
+                    ObjectMemento pendingMemento = scalarModel.getPendingMemento();
+                    return ObjectMemento.unwrapList(pendingMemento)
+                            .orElse(null);
+                }
+
+                @Override
+                public void setMultiPending(final ArrayList<ObjectMemento> pending) {
+                    ObjectSpecId specId = getScalarModel().getTypeOfSpecification().getSpecId();
+                    ObjectMemento adapterMemento = ObjectMemento.wrapMementoList(pending, specId);
+                    scalarModel.setPendingMemento(adapterMemento);
+                }
 
-        public static IModel<ArrayList<ObjectMemento>> createModel(final ScalarModel model) {
-            return createModel(model.asScalarModelWithMultiPending());
+                @Override
+                public ScalarModel getScalarModel() {
+                    return scalarModel;
+                }
+            };
         }
 
-        public static Model<ArrayList<ObjectMemento>> createModel(final ScalarModelWithMultiPending owner) {
+        private static Model<ArrayList<ObjectMemento>> createModel(final ScalarModelWithMultiPending owner) {
             return new Model<ArrayList<ObjectMemento>>() {
 
                 private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
index 686d785..6bf07a3 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModelWithPending.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.model.models;
 
 import java.io.Serializable;
 
-import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
 
 import org.apache.isis.core.webapp.context.memento.ObjectMemento;
@@ -34,33 +33,55 @@ import lombok.extern.log4j.Log4j2;
  */
 public interface ScalarModelWithPending extends Serializable {
 
-    public ObjectMemento getPending();
-    public void setPending(ObjectMemento pending);
+    public ObjectMemento getPendingMemento();
+    public void setPendingMemento(ObjectMemento pending);
 
     public ScalarModel getScalarModel();
 
+    public static Model<ObjectMemento> create(ScalarModel scalarModel) {
+        return Factory.createModel(Factory.asScalarModelWithPending(scalarModel));
+    }
+    
     @Log4j2
-    static class Util {
+    static class Factory {
+        
+        private static ScalarModelWithPending asScalarModelWithPending(final ScalarModel scalarModel) {
+            return new ScalarModelWithPending(){
+
+                private static final long serialVersionUID = 1L;
+
+                @Override
+                public ObjectMemento getPendingMemento() {
+                    return scalarModel.getPendingMemento();
+                }
+
+                @Override
+                public void setPendingMemento(ObjectMemento pending) {
+                    scalarModel.setPendingMemento(pending);
+                }
 
-        public static IModel<ObjectMemento> createModel(final ScalarModel model) {
-            return createModel(model.asScalarModelWithPending());
+                @Override
+                public ScalarModel getScalarModel() {
+                    return scalarModel;
+                }
+            };
         }
 
-        public static Model<ObjectMemento> createModel(final ScalarModelWithPending owner) {
+        private static Model<ObjectMemento> createModel(final ScalarModelWithPending owner) {
             return new Model<ObjectMemento>() {
 
                 private static final long serialVersionUID = 1L;
 
                 @Override
                 public ObjectMemento getObject() {
-                    if (owner.getPending() != null) {
-                        log.debug("pending not null: {}", owner.getPending().toString());
-                        return owner.getPending();
+                    if (owner.getPendingMemento() != null) {
+                        log.debug("pending not null: {}", owner.getPendingMemento().toString());
+                        return owner.getPendingMemento();
                     }
                     log.debug("pending is null");
 
                     final ObjectMemento objectAdapterMemento = owner.getScalarModel().memento();
-                    owner.setPending(objectAdapterMemento);
+                    owner.setPendingMemento(objectAdapterMemento);
 
                     return objectAdapterMemento;
                 }
@@ -68,13 +89,13 @@ public interface ScalarModelWithPending extends Serializable {
                 @Override
                 public void setObject(final ObjectMemento adapterMemento) {
                     log.debug("setting to: {}", (adapterMemento!=null?adapterMemento.toString():null) );
-                    owner.setPending(adapterMemento);
+                    owner.setPendingMemento(adapterMemento);
                     final ScalarModel ownerScalarModel = owner.getScalarModel();
                     if (ownerScalarModel != null) {
                         if(adapterMemento == null) {
                             ownerScalarModel.setObject(null);
                         } else {
-                            final ObjectMemento ownerPending = owner.getPending();
+                            final ObjectMemento ownerPending = owner.getPendingMemento();
                             if (ownerPending != null) {
                                 log.debug("setting to pending: {}", ownerPending.toString());
                                 ownerScalarModel.setObject(
@@ -87,4 +108,6 @@ public interface ScalarModelWithPending extends Serializable {
         }
 
     }
+
+
 }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 637d899..4341526 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -172,7 +172,7 @@ implements ScalarModelSubscriber2 {
         if(valueChanged) {
             if(ManagedObject.isNullOrUnspecifiedOrEmpty(paramValue)) {
                 scalarModel.setObject(null);
-                scalarModel.setPending(null);
+                scalarModel.setPendingMemento(null);
             } else {
                 scalarModel.setObject(paramValue);
                 scalarModel.setPendingAdapter(paramValue);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index fb1ccb0..8952396 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -393,7 +393,7 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
             // flush changes to pending
             ObjectMemento convertedInput = select2.getConvertedInput();
 
-            getModel().setPending(convertedInput);
+            getModel().setPendingMemento(convertedInput);
             if(select2 != null) {
                 select2.getModel().setObject(convertedInput);
             }
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java
index b0a907b..69430f2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2.java
@@ -52,10 +52,10 @@ public class Select2 implements Serializable {
                 ? new Select2(
                         null,
                         Select2MultiChoiceExt.create(id,
-                                ScalarModelWithMultiPending.Util.createModel(scalarModel), scalarModel))
+                                ScalarModelWithMultiPending.create(scalarModel), scalarModel))
                 : new Select2(
                         Select2ChoiceExt.create(id,
-                                ScalarModelWithPending.Util.createModel(scalarModel), scalarModel),
+                                ScalarModelWithPending.create(scalarModel), scalarModel),
                         null);
     }