[
https://issues.apache.org/jira/browse/MNG-7662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17784315#comment-17784315
]
ASF GitHub Bot commented on MNG-7662:
-------------------------------------
gnodet commented on code in PR #950:
URL: https://github.com/apache/maven/pull/950#discussion_r1387639811
##########
maven-core/pom.xml:
##########
@@ -144,6 +144,12 @@ under the License.
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
Review Comment:
> the new interceptor is a new proxy basically high level i'd like to ensure
we don't depend on java version as much as we can cause it starts to hurt all
the ecosystem and at maven there is no reason we do depend on asm so no new
usage should be added and ultimately we should drop them all from maven 4.0.0
IMHO
Due to the way scoping works in guice, the interception is built by wrapping
the injected bean, not by wrapping the injection point. The key method is the
following:
https://google.github.io/guice/api-docs/4.2/javadoc/index.html?com/google/inject/Scope.html
```
public <T> Provider<T> scope(Key<T> key, Provider<T> unscoped);
```
So we do wrap the `Provider<T>`, but `T` is the actual bean class, because
that happens irrespective of where the bean will be injected (the injection
point).
So even if the bean is injected into a field which refers to an interface
the bean implementation provider will be _scope_.
Basically, we can't use JDK proxies here.
I do understand your concerns about avoiding the use of ASM. We need to
investigate, but it's actually used by sisu to discover beans. That sounds
duplicate work as we usually generate the META-INF files so that discovery
should not have to scan all classes.
That said, problems happen only when the following combination happens:
* the JDK in use is not supported by the ASM version embedded
* we scan a class file which targets a JDK newer that the one supported by
ASM
That's why I've extracted ASM out of guice / sisu, so that we (or even the
user) can easily upgrade the asm version in the distribution and get rid of
those problems.
> Allow Graphbuilder to use session scoped components
> ---------------------------------------------------
>
> Key: MNG-7662
> URL: https://issues.apache.org/jira/browse/MNG-7662
> Project: Maven
> Issue Type: Bug
> Reporter: Christoph Läubrich
> Priority: Major
>
> 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)