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 2be4c78ffe ISIS-3103: split BookmarkServiceDefault into 2 Services
2be4c78ffe is described below

commit 2be4c78ffeb1972af4ba388588e2d9b05e6f1626
Author: Andi Huber <[email protected]>
AuthorDate: Mon Aug 1 08:57:52 2022 +0200

    ISIS-3103: split BookmarkServiceDefault into 2 Services
---
 .../IsisModuleCoreRuntimeServices.java             |  24 ++--
 .../bookmarks/BookmarkServiceDefault.java          |  62 +----------
 .../SerializingAdapterDefault.java}                | 124 ++++++++-------------
 3 files changed, 64 insertions(+), 146 deletions(-)

diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
index 627c1fb5e4..b973496825 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/IsisModuleCoreRuntimeServices.java
@@ -58,6 +58,7 @@ import 
org.apache.isis.core.runtimeservices.recognizer.dae.ExceptionRecognizerFo
 import 
org.apache.isis.core.runtimeservices.repository.RepositoryServiceDefault;
 import org.apache.isis.core.runtimeservices.routing.RoutingServiceDefault;
 import org.apache.isis.core.runtimeservices.scratchpad.ScratchpadDefault;
+import 
org.apache.isis.core.runtimeservices.serializing.SerializingAdapterDefault;
 import org.apache.isis.core.runtimeservices.session.InteractionIdGenerator;
 import org.apache.isis.core.runtimeservices.session.InteractionServiceDefault;
 import org.apache.isis.core.runtimeservices.sitemap.SitemapServiceDefault;
@@ -79,43 +80,44 @@ import 
org.apache.isis.core.runtimeservices.xmlsnapshot.XmlSnapshotServiceDefaul
 
         // @Service's
         BookmarkServiceDefault.class,
-        EntityChangesPublisherDefault.class,
-        EntityPropertyChangePublisherDefault.class,
         CommandDtoFactoryDefault.class,
         CommandExecutorServiceDefault.class,
         CommandPublisherDefault.class,
         EmailNotificationServiceDefault.class,
         EmailServiceDefault.class,
+        EntityChangesPublisherDefault.class,
+        EntityPropertyChangePublisherDefault.class,
+        EventBusServiceSpring.class,
         ExceptionRecognizerServiceDefault.class,
         ExecutionPublisherDefault.class,
-        EventBusServiceSpring.class,
         FactoryServiceDefault.class,
         HomePageResolverServiceDefault.class,
-        ImpersonatedUserHolderDefault.class,
         ImpersonateMenuAdvisorDefault.class,
+        ImpersonatedUserHolderDefault.class,
         InteractionDtoFactoryDefault.class,
-        InteractionServiceDefault.class,
         InteractionIdGenerator.class,
+        InteractionServiceDefault.class,
         JaxbServiceDefault.class,
-        LocaleChoiceProviderDefault.class,
         LanguageProviderDefault.class,
-        ObjectMementoServiceDefault.class,
-        TranslationServicePo.class,
+        LocaleChoiceProviderDefault.class,
         MemberExecutorServiceDefault.class,
         MenuBarsLoaderServiceDefault.class,
         MenuBarsServiceBS.class,
         MessageServiceDefault.class,
         ObjectIconServiceDefault.class,
+        ObjectLifecyclePublisherDefault.class,
+        ObjectMementoServiceDefault.class,
+        SchemaValueMarshallerDefault.class,
         ScratchpadDefault.class,
+        SerializingAdapterDefault.class,
         SitemapServiceDefault.class,
+        SpringBeansService.class,
         TransactionServiceSpring.class,
+        TranslationServicePo.class,
         UrlEncodingServiceWithCompression.class,
         WrapperFactoryDefault.class,
         XmlServiceDefault.class,
         XmlSnapshotServiceDefault.class,
-        ObjectLifecyclePublisherDefault.class,
-        SchemaValueMarshallerDefault.class,
-        SpringBeansService.class,
 
         // @Controller
         RoutingServiceDefault.class,
diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
index 8146043e15..87040c07b0 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.runtimeservices.bookmarks;
 
-import java.io.Serializable;
 import java.util.Optional;
 
 import javax.annotation.Priority;
@@ -34,19 +33,15 @@ import 
org.apache.isis.applib.exceptions.unrecoverable.ObjectNotFoundException;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkHolder;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.bookmark.IdStringifier;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
-import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.core.runtime.idstringifier.IdStringifierLookupService;
 import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
 
 import lombok.val;
@@ -58,7 +53,7 @@ import lombok.val;
 @Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".BookmarkServiceDefault")
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
-public class BookmarkServiceDefault implements BookmarkService, 
SerializingAdapter {
+public class BookmarkServiceDefault implements BookmarkService {
 
     @Inject private SpecificationLoader specificationLoader;
     @Inject private WrapperFactory wrapperFactory;
@@ -102,13 +97,6 @@ public class BookmarkServiceDefault implements 
BookmarkService, SerializingAdapt
                 objectManager.bookmarkObject(adapter));
     }
 
-    private Object unwrapped(final Object domainObject) {
-        return wrapperFactory != null
-                ? wrapperFactory.unwrap(domainObject)
-                : domainObject;
-    }
-
-
     @Override
     public Optional<Bookmark> bookmarkFor(
             final @Nullable Class<?> cls,
@@ -136,50 +124,12 @@ public class BookmarkServiceDefault implements 
BookmarkService, SerializingAdapt
                             : "<null>"));
     }
 
-    // -- SERIALIZING ADAPTER IMPLEMENTATION
-
-    @Override
-    public <T> T read(final Class<T> valueClass, final Serializable value) {
-
-        val idStringifierIfAny = idStringifierLookupService.lookup(valueClass);
-        if(idStringifierIfAny.isPresent()) {
-            final IdStringifier<T> idStringifier = idStringifierIfAny.get();
-            return idStringifier.destring((String)value, null);
-        }
-
-        // see if the value can be handled as a Bookmark
-        if(Bookmark.class.equals(valueClass)) {
-            return _Casts.uncheckedCast(value);
-        }
-
-        // otherwise, perhaps the value itself is a Bookmark, in which case we 
treat it as a
-        // reference to an Object (probably an entity) to be looked up.
-        if(Bookmark.class.isAssignableFrom(value.getClass())) {
-            final Bookmark valueAsBookmark = (Bookmark) value;
-            return _Casts.uncheckedCast(lookup(valueAsBookmark).orElse(null));
-        }
-
-        return _Casts.uncheckedCast(value);
-    }
-
-    @Override
-    public Serializable write(final Object value) {
-        return write(_Casts.uncheckedCast(value), value.getClass());
-    }
-
-    private <T> Serializable write(final T value, final Class<T> aClass) {
-
-        Optional<IdStringifier<T>> idStringifierIfAny = 
idStringifierLookupService.lookup(aClass);
-        if(idStringifierIfAny.isPresent()) {
-            final IdStringifier<T> idStringifier = idStringifierIfAny.get();
-            return idStringifier.enstring(value);
-        }
-
-        return bookmarkForElseFail(value);
-    }
-
     // -- HELPER
 
-    @Inject IdStringifierLookupService idStringifierLookupService;
+    private Object unwrapped(final Object domainObject) {
+        return wrapperFactory != null
+                ? wrapperFactory.unwrap(domainObject)
+                : domainObject;
+    }
 
 }
diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/serializing/SerializingAdapterDefault.java
similarity index 76%
copy from 
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
copy to 
core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/serializing/SerializingAdapterDefault.java
index 8146043e15..d70ea3b2c9 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/bookmarks/BookmarkServiceDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/serializing/SerializingAdapterDefault.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.core.runtimeservices.bookmarks;
+package org.apache.isis.core.runtimeservices.serializing;
 
 import java.io.Serializable;
 import java.util.Optional;
@@ -32,19 +32,15 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.exceptions.unrecoverable.ObjectNotFoundException;
 import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.bookmark.BookmarkHolder;
-import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.bookmark.IdStringifier;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.commons.internal.base._Casts;
-import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.commons.internal.memento._Mementos.SerializingAdapter;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.runtime.idstringifier.IdStringifierLookupService;
 import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
@@ -55,31 +51,62 @@ import lombok.val;
  * This service enables a serializable 'bookmark' to be created for an entity.
  */
 @Service
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".BookmarkServiceDefault")
+@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".SerializingAdapterDefault")
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
-public class BookmarkServiceDefault implements BookmarkService, 
SerializingAdapter {
+public class SerializingAdapterDefault implements SerializingAdapter {
 
     @Inject private SpecificationLoader specificationLoader;
     @Inject private WrapperFactory wrapperFactory;
     @Inject private ObjectManager objectManager;
     @Inject private MetaModelContext mmc;
+    @Inject private IdStringifierLookupService idStringifierLookupService;
 
     @Override
-    public Optional<Object> lookup(final @Nullable BookmarkHolder 
bookmarkHolder) {
-        if(bookmarkHolder == null) {
-            return Optional.empty();
+    public <T> T read(final Class<T> valueClass, final Serializable value) {
+
+        val idStringifierIfAny = idStringifierLookupService.lookup(valueClass);
+        if(idStringifierIfAny.isPresent()) {
+            final IdStringifier<T> idStringifier = idStringifierIfAny.get();
+            return idStringifier.destring((String)value, null);
+        }
+
+        // see if the value can be handled as a Bookmark
+        if(Bookmark.class.equals(valueClass)) {
+            return _Casts.uncheckedCast(value);
+        }
+
+        // otherwise, perhaps the value itself is a Bookmark, in which case we 
treat it as a
+        // reference to an Object (probably an entity) to be looked up.
+        if(Bookmark.class.isAssignableFrom(value.getClass())) {
+            final Bookmark valueAsBookmark = (Bookmark) value;
+            return _Casts.uncheckedCast(lookup(valueAsBookmark).orElse(null));
+        }
+
+        return _Casts.uncheckedCast(value);
+    }
+
+    @Override
+    public Serializable write(final Object value) {
+        return write(_Casts.uncheckedCast(value), value.getClass());
+    }
+
+    // -- HELPER
+
+    private <T> Serializable write(final T value, final Class<T> aClass) {
+
+        Optional<IdStringifier<T>> idStringifierIfAny = 
idStringifierLookupService.lookup(aClass);
+        if(idStringifierIfAny.isPresent()) {
+            final IdStringifier<T> idStringifier = idStringifierIfAny.get();
+            return idStringifier.enstring(value);
         }
-        val bookmark = bookmarkHolder.bookmark();
-        return bookmark != null
-                ? lookup(bookmark)
-                : Optional.empty();
+
+        return bookmarkForElseFail(value);
     }
 
     // why would we ever store Service Beans as Bookmarks?
     // - ANSWER: because it might be used by the CommandService to replay a 
command or exec in the background.
-    @Override
-    public Optional<Object> lookup(final @Nullable Bookmark bookmark) {
+    private Optional<Object> lookup(final @Nullable Bookmark bookmark) {
         try {
             return mmc.loadObject(bookmark)
                     .map(ManagedObject::getPojo);
@@ -88,8 +115,7 @@ public class BookmarkServiceDefault implements 
BookmarkService, SerializingAdapt
         }
     }
 
-    @Override
-    public Optional<Bookmark> bookmarkFor(final @Nullable Object domainObject) 
{
+    private Optional<Bookmark> bookmarkFor(final @Nullable Object 
domainObject) {
         if(domainObject == null) {
             return Optional.empty();
         }
@@ -109,22 +135,7 @@ public class BookmarkServiceDefault implements 
BookmarkService, SerializingAdapt
     }
 
 
-    @Override
-    public Optional<Bookmark> bookmarkFor(
-            final @Nullable Class<?> cls,
-            final @Nullable String identifier) {
-
-        if(_Strings.isNullOrEmpty(identifier)
-                || cls==null) {
-            return Optional.empty();
-        }
-        return specificationLoader.specForType(cls)
-                .map(ObjectSpecification::getLogicalType)
-                
.map(logicalType->Bookmark.forLogicalTypeAndIdentifier(logicalType, 
identifier));
-    }
-
-    @Override
-    public Bookmark bookmarkForElseFail(final @Nullable Object domainObject) {
+    private Bookmark bookmarkForElseFail(final @Nullable Object domainObject) {
         return bookmarkFor(domainObject)
                 .orElseThrow(
                         ()->_Exceptions.illegalArgument(
@@ -136,50 +147,5 @@ public class BookmarkServiceDefault implements 
BookmarkService, SerializingAdapt
                             : "<null>"));
     }
 
-    // -- SERIALIZING ADAPTER IMPLEMENTATION
-
-    @Override
-    public <T> T read(final Class<T> valueClass, final Serializable value) {
-
-        val idStringifierIfAny = idStringifierLookupService.lookup(valueClass);
-        if(idStringifierIfAny.isPresent()) {
-            final IdStringifier<T> idStringifier = idStringifierIfAny.get();
-            return idStringifier.destring((String)value, null);
-        }
-
-        // see if the value can be handled as a Bookmark
-        if(Bookmark.class.equals(valueClass)) {
-            return _Casts.uncheckedCast(value);
-        }
-
-        // otherwise, perhaps the value itself is a Bookmark, in which case we 
treat it as a
-        // reference to an Object (probably an entity) to be looked up.
-        if(Bookmark.class.isAssignableFrom(value.getClass())) {
-            final Bookmark valueAsBookmark = (Bookmark) value;
-            return _Casts.uncheckedCast(lookup(valueAsBookmark).orElse(null));
-        }
-
-        return _Casts.uncheckedCast(value);
-    }
-
-    @Override
-    public Serializable write(final Object value) {
-        return write(_Casts.uncheckedCast(value), value.getClass());
-    }
-
-    private <T> Serializable write(final T value, final Class<T> aClass) {
-
-        Optional<IdStringifier<T>> idStringifierIfAny = 
idStringifierLookupService.lookup(aClass);
-        if(idStringifierIfAny.isPresent()) {
-            final IdStringifier<T> idStringifier = idStringifierIfAny.get();
-            return idStringifier.enstring(value);
-        }
-
-        return bookmarkForElseFail(value);
-    }
-
-    // -- HELPER
-
-    @Inject IdStringifierLookupService idStringifierLookupService;
 
 }

Reply via email to