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 2022/07/06 12:06:57 UTC
[isis] branch master updated: ISIS-3060: PostProcessor optimizations
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 471024935b ISIS-3060: PostProcessor optimizations
471024935b is described below
commit 471024935b9dd00bc77ddb42ff95105ea76b0a81
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Jul 6 14:06:48 2022 +0200
ISIS-3060: PostProcessor optimizations
---
.../CssClassFaFacetOnMemberPostProcessor.java | 2 +-
.../DeriveMixinMembersPostProcessor.java | 59 ----------------------
.../ObjectSpecificationPostProcessor.java | 12 ++++-
.../ObjectSpecificationPostProcessorAbstract.java | 34 -------------
.../all/DescribedAsFromTypePostProcessor.java | 8 +--
.../i18n/SynthesizeObjectNamingPostProcessor.java | 2 +-
.../all/i18n/TranslationPostProcessor.java | 11 ++--
.../authorization/AuthorizationPostProcessor.java | 8 +--
.../TweakDomainEventsForMixinPostProcessor.java | 6 +--
...NavigationFacetFromHiddenTypePostProcessor.java | 6 +--
.../object/ProjectionFacetsPostProcessor.java | 2 +-
.../param/ChoicesAndDefaultsPostProcessor.java | 6 +--
.../param/TypicalLengthFromTypePostProcessor.java | 4 +-
.../DisabledFromImmutablePostProcessor.java | 4 +-
.../dflt/ProgrammingModelFacetsJava11.java | 5 --
.../specloader/postprocessor/PostProcessor.java | 54 ++++++++++++++++++--
.../facets/TenantedAuthorizationPostProcessor.java | 8 +--
17 files changed, 94 insertions(+), 137 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java
index 732a029334..2524d0d467 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberPostProcessor.java
@@ -38,7 +38,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
if(objectAction.isDeclaredOnMixin()) {
return; // don't process mixin main method, instead process its peer
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/DeriveMixinMembersPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/DeriveMixinMembersPostProcessor.java
deleted file mode 100644
index 42b5ef3571..0000000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/DeriveMixinMembersPostProcessor.java
+++ /dev/null
@@ -1,59 +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.postprocessors;
-
-import javax.inject.Inject;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.MixedIn;
-
-import lombok.Getter;
-import lombok.NonNull;
-
-public class DeriveMixinMembersPostProcessor
-implements ObjectSpecificationPostProcessor {
-
- @Getter(onMethod_ = {@Override})
- private final @NonNull MetaModelContext metaModelContext;
-
- @Inject
- public DeriveMixinMembersPostProcessor(final MetaModelContext metaModelContext) {
- this.metaModelContext = metaModelContext;
- }
-
- @Override
- public void postProcess(final ObjectSpecification objectSpecification) {
-
- // calling count on these 3 streams so these are actually consumed,
- // as a side-effect the meta-model gets (further) populated
-
- // all the actions of this type
- objectSpecification.streamRuntimeActions(MixedIn.INCLUDED).count();
-
- // and all the collections of this type
- objectSpecification.streamCollections(MixedIn.INCLUDED).count();
-
- // and all the properties of this type
- objectSpecification.streamProperties(MixedIn.INCLUDED).count();
-
- }
-
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessor.java
index bc2a3f0011..e7da0fade0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessor.java
@@ -20,14 +20,22 @@ package org.apache.isis.core.metamodel.postprocessors;
import org.apache.isis.core.metamodel.context.HasMetaModelContext;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
public interface ObjectSpecificationPostProcessor
extends HasMetaModelContext {
- void postProcess(ObjectSpecification objectSpecification);
-
default boolean isEnabled() {
return true;
}
+ default void postProcessObject(final ObjectSpecification objSpec) {};
+ default void postProcessAction(final ObjectSpecification objSpec, final ObjectAction act) {};
+ default void postProcessParameter(final ObjectSpecification objSpec, final ObjectAction act, final ObjectActionParameter param) {};
+ default void postProcessProperty(final ObjectSpecification objSpec, final OneToOneAssociation prop) {};
+ default void postProcessCollection(final ObjectSpecification objSpec, final OneToManyAssociation coll) {};
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
index 8d4c9c0797..a9bdabc6e0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/ObjectSpecificationPostProcessorAbstract.java
@@ -22,13 +22,8 @@ import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.core.metamodel.spec.feature.MixedIn;
-import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
-import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.specimpl.ObjectMemberAbstract;
import lombok.Getter;
@@ -46,35 +41,6 @@ implements ObjectSpecificationPostProcessor {
this.metaModelContext = metaModelContext;
}
- @Override
- public final void postProcess(final ObjectSpecification objectSpecification) {
-
- doPostProcess(objectSpecification);
-
- objectSpecification.streamRuntimeActions(MixedIn.INCLUDED)
- .forEach(act -> {
-
- act.streamParameters()
- .forEach(param -> doPostProcess(objectSpecification, act, param));
-
- doPostProcess(objectSpecification, act);
-
- });
-
- objectSpecification.streamProperties(MixedIn.INCLUDED)
- .forEach(prop -> doPostProcess(objectSpecification, prop));
-
- objectSpecification.streamCollections(MixedIn.INCLUDED)
- .forEach(coll -> doPostProcess(objectSpecification, coll));
-
- }
-
- protected void doPostProcess(final ObjectSpecification objSpec) {};
- protected void doPostProcess(final ObjectSpecification objSpec, final ObjectAction act) {};
- protected void doPostProcess(final ObjectSpecification objSpec, final ObjectAction act, final ObjectActionParameter param) {};
- protected void doPostProcess(final ObjectSpecification objSpec, final OneToOneAssociation prop) {};
- protected void doPostProcess(final ObjectSpecification objSpec, final OneToManyAssociation coll) {};
-
/**
* Use for domain-object-type agnostic facets only!
* @see Facet#isObjectTypeSpecific()
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
index a27e3764d2..bc620fce4b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/DescribedAsFromTypePostProcessor.java
@@ -44,7 +44,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
if(objectAction.containsNonFallbackFacet(MemberDescribedFacet.class)) {
return;
}
@@ -58,7 +58,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction, final ObjectActionParameter parameter) {
+ public void postProcessParameter(final ObjectSpecification objectSpecification, final ObjectAction objectAction, final ObjectActionParameter parameter) {
if(parameter.containsNonFallbackFacet(ParamDescribedFacet.class)) {
return;
}
@@ -72,12 +72,12 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
+ public void postProcessProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
handle(prop);
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
+ public void postProcessCollection(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
handle(coll);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
index d1d54efb21..4c3e50a07f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/SynthesizeObjectNamingPostProcessor.java
@@ -43,7 +43,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification) {
+ public void postProcessObject(final ObjectSpecification objectSpecification) {
if(!(objectSpecification.isEntityOrViewModelOrAbstract()
|| objectSpecification.isInjectable())) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/TranslationPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/TranslationPostProcessor.java
index 7dd4e61d53..4739a1412e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/TranslationPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/all/i18n/TranslationPostProcessor.java
@@ -54,7 +54,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpec) {
+ public void postProcessObject(final ObjectSpecification objectSpec) {
memoizeTranslations(
Stream.of(
objectSpec.lookupFacet(ObjectNamedFacet.class),
@@ -62,7 +62,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpec, final ObjectAction act) {
+ public void postProcessAction(final ObjectSpecification objectSpec, final ObjectAction act) {
memoizeTranslations(
Stream.of(
act.lookupFacet(MemberNamedFacet.class),
@@ -70,7 +70,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(
+ public void postProcessParameter(
final ObjectSpecification objectSpecification,
final ObjectAction objectAction,
final ObjectActionParameter param) {
@@ -81,7 +81,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpec, final OneToOneAssociation prop) {
+ public void postProcessProperty(final ObjectSpecification objectSpec, final OneToOneAssociation prop) {
memoizeTranslations(
Stream.of(
prop.lookupFacet(MemberNamedFacet.class),
@@ -89,12 +89,11 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpec, final OneToManyAssociation coll) {
+ public void postProcessCollection(final ObjectSpecification objectSpec, final OneToManyAssociation coll) {
memoizeTranslations(
Stream.of(
coll.lookupFacet(MemberNamedFacet.class),
coll.lookupFacet(MemberDescribedFacet.class)));
-
}
// -- HELPER
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationPostProcessor.java
index 48d40046db..3df026cb71 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationPostProcessor.java
@@ -37,22 +37,22 @@ public class AuthorizationPostProcessor
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification) {
+ public void postProcessObject(final ObjectSpecification objectSpecification) {
addFacet(objectSpecification);
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction act) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction act) {
addFacet(act);
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
+ public void postProcessProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
addFacet(prop);
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
+ public void postProcessCollection(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
addFacet(coll);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java
index 5d88b70251..b943c78aed 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/TweakDomainEventsForMixinPostProcessor.java
@@ -63,7 +63,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction objectAction) {
if(objectAction instanceof ObjectActionMixedIn) {
// unlike collection and property mixins, there is no need to create the DomainEventFacet, it will
@@ -86,7 +86,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
+ public void postProcessProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
if(property instanceof OneToOneAssociationMixedIn) {
final OneToOneAssociationMixedIn propertyMixin = (OneToOneAssociationMixedIn) property;
@@ -127,7 +127,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToManyAssociation collection) {
+ public void postProcessCollection(final ObjectSpecification objectSpecification, final OneToManyAssociation collection) {
if(collection instanceof OneToManyAssociationMixedIn) {
final OneToManyAssociationMixedIn collectionMixin = (OneToManyAssociationMixedIn) collection;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/navigation/NavigationFacetFromHiddenTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/navigation/NavigationFacetFromHiddenTypePostProcessor.java
index 8501abc71d..30bffb9aef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/navigation/NavigationFacetFromHiddenTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/members/navigation/NavigationFacetFromHiddenTypePostProcessor.java
@@ -43,17 +43,17 @@ public class NavigationFacetFromHiddenTypePostProcessor extends ObjectSpecificat
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction act) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction act) {
addFacetIfRequired(act, act.getReturnType());
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
+ public void postProcessProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
addFacetIfRequired(prop, prop.getElementType());
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
+ public void postProcessCollection(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
addFacetIfRequired(coll, coll.getElementType());
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/object/ProjectionFacetsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/object/ProjectionFacetsPostProcessor.java
index 7f35c6609d..4f6cb5ca9c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/object/ProjectionFacetsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/object/ProjectionFacetsPostProcessor.java
@@ -45,7 +45,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification) {
+ public void postProcessObject(final ObjectSpecification objectSpecification) {
val projectionFacet = ProjectionFacetFromProjectingProperty.create(objectSpecification);
if (projectionFacet == null) {
return;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
index c97cc98d42..d73723c355 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java
@@ -64,7 +64,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(
+ public void postProcessParameter(
final ObjectSpecification objectSpecification,
final ObjectAction objectAction,
final ObjectActionParameter param) {
@@ -82,7 +82,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(
+ public void postProcessProperty(
final ObjectSpecification objectSpecification,
final OneToOneAssociation prop) {
if(!hasMemberLevelDefaults(prop)) {
@@ -105,7 +105,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(
+ public void postProcessCollection(
final ObjectSpecification objectSpecification,
final OneToManyAssociation coll) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
index b3c9ebd61f..7c3fed7d76 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/param/TypicalLengthFromTypePostProcessor.java
@@ -40,7 +40,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(
+ public void postProcessParameter(
final ObjectSpecification objectSpecification,
final ObjectAction objectAction,
final ObjectActionParameter parameter) {
@@ -57,7 +57,7 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(
+ public void postProcessProperty(
final ObjectSpecification objectSpecification,
final OneToOneAssociation property) {
if(property.containsNonFallbackFacet(TypicalLengthFacet.class)) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/properties/DisabledFromImmutablePostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/properties/DisabledFromImmutablePostProcessor.java
index f6e1e39d80..43ca18539e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/properties/DisabledFromImmutablePostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/postprocessors/properties/DisabledFromImmutablePostProcessor.java
@@ -48,14 +48,14 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction act) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction act) {
// previously was also copying ImmutableFacet from spec onto Action (as for properties and collections ...
// corresponds to CopyImmutableFacetOntoMembersFactory. However, ImmutableFacet only ever disables for
// properties and collections, so no point in copying over.
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
+ public void postProcessProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation property) {
if(property.containsNonFallbackFacet(DisabledFacet.class)) {
return;
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index ae0a2e4b51..440154c976 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -84,7 +84,6 @@ import org.apache.isis.core.metamodel.facets.properties.validating.method.Proper
import org.apache.isis.core.metamodel.facets.value.semantics.ValueSemanticsAnnotationFacetFactory;
import org.apache.isis.core.metamodel.methods.DomainIncludeAnnotationEnforcesMetamodelContributionValidator;
import org.apache.isis.core.metamodel.methods.MethodByClassMap;
-import org.apache.isis.core.metamodel.postprocessors.DeriveMixinMembersPostProcessor;
import org.apache.isis.core.metamodel.postprocessors.all.DescribedAsFromTypePostProcessor;
import org.apache.isis.core.metamodel.postprocessors.all.i18n.SynthesizeObjectNamingPostProcessor;
import org.apache.isis.core.metamodel.postprocessors.all.i18n.TranslationPostProcessor;
@@ -245,10 +244,6 @@ extends ProgrammingModelAbstract {
val mmc = getMetaModelContext();
- addPostProcessor(PostProcessingOrder.A0_BEFORE_BUILTIN, new DeriveMixinMembersPostProcessor(mmc));
-
- // only after this point have any mixin members been resolved and are available on the ObjectSpecification.
-
// must run before Object nouns are used
addPostProcessor(PostProcessingOrder.A1_BUILTIN, new SynthesizeObjectNamingPostProcessor(mmc));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/postprocessor/PostProcessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/postprocessor/PostProcessor.java
index 4285a2a495..7507392bf3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/postprocessor/PostProcessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/postprocessor/PostProcessor.java
@@ -22,6 +22,10 @@ import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.postprocessors.ObjectSpecificationPostProcessor;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.MixedIn;
+import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
+import org.apache.isis.core.metamodel.spec.feature.OneToManyAssociation;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import lombok.RequiredArgsConstructor;
import lombok.val;
@@ -39,17 +43,61 @@ public class PostProcessor {
}
public void shutdown() {
- enabledPostProcessors = null;
+ enabledPostProcessors = Can.empty();
}
- public void postProcess(ObjectSpecification objectSpecification) {
+ public void postProcess(final ObjectSpecification objectSpecification) {
+ // calling count on these 3 streams so these are actually consumed,
+ // as a side-effect the meta-model potentially gets further populated
+// objectSpecification.streamRuntimeActions(MixedIn.INCLUDED).count();
+// objectSpecification.streamCollections(MixedIn.INCLUDED).count();
+// objectSpecification.streamProperties(MixedIn.INCLUDED).count();
+ postProcessObject(objectSpecification);
+
+ objectSpecification.streamRuntimeActions(MixedIn.INCLUDED)
+ .forEach(act->postProcessAction(objectSpecification, act));
+
+ objectSpecification.streamProperties(MixedIn.INCLUDED)
+ .forEach(prop->postProcessProperty(objectSpecification, prop));
+
+ objectSpecification.streamCollections(MixedIn.INCLUDED)
+ .forEach(coll->postProcessCollection(objectSpecification, coll));
+ }
+
+ // -- HELPER
+
+ private void postProcessObject(
+ final ObjectSpecification objectSpecification) {
for (val postProcessor : enabledPostProcessors) {
+ postProcessor.postProcessObject(objectSpecification);
+ }
+ }
- postProcessor.postProcess(objectSpecification);
+ private void postProcessAction(
+ final ObjectSpecification objectSpecification,
+ final ObjectAction act) {
+ for (val postProcessor : enabledPostProcessors) {
+ act.streamParameters().forEach(param ->
+ postProcessor.postProcessParameter(objectSpecification, act, param));
+ postProcessor.postProcessAction(objectSpecification, act);
+ }
+ }
+ private void postProcessProperty(
+ final ObjectSpecification objectSpecification,
+ final OneToOneAssociation prop) {
+ for (val postProcessor : enabledPostProcessors) {
+ postProcessor.postProcessProperty(objectSpecification, prop);
}
+ }
+ private void postProcessCollection(
+ final ObjectSpecification objectSpecification,
+ final OneToManyAssociation coll) {
+ for (val postProcessor : enabledPostProcessors) {
+ postProcessor.postProcessCollection(objectSpecification, coll);
+ }
}
}
diff --git a/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/facets/TenantedAuthorizationPostProcessor.java b/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/facets/TenantedAuthorizationPostProcessor.java
index 80ca5c1cee..9a8bdaa8ea 100644
--- a/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/facets/TenantedAuthorizationPostProcessor.java
+++ b/extensions/security/secman/integration/src/main/java/org/apache/isis/extensions/secman/integration/facets/TenantedAuthorizationPostProcessor.java
@@ -74,22 +74,22 @@ extends ObjectSpecificationPostProcessorAbstract {
}
@Override
- public void doPostProcess(final ObjectSpecification objectSpecification) {
+ public void postProcessObject(final ObjectSpecification objectSpecification) {
FacetUtil.addFacetIfPresent(createFacet(objectSpecification.getCorrespondingClass(), objectSpecification));
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final ObjectAction act) {
+ public void postProcessAction(final ObjectSpecification objectSpecification, final ObjectAction act) {
addFacetTo(objectSpecification, act);
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
+ public void postProcessProperty(final ObjectSpecification objectSpecification, final OneToOneAssociation prop) {
addFacetTo(objectSpecification, prop);
}
@Override
- protected void doPostProcess(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
+ public void postProcessCollection(final ObjectSpecification objectSpecification, final OneToManyAssociation coll) {
addFacetTo(objectSpecification, coll);
}