ws

JAX-RS files client

  • App.java
  • Id.java
  • pom.xml

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>