/*
* � Copyright IBM Corp. 2010
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.ibm.xsp.extlib.services.servlet;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import com.ibm.xsp.extlib.servlet.ServletFactory;
/**
* Service factory, used by the servlet.
*/
public class DefaultServletFactory extends ServletFactory {
private ServiceFactory factory;
public DefaultServletFactory(String pathInfo, String servletClass, String servletName) {
super(pathInfo, servletClass, servletName);
}
public DefaultServletFactory(String pathInfo, String servletName, ServiceFactory factory) {
super(pathInfo, null, servletName);
this.factory = factory;
}
@Override
protected Servlet createServlet() throws ServletException {
if(factory!=null) {
return (ServiceServlet)getComponentModule().createServlet(new CustomServiceServlet(factory),getServletName(), null /*params*/);
} else {
return super.createServlet();
}
}
/**
* Default servlet implementation.
*
* @author priand
*/
private static class CustomServiceServlet extends ServiceServlet {
private static final long serialVersionUID = 1L;
private ServiceFactory factory;
CustomServiceServlet(ServiceFactory factory) {
this.factory = factory;
}
@Override
protected ServiceFactory loadFactory() throws ServletException {
return factory;
}
}
}