/* * Copyright 2012 Jason Miller * * 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 jj.http.server; import io.netty.handler.codec.http.DefaultFullHttpRequest; import io.netty.handler.codec.http.DefaultHttpRequest; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpHeaderNames; import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpVersion; import jj.ServerLogger; import jj.logging.LoggedEvent; import org.slf4j.Logger; /** * I know this seems like a waste of a class since it thinly and * leakily wraps the underlying netty objects but the point here is * to use this to help wedge apart the use of FullHttpRequest internally * and i don't want to have a bunch of tests to update AGAIN when that * happens, so this is here just to hide that one detail * * @author jason * */ @ServerLogger public class EmbeddedHttpRequest extends LoggedEvent { final DefaultHttpRequest request; public EmbeddedHttpRequest(final String uri) { this(HttpMethod.GET, uri); } public EmbeddedHttpRequest(final HttpMethod method, final String uri) { this(HttpVersion.HTTP_1_1, method, uri); } public EmbeddedHttpRequest(final HttpVersion httpVersion, final HttpMethod method, final String uri) { request = new DefaultHttpRequest(httpVersion, method, uri); request.headers().add(HttpHeaderNames.HOST, "localhost"); } public HttpHeaders headers() { return request.headers(); } FullHttpRequest fullHttpRequest() { DefaultFullHttpRequest result = new DefaultFullHttpRequest(request.protocolVersion(), request.method(), request.uri()); result.headers().add(request.headers()); return result; } @Override public void describeTo(Logger logger) { logger.debug("processing embedded request {}" , request); } }