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 2021/09/06 02:28:09 UTC

[isis] branch master updated: ISIS-2774: merge the 7 CallbackFacetFactories into a single one

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

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


The following commit(s) were added to refs/heads/master by this push:
     new b4812df  ISIS-2774: merge the 7 CallbackFacetFactories into a single one
b4812df is described below

commit b4812df74a15cda6bf6a5ac34be7f889a407a5df
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Sep 6 04:28:00 2021 +0200

    ISIS-2774: merge the 7 CallbackFacetFactories into a single one
---
 .../_testing/MetaModelContext_forTesting.java      |  8 ++---
 ...toryAbstract.java => CallbackFacetFactory.java} | 40 ++++++++++++++--------
 .../callbacks/CreatedCallbackFacetFactory.java     | 34 ------------------
 .../callbacks/LoadedCallbackFacetFactory.java      | 34 ------------------
 .../callbacks/PersistedCallbackFacetFactory.java   | 34 ------------------
 .../callbacks/PersistingCallbackFacetFactory.java  | 34 ------------------
 .../callbacks/RemovingCallbackFacetFactory.java    | 34 ------------------
 .../callbacks/UpdatedCallbackFacetFactory.java     | 34 ------------------
 .../callbacks/UpdatingCallbackFacetFactory.java    | 34 ------------------
 ...ava8.java => ProgrammingModelFacetsJava11.java} | 20 +++--------
 .../specloader/ProgrammingModelServiceDefault.java |  4 +--
 .../specloader/SpecificationLoaderDefault.java     |  4 +--
 .../callback/CallbackFacetFactoryTestAbstract.java | 16 +++++++++
 .../callback/CreatedCallbackFacetFactoryTest.java  | 18 +---------
 .../callback/LoadedCallbackFacetFactoryTest.java   | 16 ---------
 .../PersistedCallbackFacetFactoryTest.java         | 16 ---------
 .../PersistingCallbackFacetFactoryTest.java        | 16 ---------
 .../callback/RemovingCallbackFacetFactoryTest.java | 16 ---------
 .../callback/UpdatedCallbackFacetFactoryTest.java  | 16 ---------
 .../callback/UpdatingCallbackFacetFactoryTest.java | 16 ---------
 .../facets/param/name/ParameterNameFacetTest.java  | 14 ++++----
 21 files changed, 63 insertions(+), 395 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
index 99cea25..b37a2ae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/_testing/MetaModelContext_forTesting.java
@@ -27,6 +27,8 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static java.util.Objects.requireNonNull;
+
 import org.springframework.core.env.AbstractEnvironment;
 
 import org.apache.isis.applib.services.factory.FactoryService;
@@ -68,7 +70,7 @@ import org.apache.isis.core.metamodel.objectmanager.ObjectManagerDefault;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelAbstract;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilterDefault;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
+import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava11;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry;
 import org.apache.isis.core.metamodel.services.events.MetamodelEventService;
 import org.apache.isis.core.metamodel.services.grid.GridLoaderServiceDefault;
@@ -84,8 +86,6 @@ import org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault;
 import org.apache.isis.core.security.authentication.manager.AuthenticationManager;
 import org.apache.isis.core.security.authorization.manager.AuthorizationManager;
 
-import static java.util.Objects.requireNonNull;
-
 import lombok.Builder;
 import lombok.Getter;
 import lombok.Singular;
@@ -125,7 +125,7 @@ implements MetaModelContext {
     private SpecificationLoader specificationLoader;
 
     @Builder.Default
-    private Function<MetaModelContext,  ProgrammingModel> programmingModelFactory = ProgrammingModelFacetsJava8::new;
+    private Function<MetaModelContext,  ProgrammingModel> programmingModelFactory = ProgrammingModelFacetsJava11::new;
 
     private InteractionProvider interactionProvider;
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactoryAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
similarity index 63%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactoryAbstract.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
index ecfd421..4f2f0fb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactoryAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CallbackFacetFactory.java
@@ -20,6 +20,9 @@ package org.apache.isis.core.metamodel.facets.object.callbacks;
 
 import java.lang.reflect.Method;
 import java.util.function.BiFunction;
+import java.util.stream.Stream;
+
+import javax.inject.Inject;
 
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -27,30 +30,38 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.methods.MethodFinderOptions;
 import org.apache.isis.core.metamodel.methods.MethodFinderUtils;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
+import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 import org.apache.isis.core.metamodel.methods.MethodPrefixBasedFacetFactoryAbstract;
 
-import lombok.NonNull;
 import lombok.val;
 
-abstract class CallbackFacetFactoryAbstract
+public class CallbackFacetFactory
 extends MethodPrefixBasedFacetFactoryAbstract {
 
-    private final MethodLiteralConstants.CallbackMethod callbackMethodEnum;
-    private final BiFunction<Can<Method>, FacetHolder, CallbackFacet> callbackFacetConstructor;
-
-    protected CallbackFacetFactoryAbstract(
-            final @NonNull MetaModelContext mmc,
-            final @NonNull MethodLiteralConstants.CallbackMethod callbackMethodEnum,
-            final @NonNull BiFunction<Can<Method>, FacetHolder, CallbackFacet> callbackFacetConstructor) {
-
-        super(mmc, FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE, callbackMethodEnum.getMethodNames());
-        this.callbackMethodEnum = callbackMethodEnum;
-        this.callbackFacetConstructor = callbackFacetConstructor;
+    @Inject
+    public CallbackFacetFactory(final MetaModelContext mmc) {
+        super(mmc, FeatureType.OBJECTS_ONLY, OrphanValidation.VALIDATE,
+                Stream.of(CallbackMethod.values())
+                .map(CallbackMethod::getMethodNames)
+                .flatMap(Can::stream)
+                .collect(Can.toCan()));
     }
 
     @Override
     public final void process(final ProcessClassContext processClassContext) {
+        processCallback(processClassContext, CallbackMethod.CREATED, CreatedCallbackFacetViaMethod::new);
+        processCallback(processClassContext, CallbackMethod.LOADED, LoadedCallbackFacetViaMethod::new);
+        processCallback(processClassContext, CallbackMethod.PERSISTED, PersistedCallbackFacetViaMethod::new);
+        processCallback(processClassContext, CallbackMethod.PERSISTING, PersistingCallbackFacetViaMethod::new);
+        processCallback(processClassContext, CallbackMethod.REMOVING, RemovingCallbackFacetViaMethod::new);
+        processCallback(processClassContext, CallbackMethod.UPDATED, UpdatedCallbackFacetViaMethod::new);
+        processCallback(processClassContext, CallbackMethod.UPDATING, UpdatingCallbackFacetViaMethod::new);
+    }
+
+    private void processCallback(
+            final ProcessClassContext processClassContext,
+            final CallbackMethod callbackMethodEnum,
+            final BiFunction<Can<Method>, FacetHolder, CallbackFacet> callbackFacetConstructor) {
         val cls = processClassContext.getCls();
         val facetHolder = processClassContext.getFacetHolder();
 
@@ -67,4 +78,5 @@ extends MethodPrefixBasedFacetFactoryAbstract {
         }
     }
 
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
deleted file mode 100644
index 169da78..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/CreatedCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class CreatedCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public CreatedCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.CREATED, CreatedCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetFactory.java
deleted file mode 100644
index a2825f2..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/LoadedCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class LoadedCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public LoadedCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.LOADED, LoadedCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetFactory.java
deleted file mode 100644
index c5e8bae..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistedCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class PersistedCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public PersistedCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.PERSISTED, PersistedCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetFactory.java
deleted file mode 100644
index f8139dc..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/PersistingCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class PersistingCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public PersistingCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.PERSISTING, PersistingCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetFactory.java
deleted file mode 100644
index e2afd0a..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/RemovingCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class RemovingCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public RemovingCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.REMOVING, RemovingCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetFactory.java
deleted file mode 100644
index cb4bdc9..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatedCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class UpdatedCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public UpdatedCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.UPDATED, UpdatedCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetFactory.java
deleted file mode 100644
index c809a72..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/callbacks/UpdatingCallbackFacetFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.core.metamodel.facets.object.callbacks;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
-
-public class UpdatingCallbackFacetFactory
-extends CallbackFacetFactoryAbstract {
-
-    @Inject
-    public UpdatingCallbackFacetFactory(final MetaModelContext mmc) {
-        super(mmc, MethodLiteralConstants.CallbackMethod.UPDATING, UpdatingCallbackFacetViaMethod::new);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
similarity index 95%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index 91cf97d..54e2e5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava8.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -44,13 +44,7 @@ import org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContex
 import org.apache.isis.core.metamodel.facets.members.named.method.NamedFacetForMemberViaMethodFactory;
 import org.apache.isis.core.metamodel.facets.object.ViewModelSemanticCheckingFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.bookmarkable.BookmarkPolicyFacetFallbackFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacetFactory;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacetFactory;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacetFactory;
 import org.apache.isis.core.metamodel.facets.object.choices.enums.EnumFacetUsingValueFacetUsingSemanticsProviderFactory;
 import org.apache.isis.core.metamodel.facets.object.cssclass.method.CssClassFacetMethodFactory;
 import org.apache.isis.core.metamodel.facets.object.defaults.annotcfg.DefaultedFacetAnnotationElseConfigurationFactory;
@@ -162,10 +156,10 @@ import org.apache.isis.core.metamodel.services.title.TitlesAndTranslationsValida
 
 import lombok.val;
 
-public final class ProgrammingModelFacetsJava8
+public final class ProgrammingModelFacetsJava11
 extends ProgrammingModelAbstract {
 
-    public ProgrammingModelFacetsJava8(final MetaModelContext mmc) {
+    public ProgrammingModelFacetsJava11(final MetaModelContext mmc) {
         super(mmc);
 
         // act on the peer objects (FacetedMethod etc), rather than ObjectMembers etc
@@ -236,13 +230,7 @@ extends ProgrammingModelAbstract {
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new DisableForContextFacetViaMethodFactory(mmc));
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new HideForContextFacetViaMethodFactory(mmc));
 
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new CreatedCallbackFacetFactory(mmc));
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new LoadedCallbackFacetFactory(mmc));
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new PersistedCallbackFacetFactory(mmc));
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new PersistingCallbackFacetFactory(mmc));
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new UpdatingCallbackFacetFactory(mmc));
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new UpdatedCallbackFacetFactory(mmc));
-        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new RemovingCallbackFacetFactory(mmc));
+        addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new CallbackFacetFactory(mmc));
 
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ValidateObjectFacetMethodFactory(mmc));
         addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new ObjectValidPropertiesFacetImplFactory(mmc));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
index 85fb092..120ff5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
@@ -32,7 +32,7 @@ import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilter;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelService;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
+import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava11;
 
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
@@ -62,7 +62,7 @@ implements ProgrammingModelService {
 
         log.info("About to create the ProgrammingModel.");
 
-        val programmingModel = new ProgrammingModelFacetsJava8(metaModelContext);
+        val programmingModel = new ProgrammingModelFacetsJava11(metaModelContext);
 
         // from all plugins out there, add their contributed FacetFactories, Validators
         // and PostProcessors to the programming model
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 2052501..b41f07e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -65,7 +65,7 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModelService;
-import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava8;
+import org.apache.isis.core.metamodel.progmodels.dflt.ProgrammingModelFacetsJava11;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutor;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutor.Substitution;
 import org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutorDefault;
@@ -94,7 +94,7 @@ import lombok.extern.log4j.Log4j2;
  * <ul>
  * <li>The most important plug-in point is {@link ProgrammingModel} that
  * specifies the set of {@link Facet} that make up programming model. If not
- * specified then defaults to {@link ProgrammingModelFacetsJava8} (which should
+ * specified then defaults to {@link ProgrammingModelFacetsJava11} (which should
  * be used as a starting point for your own customizations).
  * <li>The only mandatory plug-in point is {@link ClassSubstitutor}, which
  * allows the class to be loaded to be substituted if required. This is used in
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java
index d9c3e38..1708ee3 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CallbackFacetFactoryTestAbstract.java
@@ -6,6 +6,7 @@ import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
 import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
+import org.apache.isis.core.metamodel.facets.object.callbacks.CallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants;
 
 import lombok.val;
@@ -13,6 +14,21 @@ import lombok.val;
 abstract class CallbackFacetFactoryTestAbstract
 extends AbstractFacetFactoryTest {
 
+    protected CallbackFacetFactory facetFactory;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        facetFactory = new CallbackFacetFactory(metaModelContext);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        facetFactory = null;
+        super.tearDown();
+    }
+
     protected void assertPicksUp(
             final int expectedCallbackCount,
             final FacetFactory facetFactory,
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java
index f3d7ee8..720df47 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/CreatedCallbackFacetFactoryTest.java
@@ -20,32 +20,16 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.CreatedCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class CreatedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private CreatedCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new CreatedCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testCreatedLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
             public void created() {
-            };
+            }
         }
         assertPicksUp(1, facetFactory, Customer.class, CallbackMethod.CREATED, CreatedCallbackFacet.class);
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java
index 7971d4d..e8a16b1 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/LoadedCallbackFacetFactoryTest.java
@@ -20,27 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.LoadedCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class LoadedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private LoadedCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new LoadedCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testLoadedLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java
index 9a14625..9916460 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistedCallbackFacetFactoryTest.java
@@ -20,27 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistedCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class PersistedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private PersistedCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new PersistedCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testPersistedLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java
index 2f8863e..37dd5fa 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/PersistingCallbackFacetFactoryTest.java
@@ -20,27 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.PersistingCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class PersistingCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private PersistingCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new PersistingCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testPersistingLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java
index 00bd164..941b3f8 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/RemovingCallbackFacetFactoryTest.java
@@ -20,27 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.RemovingCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class RemovingCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private RemovingCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new RemovingCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testRemovingLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java
index dfdc2d6..4e62127 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatedCallbackFacetFactoryTest.java
@@ -20,27 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class UpdatedCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private UpdatedCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new UpdatedCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testUpdatedLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java
index 4660849..146f5f5 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/callback/UpdatingCallbackFacetFactoryTest.java
@@ -20,27 +20,11 @@
 package org.apache.isis.core.metamodel.facets.object.callback;
 
 import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacet;
-import org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingCallbackFacetFactory;
 import org.apache.isis.core.metamodel.methods.MethodLiteralConstants.CallbackMethod;
 
 public class UpdatingCallbackFacetFactoryTest
 extends CallbackFacetFactoryTestAbstract {
 
-    private UpdatingCallbackFacetFactory facetFactory;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-
-        facetFactory = new UpdatingCallbackFacetFactory(metaModelContext);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        facetFactory = null;
-        super.tearDown();
-    }
-
     public void testUpdatingLifecycleMethodPickedUpOn() {
         class Customer {
             @SuppressWarnings("unused")
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index 4273a92..07c3444 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -24,6 +24,9 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
 import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.commons.internal.reflection._Reflect;
@@ -33,9 +36,6 @@ import org.apache.isis.core.metamodel.facets.FacetFactory;
 import org.apache.isis.core.metamodel.facets.all.named.ParamNamedFacet;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
 import lombok.val;
 
 /**
@@ -56,9 +56,6 @@ extends AbstractFacetFactoryJUnit4TestCase {
         super.setUpFacetedMethodAndParameter();
 
         programmingModel = metaModelContext.getProgrammingModel();
-
-        // verify that
-        assertEquals(119, programmingModel.streamFactories().count());
     }
 
     @Override
@@ -68,6 +65,11 @@ extends AbstractFacetFactoryJUnit4TestCase {
         programmingModel = null;
     }
 
+    @Test
+    public void verifyProgrammingModelNumberOfFactories() {
+        assertEquals(113, programmingModel.streamFactories().count());
+    }
+
     @Test //verify we have the javac -parameter flag set when compiling this class
     public void verifyTestEnvironmentIsSetupCorrectly() {