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;
}