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);
		}
	}
...