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 <ahu...@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;