package org.jboss.resteasy.test.providers.datasource.resource;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.activation.DataSource;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import org.apache.http.entity.StringEntity;
@Path("/upload")
public class ReadDataSourceResource {
public static final String PATH_UPLOAD = "upload";
@POST
@Produces("text/plain")
public Response read(final DataSource ds) throws Exception {
final String content1 = readStream(ds);
final String content2 = readStream(ds);
if (content1.equals(content2)) {
return Response.ok().build();
} else {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
.entity(new StringEntity("Content from second read does not match content from first read")).build();
}
}
private BufferedReader getReader(final DataSource ds) throws IOException {
return new BufferedReader(new InputStreamReader(ds.getInputStream()));
}
private String readStream(final DataSource ds) throws IOException {
final StringBuilder stringBuilder = new StringBuilder(4100);
final BufferedReader bufferedReader = getReader(ds);
try {
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
return stringBuilder.toString();
} finally {
bufferedReader.close();
}
}
}