App.java
package com.training.rs;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientHandlerException;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.GenericType;
import com.sun.jersey.api.client.UniformInterfaceException;
import com.sun.jersey.api.client.WebResource;
public class App {
public static void main(String[] args) throws UniformInterfaceException,
ClientHandlerException, IOException {
App app = new App();
app.removeAllFiles();
app.putFile("text1");
app.putFile("text2");
app.putFile("text3");
Collection<String> fileIds = app.getFileIds();
app.showCollectionIds(fileIds);
app.readAllFiles(fileIds);
app.readAllFilesFromResponse(fileIds);
app.removeFile(fileIds.iterator().next());
app.readAllFiles(app.getFileIds());
app.removeAllFiles();
}
private String putFile(String text) throws UniformInterfaceException,
ClientHandlerException, IOException {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:9080/jax_rs_files/file");
File tempFile = File.createTempFile("myfile", ".txt");
FileWriter fileWriter = new FileWriter(tempFile);
fileWriter.write(text);
fileWriter.close();
webResource.put(File.class, tempFile);
return "id";
}
private Collection<String> getFileIds() {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:9080/jax_rs_files/ids");
List<Id> ids = webResource.get(new GenericType<List<Id>>() {
});
return transformToIds(ids);
}
private File getFile(String id) throws IOException {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:9080/jax_rs_files/file/" + id);
File file = webResource.get(File.class);
return file;
}
private void removeFile(String id) {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:9080/jax_rs_files/file/" + id);
webResource.delete();
System.out.println(String.format("File %s removed.", id));
}
private File getFileFromResponse(String id) {
Client client = Client.create();
WebResource webResource = client
.resource("http://localhost:9080/jax_rs_files/file/response/"
+ id);
ClientResponse clientResponse = webResource.get(ClientResponse.class);
File file = clientResponse.getEntity(File.class);
return file;
}
private void removeAllFiles() {
for (String id : getFileIds()) {
removeFile(id);
}
}
private void readAllFiles(Collection<String> fileIds) throws IOException {
System.out.println("Read all files.");
for (String id : fileIds) {
File file = getFile(id);
readFile(file);
}
}
private void readAllFilesFromResponse(Collection<String> fileIds)
throws IOException {
System.out.println("Read all files from response.");
for (String id : fileIds) {
File file = getFileFromResponse(id);
readFile(file);
}
}
private void readFile(File file) throws FileNotFoundException, IOException {
FileReader fileReader = new FileReader(file);
BufferedReader br = new BufferedReader(fileReader);
String s;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
fileReader.close();
}
private void showCollectionIds(Collection<String> fileIds) {
System.out.print("Ids: ");
for (String id : fileIds) {
System.out.print(id + ",");
}
System.out.println();
}
private Collection<String> transformToIds(List<Id> ids) {
Collection<String> transformed = Collections2.transform(ids,
new Function<Id, String>() {
public String apply(Id id) {
return id.getId();
}
});
return transformed;
}
}
Id.java
package com.training.rs;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Id {
private String id;
public Id() {
}
public Id(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.training</groupId>
<artifactId>jax_rs_files_client</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.18.3</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
</dependencies>
</project>