Yes it is expected.
The listener may want to be aware of all deployments (for maintaining a registry of all
portlets with a single listener instead of adding/removing N listeners where N is the
number of deployments).
This is similar to the JMX JMImplementation MBean that send notifications about MBean life
cycle for any MBean added/removed from the MBeanServer as the intent is originally the
same.
What is wrong with having a single listener if you can associate the CDI meta data with
the deployed portlets ?
I would proceed in two steps :
1/ upon deployment : prepare the CDI info for all portlets and add to a map a list of
portlet id -> cdi meta data for the portlet (injection etc…)
2/ upon portlet created event : lookup for cdi work to do from portlet id and if it exists
then honour the cdi integration
On Apr 9, 2013, at 10:14 PM, Ken Finnigan <kfinniga(a)redhat.com> wrote:
All,
In implementing CDI injection into GenericPortlet and PortletFilter instances, I had
assumed that I could add a ManagedObjectRegistryEventListener, specifically for CDI
processing, and add it to the broadcaster in PortletApplicationDeployer for only those
PortletApplicationDeployment's that needed CDI injection. ie. the listener would be
added before creating a PortletApplicationDeployment and then removed straight afterwards
to ensure that portlet deployments that had nothing to do with CDI, were not calling the
listener for all event notifications for no reason.
An unexpected consequence of this is that I've discovered the broadcaster list of
listeners is the exact same instance across all PortletApplicationDeployment instances. So
when I removed the CDI listener from broadcaster on PortletApplicationDeployer, it also
removed that listener from the PortletApplicationDeployment that had just been created.
Is that expected? I'd find it unusual that its not possible to add a listener
specific to a deployment that should not be applied to all of them.
Wondering if ManagedObjectRegistryEventBroadcaster needs to support cloning to facilitate
this functionality?
Any other thoughts on a better way to do this are appreciated, as I certainly feel it
unnecessary to defensively code my listener for all types of portlets it can be attached
to when it doesn't need to.
Ken
========================
Senior Software Engineer / JBoss Enterprise Middleware Red Hat, Inc.
_______________________________________________
gatein-dev mailing list
gatein-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/gatein-dev