blob: 7dd78ff4cbe4c4777a39d6e8f83f951fdab715ff [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2016 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Raymond Augé <raymond.auge@liferay.com> - Bug 436698
*******************************************************************************/
package org.eclipse.equinox.http.servlet.tests.tb;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.http.HttpService;
import org.osgi.service.http.NamespaceException;
/*
* The parent class for the various test servlets. This class is responsible
* for registering the servlet with the HttpService, and handles the HTTP GET
* requests by providing a template method that is implemented by subclasses.
*/
public abstract class AbstractTestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected static final String STATUS_OK = "OK"; //$NON-NLS-1$
protected static final String STATUS_ERROR = "ERROR"; //$NON-NLS-1$
private HttpService service;
private Map<String, Object> properties;
public void activate(ComponentContext componentContext) throws ServletException, NamespaceException {
HttpService service = getHttpService();
String alias = getAlias();
service.registerServlet(alias, this, null, null);
}
protected final String createDefaultAlias() {
return '/' + getSimpleClassName();
}
protected final String extensionAlias() {
return "*." + getSimpleClassName();
}
protected final String regexAlias() {
return createDefaultAlias() + "/*";
}
public void deactivate() {
HttpService service = getHttpService();
String alias = getAlias();
service.unregister(alias);
}
@Override
protected final void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
try {
handleDoGet(request, writer);
} finally {
writer.close();
}
}
protected String getAlias() {
return createDefaultAlias();
}
protected HttpService getHttpService() {
return service;
}
protected Map<String, Object> getProperties() {
return properties;
}
protected String getSimpleClassName() {
Class<?> clazz = getClass();
return clazz.getSimpleName();
}
protected void handleDoGet(HttpServletRequest request, PrintWriter writer) throws ServletException, IOException {
writer.print(AbstractTestServlet.STATUS_OK);
}
public final void setHttpService(HttpService service, Map<String, Object> properties) {
this.service = service;
this.properties = properties;
}
}