[
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:java}
@Named
static class MySingletonBean {
@Inject
BeanItf myBean;
}
interface BeanItf {
Session getSession();
}
@SessionScoped
@Typed
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. 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}
> 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:java}
> @Named
> static class MySingletonBean {
> @Inject
> BeanItf myBean;
> }
> interface BeanItf {
> Session getSession();
> }
> @SessionScoped
> @Typed
> 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)