/* Copyright (c) 2001 - 2011 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.rest;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import org.geotools.util.logging.Logging;
import org.restlet.Restlet;
import org.restlet.data.Status;
import com.noelios.restlet.ext.servlet.ServletConverter;
import com.noelios.restlet.http.HttpResponse;
/**
* A custom servlet controller that forces the logging level of errors to SEVERE.
*
* @author Andrea Aime - GeoSolutions
*/
public class GeoServerServletConverter extends ServletConverter {
static final Logger LOGGER = Logging.getLogger(GeoServerServletConverter.class);
public GeoServerServletConverter(ServletContext context, Restlet target) {
super(context, target);
}
public GeoServerServletConverter(ServletContext context) {
super(context);
}
@Override
public Logger getLogger() {
return LOGGER;
}
/**
* Overridden to get at the very least a log at severe level
*
* @param response
*/
@Override
public void commit(HttpResponse response) {
try {
// Add the response headers
addResponseHeaders(response);
// Send the response to the client
response.getHttpCall().sendResponse(response);
} catch (Exception e) {
// raise the logging level to SEVERE
LOGGER.log(Level.SEVERE, "Exception intercepted", e);
response.getHttpCall().setStatusCode(Status.SERVER_ERROR_INTERNAL.getCode());
response.getHttpCall().setReasonPhrase("An unexpected exception occured");
}
}
}