/*
* JLibs: Common Utilities for Java
* Copyright (C) 2009 Santhosh Kumar T <santhosh.tekuri@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package jlibs.nio.http.filters;
import jlibs.nio.http.FilterType;
import jlibs.nio.http.ServerExchange;
import jlibs.nio.http.ServerFilter;
import jlibs.nio.http.msg.EncodablePayload;
import jlibs.nio.http.msg.Method;
import jlibs.nio.http.msg.Request;
import jlibs.nio.http.msg.Response;
import jlibs.nio.http.util.USAscii;
import java.io.IOException;
import java.io.OutputStream;
/**
* @author Santhosh Kumar Tekuri
*
* Server Request Filter
*/
public class SendTrace implements ServerFilter{
@Override
public boolean filter(ServerExchange exchange, FilterType type) throws Exception{
assert type==FilterType.REQUEST;
Request request = exchange.getRequest();
if(request.method==Method.TRACE){
Response response = new Response();
response.setPayload(new TracePayload(request));
exchange.setResponse(response);
}
return true;
}
public static class TracePayload extends EncodablePayload{
private Request request;
public TracePayload(Request request){
super("message/http");
this.request = request;
}
@Override
public void writeTo(OutputStream out) throws IOException{
out.write(USAscii.toBytes(request.toString()));
}
}
}