001package co.codewizards.cloudstore.rest.client.request;
002
003import javax.ws.rs.client.SyncInvoker;
004import javax.ws.rs.core.Response;
005
006/**
007 * Abstract base class for REST requests never returning a response.
008 * @author Marco หงุ่ยตระกูล-Schulze - marco at codewizards dot co
009 */
010public abstract class VoidRequest extends AbstractRequest<Void> {
011
012        @Override
013        public final Void execute() {
014                final Response response = _execute();
015                assertResponseIndicatesSuccess(response);
016                return null;
017        }
018
019        /**
020         * REST requests without response should implement this delegate method instead of {@link #execute()}.
021         * @return the response object returned from {@link SyncInvoker#put(javax.ws.rs.client.Entity)} or a
022         * similar method.
023         */
024        protected abstract Response _execute();
025
026        @Override
027        public boolean isResultNullable() {
028                return true;
029        }
030
031}