mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-01-26 17:29:12 +01:00
Add command api for merge
This commit is contained in:
@@ -66,6 +66,10 @@ public enum Command
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
MODIFICATIONS
|
||||
MODIFICATIONS,
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
MERGE
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package sonia.scm.repository.api;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import sonia.scm.repository.spi.MergeCommand;
|
||||
import sonia.scm.repository.spi.MergeCommandRequest;
|
||||
|
||||
public class MergeCommandBuilder {
|
||||
|
||||
private final MergeCommand mergeCommand;
|
||||
private final MergeCommandRequest request = new MergeCommandRequest();
|
||||
|
||||
public MergeCommandBuilder(MergeCommand mergeCommand) {
|
||||
this.mergeCommand = mergeCommand;
|
||||
}
|
||||
|
||||
public MergeCommandBuilder setBranchToMerge(String branchToMerge) {
|
||||
request.setBranchToMerge(branchToMerge);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MergeCommandBuilder setTargetBranch(String targetBranch) {
|
||||
request.setTargetBranch(targetBranch);
|
||||
return this;
|
||||
}
|
||||
|
||||
public MergeCommandBuilder reset() {
|
||||
request.reset();
|
||||
return this;
|
||||
}
|
||||
|
||||
public boolean execute() {
|
||||
Preconditions.checkArgument(request.isValid(), "revision to merge and target revision is required");
|
||||
return mergeCommand.merge(request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
public interface MergeCommand {
|
||||
boolean merge(MergeCommandRequest request);
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Strings;
|
||||
import sonia.scm.Validateable;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class MergeCommandRequest implements Validateable, Resetable, Serializable, Cloneable {
|
||||
|
||||
private static final long serialVersionUID = -2650236557922431528L;
|
||||
|
||||
private String branchToMerge;
|
||||
private String targetBranch;
|
||||
|
||||
public String getBranchToMerge() {
|
||||
return branchToMerge;
|
||||
}
|
||||
|
||||
public void setBranchToMerge(String branchToMerge) {
|
||||
this.branchToMerge = branchToMerge;
|
||||
}
|
||||
|
||||
public String getTargetBranch() {
|
||||
return targetBranch;
|
||||
}
|
||||
|
||||
public void setTargetBranch(String targetBranch) {
|
||||
this.targetBranch = targetBranch;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return !Strings.isNullOrEmpty(getBranchToMerge()) && !Strings.isNullOrEmpty(getTargetBranch());
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
this.setBranchToMerge(null);
|
||||
this.setTargetBranch(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getClass() != obj.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
final MergeCommandRequest other = (MergeCommandRequest) obj;
|
||||
|
||||
return Objects.equal(branchToMerge, other.branchToMerge)
|
||||
&& Objects.equal(targetBranch, other.targetBranch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(branchToMerge, targetBranch);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(this)
|
||||
.add("branchToMerge", branchToMerge)
|
||||
.add("targetBranch", targetBranch)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
@@ -251,4 +251,12 @@ public abstract class RepositoryServiceProvider implements Closeable
|
||||
{
|
||||
throw new CommandNotSupportedException(Command.UNBUNDLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 2.0
|
||||
*/
|
||||
public MergeCommand getMergeCommand()
|
||||
{
|
||||
throw new CommandNotSupportedException(Command.MERGE);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user