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)