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 2022/09/05 03:41:49 UTC

[isis] branch master updated (f40ecae87c -> 42068daada)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


    from f40ecae87c ISIS-3199: simplify ObjectBookmarker
     new f8cf232220 ISIS-3199: further simplify ObjectBookmarker
     new 42068daada ISIS-3199: simplify ObjectCreator

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../metamodel/objectmanager/ObjectBookmarker.java  | 53 +---------------
 ...tor_builtinHandlers.java => ObjectCreator.java} | 26 ++++----
 .../metamodel/objectmanager/ObjectManager.java     |  3 +-
 .../objectmanager/ObjectManagerDefault.java        |  1 -
 .../objectmanager/create/ObjectCreator.java        | 74 ----------------------
 .../core/metamodel/spec/ObjectSpecification.java   |  7 +-
 .../memento/_ObjectMementoForScalar.java           |  3 +-
 7 files changed, 21 insertions(+), 146 deletions(-)
 rename core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/{create/ObjectCreator_builtinHandlers.java => ObjectCreator.java} (87%)
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator.java


[isis] 01/02: ISIS-3199: further simplify ObjectBookmarker

Posted by ah...@apache.org.
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 f8cf23222021969a8f247df7e79b40129156b98d
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Sep 5 05:25:50 2022 +0200

    ISIS-3199: further simplify ObjectBookmarker
---
 .../metamodel/objectmanager/ObjectBookmarker.java  | 53 ++--------------------
 1 file changed, 3 insertions(+), 50 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectBookmarker.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectBookmarker.java
index f1c92af48e..ad7fcdd096 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectBookmarker.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectBookmarker.java
@@ -18,13 +18,9 @@
  */
 package org.apache.isis.core.metamodel.objectmanager;
 
-import java.util.List;
 import java.util.Optional;
 
 import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.Oid;
-import org.apache.isis.commons.handler.ChainOfResponsibility;
-import org.apache.isis.core.metamodel.object.Bookmarkable;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 
 /**
@@ -34,56 +30,13 @@ public interface ObjectBookmarker {
 
     Optional<Bookmark> bookmarkObject(ManagedObject managedObject);
 
-    // -- HANDLER
-
-    public interface Handler extends ChainOfResponsibility.Handler<ManagedObject, Optional<Bookmark>> {}
-
     // -- FACTORY
 
     public static ObjectBookmarker createDefault() {
         return managedObject ->
-            ChainOfResponsibility.named(
-                    "ObjectBookmarker",
-                    handlers)
-            .handle(managedObject);
-    }
-
-    // -- HANDLERS
-
-    static final List<Handler> handlers = List.of(BuiltinHandlers.values());
-
-    enum BuiltinHandlers implements Handler {
-        GuardAgainstOid {
-            @Override public boolean isHandling(final ManagedObject managedObject) {
-                return managedObject.getPojo() instanceof Oid;
-            }
-            @Override
-            public Optional<Bookmark> handle(final ManagedObject managedObject) {
-                throw new IllegalArgumentException("Cannot create a Bookmark for pojo, "
-                        + "when pojo is instance of Bookmark. You might want to ask "
-                        + "ObjectAdapterByIdProvider for an ObjectAdapter instead.");
-            }
-        },
-        BookmarkForBookmarkable {
-            @Override
-            public boolean isHandling(final ManagedObject managedObject) {
-                return managedObject instanceof Bookmarkable;
-            }
-            @Override
-            public Optional<Bookmark> handle(final ManagedObject managedObject) {
-                return managedObject.getBookmark();
-            }
-        },
-        BookmarkForOthers {
-            @Override
-            public boolean isHandling(final ManagedObject managedObject) {
-                return true; // try to handle anything
-            }
-            @Override
-            public Optional<Bookmark> handle(final ManagedObject managedObject) {
-                return Optional.empty();
-            }
-        };
+            managedObject==null
+                    ? Optional.empty()
+                    : managedObject.getBookmark();
     }
 
 }


[isis] 02/02: ISIS-3199: simplify ObjectCreator

Posted by ah...@apache.org.
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 42068daada32e92821652cb05cdb6de9127be7a7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Sep 5 05:41:45 2022 +0200

    ISIS-3199: simplify ObjectCreator
---
 ...tor_builtinHandlers.java => ObjectCreator.java} | 26 ++++----
 .../metamodel/objectmanager/ObjectManager.java     |  3 +-
 .../objectmanager/ObjectManagerDefault.java        |  1 -
 .../objectmanager/create/ObjectCreator.java        | 74 ----------------------
 .../core/metamodel/spec/ObjectSpecification.java   |  7 +-
 .../memento/_ObjectMementoForScalar.java           |  3 +-
 6 files changed, 18 insertions(+), 96 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator_builtinHandlers.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectCreator.java
similarity index 87%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator_builtinHandlers.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectCreator.java
index ed44f7c1c0..d36705e147 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator_builtinHandlers.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectCreator.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.metamodel.objectmanager.create;
+package org.apache.isis.core.metamodel.objectmanager;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Modifier;
@@ -38,14 +38,22 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 /**
+ * Handles injection and lifecycle callbacks.
  *
  * @since 2.0
- *
  */
-final class ObjectCreator_builtinHandlers {
+public interface ObjectCreator {
+
+    ManagedObject createObject(ObjectSpecification objectSpecification);
+
+    // -- FACTORY
+
+    public static ObjectCreator createDefault(final MetaModelContext metaModelContext) {
+        return new DefaultCreationHandler(metaModelContext);
+    }
 
     @Value @Log4j2
-    public static class DefaultCreationHandler implements ObjectCreator.Handler {
+    public static class DefaultCreationHandler implements ObjectCreator {
 
         @Getter
         private final @NonNull MetaModelContext metaModelContext;
@@ -55,15 +63,9 @@ final class ObjectCreator_builtinHandlers {
             getMetaModelContext().getServiceRegistry()
                     .lookupServiceElseFail(ObjectLifecyclePublisher.class);
 
-        @Override
-        public boolean isHandling(final ObjectCreator.Request objectCreateRequest) {
-            return true;
-        }
 
         @Override
-        public ManagedObject handle(final ObjectCreator.Request objectCreateRequest) {
-
-            val spec = objectCreateRequest.getObjectSpecification();
+        public ManagedObject createObject(final ObjectSpecification spec) {
 
             if (log.isDebugEnabled()) {
                 log.debug("creating instance of {}", spec);
@@ -107,8 +109,6 @@ final class ObjectCreator_builtinHandlers {
 
         }
 
-
-
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
index 5e66ca88d3..82a1240ac7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManager.java
@@ -30,7 +30,6 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.objectmanager.detach.ObjectDetacher;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
 import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemorizer;
@@ -70,7 +69,7 @@ public interface ObjectManager {
      * Creates and initializes an instance conforming to given request parameters.
      * @param objectCreateRequest
      */
-    public default ManagedObject createObject(final ObjectCreator.Request objectCreateRequest) {
+    public default ManagedObject createObject(final ObjectSpecification objectCreateRequest) {
         return getObjectCreator().createObject(objectCreateRequest);
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
index 29165f0e72..edd62be56f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
@@ -29,7 +29,6 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.objectmanager.detach.ObjectDetacher;
 import org.apache.isis.core.metamodel.objectmanager.load.ObjectLoader;
 import org.apache.isis.core.metamodel.objectmanager.memento.ObjectMemorizer;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator.java
deleted file mode 100644
index 029de4a6b2..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/create/ObjectCreator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *  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.core.metamodel.objectmanager.create;
-
-import org.apache.isis.commons.handler.ChainOfResponsibility;
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.core.metamodel.context.HasMetaModelContext;
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.object.ManagedObject;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-import lombok.Value;
-
-/**
- * @since 2.0
- */
-public interface ObjectCreator {
-
-    ManagedObject createObject(Request objectLoadRequest);
-
-    // -- REQUEST (VALUE) TYPE
-
-    @Value(staticConstructor = "of")
-    public static class Request {
-        ObjectSpecification objectSpecification;
-    }
-
-    // -- HANDLER
-
-    static interface Handler
-    extends
-        HasMetaModelContext,
-        ChainOfResponsibility.Handler<ObjectCreator.Request, ManagedObject> {
-
-    }
-
-    // -- FACTORY
-
-    public static ObjectCreator createDefault(final MetaModelContext mmc) {
-
-        return request ->
-        ChainOfResponsibility.named(
-                "ObjectCreator",
-                _Lists.of(
-                        new ObjectCreator_builtinHandlers.DefaultCreationHandler(mmc)
-//                      new ObjectCreator_builtinHandlers.GuardAgainstNull(),
-//                      new ObjectCreator_builtinHandlers.LoadService(),
-//                      new ObjectCreator_builtinHandlers.CreateValueDefault(),
-//                      new ObjectCreator_builtinHandlers.CreateViewModel(),
-//                      new ObjectCreator_builtinHandlers.CreateEntity(),
-//                      new ObjectCreator_builtinHandlers.CreateOther()
-                        )
-        )
-        .handle(request);
-
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
index a220b5adde..3dd6e8f30d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ObjectSpecification.java
@@ -69,7 +69,6 @@ import org.apache.isis.core.metamodel.interactions.ObjectTitleContext;
 import org.apache.isis.core.metamodel.interactions.ObjectValidityContext;
 import org.apache.isis.core.metamodel.object.ManagedObject;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
-import org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
 import org.apache.isis.core.metamodel.spec.feature.ObjectActionContainer;
 import org.apache.isis.core.metamodel.spec.feature.ObjectAssociationContainer;
@@ -519,13 +518,11 @@ extends
     }
 
     /**
-     * Delegates to {@link ObjectManager#createObject(org.apache.isis.core.metamodel.objectmanager.create.ObjectCreator.Request)}
+     * Delegates to {@link ObjectManager#createObject(ObjectSpecification)}
      * @since 2.0
      */
     default ManagedObject createObject() {
-        val mmc = getMetaModelContext();
-        val objectCreateRequest = ObjectCreator.Request.of(this);
-        val managedObject = mmc.getObjectManager().createObject(objectCreateRequest);
+        val managedObject = getObjectManager().createObject(this);
         return managedObject;
     }
 
diff --git a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java
index d728bd76fe..9553ce4494 100644
--- a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java
+++ b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/memento/_ObjectMementoForScalar.java
@@ -96,7 +96,8 @@ implements HasLogicalType, Serializable, ObjectMemento {
 
         val spec = adapter.getSpecification();
 
-        if(spec.isIdentifiable() || spec.isParented() ) {
+        if(spec.isIdentifiable()
+                || spec.isParented() ) {
             val hintId = adapter.getPojo() instanceof HintIdProvider
                  ? ((HintIdProvider) adapter.getPojo()).hintId()
                  : null;