When the
processEvent()
method in GenericPortlet
gets invoked, first it checks if there there is exact match of event name and the value of name attribute of @ProcessEvent
annotation. If it does not find exact match it tries to find the longest possible match using following rule"If the local part of the event name has a wildcard at the end (“.”) the
GenericPortlet
will try to match the received event either to the same wildcard event name or to the longest matching event name for this wildcard. E.g. if an event with the local part of the event name of "a.b.c.d" is being received and there are methods annotated for handling "a.b." and "a.b.c." events in this portlet, the GenericPortlet
will dispatch the event to the method annotated with "a.b.c."Lets say this is how portelt.xml of my target portlet looks like
<?xml version="1.0" encoding="UTF-8"?>
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd">
<portlet>
<portlet-name>ProcessEventAnnotationPortlet</portlet-name>
<display-name>Process Event Annotation Portlet</display-name>
<portlet-class>com.webspherenotes.portlet.jsr286.ProcessEventAnnotationPortlet</portlet-class>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>view</portlet-mode>
<portlet-mode>edit</portlet-mode>
</supports>
<portlet-info>
<title>Process Event Annotation Portlet</title>
<short-title>Process Event Annotation Portlet</short-title>
<keywords>Process Event Annotation Portlet</keywords>
</portlet-info>
<supported-processing-event>
<name>com.webspherenotes.events.contact</name>
</supported-processing-event>
</portlet>
<default-namespace>http://wpcertification.blogspot.com</default-namespace>
<event-definition>
<name>com.webspherenotes.events.contact</name>
<value-type>com.webspherenotes.portlet.events.Contact</value-type>
</event-definition>
</portlet-app>
The
ProcessEventAnnotationPortlet can consume com.webspherenotes.events.contact
event. So these are some of the @ProcessEvent
combination that i can use to handle this event
@ProcessEvent(qname="{http://wpcertification.blogspot.com}com.webspherenotes.events.contact")
: Fully qualified event name
@ProcessEvent(qname="{http://wpcertification.blogspot.com}com.webspherenotes.")
: Fully qualified event name, so this method can handle all the events starting with com.webspherenotes.*
, it could be com.webspherenotes.events.contact,com.webspherenotes.events.hello
@ProcessEvent(name = "com.webspherenotes.")
: Means it can handle all the events where local name starts with com.webspherenotes.*
Thanks for info....
ReplyDeleteSEO Company in Bangalore