You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pluto-dev@portals.apache.org by "Neil Griffin (JIRA)" <ji...@apache.org> on 2018/04/04 19:47:00 UTC

[jira] [Created] (PLUTO-699) Spec: Clarify Section 20.3.2 titled "Dependent Scoped Beans"

Neil Griffin created PLUTO-699:
----------------------------------

             Summary: Spec: Clarify Section 20.3.2 titled "Dependent Scoped Beans"
                 Key: PLUTO-699
                 URL: https://issues.apache.org/jira/browse/PLUTO-699
             Project: Pluto
          Issue Type: Bug
          Components: spec
    Affects Versions: 3.0.0
            Reporter: Neil Griffin
            Assignee: Scott Nicklous


Section 20.3.2 of the Portlet 3.0 Spec titled "Dependent Scoped Beans" states:

{quote}The portlet container may produce the beans described in this section as @Dependent scoped beans.{quote}

It then provides a table that lists {{namespace}}, {{contextPath}}, {{windowId}}, and {{portletName}} as EL names for injectable artifacts of type {{java.lang.String}}.

This issue serves as a task for:

1. Changing the word "may" to "must" because injecting an artifact of type {{java.lang.String}} can only be done with {{@Dependent}} scope since it is not possible for CDI to proxy {{final}} types like {{java.lang.String}}.

2. Clarify that these artifacts are inherently {{@PortletRequestScoped}}, and therefore cannot be injected into a portlet bean since there is no request thread available at the time CDI creates instances of portlet beans. Instead, ask the TCK itself tests in PortletRequestScopedArtifacts.java (annotated with {{@PortletRequestScoped}}), these String-based artifacts can only be used from within a bean that is proxied. For example:

{code:java|title=MyGenericPortlet.java}
@ApplicationScoped
@PortletConfiguration(portletName="myBeanPortlet")
public class MyBeanPortlet {

    @RenderMethod
    public void myRender(RenderRequest renderRequest, RenderResponse renderResponse) {

        renderResponse.getWriter().write(fooBean.getDependentScopedContextPath());
    }

    @Inject FooBean fooBean;
}

@PortletRequestScoped
public class FooBean {

    public String getDependentScopedContextPath() {
        return contextPath;
    }

    @Inject @ContextPath contextPath;
}
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)