package com.pugh.sockso.web.action;
import com.pugh.sockso.web.Request;
import com.pugh.sockso.web.action.covers.CovererPlugin;
import java.util.ArrayList;
import org.apache.log4j.Logger;
public class Coverer extends BaseAction {
private static final Logger log = Logger.getLogger( Coverer.class );
private final ArrayList<CovererPlugin> plugins;
/**
* Create a new coverer action
*
*/
public Coverer() {
this.plugins = new ArrayList<CovererPlugin>();
}
/**
* Add a plugin, these are evaluated in order added
*
* @param plugin
*
*/
public void addPlugin( CovererPlugin plugin ) {
plugins.add( plugin );
}
/**
* When handling a request just try and find a plugin to serve the cover
*
*/
public void handleRequest() throws Exception {
final Request req = getRequest();
final String itemName = req.getUrlParam( 2 );
for ( final CovererPlugin plugin : plugins ) {
plugin.setRequest( getRequest() );
plugin.setResponse( getResponse() );
plugin.setDatabase( getDatabase() );
plugin.setProperties( getProperties() );
plugin.setLocale( getLocale() );
if ( plugin.serveCover(itemName) ) {
log.debug( "Served cover with " + plugin.getClass().getSimpleName() );
break;
}
}
}
/**
* No login required when serving covers, same as FileServer
*
* @return
*
*/
@Override
public boolean requiresLogin() {
return false;
}
/**
* No login means no session required at all
*
* @return
*
*/
@Override
public boolean requiresSession() {
return false;
}
}