package org.jboss.pitbull.internal.client; import org.jboss.pitbull.OrderedHeaders; import org.jboss.pitbull.PitbullChannel; import org.jboss.pitbull.internal.nio.http.BufferedContentOutputStream; import org.jboss.pitbull.internal.nio.http.HttpRequestHeader; import java.io.IOException; import java.util.Map; /** * @author <a href="mailto:bill@burkecentral.com">Bill Burke</a> * @version $Revision: 1 $ */ public class ClientContentOutputStream extends BufferedContentOutputStream { protected static class ClientContentMessage implements ContentMessage { protected HttpRequestHeader requestHeader; public ClientContentMessage(HttpRequestHeader requestHeader) { this.requestHeader = requestHeader; } @Override public OrderedHeaders getHeaders() { return requestHeader.getHeaders(); } @Override public byte[] getMessageBytes() throws IOException { StringBuilder builder = new StringBuilder(100); builder.append(requestHeader.getMethod()); builder.append(' '); builder.append(requestHeader.getUri()); builder.append(' '); builder.append(requestHeader.getHttpVersion()); builder.append("\r\n"); if (getHeaders() != null) { for (Map.Entry<String, String> entry : getHeaders().getHeaderList()) { builder.append(entry.getKey()).append(": ").append(entry.getValue()).append("\r\n"); } } builder.append("\r\n"); return builder.toString().getBytes("UTF-8"); } @Override public void prepareEmptyBody() { getHeaders().removeHeader("Content-Length"); getHeaders().removeHeader("Transfer-Encoding"); } } public ClientContentOutputStream(HttpRequestHeader requestHeader, PitbullChannel channel, int bufferSize) { super(channel, bufferSize); contentMessage = new ClientContentMessage(requestHeader); } }