JSR 286 Exercise 1 Solution
portlet.xml
<?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> ... <supported-processing-event> <name>add-person</name> </supported-processing-event> <supported-publishing-event> <name>add-person</name> </supported-publishing-event> </portlet> ... <event-definition> <name>add-person</name> <value-type>org.jasig.census.Person</value-type> </event-definition> </portlet-app>
pom.xml
... <dependency> <groupId>javax.portlet</groupId> <artifactId>portlet-api</artifactId> <version>2.0</version> <type>jar</type> <scope>provided</scope> </dependency> ...
CensusCollectPortlet.java
... people.put(ssn, person); response.setEvent("add-person", person); ... @Override public void processEvent(EventRequest request, EventResponse response) { Event event = request.getEvent(); String eventName = event.getName(); Person payload = (Person)event.getValue(); System.out.println("CensusCollect Received Event: name=" + eventName + ", value=" + payload); } ...
CensusViewPortlet.java
... @SuppressWarnings("unchecked") @Override public void processEvent(EventRequest request, EventResponse response) { Event event = request.getEvent(); String eventName = event.getName(); Person payload = (Person)event.getValue(); System.out.println("CensusView Received Event: name=" + eventName + ", value=" + payload); PortletSession session = request.getPortletSession(true); Map<String,Person> people = (Map<String,Person>)session.getAttribute(PEOPLE); if (people != null) { people.put(payload.getName(), payload); } } ...