Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7662

Proxy session scoped components so that they can be injected into singletons beans

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 4.0.0-alpha-9
    • None
    • None

    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.

          @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;
              }
          }
      

      =======

      Original problem:

      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

      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
      

      Attachments

        Activity

          People

            gnodet Guillaume Nodet
            laeubi Christoph Läubrich
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: