[
https://issues.jboss.org/browse/SEAMFACES-185?page=com.atlassian.jira.plu...
]
Christian Kaltepoth commented on SEAMFACES-185:
-----------------------------------------------
Hey Brian,
thanks for filing the spec issues. I really think Seam Servlet would be a great place to
implement something for obtaining the ServletContext from within CDI extensions.
However I think this won't be easy. I experimented a bit with a ThreadLocal to save
the ServletContext from a ServletContextListener executed before CDI bootstraps, but I
didn't find a nice way to clean up this ThreadLocale and therefore this would create
memory leaks.
Perhaps someone would like to to take a look at this during the [Seam Faces Community Hack
Night|http://blog.bleathem.ca/2011/09/seam-faces-community-hack-night.html]? You can find
the code in the [stages] branch here:
https://github.com/chkal/seam-faces/
Any feedback is welcome! :)
Add support for activating beans based on the JSF project stage
---------------------------------------------------------------
Key: SEAMFACES-185
URL:
https://issues.jboss.org/browse/SEAMFACES-185
Project: Seam Faces
Issue Type: Feature Request
Affects Versions: 3.0.2
Reporter: Christian Kaltepoth
Fix For: 3.1.0.Tracking
Hey all,
I think it would be a great enhancement if Seam Faces could support activation of beans
only in specific JSF project stages. MyFaces CODI supports a similar feature with the
{{@ProjectStageActivated}} annotation.
Examples:
{code}
@ProductionStage
@ApplicationScoped
public class ProductionEntityManagerProducer {
...
}
@DevelopmentStage
@ApplicationScoped
public class DevelopmentEntityManagerProducer {
...
}
{code}
Another very interesting usecase would be to enable specific interceptors/decorators only
in development stage. This could be used for debugging stuff that is only interesting
during development.
I think this could be easily implenented using an CDI extension that vetos beans that do
not match the active project stage. The only problem I'm seeing is that we will need
the JSF project stage in an very early stage during application startup (actually before
JSF started up). This means that we would have to determine the project stage JSF will use
ourselves.
The JSF spec describes that the project stage can either be set with a servlet context
parameter or using JNDI. If the latter one is uses, we could simply do a JNDI lookup in
the extension. No problem here. If the developer uses a servlet context parameter the
situation will become more problematic, because we will need a reference to the
ServletContext in the extension.
What do you think of this feature? Would it be useful? Any further ideas for the
implementation?
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira