package org.limewire.rest;
import java.io.IOException;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpException;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.nio.entity.ConsumingNHttpEntity;
import org.apache.http.nio.protocol.NHttpRequestHandler;
import org.apache.http.nio.protocol.NHttpResponseTrigger;
import org.apache.http.protocol.HttpContext;
/**
* Base class for REST service request handlers.
*/
abstract class AbstractRestRequestHandler implements NHttpRequestHandler {
/**
* Default implementation always returns null.
*/
@Override
public ConsumingNHttpEntity entityRequest(HttpEntityEnclosingRequest request,
HttpContext context) throws HttpException, IOException {
return null;
}
@Override
public final void handle(
final HttpRequest request,
final HttpResponse response,
final NHttpResponseTrigger trigger,
final HttpContext context) throws HttpException, IOException {
// Retrieve authorization value from context.
Object auth = context.getAttribute(AuthorizationInterceptor.AUTHORIZED);
if ((auth instanceof Boolean) && ((Boolean) auth).booleanValue()) {
handle(request, response, context);
} else {
response.setStatusCode(HttpStatus.SC_UNAUTHORIZED);
}
// Submit response.
trigger.submitResponse(response);
}
/**
* Handles request processing. This method is called only if the request
* is properly authorized.
*/
public abstract void handle(HttpRequest request, HttpResponse response, HttpContext context)
throws HttpException, IOException;
}