Skip to content

Commit

Permalink
Let request take a ByteBuffer, close #913
Browse files Browse the repository at this point in the history
  • Loading branch information
slandelle committed Jun 12, 2015
1 parent 6f96302 commit d707642
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 11 deletions.
8 changes: 8 additions & 0 deletions api/src/main/java/org/asynchttpclient/Request.java
Expand Up @@ -19,6 +19,7 @@
import java.io.File;
import java.io.InputStream;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.List;
Expand Down Expand Up @@ -96,6 +97,13 @@ public interface Request {
*/
String getStringData();

/**
* Return the current request's body as a ByteBuffer
*
* @return a ByteBuffer
*/
ByteBuffer getByteBufferData();

/**
* Return the current request's body as an InputStream
*
Expand Down
36 changes: 25 additions & 11 deletions api/src/main/java/org/asynchttpclient/RequestBuilderBase.java
Expand Up @@ -15,12 +15,14 @@
*/
package org.asynchttpclient;

import static org.asynchttpclient.util.AsyncHttpProviderUtils.parseCharset;
import static org.asynchttpclient.util.AsyncHttpProviderUtils.validateSupportedScheme;
import static org.asynchttpclient.util.MiscUtils.isNonEmpty;
import static org.asynchttpclient.util.AsyncHttpProviderUtils.*;

import java.io.File;
import java.io.InputStream;
import java.net.InetAddress;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -59,6 +61,7 @@ private static final class RequestImpl implements Request {
private byte[] byteData;
private List<byte[]> compositeByteData;
private String stringData;
private ByteBuffer byteBufferData;
private InputStream streamData;
private BodyGenerator bodyGenerator;
private List<Param> formParams;
Expand Down Expand Up @@ -90,6 +93,7 @@ public RequestImpl(Request prototype) {
this.byteData = prototype.getByteData();
this.compositeByteData = prototype.getCompositeByteData();
this.stringData = prototype.getStringData();
this.byteBufferData = prototype.getByteBufferData();
this.streamData = prototype.getStreamData();
this.bodyGenerator = prototype.getBodyGenerator();
this.formParams = prototype.getFormParams() == null ? null : new ArrayList<>(prototype.getFormParams());
Expand Down Expand Up @@ -158,6 +162,11 @@ public String getStringData() {
return stringData;
}

@Override
public ByteBuffer getByteBufferData() {
return byteBufferData;
}

@Override
public InputStream getStreamData() {
return streamData;
Expand Down Expand Up @@ -414,6 +423,7 @@ public void resetFormParams() {
public void resetNonMultipartData() {
request.byteData = null;
request.compositeByteData = null;
request.byteBufferData = null;
request.stringData = null;
request.streamData = null;
request.bodyGenerator = null;
Expand All @@ -429,34 +439,38 @@ public T setBody(File file) {
return derived.cast(this);
}

public T setBody(byte[] data) {
private void resetBody() {
resetFormParams();
resetNonMultipartData();
resetMultipartData();
}

public T setBody(byte[] data) {
resetBody();
request.byteData = data;
return derived.cast(this);
}

public T setBody(List<byte[]> data) {
resetFormParams();
resetNonMultipartData();
resetMultipartData();
resetBody();
request.compositeByteData = data;
return derived.cast(this);
}

public T setBody(String data) {
resetFormParams();
resetNonMultipartData();
resetMultipartData();
resetBody();
request.stringData = data;
return derived.cast(this);
}

public T setBody(ByteBuffer data) {
resetBody();
request.byteBufferData = data;
return derived.cast(this);
}

public T setBody(InputStream stream) {
resetFormParams();
resetNonMultipartData();
resetMultipartData();
resetBody();
request.streamData = stream;
return derived.cast(this);
}
Expand Down
Expand Up @@ -80,6 +80,9 @@ else if (request.getCompositeByteData() != null)
else if (request.getStringData() != null)
nettyBody = new NettyByteBufferBody(StringUtils.charSequence2ByteBuffer(request.getStringData(), bodyCharset));

else if (request.getByteBufferData() != null)
nettyBody = new NettyByteBufferBody(request.getByteBufferData());

else if (request.getStreamData() != null)
nettyBody = new NettyInputStreamBody(request.getStreamData(), config);

Expand Down
Expand Up @@ -81,6 +81,9 @@ else if (request.getCompositeByteData() != null)
else if (request.getStringData() != null)
nettyBody = new NettyByteBufferBody(StringUtils.charSequence2ByteBuffer(request.getStringData(), bodyCharset));

else if (request.getByteBufferData() != null)
nettyBody = new NettyByteBufferBody(request.getByteBufferData());

else if (request.getStreamData() != null)
nettyBody = new NettyInputStreamBody(request.getStreamData(), config);

Expand Down

0 comments on commit d707642

Please sign in to comment.