| // Copyright (C) 2014 The Android Open Source Project | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // http://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| package com.google.gerrit.extensions.api.changes; | |
| import com.google.gerrit.extensions.client.DiffPreferencesInfo.Whitespace; | |
| import com.google.gerrit.extensions.common.BlameInfo; | |
| import com.google.gerrit.extensions.common.DiffInfo; | |
| import com.google.gerrit.extensions.restapi.BinaryResult; | |
| import com.google.gerrit.extensions.restapi.NotImplementedException; | |
| import com.google.gerrit.extensions.restapi.RestApiException; | |
| import java.util.List; | |
| import java.util.OptionalInt; | |
| public interface FileApi { | |
| BinaryResult content() throws RestApiException; | |
| /** Diff against the revision's parent version of the file. */ | |
| DiffInfo diff() throws RestApiException; | |
| /** | |
| * Diff against the specified base | |
| * | |
| * @param base revision id of the revision to be used as the diff base | |
| */ | |
| DiffInfo diff(String base) throws RestApiException; | |
| /** | |
| * Diff against the specified parent | |
| * | |
| * @param parent 1-based parent number to diff against | |
| */ | |
| DiffInfo diff(int parent) throws RestApiException; | |
| /** | |
| * Creates a request to retrieve the diff. On the returned request formatting options for the diff | |
| * can be set. | |
| */ | |
| DiffRequest diffRequest() throws RestApiException; | |
| /** Set the file reviewed or not reviewed */ | |
| void setReviewed(boolean reviewed) throws RestApiException; | |
| /** | |
| * Creates a request to retrieve the blame information. On the returned request formatting options | |
| * for the blame request can be set. | |
| */ | |
| BlameRequest blameRequest() throws RestApiException; | |
| abstract class DiffRequest { | |
| private String base; | |
| private Boolean intraline; | |
| private Whitespace whitespace; | |
| private OptionalInt parent = OptionalInt.empty(); | |
| public abstract DiffInfo get() throws RestApiException; | |
| public DiffRequest withBase(String base) { | |
| this.base = base; | |
| return this; | |
| } | |
| public DiffRequest withIntraline(boolean intraline) { | |
| this.intraline = intraline; | |
| return this; | |
| } | |
| public DiffRequest withWhitespace(Whitespace whitespace) { | |
| this.whitespace = whitespace; | |
| return this; | |
| } | |
| public DiffRequest withParent(int parent) { | |
| this.parent = OptionalInt.of(parent); | |
| return this; | |
| } | |
| public String getBase() { | |
| return base; | |
| } | |
| public Boolean getIntraline() { | |
| return intraline; | |
| } | |
| public Whitespace getWhitespace() { | |
| return whitespace; | |
| } | |
| public OptionalInt getParent() { | |
| return parent; | |
| } | |
| } | |
| abstract class BlameRequest { | |
| private boolean forBase; | |
| public abstract List<BlameInfo> get() throws RestApiException; | |
| public BlameRequest forBase(boolean forBase) { | |
| this.forBase = forBase; | |
| return this; | |
| } | |
| public boolean isForBase() { | |
| return forBase; | |
| } | |
| } | |
| /** | |
| * A default implementation which allows source compatibility when adding new methods to the | |
| * interface. | |
| */ | |
| class NotImplemented implements FileApi { | |
| @Override | |
| public BinaryResult content() throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| @Override | |
| public DiffInfo diff() throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| @Override | |
| public DiffInfo diff(String base) throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| @Override | |
| public DiffInfo diff(int parent) throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| @Override | |
| public DiffRequest diffRequest() throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| @Override | |
| public void setReviewed(boolean reviewed) throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| @Override | |
| public BlameRequest blameRequest() throws RestApiException { | |
| throw new NotImplementedException(); | |
| } | |
| } | |
| } |