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

Guillaume Nodet updated MNG-7662:
---------------------------------
    Description: 
The {{SessionScope}} will now create proxies to wrap beans when there's a need 
to inject a bean while the session scope is not yet available.  Such proxies 
require the use of a {{Typed}} annotation, either the 
{{org.eclipse.sisu.Typed}} or {{javax.enterprise.inject.Typed}} annotation, to 
be put on the bean that requires to be wrapped by a proxy.

{code}
    @Named
    static class MySingletonBean {
        @Inject
        BeanItf myBean;
    }

    interface BeanItf {
        Session getSession();
    }

    @SessionScoped
    @Typed(BeanItf.class)
    static class MySessionScopedBean implements BeanItf {
        @Inject
        Session session;

        public Session getSession() {
            return session;
        }
    }
{code}

=======

Currently DefaultMaven gets the Graphbuilder injected as a strict requirement 
at a very early stage. This leads to the problem, that a GraphBuilder 
implementation can not use any SessionScoped Components (because the session 
scope is not setup yet). 

The error then is

{code:java}
1) Error in custom provider, com.google.inject.OutOfScopeException: Cannot 
access Key[type=org.apache.maven.execution.MavenSession, annotation=[none]] 
outside of a scoping block
  at 
org.apache.maven.session.scope.internal.SessionScopeModule.configure(SessionScopeModule.java:64)
 (via modules: org.eclipse.sisu.wire.WireModule -> 
org.apache.maven.session.scope.internal.SessionScopeModule)
  while locating org.apache.maven.execution.MavenSession
    for the 1st parameter of 
org.eclipse.tycho.helper.PluginRealmHelper.<init>(Unknown Source)
  at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
parent: ClassRealm[plexus.core, parent: null]] (via modules: 
org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.helper.PluginRealmHelper
  at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
parent: ClassRealm[plexus.core, parent: null]] (via modules: 
org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.p2maven.InstallableUnitGenerator
  at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
parent: ClassRealm[plexus.core, parent: null]] (via modules: 
org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.p2maven.MavenProjectDependencyProcessor
  while locating org.eclipse.tycho.build.TychoGraphBuilder
{code}


  was:
The {{SessionScope}} will now create proxies to wrap beans when there's a need 
to inject a bean while the session scope is not yet available.

=======

Currently DefaultMaven gets the Graphbuilder injected as a strict requirement 
at a very early stage. This leads to the problem, that a GraphBuilder 
implementation can not use any SessionScoped Components (because the session 
scope is not setup yet). 

The error then is

{code:java}
1) Error in custom provider, com.google.inject.OutOfScopeException: Cannot 
access Key[type=org.apache.maven.execution.MavenSession, annotation=[none]] 
outside of a scoping block
  at 
org.apache.maven.session.scope.internal.SessionScopeModule.configure(SessionScopeModule.java:64)
 (via modules: org.eclipse.sisu.wire.WireModule -> 
org.apache.maven.session.scope.internal.SessionScopeModule)
  while locating org.apache.maven.execution.MavenSession
    for the 1st parameter of 
org.eclipse.tycho.helper.PluginRealmHelper.<init>(Unknown Source)
  at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
parent: ClassRealm[plexus.core, parent: null]] (via modules: 
org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.helper.PluginRealmHelper
  at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
parent: ClassRealm[plexus.core, parent: null]] (via modules: 
org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.p2maven.InstallableUnitGenerator
  at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
parent: ClassRealm[plexus.core, parent: null]] (via modules: 
org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule)
  while locating org.eclipse.tycho.p2maven.MavenProjectDependencyProcessor
  while locating org.eclipse.tycho.build.TychoGraphBuilder
{code}



> Proxy session scoped components so that they can be injected into singletons 
> beans
> ----------------------------------------------------------------------------------
>
>                 Key: MNG-7662
>                 URL: https://issues.apache.org/jira/browse/MNG-7662
>             Project: Maven
>          Issue Type: Bug
>            Reporter: Christoph Läubrich
>            Priority: Major
>
> The {{SessionScope}} will now create proxies to wrap beans when there's a 
> need to inject a bean while the session scope is not yet available.  Such 
> proxies require the use of a {{Typed}} annotation, either the 
> {{org.eclipse.sisu.Typed}} or {{javax.enterprise.inject.Typed}} annotation, 
> to be put on the bean that requires to be wrapped by a proxy.
> {code}
>     @Named
>     static class MySingletonBean {
>         @Inject
>         BeanItf myBean;
>     }
>     interface BeanItf {
>         Session getSession();
>     }
>     @SessionScoped
>     @Typed(BeanItf.class)
>     static class MySessionScopedBean implements BeanItf {
>         @Inject
>         Session session;
>         public Session getSession() {
>             return session;
>         }
>     }
> {code}
> =======
> Currently DefaultMaven gets the Graphbuilder injected as a strict requirement 
> at a very early stage. This leads to the problem, that a GraphBuilder 
> implementation can not use any SessionScoped Components (because the session 
> scope is not setup yet). 
> The error then is
> {code:java}
> 1) Error in custom provider, com.google.inject.OutOfScopeException: Cannot 
> access Key[type=org.apache.maven.execution.MavenSession, annotation=[none]] 
> outside of a scoping block
>   at 
> org.apache.maven.session.scope.internal.SessionScopeModule.configure(SessionScopeModule.java:64)
>  (via modules: org.eclipse.sisu.wire.WireModule -> 
> org.apache.maven.session.scope.internal.SessionScopeModule)
>   while locating org.apache.maven.execution.MavenSession
>     for the 1st parameter of 
> org.eclipse.tycho.helper.PluginRealmHelper.<init>(Unknown Source)
>   at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
> parent: ClassRealm[plexus.core, parent: null]] (via modules: 
> org.eclipse.sisu.wire.WireModule -> 
> org.eclipse.sisu.plexus.PlexusBindingModule)
>   while locating org.eclipse.tycho.helper.PluginRealmHelper
>   at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
> parent: ClassRealm[plexus.core, parent: null]] (via modules: 
> org.eclipse.sisu.wire.WireModule -> 
> org.eclipse.sisu.plexus.PlexusBindingModule)
>   while locating org.eclipse.tycho.p2maven.InstallableUnitGenerator
>   at ClassRealm[coreExtension>org.eclipse.tycho:tycho-build:${tycho-version}, 
> parent: ClassRealm[plexus.core, parent: null]] (via modules: 
> org.eclipse.sisu.wire.WireModule -> 
> org.eclipse.sisu.plexus.PlexusBindingModule)
>   while locating org.eclipse.tycho.p2maven.MavenProjectDependencyProcessor
>   while locating org.eclipse.tycho.build.TychoGraphBuilder
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to