[ 
https://issues.apache.org/jira/browse/ISIS-2399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andi Huber reassigned ISIS-2399:
--------------------------------

    Assignee: Andi Huber

> Spring bean resolution issues when configuring TenantedAuthorizationFacet
> -------------------------------------------------------------------------
>
>                 Key: ISIS-2399
>                 URL: https://issues.apache.org/jira/browse/ISIS-2399
>             Project: Isis
>          Issue Type: Bug
>          Components: Isis Core
>    Affects Versions: 2.0.0-M3
>            Reporter: Daniel Keir Haywood
>            Assignee: Andi Huber
>            Priority: Major
>             Fix For: 2.0.0-M4
>
>
> It seems that attempting to access QueryResultsCache (which is 
> @InteractionScoped) from within a facet (TenantedAuthorizationFacet) causes 
> issues.
> To reproduce, in the demo app:
> just add this silly implementation:
> {code:java}
> @Service
> public class ApplicationTenancyEvaluatorImpl implements 
> ApplicationTenancyEvaluator {
>     @Override
>     public boolean handles(Class<?> cls) {
>         return PrimitiveByteHolder.class.isAssignableFrom(cls);
>     }
>     @Override
>     public String hides(Object domainObject, ApplicationUser applicationUser) 
> {
>         PrimitiveByteHolder byteHolder = (PrimitiveByteHolder) domainObject;
>         return byteHolder.getReadOnlyProperty() == 3 ? "hidden" : null;
>     }
>     @Override
>     public String disables(Object domainObject, ApplicationUser 
> applicationUser) {
>         return null;
>     }
> }
>  {code}
> which for me generated this stack trace:
> {code:java}
> org.springframework.beans.factory.BeanCreationException: Error creating bean 
> with name 'isisRuntime.QueryResultsCacheDefault': Scope 'isis-interaction' is 
> not active for the current thread; consider defining a scoped proxy for this 
> bean if you intend to refer to it from a singleton; nested exception is 
> java.lang.IllegalStateException: Creation of bean 
> isisRuntime.QueryResultsCacheDefault with @IsisInteractionScope requires the 
> calling Thread[ForkJoinPool.commonPool-worker-5 (453)]) to have an open 
> IsisInteraction on the thread-local stack. Running into this issue might be 
> caused by use of ... @Inject MyScopedBean bean ..., instead of ... @Inject 
> Provider<MyScopedBean> provider 
> ...org.springframework.beans.factory.BeanCreationException: Error creating 
> bean with name 'isisRuntime.QueryResultsCacheDefault': Scope 
> 'isis-interaction' is not active for the current thread; consider defining a 
> scoped proxy for this bean if you intend to refer to it from a singleton; 
> nested exception is java.lang.IllegalStateException: Creation of bean 
> isisRuntime.QueryResultsCacheDefault with @IsisInteractionScope requires the 
> calling Thread[ForkJoinPool.commonPool-worker-5 (453)]) to have an open 
> IsisInteraction on the thread-local stack. Running into this issue might be 
> caused by use of ... @Inject MyScopedBean bean ..., instead of ... @Inject 
> Provider<MyScopedBean> provider ... at 
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:368)
>  ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at 
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
>  ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at 
> org.springframework.beans.factory.support.DefaultListableBeanFactory$1.orderedStream(DefaultListableBeanFactory.java:407)
>  ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] at 
> org.apache.isis.core.commons.internal.ioc.spring.IocContainerSpring.select(IocContainerSpring.java:115)
>  ~[isis-core-commons-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.services.registry.ServiceRegistryDefault.select(ServiceRegistryDefault.java:77)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.applib.services.registry.ServiceRegistry.select(ServiceRegistry.java:68)
>  ~[isis-applib-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.applib.services.registry.ServiceRegistry.lookupService(ServiceRegistry.java:131)
>  ~[isis-applib-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.extensions.secman.model.facets.TenantedAuthorizationFacetFactory.createFacet(TenantedAuthorizationFacetFactory.java:102)
>  ~[isis-extensions-secman-model-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.extensions.secman.model.facets.TenantedAuthorizationFacetFactory.process(TenantedAuthorizationFacetFactory.java:62)
>  ~[isis-extensions-secman-model-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.lambda$process$1(FacetProcessor.java:307)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> java.util.ArrayList.forEach(ArrayList.java:1540) ~[?:?] at 
> org.apache.isis.core.metamodel.specloader.facetprocessor.FacetProcessor.process(FacetProcessor.java:307)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder.introspectClass(FacetedMethodsBuilder.java:174)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.specloader.specimpl.dflt.ObjectSpecificationDefault.introspectTypeHierarchy(ObjectSpecificationDefault.java:124)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.specloader.specimpl.ObjectSpecificationAbstract.introspectUpTo(ObjectSpecificationAbstract.java:286)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault.introspect(SpecificationLoaderDefault.java:508)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.metamodel.specloader.SpecificationLoaderDefault.createMetaModel(SpecificationLoaderDefault.java:252)
>  ~[isis-core-metamodel-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.commons.internal.concurrent._ConcurrentTask$3.innerCall(_ConcurrentTask.java:157)
>  ~[isis-core-commons-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.commons.internal.concurrent._ConcurrentTask$3.innerCall(_ConcurrentTask.java:153)
>  ~[isis-core-commons-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.commons.internal.concurrent._ConcurrentTask$1.innerCall(_ConcurrentTask.java:112)
>  ~[isis-core-commons-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.commons.internal.concurrent._ConcurrentTask.run(_ConcurrentTask.java:87)
>  ~[isis-core-commons-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
>  ~[?:?] at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) 
> ~[?:?] at 
> java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
>  ~[?:?] at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) 
> ~[?:?] at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) 
> ~[?:?] at 
> java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177) 
> ~[?:?]Caused by: java.lang.IllegalStateException: Creation of bean 
> isisRuntime.QueryResultsCacheDefault with @IsisInteractionScope requires the 
> calling Thread[ForkJoinPool.commonPool-worker-5 (453)]) to have an open 
> IsisInteraction on the thread-local stack. Running into this issue might be 
> caused by use of ... @Inject MyScopedBean bean ..., instead of ... @Inject 
> Provider<MyScopedBean> provider ... at 
> org.apache.isis.core.commons.internal.exceptions._Exceptions.illegalState(_Exceptions.java:87)
>  ~[isis-core-commons-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.apache.isis.core.runtime.iactn.scope.IsisInteractionScope.get(IsisInteractionScope.java:69)
>  ~[isis-core-runtime-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at 
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:356)
>  ~[spring-beans-5.2.7.RELEASE.jar:5.2.7.RELEASE] ... 26 more {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to