package org.apache.maven.portlet; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import javax.portlet.GenericPortlet; import javax.portlet.PortletException; import javax.portlet.PortletRequestDispatcher; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import javax.portlet.WindowState; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class QuotePortlet extends GenericPortlet { private List quotes; private Random random; public void init() throws PortletException { random = new Random(); Reader reader = new InputStreamReader( getClass().getClassLoader().getResourceAsStream( "quotes.xml" ) ); SAXReader saxReader = new SAXReader(); try { Document document = saxReader.read( reader ); List list = document.getRootElement().selectNodes( "/quote/*" ); quotes = new ArrayList(); for( Iterator iterator = list.iterator(); iterator.hasNext(); ) { String quote = ( (Element)iterator.next() ).getTextTrim(); quotes.add( quote ); } } catch( DocumentException e ) { e.printStackTrace(); } } public void doView( RenderRequest request, RenderResponse response ) throws PortletException, IOException { if( WindowState.MINIMIZED.equals( request.getWindowState() ) ) { return; } int number = random.nextInt( quotes.size() + 1 ); request.setAttribute( "quote", (String)quotes.get( number ) ); PortletRequestDispatcher dispatcher = getPortletContext().getRequestDispatcher( "/view.jsp" ); dispatcher.include( request, response ); } }