package org.agnitas.emm.extension.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.agnitas.emm.extension.ExtensionSystem;
import org.agnitas.emm.extension.exceptions.ExtensionException;
import org.agnitas.emm.extension.exceptions.PluginInstantiationException;
import org.agnitas.emm.extension.exceptions.UnknownPluginException;
import org.agnitas.emm.extension.util.ExtensionConstants;
import org.agnitas.emm.extension.util.ExtensionUtils;
import org.apache.log4j.Logger;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* Servlet for invoking EmmFeatureExtensions.
*
* The servlet selects an EmmFeatureExtension and invokes its <i>invoke</i> method.
*
* @author md
*/
public class ExtensionServlet extends HttpServlet {
/** Logger */
private static final Logger logger = Logger.getLogger( ExtensionServlet.class);
@Override
protected void service( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
ExtensionSystem extensionSystem = ExtensionUtils.getExtensionSystem( this.getServletContext());
WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext( this.getServletContext());
String feature = request.getParameter( ExtensionConstants.FEATURE_REQUEST_PARAMETER);
extensionSystem.invokeFeatureExtension( feature, applicationContext, request, response);
} catch (PluginInstantiationException e) {
logger.error( e);
} catch (ExtensionException e) {
logger.error( e);
} catch (UnknownPluginException e) {
logger.error( e);
}
}
}