import java.io.File;

import org.restlet.Context;
import org.restlet.data.Form;
import org.restlet.data.MediaType;
import org.restlet.data.Parameter;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.resource.FileRepresentation;
import org.restlet.resource.Representation;
import org.restlet.resource.Resource;
import org.restlet.resource.Variant;
import org.restlet.util.Series;

import com.noelios.restlet.http.HttpConstants;

public class MyResource extends Resource {
    public MyResource(Context context, Request request, Response response) {
        super(context, request, response);
        getVariants().add(new Variant(MediaType.APPLICATION_ZIP));
    }

    @Override
    public Representation getRepresentation(Variant variant) {
        File file = new File("d:/temp/test.zip");
        Representation rep = new FileRepresentation(file,
                MediaType.APPLICATION_ZIP, 0);
        Object oHeaders = getResponse().getAttributes().get(
                HttpConstants.ATTRIBUTE_HEADERS);
        Series<Parameter> headers = null;
        if (oHeaders != null) {
            headers = (Series<Parameter>) oHeaders;
        } else {
            headers = new Form();
        }
        headers.add(new Parameter("Content-Disposition",
                "attachment; filename=\"" + file.getName() + "\";"));

        getResponse().getAttributes().put(HttpConstants.ATTRIBUTE_HEADERS,
                headers);

        return rep;
    }
}
