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 2019/09/24 12:16:00 UTC

[isis] branch v2 updated: ISIS-2158: remove requirement for event-objects to be serializable

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

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


The following commit(s) were added to refs/heads/v2 by this push:
     new d58d8f4  ISIS-2158: remove requirement for event-objects to be serializable
d58d8f4 is described below

commit d58d8f43bb85acbb26f36fd21b6c243327f90207
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 24 14:15:38 2019 +0200

    ISIS-2158: remove requirement for event-objects to be serializable
    
    - replaces the root of the DomainEvent class hierarchy
    java.util.EventBase with org.apache.isis.applib.events.domain.EventObjectBase
---
 .../isis/applib/domain/DomainObjectList.java       | 24 +++----
 .../events/ActionArgumentUsabilityEvent.java       |  5 +-
 .../events/ActionArgumentVisibilityEvent.java      |  2 -
 .../applib/events/domain/AbstractDomainEvent.java  | 30 ++------
 .../applib/events/domain/ActionDomainEvent.java    | 14 +---
 .../events/domain/CollectionDomainEvent.java       | 14 +---
 .../isis/applib/events/domain/EventObjectBase.java | 79 ++++++++++++++++++++++
 .../applib/events/domain/PropertyDomainEvent.java  | 14 +---
 .../events/lifecycle/AbstractLifecycleEvent.java   | 39 ++---------
 .../events/lifecycle/ObjectCreatedEvent.java       | 21 ++----
 .../applib/events/lifecycle/ObjectLoadedEvent.java | 23 ++-----
 .../events/lifecycle/ObjectPersistedEvent.java     | 21 ++----
 .../events/lifecycle/ObjectPersistingEvent.java    | 20 ++----
 .../events/lifecycle/ObjectRemovingEvent.java      | 21 ++----
 .../events/lifecycle/ObjectUpdatedEvent.java       | 21 ++----
 .../events/lifecycle/ObjectUpdatingEvent.java      | 21 ++----
 .../isis/applib/events/ui/AbstractUiEvent.java     | 44 +-----------
 .../isis/applib/events/ui/CssClassUiEvent.java     | 21 +-----
 .../apache/isis/applib/events/ui/IconUiEvent.java  | 15 +---
 .../isis/applib/events/ui/LayoutUiEvent.java       | 20 ++----
 .../apache/isis/applib/events/ui/TitleUiEvent.java | 16 +----
 .../applib/services/layout/LayoutServiceMenu.java  | 12 +---
 .../services/metamodel/MetaModelServicesMenu.java  | 14 ++--
 .../services/swagger/SwaggerServiceMenu.java       |  8 +--
 .../services/wrapper/events/AccessEvent.java       |  5 --
 .../wrapper/events/ActionArgumentEvent.java        |  2 -
 .../wrapper/events/ActionInvocationEvent.java      |  2 -
 .../wrapper/events/ActionUsabilityEvent.java       |  2 -
 .../wrapper/events/ActionVisibilityEvent.java      |  2 -
 .../wrapper/events/CollectionAccessEvent.java      |  2 -
 .../wrapper/events/CollectionAddToEvent.java       |  2 -
 .../wrapper/events/CollectionMethodEvent.java      |  1 -
 .../wrapper/events/CollectionRemoveFromEvent.java  |  2 -
 .../wrapper/events/CollectionUsabilityEvent.java   |  2 -
 .../wrapper/events/CollectionVisibilityEvent.java  |  2 -
 .../services/wrapper/events/InteractionEvent.java  |  6 +-
 .../services/wrapper/events/ObjectTitleEvent.java  |  2 -
 .../wrapper/events/ObjectValidityEvent.java        |  2 -
 .../wrapper/events/ObjectVisibilityEvent.java      |  2 -
 .../services/wrapper/events/ParseValueEvent.java   |  2 -
 .../wrapper/events/PropertyAccessEvent.java        |  2 -
 .../wrapper/events/PropertyModifyEvent.java        |  2 -
 .../wrapper/events/PropertyUsabilityEvent.java     |  2 -
 .../wrapper/events/PropertyVisibilityEvent.java    |  2 -
 .../services/wrapper/events/UsabilityEvent.java    |  2 -
 .../services/wrapper/events/ValidityEvent.java     |  2 -
 .../services/wrapper/events/VisibilityEvent.java   |  2 -
 .../isis/applib/events/InteractionEventTest.java   | 20 +++---
 .../eventbus/AbstractDomainEvent_veto_Test.java    |  4 +-
 .../isis/metamodel/facets/DomainEventHelper.java   | 10 +--
 ...ObjectLayoutAnnotationUsingCssClassUiEvent.java |  2 +-
 ...wModelLayoutAnnotationUsingCssClassUiEvent.java |  2 +-
 ...mainObjectLayoutAnnotationUsingIconUiEvent.java |  2 +-
 ...aViewModelLayoutAnnotationUsingIconUiEvent.java |  2 +-
 ...inObjectLayoutAnnotationUsingLayoutUiEvent.java |  2 +-
 ...iewModelLayoutAnnotationUsingLayoutUiEvent.java |  2 +-
 ...ainObjectLayoutAnnotationUsingTitleUiEvent.java |  2 +-
 ...ViewModelLayoutAnnotationUsingTitleUiEvent.java |  2 +-
 ...nEventHelperTest_newActionInteractionEvent.java |  4 +-
 ...HelperTest_newCollectionDomainEvent_forAdd.java |  4 +-
 ...perTest_newCollectionDomainEvent_forRemove.java |  4 +-
 ...ObjectAdapterContext_LifecycleEventSupport.java | 21 +++---
 .../java/domainapp/dom/events/EventLogMenu.java    |  4 +-
 .../java/domainapp/dom/events/EventSubscriber.java |  4 +-
 .../domainapp/modules/simple/SimpleModule.java     | 10 ++-
 .../modules/simple/dom/impl/SimpleObjects.java     |  3 +-
 .../isis/testdomain/jdo/InventoryManager.java      |  3 +-
 .../fixtures/events/FixturesInstalledEvent.java    |  6 +-
 .../fixtures/events/FixturesInstallingEvent.java   |  6 +-
 69 files changed, 227 insertions(+), 463 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java b/core/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
index 3fd0336..bdc6a17 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/domain/DomainObjectList.java
@@ -63,16 +63,16 @@ import org.apache.isis.schema.utils.jaxbadapters.PersistentEntitiesAdapter;
 public class DomainObjectList {
 
     // -- ui event classes
-    public static class TitleUiEvent extends IsisApplibModule.TitleUiEvent<DomainObjectList>{ private static final long serialVersionUID = 1L; }
-    public static class IconUiEvent extends IsisApplibModule.IconUiEvent<DomainObjectList>{ private static final long serialVersionUID = 1L; }
-    public static class CssClassUiEvent extends IsisApplibModule.CssClassUiEvent<DomainObjectList>{ private static final long serialVersionUID = 1L; }
-    public static class LayoutUiEvent extends IsisApplibModule.LayoutUiEvent<DomainObjectList>{ private static final long serialVersionUID = 1L; }
+    public static class TitleUiEvent extends IsisApplibModule.TitleUiEvent<DomainObjectList>{  }
+    public static class IconUiEvent extends IsisApplibModule.IconUiEvent<DomainObjectList>{  }
+    public static class CssClassUiEvent extends IsisApplibModule.CssClassUiEvent<DomainObjectList>{  }
+    public static class LayoutUiEvent extends IsisApplibModule.LayoutUiEvent<DomainObjectList>{  }
 
 
     // -- domain event classes
-    public static abstract class PropertyDomainEvent<T> extends IsisApplibModule.PropertyDomainEvent<DomainObjectList, T> { private static final long serialVersionUID = 1L; }
-    public static abstract class CollectionDomainEvent<T> extends IsisApplibModule.CollectionDomainEvent<DomainObjectList, T> { private static final long serialVersionUID = 1L; }
-    public static abstract class ActionDomainEvent extends IsisApplibModule.ActionDomainEvent<DomainObjectList> { private static final long serialVersionUID = 1L; }
+    public static abstract class PropertyDomainEvent<T> extends IsisApplibModule.PropertyDomainEvent<DomainObjectList, T> {  }
+    public static abstract class CollectionDomainEvent<T> extends IsisApplibModule.CollectionDomainEvent<DomainObjectList, T> {  }
+    public static abstract class ActionDomainEvent extends IsisApplibModule.ActionDomainEvent<DomainObjectList> {  }
 
 
     // -- constructors
@@ -100,7 +100,7 @@ public class DomainObjectList {
 
 
     // -- property: elementObjectType
-    public static class ElementObjectTypeDomainEvent extends PropertyDomainEvent<String> { private static final long serialVersionUID = 1L; }
+    public static class ElementObjectTypeDomainEvent extends PropertyDomainEvent<String> {  }
 
     private String elementObjectType;
     @Property(
@@ -113,7 +113,7 @@ public class DomainObjectList {
 
 
     // -- property: actionOwningType
-    public static class ActionOwningTypeDomainEvent extends PropertyDomainEvent<String> { private static final long serialVersionUID = 1L; }
+    public static class ActionOwningTypeDomainEvent extends PropertyDomainEvent<String> {  }
 
     private String actionOwningType;
 
@@ -128,7 +128,7 @@ public class DomainObjectList {
 
 
     // -- property: actionId
-    public static class ActionIdDomainEvent extends PropertyDomainEvent<String> { private static final long serialVersionUID = 1L; }
+    public static class ActionIdDomainEvent extends PropertyDomainEvent<String> {  }
 
     private String actionId;
 
@@ -143,7 +143,7 @@ public class DomainObjectList {
 
 
     // -- property: actionArguments
-    public static class ActionArgumentsDomainEvent extends PropertyDomainEvent<String> { private static final long serialVersionUID = 1L; }
+    public static class ActionArgumentsDomainEvent extends PropertyDomainEvent<String> {  }
 
     private String actionArguments;
 
@@ -158,7 +158,7 @@ public class DomainObjectList {
 
 
     // -- collection: objects
-    public static class ObjectsDomainEvent extends CollectionDomainEvent<Object> { private static final long serialVersionUID = 1L; }
+    public static class ObjectsDomainEvent extends CollectionDomainEvent<Object> {  }
 
     @XmlJavaTypeAdapter(PersistentEntitiesAdapter.class)
     private List<Object> objects = _Lists.newArrayList();
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentUsabilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentUsabilityEvent.java
index 4fa08c3..a96cc76 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentUsabilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentUsabilityEvent.java
@@ -23,7 +23,8 @@ import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 
 /**
- * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents a check as to whether a particular argument for an action is disabled
+ * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> 
+ * represents a check as to whether a particular argument for an action is disabled
  * or not.
  * 
  * <p>
@@ -35,8 +36,6 @@ import org.apache.isis.applib.services.wrapper.events.UsabilityEvent;
 @Deprecated
 public class ActionArgumentUsabilityEvent extends UsabilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object[] args;
     private final int position;
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentVisibilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentVisibilityEvent.java
index 2fe8584..240e097 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentVisibilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ActionArgumentVisibilityEvent.java
@@ -35,8 +35,6 @@ import org.apache.isis.applib.services.wrapper.events.VisibilityEvent;
 @Deprecated
 public class ActionArgumentVisibilityEvent extends VisibilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object[] args;
     private final int position;
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
index 7f71ca0..b3bfd81 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/domain/AbstractDomainEvent.java
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.applib.events.domain;
 
-import java.util.EventObject;
 import java.util.Map;
 
 import org.apache.isis.applib.Identifier;
@@ -29,15 +28,14 @@ import org.apache.isis.applib.util.ToString;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 
-public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
-
-    private static final long serialVersionUID = 1L;
+public abstract class AbstractDomainEvent<S> extends EventObjectBase<S> {
 
     /**
      * If used then the framework will set state via (non-API) setters.
      *
      * <p>
-     *     Because the {@link EventObject} superclass prohibits a null source, a dummy value is temporarily used.
+     *     Because the {@link EventObjectBase} superclass prohibits a null source, 
+     *     a dummy value is temporarily used.
      * </p>
      */
     public AbstractDomainEvent() {
@@ -47,14 +45,10 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
     public AbstractDomainEvent(
             final S source,
             final Identifier identifier) {
-        super(sourceElseDummy(source));
+        super(source);
         this.identifier = identifier;
     }
 
-    private static Object sourceElseDummy(final Object source) {
-        return source != null ? source : new Object();
-    }
-
     // - mixedIn
 
     private Object mixedIn;
@@ -138,22 +132,6 @@ public abstract class AbstractDomainEvent<S> extends java.util.EventObject {
         this.phase = phase;
     }
 
-
-    // -- source (downcast to S)
-    @Override
-    @SuppressWarnings("unchecked")
-    public S getSource() {
-        return (S)source;
-    }
-
-    /**
-     * Not API, set by the framework if the no-arg constructor is used.
-     */
-    public void setSource(S source) {
-        this.source = source;
-    }
-
-
     // -- identifier
     /**
      * If the no-arg constructor is used, then the framework will populate this field reflectively.
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java
index b60be05..e02b0ba 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/domain/ActionDomainEvent.java
@@ -26,8 +26,6 @@ import org.apache.isis.applib.util.ToString;
 
 public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- Default class
     /**
      * This class is the default for the
@@ -35,9 +33,7 @@ public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.actionAnnotation.domainEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ActionDomainEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends ActionDomainEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +42,7 @@ public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ActionDomainEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ActionDomainEvent<Object> {}
 
 
     // -- Doop class
@@ -57,9 +51,7 @@ public abstract class ActionDomainEvent<S> extends AbstractDomainEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ActionDomainEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ActionDomainEvent<Object> {}
 
 
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java
index 7df32ad..9860a39 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/domain/CollectionDomainEvent.java
@@ -23,8 +23,6 @@ import org.apache.isis.applib.util.ToString;
 
 public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- Default class
     /**
      * This class is the default for the
@@ -32,9 +30,7 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S>
      * raises an event or not depends upon the "isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends CollectionDomainEvent<Object, Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends CollectionDomainEvent<Object, Object> { }
 
 
     // -- Noop class
@@ -43,9 +39,7 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S>
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends CollectionDomainEvent<Object, Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends CollectionDomainEvent<Object, Object> {}
 
 
     // -- Doop class
@@ -54,9 +48,7 @@ public abstract class CollectionDomainEvent<S,T> extends AbstractDomainEvent<S>
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends CollectionDomainEvent<Object, Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends CollectionDomainEvent<Object, Object> {}
 
 
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/domain/EventObjectBase.java b/core/applib/src/main/java/org/apache/isis/applib/events/domain/EventObjectBase.java
new file mode 100644
index 0000000..60f2436
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/domain/EventObjectBase.java
@@ -0,0 +1,79 @@
+/*
+ *  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.applib.events.domain;
+
+import javax.annotation.Nullable;
+
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+
+import static org.apache.isis.commons.internal.base._With.requires;
+
+/**
+ * @since 2.0
+ */
+public abstract class EventObjectBase<T> {
+
+    /**
+     * The object on which the Event initially occurred.
+     */
+    protected transient T source;
+
+    /**
+     * Constructs a prototypical Event.
+     *
+     * @param    source    The object on which the Event initially occurred.
+     */
+    protected EventObjectBase(@Nullable T source) {
+        this.source = source;
+    }
+
+    /**
+     * The object on which the Event initially occurred.
+     *
+     * @return   The object on which the Event initially occurred.
+     */
+    public @Nullable T getSource() {
+        return source;
+    }
+    
+    /**
+     * A one-shot function. Only allowed to be called if a source has not already been set.
+     * 
+     * @apiNote reserved for framework internal use
+     * 
+     * @param source non-null
+     */
+    public void initSource(T source) {
+        if(this.source!=null) {
+            throw _Exceptions.unrecoverable(getClass().getName() + " cannot init when source is alreay set");
+        }
+        requires(source, "source");
+        this.source = source;
+    }
+
+    /**
+     * Returns a String representation of this EventObject.
+     *
+     * @return  a String representation of this EventObject
+     */
+    public String toString() {
+        return getClass().getName() + "[source=" + source + "]";
+    }
+    
+}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java
index 3450af7..a10e331 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/domain/PropertyDomainEvent.java
@@ -23,8 +23,6 @@ import org.apache.isis.applib.util.ToString;
 
 public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- Default class
     /**
      * This class is the default for the
@@ -32,9 +30,7 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends PropertyDomainEvent<Object, Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends PropertyDomainEvent<Object, Object> {}
 
 
     // -- Noop class
@@ -43,9 +39,7 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends PropertyDomainEvent<Object, Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends PropertyDomainEvent<Object, Object> {}
 
 
     // -- Doop class
@@ -54,9 +48,7 @@ public abstract class PropertyDomainEvent<S,T> extends AbstractDomainEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends PropertyDomainEvent<Object, Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends PropertyDomainEvent<Object, Object> {}
 
 
     // -- constructors
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java
index f8f76a7..2915043 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/AbstractLifecycleEvent.java
@@ -18,47 +18,16 @@
  */
 package org.apache.isis.applib.events.lifecycle;
 
-import java.util.EventObject;
+import org.apache.isis.applib.events.domain.EventObjectBase;
 
-import org.apache.isis.applib.util.ObjectContracts;
-import org.apache.isis.applib.util.ToString;
-
-public abstract class AbstractLifecycleEvent<S> extends EventObject {
-
-    private static final long serialVersionUID = 1L;
+public abstract class AbstractLifecycleEvent<S> extends EventObjectBase<S> {
 
     public AbstractLifecycleEvent() {
         this(null);
     }
 
-    public AbstractLifecycleEvent(final S source) {
-        super(sourceElseDummy(source));
-    }
-
-    private static Object sourceElseDummy(final Object source) {
-        return source != null ? source : new Object();
-    }
-
-    // -- source (downcast to S)
-    @Override
-    @SuppressWarnings("unchecked")
-    public S getSource() {
-        return (S)source;
+    public AbstractLifecycleEvent(S source) {
+        super(source);
     }
 
-    /**
-     * Not API, set by the framework if the no-arg constructor is used.
-     */
-    public void setSource(S source) {
-        this.source = source;
-    }
-
-
-    private final static ToString<AbstractLifecycleEvent<?>> toString = ObjectContracts
-            .toString("source", AbstractLifecycleEvent::getSource);
-
-    @Override
-    public String toString() {
-        return toString.toString(this);
-    }
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java
index 3effbca..17102d2 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectCreatedEvent.java
@@ -20,8 +20,6 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectCreatedEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- Default class
     /**
      * This class is the default for the
@@ -29,15 +27,7 @@ public abstract class ObjectCreatedEvent<S> extends AbstractLifecycleEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectCreatedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectCreatedEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectCreatedEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +36,7 @@ public abstract class ObjectCreatedEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectCreatedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectCreatedEvent<Object> {}
 
 
     // -- Doop class
@@ -57,13 +45,12 @@ public abstract class ObjectCreatedEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectCreatedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ObjectCreatedEvent<Object> {}
 
 
     public ObjectCreatedEvent() {
     }
+    
     public ObjectCreatedEvent(final S source) {
         super(source);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java
index 7258a9b..5536ad1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectLoadedEvent.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectLoadedEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
+    
 
     // -- Default class
     /**
@@ -29,15 +29,7 @@ public abstract class ObjectLoadedEvent<S> extends AbstractLifecycleEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectLoadedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectLoadedEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectLoadedEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +38,7 @@ public abstract class ObjectLoadedEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectLoadedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectLoadedEvent<Object> {}
 
 
     // -- Doop class
@@ -57,15 +47,12 @@ public abstract class ObjectLoadedEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectLoadedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
-
-
+    public static class Doop extends ObjectLoadedEvent<Object> {}
 
 
     public ObjectLoadedEvent() {
     }
+    
     public ObjectLoadedEvent(final S source) {
         super(source);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java
index d3ffa1f..487a53c 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistedEvent.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectPersistedEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
+    
 
     // -- Default class
     /**
@@ -29,15 +29,7 @@ public abstract class ObjectPersistedEvent<S> extends AbstractLifecycleEvent<S>
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectPersistedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectPersistedEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectPersistedEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +38,7 @@ public abstract class ObjectPersistedEvent<S> extends AbstractLifecycleEvent<S>
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectPersistedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectPersistedEvent<Object> {}
 
 
     // -- Doop class
@@ -57,13 +47,12 @@ public abstract class ObjectPersistedEvent<S> extends AbstractLifecycleEvent<S>
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectPersistedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ObjectPersistedEvent<Object> {}
 
 
     public ObjectPersistedEvent() {
     }
+    
     public ObjectPersistedEvent(final S source) {
         super(source);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java
index ad3ee5c..457096b 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectPersistingEvent.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectPersistingEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
+    
 
     // -- Default class
     /**
@@ -29,15 +29,7 @@ public abstract class ObjectPersistingEvent<S> extends AbstractLifecycleEvent<S>
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectPersistingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectPersistingEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectPersistingEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +38,7 @@ public abstract class ObjectPersistingEvent<S> extends AbstractLifecycleEvent<S>
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectPersistingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectPersistingEvent<Object> {}
 
 
     // -- Doop class
@@ -57,9 +47,7 @@ public abstract class ObjectPersistingEvent<S> extends AbstractLifecycleEvent<S>
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectPersistingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ObjectPersistingEvent<Object> {}
 
 
     public ObjectPersistingEvent() {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java
index d949d02..3f4feb3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectRemovingEvent.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
+    
 
     // -- Default class
     /**
@@ -29,15 +29,7 @@ public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectRemovingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectRemovingEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectRemovingEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +38,7 @@ public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectRemovingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectRemovingEvent<Object> {}
 
 
     // -- Doop class
@@ -57,13 +47,12 @@ public abstract class ObjectRemovingEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectRemovingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ObjectRemovingEvent<Object> {}
 
 
     public ObjectRemovingEvent() {
     }
+    
     public ObjectRemovingEvent(final S source) {
         super(source);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java
index 6d60234..c9ac920 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatedEvent.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
+    
 
     // -- Default class
     /**
@@ -29,15 +29,7 @@ public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectUpdatedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectUpdatedEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectUpdatedEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +38,7 @@ public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectUpdatedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectUpdatedEvent<Object> {}
 
 
     // -- Doop class
@@ -57,13 +47,12 @@ public abstract class ObjectUpdatedEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectUpdatedEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ObjectUpdatedEvent<Object> {}
 
 
     public ObjectUpdatedEvent() {
     }
+    
     public ObjectUpdatedEvent(final S source) {
         super(source);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java
index 5ed60ed..a183676 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/lifecycle/ObjectUpdatingEvent.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.events.lifecycle;
 
 public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
 
-    private static final long serialVersionUID = 1L;
+    
 
     // -- Default class
     /**
@@ -29,15 +29,7 @@ public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends ObjectUpdatingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-        public Default() {}
-
-        @Override
-        public String toString() {
-            return "ObjectUpdatingEvent$Default{source=" + getSource() + "}";
-        }
-    }
+    public static class Default extends ObjectUpdatingEvent<Object> {}
 
 
     // -- Noop class
@@ -46,9 +38,7 @@ public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends ObjectUpdatingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends ObjectUpdatingEvent<Object> {}
 
 
     // -- Doop class
@@ -57,13 +47,12 @@ public abstract class ObjectUpdatingEvent<S> extends AbstractLifecycleEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends ObjectUpdatingEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends ObjectUpdatingEvent<Object> {}
 
 
     public ObjectUpdatingEvent() {
     }
+    
     public ObjectUpdatingEvent(final S source) {
         super(source);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java
index 6b65a4d..a6ecf17 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ui/AbstractUiEvent.java
@@ -18,55 +18,26 @@
  */
 package org.apache.isis.applib.events.ui;
 
-import java.util.EventObject;
 import java.util.Map;
 
-import org.apache.isis.applib.util.ObjectContracts;
-import org.apache.isis.applib.util.ToString;
+import org.apache.isis.applib.events.domain.EventObjectBase;
 import org.apache.isis.commons.internal.collections._Maps;
 
-public abstract class AbstractUiEvent<S> extends EventObject {
-
-    private static final long serialVersionUID = 1L;
+public abstract class AbstractUiEvent<S> extends EventObjectBase<S> {
 
     // -- constructors
     /**
      * If used then the framework will set state via (non-API) setters.
      *
-     * <p>
-     *     Because the {@link EventObject} superclass prohibits a null source, a dummy value is temporarily used.
-     * </p>
      */
     public AbstractUiEvent() {
         this(null);
     }
 
     public AbstractUiEvent(final S source) {
-        super(sourceElseDummy(source));
-    }
-
-    private static Object sourceElseDummy(final Object source) {
-        return source != null ? source : new Object();
+        super(source);
     }
 
-
-    // -- source
-
-    @Override
-    @SuppressWarnings("unchecked")
-    public S getSource() {
-        return (S)source;
-    }
-
-    /**
-     * Not API, set by the framework if the no-arg constructor is used.
-     */
-    public void setSource(S source) {
-        this.source = source;
-    }
-
-
-
     // -- userData
     /**
      * Provides a mechanism to pass data around.
@@ -86,13 +57,4 @@ public abstract class AbstractUiEvent<S> extends EventObject {
         userData.put(key, value);
     }
 
-
-    private final static ToString<AbstractUiEvent<?>> toString = ObjectContracts
-            .toString("source", AbstractUiEvent::getSource);
-
-    @Override
-    public String toString() {
-        return toString.toString(this);
-    }
-
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java
index 11e73a6..3985e53 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ui/CssClassUiEvent.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.applib.events.ui;
 
-import java.util.EventObject;
-
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 
 /**
@@ -27,15 +25,10 @@ import org.apache.isis.applib.annotation.DomainObjectLayout;
  */
 public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- constructors
     /**
      * If used then the framework will set state via (non-API) setters.
      *
-     * <p>
-     *     Because the {@link EventObject} superclass prohibits a null source, a dummy value is temporarily used.
-     * </p>
      */
     public CssClassUiEvent() {
         this(null);
@@ -45,8 +38,6 @@ public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
         super(source);
     }
 
-
-
     // -- Default class
     /**
      * This class is the default for the
@@ -54,9 +45,7 @@ public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends CssClassUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends CssClassUiEvent<Object> {}
 
 
     // -- Noop class
@@ -65,9 +54,7 @@ public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends CssClassUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends CssClassUiEvent<Object> {}
 
 
     // -- Doop class
@@ -76,9 +63,7 @@ public abstract class CssClassUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends CssClassUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends CssClassUiEvent<Object> {}
 
 
     // -- cssClass
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java
index 30176d4..514cb24 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ui/IconUiEvent.java
@@ -18,15 +18,12 @@
  */
 package org.apache.isis.applib.events.ui;
 
-import java.util.EventObject;
 
 /**
  * Emitted for subscribers to obtain a cssClass hint (equivalent to the <tt>iconName()</tt> supporting method).
  */
 public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- constructors
     /**
      * If used then the framework will set state via (non-API) setters.
@@ -52,9 +49,7 @@ public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends IconUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends IconUiEvent<Object> { }
 
 
     // -- Noop class
@@ -63,9 +58,7 @@ public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends IconUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends IconUiEvent<Object> { }
 
 
     // -- Doop class
@@ -74,9 +67,7 @@ public abstract class IconUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends IconUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends IconUiEvent<Object> { }
 
 
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java
index 8021897..3c33ea4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ui/LayoutUiEvent.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.applib.events.ui;
 
-import java.util.EventObject;
-
 import org.apache.isis.applib.annotation.DomainObjectLayout;
 
 /**
@@ -27,8 +25,6 @@ import org.apache.isis.applib.annotation.DomainObjectLayout;
  */
 public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     //region > constructors
     /**
      * If used then the framework will set state via (non-API) setters.
@@ -54,9 +50,7 @@ public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectLayoutAnnotation.layoutUiEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends LayoutUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends LayoutUiEvent<Object> { }
     //endregion
 
     //region > Noop class
@@ -65,9 +59,7 @@ public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event.
      */
-    public static class Noop extends LayoutUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends LayoutUiEvent<Object> { }
     //endregion
 
     //region > Doop class
@@ -76,9 +68,7 @@ public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends LayoutUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends LayoutUiEvent<Object> { }
     //endregion
 
     //region > layout
@@ -94,9 +84,7 @@ public abstract class LayoutUiEvent<S> extends AbstractUiEvent<S> {
     /**
      * For subscribers to call to provide a layout for this object.
      */
-    public void setLayout(final String layout) {
-        this.layout = layout;
-    }
+    public void setLayout(final String layout) { }
     //endregion
 
 }
\ No newline at end of file
diff --git a/core/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java b/core/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java
index 4353e56..854f904 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/events/ui/TitleUiEvent.java
@@ -18,8 +18,6 @@
  */
 package org.apache.isis.applib.events.ui;
 
-import java.util.EventObject;
-
 import org.apache.isis.applib.services.i18n.TranslatableString;
 
 /**
@@ -27,8 +25,6 @@ import org.apache.isis.applib.services.i18n.TranslatableString;
  */
 public abstract class TitleUiEvent<S> extends AbstractUiEvent<S> {
 
-    private static final long serialVersionUID = 1L;
-
     // -- Default class
     /**
      * This class is the default for the
@@ -36,9 +32,7 @@ public abstract class TitleUiEvent<S> extends AbstractUiEvent<S> {
      * raises an event or not depends upon the "isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault"
      * configuration property.
      */
-    public static class Default extends TitleUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Default extends TitleUiEvent<Object> {}
 
 
     // -- Noop class
@@ -47,9 +41,7 @@ public abstract class TitleUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class to use indicating that an event should <i>not</i> be posted (irrespective of the configuration
      * property seting for the {@link Default} event.
      */
-    public static class Noop extends TitleUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Noop extends TitleUiEvent<Object> {}
 
 
     // -- Doop class
@@ -58,9 +50,7 @@ public abstract class TitleUiEvent<S> extends AbstractUiEvent<S> {
      * Convenience class meaning that an event <i>should</i> be posted (irrespective of the configuration
      * property setting for the {@link Default} event..
      */
-    public static class Doop extends TitleUiEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class Doop extends TitleUiEvent<Object> {}
 
 
     // -- constructors
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java b/core/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
index 074e392..6be2885 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/layout/LayoutServiceMenu.java
@@ -48,9 +48,7 @@ import org.apache.isis.commons.internal.base._Strings;
 public class LayoutServiceMenu {
 
     public static abstract class ActionDomainEvent
-    extends IsisApplibModule.ActionDomainEvent<LayoutServiceMenu> {
-        private static final long serialVersionUID = 1L;
-    }
+    extends IsisApplibModule.ActionDomainEvent<LayoutServiceMenu> {}
 
     private final MimeType mimeTypeApplicationZip;
 
@@ -62,9 +60,7 @@ public class LayoutServiceMenu {
         }
     }
 
-    public static class DownloadLayoutsDomainEvent extends ActionDomainEvent {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class DownloadLayoutsDomainEvent extends ActionDomainEvent {}
 
     @Action(
             domainEvent = DownloadLayoutsDomainEvent.class,
@@ -88,9 +84,7 @@ public class LayoutServiceMenu {
         return LayoutService.Style.NORMALIZED;
     }
 
-    public static class DownloadMenuBarsLayoutDomainEvent extends ActionDomainEvent {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class DownloadMenuBarsLayoutDomainEvent extends ActionDomainEvent {}
 
     @Action(
             domainEvent = DownloadMenuBarsLayoutDomainEvent.class,
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServicesMenu.java b/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServicesMenu.java
index 38ad62f..9f2762d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServicesMenu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/metamodel/MetaModelServicesMenu.java
@@ -57,7 +57,7 @@ import org.apache.isis.schema.metamodel.v1.MetamodelDto;
         )
 public class MetaModelServicesMenu {
 
-    public static abstract class ActionDomainEvent extends IsisApplibModule.ActionDomainEvent<MetaModelServicesMenu> { private static final long serialVersionUID = 1L; }
+    public static abstract class ActionDomainEvent extends IsisApplibModule.ActionDomainEvent<MetaModelServicesMenu> { }
 
     final MimeType mimeTypeTextCsv;
     final MimeType mimeTypeTextXml;
@@ -73,7 +73,7 @@ public class MetaModelServicesMenu {
 
     // //////////////////////////////////////
 
-    public static class DownloadMetaModelEvent extends ActionDomainEvent { private static final long serialVersionUID = 1L; }
+    public static class DownloadMetaModelEvent extends ActionDomainEvent { }
 
 
     @Action(
@@ -103,17 +103,15 @@ public class MetaModelServicesMenu {
         return "metamodel.csv";
     }
 
-    private String toXml(MetamodelDto model) {
-        return jaxbService.toXml(model);
-    }
+//    private String toXml(MetamodelDto model) {
+//        return jaxbService.toXml(model);
+//    }
 
 
     // //////////////////////////////////////
 
 
-    public static class DownloadMetaModelXmlEvent extends ActionDomainEvent {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class DownloadMetaModelXmlEvent extends ActionDomainEvent { }
 
     @Action(
             domainEvent = DownloadMetaModelXmlEvent.class,
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java b/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
index 377caac..f3c22bd 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/swagger/SwaggerServiceMenu.java
@@ -45,8 +45,8 @@ import org.apache.isis.commons.internal.resources._Resources;
         )
 public class SwaggerServiceMenu {
 
-    public static abstract class ActionDomainEvent extends IsisApplibModule.ActionDomainEvent<SwaggerServiceMenu> { private static final long serialVersionUID = 1L; }
-    public static class OpenSwaggerUiDomainEvent extends ActionDomainEvent { private static final long serialVersionUID = 1L; }
+    public static abstract class ActionDomainEvent extends IsisApplibModule.ActionDomainEvent<SwaggerServiceMenu> { }
+    public static class OpenSwaggerUiDomainEvent extends ActionDomainEvent { }
 
     @Action(
             semantics = SemanticsOf.SAFE,
@@ -61,7 +61,7 @@ public class SwaggerServiceMenu {
         return new LocalResourcePath("/swagger-ui/index.template.html");
     }
 
-    public static class OpenRestApiDomainEvent extends ActionDomainEvent { private static final long serialVersionUID = 1L; }
+    public static class OpenRestApiDomainEvent extends ActionDomainEvent { }
 
     @Action(
             semantics = SemanticsOf.SAFE,
@@ -76,7 +76,7 @@ public class SwaggerServiceMenu {
         return new LocalResourcePath("/"+_Resources.getRestfulPathIfAny()+"/");
     }
 
-    public static class DownloadSwaggerSpecDomainEvent extends ActionDomainEvent { private static final long serialVersionUID = 1L; }
+    public static class DownloadSwaggerSpecDomainEvent extends ActionDomainEvent { }
 
     @Action(
             semantics = SemanticsOf.SAFE,
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java
index 2e3906d..726e1b7 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/AccessEvent.java
@@ -37,11 +37,6 @@ import org.apache.isis.applib.Identifier;
  */
 public abstract class AccessEvent extends InteractionEvent {
 
-    /**
-     *
-     */
-    private static final long serialVersionUID = 1L;
-
     public AccessEvent(final Object source, final Identifier identifier) {
         super(source, identifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java
index 0ae65b6..d452be3 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionArgumentEvent.java
@@ -35,8 +35,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ActionArgumentEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object[] args;
     private final int position;
     private final Object proposed;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java
index 9ef71ea..8053ef5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionInvocationEvent.java
@@ -34,8 +34,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ActionInvocationEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public ActionInvocationEvent(final Object source, final Identifier actionIdentifier, final Object[] args) {
         super(source, actionIdentifier);
         this.args = args;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java
index 0674b1d..79780de 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionUsabilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ActionUsabilityEvent extends UsabilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public ActionUsabilityEvent(final Object source, final Identifier actionIdentifier) {
         super(source, actionIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java
index c983d0a..0c0b225 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ActionVisibilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ActionVisibilityEvent extends VisibilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public ActionVisibilityEvent(final Object source, final Identifier actionIdentifier) {
         super(source, actionIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java
index b85db69..65eed05 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAccessEvent.java
@@ -33,8 +33,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class CollectionAccessEvent extends AccessEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public CollectionAccessEvent(final Object source, final Identifier collectionIdentifier) {
         super(source, collectionIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java
index d7c6976..74a9851 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionAddToEvent.java
@@ -34,8 +34,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class CollectionAddToEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object proposed;
 
     public CollectionAddToEvent(final Object source, final Identifier collectionIdentifier, final Object proposed) {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java
index fcef0e6..ac809de 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionMethodEvent.java
@@ -27,7 +27,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class CollectionMethodEvent extends AccessEvent {
 
-    private static final long serialVersionUID = 1L;
     private final Object domainObject;
     private final String methodName;
     private final Object[] args;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java
index 7d7d97e..44bd2d4 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionRemoveFromEvent.java
@@ -34,8 +34,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class CollectionRemoveFromEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object proposed;
 
     public CollectionRemoveFromEvent(final Object source, final Identifier collectionIdentifier, final Object proposed) {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java
index 84b4cd7..7723551 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionUsabilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class CollectionUsabilityEvent extends UsabilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public CollectionUsabilityEvent(final Object source, final Identifier identifier) {
         super(source, identifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionVisibilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionVisibilityEvent.java
index a2b4333..ec77bc5 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionVisibilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/CollectionVisibilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class CollectionVisibilityEvent extends VisibilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public CollectionVisibilityEvent(final Object source, final Identifier identifier) {
         super(source, identifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java
index ec74a5a..dc837c1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/InteractionEvent.java
@@ -19,10 +19,10 @@
 
 package org.apache.isis.applib.services.wrapper.events;
 
-import java.util.EventObject;
 import java.util.List;
 
 import org.apache.isis.applib.Identifier;
+import org.apache.isis.applib.events.domain.EventObjectBase;
 
 /**
  * <i>Supported only by {@link org.apache.isis.applib.services.wrapper.WrapperFactory} service, </i> represents an interaction with a domain object or a particular feature
@@ -33,9 +33,7 @@ import org.apache.isis.applib.Identifier;
  * {@link UsabilityEvent usability} and {@link ValidityEvent validity}.
  *
  */
-public abstract class InteractionEvent extends EventObject {
-
-    private static final long serialVersionUID = 1L;
+public abstract class InteractionEvent extends EventObjectBase<Object> {
 
     private final Identifier identifier;
     private String reason;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java
index 09183cd..fb27c98 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectTitleEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ObjectTitleEvent extends AccessEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final String title;
 
     public ObjectTitleEvent(final Object source, final Identifier classIdentifier, final String title) {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java
index 59cde9c..240030e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectValidityEvent.java
@@ -33,8 +33,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ObjectValidityEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public ObjectValidityEvent(final Object source, final Identifier classIdentifier) {
         super(source, classIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java
index c74468d..aa36628 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ObjectVisibilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ObjectVisibilityEvent extends VisibilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public ObjectVisibilityEvent(final Object source, final Identifier classIdentifier) {
         super(source, classIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java
index 0cf6256..71b575e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ParseValueEvent.java
@@ -32,8 +32,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class ParseValueEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private static Object coalesce(final Object source, final String proposed) {
         return source != null ? source : proposed;
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java
index 42a7c22..252e348 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyAccessEvent.java
@@ -32,8 +32,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class PropertyAccessEvent extends AccessEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public PropertyAccessEvent(final Object source, final Identifier propertyIdentifier, final Object value) {
         super(source, propertyIdentifier);
         this.value = value;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java
index 47054f2..8f75f91 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyModifyEvent.java
@@ -32,8 +32,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class PropertyModifyEvent extends ValidityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     private final Object proposed;
 
     public PropertyModifyEvent(final Object source, final Identifier propertyIdentifier, final Object proposed) {
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java
index 06c3c61..03e6e31 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyUsabilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class PropertyUsabilityEvent extends UsabilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public PropertyUsabilityEvent(final Object source, final Identifier propertyIdentifier) {
         super(source, propertyIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java
index db4596f..4792330 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/PropertyVisibilityEvent.java
@@ -31,8 +31,6 @@ import org.apache.isis.applib.Identifier;
  */
 public class PropertyVisibilityEvent extends VisibilityEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public PropertyVisibilityEvent(final Object source, final Identifier propertyIdentifier) {
         super(source, propertyIdentifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java
index be833c8..8314dce 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/UsabilityEvent.java
@@ -36,8 +36,6 @@ import org.apache.isis.applib.Identifier;
  */
 public abstract class UsabilityEvent extends InteractionEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public UsabilityEvent(final Object source, final Identifier identifier) {
         super(source, identifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java
index ffddafd..28fecbb 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/ValidityEvent.java
@@ -45,8 +45,6 @@ import org.apache.isis.applib.Identifier;
  */
 public abstract class ValidityEvent extends InteractionEvent implements ProposedHolderEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public ValidityEvent(final Object source, final Identifier identifier) {
         super(source, identifier);
     }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java
index 6c98fc5..f839360 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/wrapper/events/VisibilityEvent.java
@@ -36,8 +36,6 @@ import org.apache.isis.applib.Identifier;
  */
 public abstract class VisibilityEvent extends InteractionEvent {
 
-    private static final long serialVersionUID = 1L;
-
     public VisibilityEvent(final Object source, final Identifier identifier) {
         super(source, identifier);
     }
diff --git a/core/applib/src/test/java/org/apache/isis/applib/events/InteractionEventTest.java b/core/applib/src/test/java/org/apache/isis/applib/events/InteractionEventTest.java
index fb26dea..8c2db83 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/events/InteractionEventTest.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/events/InteractionEventTest.java
@@ -55,7 +55,7 @@ public class InteractionEventTest {
     public void getIdentifier() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.getIdentifier(), is(identifier));
     }
@@ -64,7 +64,7 @@ public class InteractionEventTest {
     public void getSource() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.getSource(), is(source));
     }
@@ -73,7 +73,7 @@ public class InteractionEventTest {
     public void getClassName() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.getClassName(), equalTo("CustomerOrder"));
     }
@@ -82,7 +82,7 @@ public class InteractionEventTest {
     public void getClassNaturalName() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.getClassNaturalName(), equalTo("Customer Order"));
     }
@@ -91,7 +91,7 @@ public class InteractionEventTest {
     public void getMember() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.getMemberName(), equalTo("cancelOrder"));
     }
@@ -100,7 +100,7 @@ public class InteractionEventTest {
     public void getMemberNaturalName() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.getMemberNaturalName(), equalTo("Cancel Order"));
     }
@@ -109,7 +109,7 @@ public class InteractionEventTest {
     public void shouldInitiallyNotVeto() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         assertThat(interactionEvent.isVeto(), is(false));
     }
@@ -118,7 +118,7 @@ public class InteractionEventTest {
     public void afterAdvisedShouldVeto() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         interactionEvent.advised("some reason", this.getClass());
         assertThat(interactionEvent.isVeto(), is(true));
@@ -128,7 +128,7 @@ public class InteractionEventTest {
     public void afterAdvisedShouldReturnReason() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         interactionEvent.advised("some reason", this.getClass());
         assertThat(interactionEvent.isVeto(), is(true));
@@ -138,7 +138,7 @@ public class InteractionEventTest {
     public void afterAdvisedShouldReturnAdvisorClass() {
         interactionEvent = new InteractionEvent(source, identifier) {
 
-            private static final long serialVersionUID = 1L;
+            
         };
         interactionEvent.advised("some reason", advisorClass);
         assertEquals(interactionEvent.getAdvisorClass(), advisorClass);
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent_veto_Test.java b/core/applib/src/test/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent_veto_Test.java
index 61ff3f6..c9947f2 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent_veto_Test.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/eventbus/AbstractDomainEvent_veto_Test.java
@@ -31,7 +31,7 @@ public class AbstractDomainEvent_veto_Test {
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
 
-    AbstractDomainEvent<?> ev = new AbstractDomainEvent<Object>() { private static final long serialVersionUID = 1L; };
+    AbstractDomainEvent<?> ev = new AbstractDomainEvent<Object>() {  };
 
     @Test
     public void hidden_phase_and_veto_using_null() throws Exception {
@@ -87,7 +87,7 @@ public class AbstractDomainEvent_veto_Test {
     public void disable_phase_and_attempt_to_veto_with_null() throws Exception {
 
         // given
-        final AbstractDomainEvent<?> ev = new AbstractDomainEvent<Object>() { private static final long serialVersionUID = 1L; };
+        final AbstractDomainEvent<?> ev = new AbstractDomainEvent<Object>() {  };
         ev.setEventPhase(AbstractDomainEvent.Phase.DISABLE);
 
         // expect
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java
index 8445db0..0cdecd1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/DomainEventHelper.java
@@ -125,7 +125,9 @@ public class DomainEventHelper {
             final Class<? extends ActionDomainEvent<S>> type,
                     final Identifier identifier,
                     final S source,
-                    final Object... arguments) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
+                    final Object... arguments) 
+        throws InstantiationException, IllegalAccessException, IllegalArgumentException, 
+        InvocationTargetException, NoSuchMethodException, SecurityException {
 
         final Constructor<?>[] constructors = type.getConstructors();
 
@@ -136,7 +138,7 @@ public class DomainEventHelper {
                 final Object event = constructor.newInstance();
                 final ActionDomainEvent<S> ade = uncheckedCast(event);
 
-                ade.setSource(source);
+                ade.initSource(source);
                 ade.setIdentifier(identifier);
                 ade.setArguments(asList(arguments));
                 return ade;
@@ -233,7 +235,7 @@ public class DomainEventHelper {
             if(parameterTypes.length == 0) {
                 final Object event = constructor.newInstance();
                 final PropertyDomainEvent<S, T> pde = uncheckedCast(event);
-                pde.setSource(source);
+                pde.initSource(source);
                 pde.setIdentifier(identifier);
                 pde.setOldValue(oldValue);
                 pde.setNewValue(newValue);
@@ -323,7 +325,7 @@ public class DomainEventHelper {
                 final Object event = constructor.newInstance();
                 final CollectionDomainEvent<S, T> cde = uncheckedCast(event);
 
-                cde.setSource(source);
+                cde.initSource(source);
                 cde.setIdentifier(identifier);
                 cde.setOf(of);
                 cde.setValue(value);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
index 307029d..68337db 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent.java
@@ -109,7 +109,7 @@ implements CssClassFacet {
     private CssClassUiEvent<Object> newCssClassUiEventForPojo(final Object domainObject) {
         try {
             final CssClassUiEvent<Object> cssClassUiEvent = _Casts.uncheckedCast(cssClassUiEventClass.newInstance());
-            cssClassUiEvent.setSource(domainObject);
+            cssClassUiEvent.initSource(domainObject);
             return cssClassUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java
index 8eba1e1..768e03d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/CssClassFacetViaViewModelLayoutAnnotationUsingCssClassUiEvent.java
@@ -106,7 +106,7 @@ CssClassFacet {
     private CssClassUiEvent<Object> newCssClassUiEventForPojo(final Object domainObject) {
         try {
             final CssClassUiEvent<Object> cssClassUiEvent = _Casts.uncheckedCast(cssClassUiEventClass.newInstance());
-            cssClassUiEvent.setSource(domainObject);
+            cssClassUiEvent.initSource(domainObject);
             return cssClassUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
index 9979ddc..ef3bf77 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent.java
@@ -104,7 +104,7 @@ public class IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent extends Ic
     private IconUiEvent<Object> newIconUiEventForPojo(final Object domainObject) {
         try {
             final IconUiEvent<Object> iconUiEvent = _Casts.uncheckedCast(iconUiEventClass.newInstance());
-            iconUiEvent.setSource(domainObject);
+            iconUiEvent.initSource(domainObject);
             return iconUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java
index b5111a3..c6d0007 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent.java
@@ -105,7 +105,7 @@ public class IconFacetViaViewModelLayoutAnnotationUsingIconUiEvent extends IconF
     private IconUiEvent<Object> newIconUiEventForPojo(final Object domainObject) {
         try {
             final IconUiEvent<Object> iconUiEvent = _Casts.uncheckedCast(iconUiEventClass.newInstance());
-            iconUiEvent.setSource(domainObject);
+            iconUiEvent.initSource(domainObject);
             return iconUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java
index 628fc37..777cdea 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent.java
@@ -106,7 +106,7 @@ implements LayoutFacet {
     private LayoutUiEvent<Object> newLayoutUiEvent(final Object domainObject) {
         try {
             final LayoutUiEvent<Object> layoutUiEvent = (LayoutUiEvent<Object>) layoutUiEventClass.newInstance();
-            layoutUiEvent.setSource(domainObject);
+            layoutUiEvent.initSource(domainObject);
             return layoutUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java
index 67b7307..8a05a94 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/LayoutFacetViaViewModelLayoutAnnotationUsingLayoutUiEvent.java
@@ -106,7 +106,7 @@ implements LayoutFacet {
     private LayoutUiEvent<Object> newLayoutUiEvent(final Object domainObject) {
         try {
             final LayoutUiEvent<Object> layoutUiEvent = (LayoutUiEvent<Object>) layoutUiEventClass.newInstance();
-            layoutUiEvent.setSource(domainObject);
+            layoutUiEvent.initSource(domainObject);
             return layoutUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
index f473024..df81470 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent.java
@@ -123,7 +123,7 @@ public class TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent extends
     private TitleUiEvent<Object> newTitleUiEvent(final Object domainObject) {
         try {
             final TitleUiEvent<Object> titleUiEvent = _Casts.uncheckedCast(titleUiEventClass.newInstance());
-            titleUiEvent.setSource(domainObject);
+            titleUiEvent.initSource(domainObject);
             return titleUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java
index a8b2df2..c222dd1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/domainobjectlayout/TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent.java
@@ -123,7 +123,7 @@ public class TitleFacetViaViewModelLayoutAnnotationUsingTitleUiEvent extends Tit
     private TitleUiEvent<Object> newTitleUiEvent(final Object domainObject) {
         try {
             final TitleUiEvent<Object> titleUiEvent = _Casts.uncheckedCast(titleUiEventClass.newInstance());
-            titleUiEvent.setSource(domainObject);
+            titleUiEvent.initSource(domainObject);
             return titleUiEvent;
         } catch (InstantiationException | IllegalAccessException ex) {
             throw new NonRecoverableException(ex);
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newActionInteractionEvent.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newActionInteractionEvent.java
index af976de..5569d99 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newActionInteractionEvent.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newActionInteractionEvent.java
@@ -36,9 +36,7 @@ public class DomainEventHelperTest_newActionInteractionEvent {
         public String foo(final int x, final String y) { return null; }
     }
 
-    public static class SomeDomainObjectFooInvokedDomainEvent extends ActionDomainEvent<SomeDomainObject> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class SomeDomainObjectFooInvokedDomainEvent extends ActionDomainEvent<SomeDomainObject> {}
 
     @Test
     public void defaultEventType() throws Exception {
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forAdd.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forAdd.java
index 7e6b492..ab1e56c 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forAdd.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forAdd.java
@@ -37,9 +37,7 @@ public class DomainEventHelperTest_newCollectionDomainEvent_forAdd {
     }
     public static class SomeReferencedObject {}
 
-    public static class SomeDomainObjectCollectionDomainEvent extends CollectionDomainEvent<SomeDomainObject, SomeReferencedObject> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class SomeDomainObjectCollectionDomainEvent extends CollectionDomainEvent<SomeDomainObject, SomeReferencedObject> {}
 
     @Test
     public void defaultEventType() throws Exception {
diff --git a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forRemove.java b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forRemove.java
index 32fbdce..d6c65f4 100644
--- a/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forRemove.java
+++ b/core/metamodel/src/test/java/org/apache/isis/metamodel/facets/DomainEventHelperTest_newCollectionDomainEvent_forRemove.java
@@ -37,9 +37,7 @@ public class DomainEventHelperTest_newCollectionDomainEvent_forRemove {
     }
     public static class SomeReferencedObject {}
 
-    public static class SomeDomainObjectCollectionRemovedFromDomainEvent extends CollectionDomainEvent<SomeDomainObject, SomeReferencedObject> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class SomeDomainObjectCollectionRemovedFromDomainEvent extends CollectionDomainEvent<SomeDomainObject, SomeReferencedObject> { }
 
     @Test
     public void defaultEventType() throws Exception {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
index a3c0bbe..417868f 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_LifecycleEventSupport.java
@@ -25,6 +25,8 @@ import org.apache.isis.metamodel.facets.object.callbacks.LifecycleEventFacet;
 import org.apache.isis.metamodel.spec.ManagedObject;
 import org.apache.isis.runtime.system.context.session.RuntimeContext;
 
+import lombok.val;
+
 /**
  * package private mixin for ObjectAdapterContext
  * <p>
@@ -43,14 +45,15 @@ class ObjectAdapterContext_LifecycleEventSupport {
 
     @SuppressWarnings({ "unchecked", "rawtypes" })
     void postLifecycleEventIfRequired(
-            final ManagedObject adapter,
-            final Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) {
-        final LifecycleEventFacet facet = adapter.getSpecification().getFacet(lifecycleEventFacetClass);
-        if(facet != null) {
-            final Class<? extends AbstractLifecycleEvent<?>> eventType = facet.getEventType();
-            final Object instance = InstanceUtil.createInstance(eventType);
-            final Object pojo = adapter.getPojo();
-            postEvent((AbstractLifecycleEvent) instance, pojo);
+            ManagedObject adapter,
+            Class<? extends LifecycleEventFacet> lifecycleEventFacetClass) {
+        
+        val lifecycleEventFacet = adapter.getSpecification().getFacet(lifecycleEventFacetClass);
+        if(lifecycleEventFacet != null) {
+            final Class<? extends AbstractLifecycleEvent<?>> eventType = lifecycleEventFacet.getEventType();
+            val instance = (AbstractLifecycleEvent) InstanceUtil.createInstance(eventType);
+            val pojo = adapter.getPojo();
+            postEvent(instance, pojo);
         }
     }
 
@@ -58,7 +61,7 @@ class ObjectAdapterContext_LifecycleEventSupport {
 
     private void postEvent(final AbstractLifecycleEvent<Object> event, final Object pojo) {
         if(eventBusService!=null) {
-            event.setSource(pojo);
+            event.initSource(pojo);
             eventBusService.post(event);
         }
     }
diff --git a/examples/apps/demo/src/main/java/domainapp/dom/events/EventLogMenu.java b/examples/apps/demo/src/main/java/domainapp/dom/events/EventLogMenu.java
index e121f12..fb0c697 100644
--- a/examples/apps/demo/src/main/java/domainapp/dom/events/EventLogMenu.java
+++ b/examples/apps/demo/src/main/java/domainapp/dom/events/EventLogMenu.java
@@ -42,9 +42,7 @@ public class EventLogMenu {
         return eventLog.listAll();
     }
 
-    public static class EventTestProgrammaticEvent extends ActionDomainEvent<EventLogMenu>  {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class EventTestProgrammaticEvent extends ActionDomainEvent<EventLogMenu>  {}
 
     @Action
     @ActionLayout(cssClassFa="fa-bolt")
diff --git a/examples/apps/demo/src/main/java/domainapp/dom/events/EventSubscriber.java b/examples/apps/demo/src/main/java/domainapp/dom/events/EventSubscriber.java
index 95e5833..580ac75 100644
--- a/examples/apps/demo/src/main/java/domainapp/dom/events/EventSubscriber.java
+++ b/examples/apps/demo/src/main/java/domainapp/dom/events/EventSubscriber.java
@@ -45,9 +45,7 @@ public class EventSubscriber {
     @Inject private EventLogRepository eventLogRepository;
     @Inject private TransactionService transactionService;
 
-    public static class EventSubscriberEvent extends AbstractDomainEvent<Object> {
-        private static final long serialVersionUID = 1L;
-    }
+    public static class EventSubscriberEvent extends AbstractDomainEvent<Object> {}
 
     @PostConstruct
     public void init() {
diff --git a/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java b/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
index 0093cfb..b843ff8 100644
--- a/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
+++ b/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -33,14 +33,12 @@ public class SimpleModule /*extends ModuleAbstract*/ {
     //    }
 
     public static class PropertyDomainEvent<S,T>
-    extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> {
-        private static final long serialVersionUID = 1L;}
+    extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> {}
     
     public static class CollectionDomainEvent<S,T>
-    extends org.apache.isis.applib.events.domain.CollectionDomainEvent<S,T> {
-        private static final long serialVersionUID = 1L;}
+    extends org.apache.isis.applib.events.domain.CollectionDomainEvent<S,T> {}
     
     public static class ActionDomainEvent<S> extends
-    org.apache.isis.applib.events.domain.ActionDomainEvent<S> {
-        private static final long serialVersionUID = 1L;}
+    org.apache.isis.applib.events.domain.ActionDomainEvent<S> {}
+    
 }
diff --git a/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java b/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
index 0260fd2..6b3cbb9 100644
--- a/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
+++ b/examples/apps/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
@@ -42,8 +42,7 @@ import domainapp.modules.simple.dom.types.Name;
         )
 public class SimpleObjects {
 
-    public static class CreateDomainEvent extends ActionDomainEvent<SimpleObjects> {
-        private static final long serialVersionUID = 1L;}
+    public static class CreateDomainEvent extends ActionDomainEvent<SimpleObjects> {}
 
     @Action(domainEvent = CreateDomainEvent.class)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
diff --git a/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java b/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java
index 0dec147..7281608 100644
--- a/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java
+++ b/examples/smoketests/src/main/java/org/apache/isis/testdomain/jdo/InventoryManager.java
@@ -30,8 +30,7 @@ public class InventoryManager {
 
     // -- UPDATE PRODUCT PRICE
 
-    public static class UpdateProductPriceEvent extends ActionDomainEvent {
-        private static final long serialVersionUID = 1L;}
+    public static class UpdateProductPriceEvent extends ActionDomainEvent {}
 
     @Action(domainEvent = UpdateProductPriceEvent.class)
     public Product updateProductPrice(Product product, double newPrice) {
diff --git a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstalledEvent.java b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstalledEvent.java
index e8eaad6..25d191e 100644
--- a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstalledEvent.java
+++ b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstalledEvent.java
@@ -19,11 +19,9 @@
 
 package org.apache.isis.extensions.fixtures.events;
 
-import java.util.EventObject;
+import org.apache.isis.applib.events.domain.EventObjectBase;
 
-public class FixturesInstalledEvent extends EventObject {
-
-    private static final long serialVersionUID = 1L;
+public class FixturesInstalledEvent extends EventObjectBase<Object> {
 
     public FixturesInstalledEvent(final Object source) {
         super(source);
diff --git a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstallingEvent.java b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstallingEvent.java
index e538088..9321fc0 100644
--- a/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstallingEvent.java
+++ b/extensions/fixtures/src/main/java/org/apache/isis/extensions/fixtures/events/FixturesInstallingEvent.java
@@ -19,11 +19,9 @@
 
 package org.apache.isis.extensions.fixtures.events;
 
-import java.util.EventObject;
+import org.apache.isis.applib.events.domain.EventObjectBase;
 
-public class FixturesInstallingEvent extends EventObject {
-
-    private static final long serialVersionUID = 1L;
+public class FixturesInstallingEvent extends EventObjectBase<Object> {
 
     public FixturesInstallingEvent(final Object source) {
         super(source);