You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/07/16 12:13:24 UTC
[isis] branch master updated: ISIS-2798: makes
ServiceInjectorDefault intelligent to automatically unwrap...
This is an automated email from the ASF dual-hosted git repository.
danhaywood 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 a361d18 ISIS-2798: makes ServiceInjectorDefault intelligent to automatically unwrap...
a361d18 is described below
commit a361d1827d5283a0286f4fcccf41d67eb875c526
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jul 16 13:13:04 2021 +0100
ISIS-2798: makes ServiceInjectorDefault intelligent to automatically unwrap...
... ManagedObjects if passed in instead of a pojo
---
.../metamodel/services/ServiceInjectorDefault.java | 35 +++++++++++++++-------
1 file changed, 25 insertions(+), 10 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
index 0bfe697..296abd1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
@@ -18,17 +18,21 @@
*/
package org.apache.isis.core.metamodel.services;
-import lombok.RequiredArgsConstructor;
+import javax.annotation.Nullable;
+import javax.annotation.Priority;
+import javax.inject.Inject;
+import javax.inject.Named;
+
import org.apache.isis.applib.annotation.PriorityPrecedence;
import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.stereotype.Service;
-import javax.annotation.Nullable;
-import javax.annotation.Priority;
-import javax.inject.Inject;
-import javax.inject.Named;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
+import lombok.val;
/**
*
@@ -48,15 +52,26 @@ public class ServiceInjectorDefault implements ServiceInjector {
public <T> T injectServicesInto(final @Nullable T domainObject) {
if(domainObject!=null) {
-
- autowireCapableBeanFactory.autowireBeanProperties(
- domainObject,
- AutowireCapableBeanFactory.AUTOWIRE_NO,
- /*dependencyCheck*/ false);
+ if(domainObject instanceof ManagedObject) {
+ // in case a ManagedObject was passed instead of the pojo.
+ val managedObject = (ManagedObject) domainObject;
+ val actualDomainObject = managedObject.getPojo();
+ if(actualDomainObject != null) {
+ injectInto(actualDomainObject);
+ }
+ } else {
+ injectInto(domainObject);
+ }
}
return domainObject;
}
+ private <T> void injectInto(final @NonNull T domainObject) {
+ autowireCapableBeanFactory.autowireBeanProperties(
+ domainObject,
+ AutowireCapableBeanFactory.AUTOWIRE_NO,
+ /*dependencyCheck*/ false);
+ }
}