If you use the SessionManagerContainer, why don't you have a compilation error ?


On Thu, Nov 28, 2013 at 4:50 PM, Lucas Ponce <lponce@redhat.com> wrote:
Hello Nicolas,

POMSessionManager.java needs to access to SessionContext at this point:

    public POMSession getSession() {
        SessionContext context = configurator.getContext();
        return context != null ? (POMSession) context.getAttachment("mopsession") : null;
    }

This is needed to PortalNamesCache.java to perform a query to POMDataStorage component:

    @Override
    public <V> V execute(POMSession session, POMTask<V> task) throws Exception {
        if (!session.isModified()) {
            if (task instanceof SearchTask.FindSiteKey) {
                SearchTask.FindSiteKey find = (SearchTask.FindSiteKey) task;
                List<PortalKey> data = (List<PortalKey>) session.getFromCache(find.getKey());
                if (data == null) {
                    V result = super.execute(session, task);
                    LazyPageList<PortalKey> list = (LazyPageList<PortalKey>) result;
                    session.putInCache(find.getKey(), Collections.unmodifiableList(new ArrayList<PortalKey>(list.getAll())));
                    return result;
                } else {
                    return (V) new LazyPageList<PortalKey>(new ListAccessImpl<PortalKey>(PortalKey.class, data), 10);
                }
            } else if (task instanceof PortalConfigTask.Save || task instanceof PortalConfigTask.Remove) {
                V result = super.execute(session, task);
                session.scheduleForEviction(SearchTask.FindSiteKey.PORTAL_KEY);
                session.scheduleForEviction(SearchTask.FindSiteKey.GROUP_KEY);
                return result;
            }
        }

        //
        return super.execute(session, task);
    }

With the current change of version in exo.core, the getSession() in POMSessionManager is always null, so a NPE is thrown breaking the POM service.

I wonder how I can integrate these new changes to have same behaviour that previous version.

Thanks,
Lucas


----- Mensaje original -----
> De: "Nicolas Filotto" <nicolas.filotto@exoplatform.com>
> Para: "Lucas Ponce" <lponce@redhat.com>
> CC: "gatein-dev" <gatein-dev@lists.jboss.org>
> Enviados: Jueves, 28 de Noviembre 2013 17:29:27
> Asunto: Re: [gatein-dev] SessionManagerContainer in exo.kernel.container 2.6.0-Alpha3
>
> What is the need exactly ? Beeing able to scope a component to a Session?
> If so it is now possible to define a scope to a component thanks to
> https://jira.exoplatform.org/browse/KER-258. Out of the box, the kernel
> supports the scope Singleton, ApplicationScoped and Dependent. By adding
> some configuration you can extend the list to SessionScoped and
> RequestScoped. Here is the configuration to add if you want both:
>
> <component>
> <key>org.exoplatform.container.context.ContextManager</key>
>  <type>org.exoplatform.container.context.ContextManagerImpl</type>
> <component-plugins>
> <component-plugin>
>  <name>main-scopes</name>
> <set-method>addContexts</set-method>
> <type>org.exoplatform.container.context.ContextPlugin</type>
>  <init-params>
> <object-param>
> <name>request-scope</name>
>  <object type="org.exoplatform.container.context.RequestContext"/>
> </object-param>
>  <object-param>
> <name>session-scope</name>
> <object type="org.exoplatform.container.context.SessionContext"/>
>  </object-param>
> </init-params>
> </component-plugin>
>  </component-plugins>
> </component>
>
> Please note that the components that you want to scope to SessionScoped or
> RequestScoped must be proxyable as they are normal scopes (which means that
> you will access to the methods through a proxy and you must not access to
> the fields directly), moreover components that you want to scope to
> SessionScoped must be Serializable as SessionScoped is a passivating scope.
>
> Please also note that thanks to KER-252 you can use the annotations defined
> in JSR 330 such as Inject
>
>
> On Thu, Nov 28, 2013 at 3:36 PM, Lucas Ponce <lponce@redhat.com> wrote:
>
> > Hello,
> >
> > There is a issue in current master that is impacting to REST management
> > services in GateIn.
> >
> > https://issues.jboss.org/browse/GTNPORTAL-3308
> >
> > Investigating it looks like that issue appears since migration to
> > 2.6.0-Alpha3 core.
> >
> > Main symptom is a NPE in POMSessionManager class:
> >
> >
> > https://github.com/gatein/gatein-portal/blob/428874e25ee9e6dada3fd1a54a4aa9f02f42d641/component/portal/src/main/java/org/exoplatform/portal/pom/config/POMSessionManager.java#L224-L229
> >
> > One of the changes of 2.6.0-Alpha3 is to drop the SessionManagerContainer
> > interface from PortalContainer.
> >
> > Is there a workaround to access to same functionality in order to fix this
> > issue ?
> >
> > Thanks in advance,
> > Lucas
> > _______________________________________________
> > gatein-dev mailing list
> > gatein-dev@lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/gatein-dev
> >
>