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/08/31 10:23:05 UTC
[isis] branch master updated: ISIS-3167: obj. spec: memoize isInjectable flag
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 039aa27c42 ISIS-3167: obj. spec: memoize isInjectable flag
039aa27c42 is described below
commit 039aa27c42a39eff515b584c4d56af24df4fe428
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Aug 31 12:22:57 2022 +0200
ISIS-3167: obj. spec: memoize isInjectable flag
---
.../specimpl/dflt/ObjectSpecificationDefault.java | 64 +++++++++++-----------
1 file changed, 33 insertions(+), 31 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
index d2e2d0ccf6..e27ce87973 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/dflt/ObjectSpecificationDefault.java
@@ -75,8 +75,6 @@ public class ObjectSpecificationDefault
extends ObjectSpecificationAbstract
implements FacetHolder {
- // -- constructor, fields
-
/**
* Lazily built by {@link #getMember(Method)}.
*/
@@ -121,23 +119,6 @@ implements FacetHolder {
new FacetedMethodsBuilder(this, facetProcessor, classSubstitutorRegistry);
}
- private boolean isVetoedForInjection;
-
- @Override
- public boolean isInjectable() {
- return !isVetoedForInjection
- && !getBeanSort().isAbstract()
- && !getBeanSort().isValue()
- && !getBeanSort().isEntity()
- && !getBeanSort().isViewModel()
- && !getBeanSort().isMixin()
- && (getBeanSort().isManagedBeanAny()
- //|| typeMeta.getBeanSort().isUnknown());
- || getServiceRegistry()
- .lookupRegisteredBeanById(getLogicalType())
- .isPresent());
- }
-
@Override
protected void introspectTypeHierarchy() {
@@ -339,18 +320,6 @@ implements FacetHolder {
});
}
-
- // -- toString
-
- @Override
- public String toString() {
- final ToString str = new ToString(this);
- str.append("class", getFullIdentifier());
- str.append("type", getBeanSort().name());
- str.append("superclass", superclass() == null ? "Object" : superclass().getFullIdentifier());
- return str.toString();
- }
-
// -- ELEMENT SPECIFICATION
private final _Lazy<Optional<ObjectSpecification>> elementSpecification =
@@ -377,4 +346,37 @@ implements FacetHolder {
.streamPropertiesForColumnRendering(this, memberIdentifier, parentObject);
}
+ // -- DETERMINE INJECTABILITY
+
+ private boolean isVetoedForInjection;
+
+ private _Lazy<Boolean> isInjectableLazy = _Lazy.threadSafe(()->
+ !isVetoedForInjection
+ && !getBeanSort().isAbstract()
+ && !getBeanSort().isValue()
+ && !getBeanSort().isEntity()
+ && !getBeanSort().isViewModel()
+ && !getBeanSort().isMixin()
+ && (getBeanSort().isManagedBeanAny()
+ || getServiceRegistry()
+ .lookupRegisteredBeanById(getLogicalType())
+ .isPresent())
+ );
+
+ @Override
+ public boolean isInjectable() {
+ return isInjectableLazy.get();
+ }
+
+ // -- TO STRING
+
+ @Override
+ public String toString() {
+ final ToString str = new ToString(this);
+ str.append("class", getFullIdentifier());
+ str.append("type", getBeanSort().name());
+ str.append("superclass", superclass() == null ? "Object" : superclass().getFullIdentifier());
+ return str.toString();
+ }
+
}