001/*
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 */
006package org.fcrepo.client;
007
008import java.io.InputStream;
009import java.net.URI;
010
011import org.apache.http.client.methods.HttpRequestBase;
012
013/**
014 * Builds a PUT request for interacting with the Fedora HTTP API in order to modify the triples associated with a
015 * resource with SPARQL-Update.
016 *
017 * @author bbpennel
018 */
019public class PatchBuilder extends BodyRequestBuilder {
020
021    private static final String SPARQL_UPDATE = "application/sparql-update";
022
023    /**
024     * Instantiate builder
025     *
026     * @param uri uri of the resource this request is being made to
027     * @param client the client
028     */
029    public PatchBuilder(final URI uri, final FcrepoClient client) {
030        super(uri, client);
031    }
032
033    @Override
034    protected HttpRequestBase createRequest() {
035        return HttpMethods.PATCH.createRequest(targetUri);
036    }
037
038    /**
039     * Add a body to this request from a stream, with application/sparql-update as its content type
040     *
041     * @param stream InputStream of the content to be sent to the server
042     * @return this builder
043     */
044    @Override
045    public PatchBuilder body(final InputStream stream) {
046        return (PatchBuilder) super.body(stream, SPARQL_UPDATE);
047    }
048
049    @Override
050    public PatchBuilder body(final InputStream stream, final String contentType) {
051        return (PatchBuilder) super.body(stream, contentType);
052    }
053
054    @Override
055    public PatchBuilder ifMatch(final String etag) {
056        return (PatchBuilder) super.ifMatch(etag);
057    }
058
059    @Override
060    public PatchBuilder ifUnmodifiedSince(final String modified) {
061        return (PatchBuilder) super.ifUnmodifiedSince(modified);
062    }
063
064    @Override
065    public PatchBuilder ifStateToken(final String token) {
066        return (PatchBuilder) super.ifStateToken(token);
067    }
068
069    @Deprecated
070    @Override
071    public PatchBuilder digest(final String digest) {
072        return (PatchBuilder) super.digest(digest);
073    }
074
075    @Override
076    public PatchBuilder digest(final String digest, final String alg) {
077        return (PatchBuilder) super.digest(digest, alg);
078    }
079
080    @Override
081    public PatchBuilder digestMd5(final String digest) {
082        return (PatchBuilder) super.digestMd5(digest);
083    }
084
085    @Override
086    public PatchBuilder digestSha1(final String digest) {
087        return (PatchBuilder) super.digestSha1(digest);
088    }
089
090    @Override
091    public PatchBuilder digestSha256(final String digest) {
092        return (PatchBuilder) super.digestSha256(digest);
093    }
094
095    @Override
096    public PatchBuilder addHeader(final String name, final String value) {
097        return (PatchBuilder) super.addHeader(name, value);
098    }
099
100    @Override
101    public PatchBuilder addLinkHeader(final FcrepoLink linkHeader) {
102        return (PatchBuilder) super.addLinkHeader(linkHeader);
103    }
104}