You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/10/03 11:58:59 UTC

[isis] 16/24: ISIS-1742: simplifies PublishingServiceInternalDefault, removes any reference to the now deleted PublishingService .... simply delegates to PublisherService

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

danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git

commit c4a322d6125b09826853b0c14e44fc63a5c9b7a3
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Oct 3 09:35:47 2017 +0100

    ISIS-1742: simplifies PublishingServiceInternalDefault, removes any reference to the now deleted PublishingService .... simply delegates to PublisherService
---
 .../publish/PublishingServiceInternalDefault.java  | 229 +--------------------
 1 file changed, 1 insertion(+), 228 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
index 74a9592f..1158460 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/publish/PublishingServiceInternalDefault.java
@@ -20,46 +20,29 @@
 package org.apache.isis.core.runtime.services.publish;
 
 import java.sql.Timestamp;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
 import javax.enterprise.context.RequestScoped;
 
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.PublishingChangeKind;
-import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.applib.services.iactn.Interaction;
 import org.apache.isis.applib.services.iactn.InteractionContext;
 import org.apache.isis.applib.services.metrics.MetricsService;
-import org.apache.isis.applib.services.publish.EventMetadata;
-import org.apache.isis.applib.services.publish.EventType;
-import org.apache.isis.applib.services.publish.ObjectStringifier;
 import org.apache.isis.applib.services.publish.PublishedObjects;
 import org.apache.isis.applib.services.publish.PublisherService;
 import org.apache.isis.applib.services.user.UserService;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.adapter.oid.Oid;
-import org.apache.isis.core.metamodel.adapter.oid.OidMarshaller;
-import org.apache.isis.core.metamodel.adapter.oid.RootOid;
 import org.apache.isis.core.metamodel.facetapi.IdentifiedHolder;
-import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.FacetedMethodParameter;
-import org.apache.isis.core.metamodel.facets.actions.action.invocation.CommandUtil;
-import org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFacet;
-import org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.core.metamodel.facets.object.publishedobject.PublishedObjectFacet;
 import org.apache.isis.core.metamodel.services.ixn.InteractionDtoServiceInternal;
 import org.apache.isis.core.metamodel.services.publishing.PublishingServiceInternal;
@@ -69,7 +52,7 @@ import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 
 /**
- * Wrapper around {@link PublishingService}.  Is a no-op if there is no injected service.
+ * Wrapper around {@link PublisherService}.  Is a no-op if there is no injected service.
  */
 @DomainService(
         nature = NatureOfService.DOMAIN,
@@ -78,30 +61,6 @@ import org.apache.isis.core.runtime.system.session.IsisSessionFactory;
 @RequestScoped
 public class PublishingServiceInternalDefault implements PublishingServiceInternal {
 
-    private final static OidMarshaller OID_MARSHALLER = OidMarshaller.INSTANCE;
-
-    //region > static helper functions
-    private Function<ObjectAdapter, ObjectAdapter> notDestroyedElseEmpty() {
-        return new Function<ObjectAdapter, ObjectAdapter>() {
-            public ObjectAdapter apply(ObjectAdapter adapter) {
-                if (adapter == null) {
-                    return null;
-                }
-                if (!adapter.isDestroyed()) {
-                    return adapter;
-                }
-                // objectstores such as JDO prevent the underlying pojo from being touched once it has been deleted.
-                // we therefore replace that pojo with an 'empty' one.
-
-                Object replacementObject = getPersistenceSession()
-                        .instantiateAndInjectServices(adapter.getSpecification());
-                getPersistenceSession().remapRecreatedPojo(adapter, replacementObject);
-                return adapter;
-            }
-        };
-    }
-    //endregion
-
     //region > publishObjects
     @Override
     @Programmatic
@@ -116,55 +75,9 @@ public class PublishingServiceInternalDefault implements PublishingServiceIntern
         final Map<ObjectAdapter, PublishingChangeKind> changeKindByEnlistedAdapter = Maps.newHashMap();
         changeKindByEnlistedAdapter.putAll(changedObjectsServiceInternal.getChangeKindByEnlistedAdapter());
 
-        publishObjectsToPublishingService(changeKindByEnlistedAdapter);
         publishObjectsToPublisherServices(changeKindByEnlistedAdapter);
     }
 
-    private void publishObjectsToPublishingService(final Map<ObjectAdapter, PublishingChangeKind> changeKindByEnlistedAdapter) {
-
-        if(publishingServiceIfAny == null) {
-            return;
-        }
-
-        final String currentUser = userService.getUser().getName();
-        final Timestamp timestamp = clockService.nowAsJavaSqlTimestamp();
-        final ObjectStringifier stringifier = objectStringifier();
-
-        for (final Map.Entry<ObjectAdapter, PublishingChangeKind> adapterAndChange : changeKindByEnlistedAdapter.entrySet()) {
-            final ObjectAdapter enlistedAdapter = adapterAndChange.getKey();
-            final PublishingChangeKind changeKind = adapterAndChange.getValue();
-
-            publishObjectToPublishingService(
-                    enlistedAdapter, changeKind, currentUser, timestamp, stringifier);
-        }
-    }
-
-    private void publishObjectToPublishingService(
-            final ObjectAdapter enlistedAdapter,
-            final PublishingChangeKind changeKind,
-            final String currentUser,
-            final Timestamp timestamp,
-            final ObjectStringifier stringifier) {
-
-        final PublishedObjectFacet publishedObjectFacet =
-                enlistedAdapter.getSpecification().getFacet(PublishedObjectFacet.class);
-        if(publishedObjectFacet == null) {
-            return;
-        }
-
-        final RootOid enlistedAdapterOid = (RootOid) enlistedAdapter.getOid();
-        final String enlistedAdapterClass = CommandUtil.targetClassNameFor(enlistedAdapter);
-        final Bookmark enlistedTarget = enlistedAdapterOid.asBookmark();
-
-        final EventMetadata metadata = newEventMetadata(
-                currentUser, timestamp, changeKind, enlistedAdapterClass, enlistedTarget);
-
-        final Object pojo = ObjectAdapter.Util.unwrap(undeletedElseEmpty(enlistedAdapter));
-        final EventPayload payload = payloadFactory.payloadFor(pojo, changeKind);
-
-        payload.withStringifier(stringifier);
-        publishingServiceIfAny.publish(metadata, payload);
-    }
 
     private void publishObjectsToPublisherServices(
             final Map<ObjectAdapter, PublishingChangeKind> changeKindByEnlistedAdapter) {
@@ -222,148 +135,11 @@ public class PublishingServiceInternalDefault implements PublishingServiceIntern
         if(suppress) {
             return;
         }
-        publishActionToPublishingService(
-                objectAction, identifiedHolder, targetAdapter, parameterAdapters, resultAdapter
-        );
 
         publishToPublisherServices(execution);
     }
 
-    private void publishActionToPublishingService(
-            final ObjectAction objectAction,
-            final IdentifiedHolder identifiedHolder,
-            final ObjectAdapter targetAdapter,
-            final List<ObjectAdapter> parameterAdapters,
-            final ObjectAdapter resultAdapter) {
-        if(publishingServiceIfAny == null) {
-            return;
-        }
-        final String currentUser = userService.getUser().getName();
-        final Timestamp timestamp = clockService.nowAsJavaSqlTimestamp();
-
-        final PublishedActionFacet publishedActionFacet =
-                identifiedHolder.getFacet(PublishedActionFacet.class);
-        if(publishedActionFacet == null) {
-            return;
-        }
-
-        final RootOid adapterOid = (RootOid) targetAdapter.getOid();
-        final String oidStr = OID_MARSHALLER.marshal(adapterOid);
-        final Identifier actionIdentifier = objectAction.getIdentifier();
-        final String title = oidStr + ": " + actionIdentifier.toNameParmsIdentityString();
-
-        final String actionTargetClass = CommandUtil.targetClassNameFor(targetAdapter);
-        final String actionTargetAction = CommandUtil.targetMemberNameFor(objectAction);
-        final Bookmark actionTarget = CommandUtil.bookmarkFor(targetAdapter);
-        final String actionMemberIdentifier = CommandUtil.memberIdentifierFor(objectAction);
-
-        final List<String> parameterNames;
-        final List<Class<?>> parameterTypes;
-        final Class<?> returnType;
-
-        if(identifiedHolder instanceof FacetedMethod) {
-            // should always be the case
-
-            final FacetedMethod facetedMethod = (FacetedMethod) identifiedHolder;
-            returnType = facetedMethod.getType();
-
-            final List<FacetedMethodParameter> parameters = facetedMethod.getParameters();
-            parameterNames = immutableList(Iterables.transform(parameters, FacetedMethodParameter.Functions.GET_NAME));
-            parameterTypes = immutableList(Iterables.transform(parameters, FacetedMethodParameter.Functions.GET_TYPE));
-        } else {
-            parameterNames = null;
-            parameterTypes = null;
-            returnType = null;
-        }
-
-        final Interaction interaction = interactionContext.getInteraction();
-
-        final int nextEventSequence = interaction.next(Interaction.Sequence.PUBLISHED_EVENT.id());
-        final UUID transactionId = interaction.getTransactionId();
-        final EventMetadata metadata = new EventMetadata(
-                transactionId, nextEventSequence, EventType.ACTION_INVOCATION, currentUser, timestamp, title,
-                actionTargetClass, actionTargetAction, actionTarget, actionMemberIdentifier, parameterNames,
-                parameterTypes, returnType);
-
-        final PublishedAction.PayloadFactory payloadFactory = publishedActionFacet.value();
-
-        final ObjectStringifier stringifier = objectStringifier();
-
-        final EventPayload payload = payloadFactory.payloadFor(
-                identifiedHolder.getIdentifier(),
-                ObjectAdapter.Util.unwrap(undeletedElseEmpty(targetAdapter)),
-                ObjectAdapter.Util.unwrap(undeletedElseEmpty(parameterAdapters)),
-                ObjectAdapter.Util.unwrap(undeletedElseEmpty(resultAdapter)));
-        payload.withStringifier(stringifier);
-        publishingServiceIfAny.publish(metadata, payload);
-    }
-
-    private static <T> List<T> immutableList(final Iterable<T> iterable) {
-        return Collections.unmodifiableList(Lists.newArrayList(iterable));
-    }
-
-    private ObjectStringifier objectStringifier() {
-        return new ObjectStringifier() {
-                @Override
-                public String toString(Object object) {
-                    if(object == null) {
-                        return null;
-                    }
-                    final ObjectAdapter adapter = isisSessionFactory.getCurrentSession()
-                            .getPersistenceSession().adapterFor(object);
-                    Oid oid = adapter.getOid();
-                    return oid != null? oid.enString(): encodedValueOf(adapter);
-                }
-                private String encodedValueOf(ObjectAdapter adapter) {
-                    EncodableFacet facet = adapter.getSpecification().getFacet(EncodableFacet.class);
-                    return facet != null? facet.toEncodedString(adapter): adapter.toString();
-                }
-                @Override
-                public String classNameOf(Object object) {
-                    final ObjectAdapter adapter = getPersistenceSession().adapterFor(object);
-                    final String className = adapter.getSpecification().getFullIdentifier();
-                    return className;
-                }
-            };
-    }
-
-    private List<ObjectAdapter> undeletedElseEmpty(List<ObjectAdapter> parameters) {
-        return Lists.newArrayList(Iterables.transform(parameters, notDestroyedElseEmpty()));
-    }
-
-    private ObjectAdapter undeletedElseEmpty(ObjectAdapter adapter) {
-        return notDestroyedElseEmpty().apply(adapter);
-    }
-
-    private EventMetadata newEventMetadata(
-            final String currentUser,
-            final Timestamp timestamp,
-            final PublishingChangeKind changeKind,
-            final String enlistedAdapterClass,
-            final Bookmark enlistedTarget) {
-        final EventType eventType = PublishingServiceInternalDefault.eventTypeFor(changeKind);
-
-        final Interaction interaction = interactionContext.getInteraction();
 
-        final int nextEventSequence = interaction.next(Interaction.Sequence.PUBLISHED_EVENT.id());
-        final UUID transactionId = interaction.getTransactionId();
-        return new EventMetadata(
-                transactionId, nextEventSequence, eventType, currentUser, timestamp, enlistedTarget.toString(),
-                enlistedAdapterClass, null, enlistedTarget, null, null, null, null);
-    }
-
-    private static EventType eventTypeFor(PublishingChangeKind changeKind) {
-        if(changeKind == PublishingChangeKind.UPDATE) {
-            return EventType.OBJECT_UPDATED;
-        }
-        if(changeKind == PublishingChangeKind.CREATE) {
-            return EventType.OBJECT_CREATED;
-        }
-        if(changeKind == PublishingChangeKind.DELETE) {
-            return EventType.OBJECT_DELETED;
-        }
-        throw new IllegalArgumentException("unknown ChangeKind '" + changeKind + "'");
-    }
     //endregion
 
     //region > publishProperty
@@ -420,9 +196,6 @@ public class PublishingServiceInternalDefault implements PublishingServiceIntern
     private List<PublisherService> publisherServices;
 
     @javax.inject.Inject
-    private PublishingService publishingServiceIfAny;
-
-    @javax.inject.Inject
     private ChangedObjectsServiceInternal changedObjectsServiceInternal;
 
     @javax.inject.Inject

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.