/*
* Created on Mar 23, 2003
*/
package net.sf.jportlet.service.webflow;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import javax.servlet.ServletConfig;
import net.sf.jportlet.portlet.event.ActionEvent;
import net.sf.jportlet.service.PortletServiceAdapter;
import net.sf.jportlet.service.PortletServiceConfig;
import net.sf.jportlet.service.PortletServiceException;
/**
* Implementation of {@link net.sf.jportlet.service.webflow.WebflowService}
*
* @author <a href="mailto:tchbansi@sourceforge.net">Herve Tchepannou</a>
*/
public class WebflowServiceImpl
extends PortletServiceAdapter
implements WebflowService
{
//~ Static fields/initializers ---------------------------------------------
public static final String CONFIG_FILENAME = "/WEB-INF/webflow.properties";
//~ Instance fields --------------------------------------------------------
private HashMap _mappings = new HashMap( );
//~ Methods ----------------------------------------------------------------
/**
* @see net.sf.jportlet.service.webflow.WebflowService#nextURI(net.sf.jportlet.portlet.event.ActionEvent)
*/
public String nextURI( ActionEvent event )
{
String portlet = event.getPortlet( ).getPortletConfig( ).getPortletName( );
StringBuffer key = new StringBuffer( );
key.append( portlet );
key.append( '.' ).append( event.getAction( ) );
key.append( '.' ).append( event.getReturnCode( ) );
String uri = ( String ) _mappings.get( key.toString( ) );
if ( _log.isDebugEnabled( ) )
{
_log.debug( "nextURI: " + key + "=" + uri );
}
return uri;
}
/**
* @see net.sf.jportlet.service.PortletService#getServiceName()
*/
public String getServiceName( )
{
return WebflowService.NAME;
}
/**
* @see net.sf.jportlet.service.PortletService#destroy()
*/
public void destroy( )
{
super.destroy( );
_mappings.clear( );
}
/**
* @see net.sf.jportlet.service.PortletService#init(net.sf.jportlet.service.PortletServiceConfig)
*/
public void init( PortletServiceConfig serviceConfig )
throws PortletServiceException
{
super.init( serviceConfig );
ServletConfig servletConfig = serviceConfig.getServletConfig( );
InputStream in = servletConfig.getServletContext( ).getResourceAsStream( CONFIG_FILENAME );
if ( in == null )
{
throw new PortletServiceException( "File not found: " + CONFIG_FILENAME );
}
try
{
Properties config = new Properties( );
config.load( in );
boolean debug = _log.isDebugEnabled( );
Iterator it = config.keySet( ).iterator( );
while ( it.hasNext( ) )
{
Object key = it.next( );
Object uri = config.get( key );
if ( debug )
{
_log.debug( "Adding mapping: " + key + "=" + uri );
}
_mappings.put( key, uri );
}
}
catch ( Exception e )
{
throw new PortletServiceException( e );
}
}
}