Skip to content

Commit d6391e4

Browse files
committed
Add type parameter for Command interface
Strong typing of Command's response type This closes #1272
1 parent 6fc20f7 commit d6391e4

File tree

95 files changed

+307
-336
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

95 files changed

+307
-336
lines changed

maven-scm-api/src/main/java/org/apache/maven/scm/command/AbstractCommand.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,17 @@
2929
/**
3030
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
3131
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
32+
* @param <T>
3233
*
3334
*/
34-
public abstract class AbstractCommand implements Command {
35+
public abstract class AbstractCommand<T extends ScmResult> implements Command<T> {
3536
protected Logger logger = LoggerFactory.getLogger(getClass());
3637

37-
protected abstract ScmResult executeCommand(
38+
protected abstract T executeCommand(
3839
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException;
3940

4041
/** {@inheritDoc} */
41-
public final ScmResult execute(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
42+
public final T execute(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
4243
throws ScmException {
4344
if (repository == null) {
4445
throw new NullPointerException("repository cannot be null");

maven-scm-api/src/main/java/org/apache/maven/scm/command/Command.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
/**
2828
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
2929
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
30-
*
30+
* @param <T> the type of result returned by this command
3131
*/
32-
public interface Command {
32+
public interface Command<T extends ScmResult> {
3333
/** Plexus component key */
3434
String ROLE = Command.class.getName();
3535

@@ -40,6 +40,5 @@ public interface Command {
4040
* @return the result object
4141
* @throws ScmException if any
4242
*/
43-
ScmResult execute(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
44-
throws ScmException;
43+
T execute(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException;
4544
}

maven-scm-api/src/main/java/org/apache/maven/scm/command/add/AbstractAddCommand.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,19 @@
2222
import org.apache.maven.scm.CommandParameters;
2323
import org.apache.maven.scm.ScmException;
2424
import org.apache.maven.scm.ScmFileSet;
25-
import org.apache.maven.scm.ScmResult;
2625
import org.apache.maven.scm.command.AbstractCommand;
2726
import org.apache.maven.scm.provider.ScmProviderRepository;
2827

2928
/**
3029
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
3130
*
3231
*/
33-
public abstract class AbstractAddCommand extends AbstractCommand {
34-
protected abstract ScmResult executeAddCommand(
32+
public abstract class AbstractAddCommand extends AbstractCommand<AddScmResult> {
33+
protected abstract AddScmResult executeAddCommand(
3534
ScmProviderRepository repository, ScmFileSet fileSet, String message, boolean binary) throws ScmException;
3635

3736
/** {@inheritDoc} */
38-
protected ScmResult executeCommand(
37+
protected AddScmResult executeCommand(
3938
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
4039
return executeAddCommand(
4140
repository,

maven-scm-api/src/main/java/org/apache/maven/scm/command/blame/AbstractBlameCommand.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,18 @@
2222
import org.apache.maven.scm.CommandParameters;
2323
import org.apache.maven.scm.ScmException;
2424
import org.apache.maven.scm.ScmFileSet;
25-
import org.apache.maven.scm.ScmResult;
2625
import org.apache.maven.scm.command.AbstractCommand;
2726
import org.apache.maven.scm.provider.ScmProviderRepository;
2827

2928
/**
3029
* @author Evgeny Mandrikov
3130
* @since 1.4
3231
*/
33-
public abstract class AbstractBlameCommand extends AbstractCommand {
32+
public abstract class AbstractBlameCommand extends AbstractCommand<BlameScmResult> {
3433
public abstract BlameScmResult executeBlameCommand(
3534
ScmProviderRepository repo, ScmFileSet workingDirectory, String filename) throws ScmException;
3635

37-
protected ScmResult executeCommand(
36+
protected BlameScmResult executeCommand(
3837
ScmProviderRepository repository, ScmFileSet workingDirectory, CommandParameters parameters)
3938
throws ScmException {
4039
String file = parameters.getString(CommandParameter.FILE);

maven-scm-api/src/main/java/org/apache/maven/scm/command/branch/AbstractBranchCommand.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.apache.maven.scm.ScmBranchParameters;
2525
import org.apache.maven.scm.ScmException;
2626
import org.apache.maven.scm.ScmFileSet;
27-
import org.apache.maven.scm.ScmResult;
2827
import org.apache.maven.scm.command.AbstractCommand;
2928
import org.apache.maven.scm.provider.ScmProviderRepository;
3029

@@ -33,8 +32,8 @@
3332
* @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
3433
*
3534
*/
36-
public abstract class AbstractBranchCommand extends AbstractCommand {
37-
protected abstract ScmResult executeBranchCommand(
35+
public abstract class AbstractBranchCommand extends AbstractCommand<BranchScmResult> {
36+
protected abstract BranchScmResult executeBranchCommand(
3837
ScmProviderRepository repository, ScmFileSet fileSet, String branchName, String message)
3938
throws ScmException;
4039

@@ -48,7 +47,7 @@ protected abstract ScmResult executeBranchCommand(
4847
* @return TODO
4948
* @throws ScmException if any
5049
*/
51-
protected ScmResult executeBranchCommand(
50+
protected BranchScmResult executeBranchCommand(
5251
ScmProviderRepository repository,
5352
ScmFileSet fileSet,
5453
String branchName,
@@ -58,8 +57,8 @@ protected ScmResult executeBranchCommand(
5857
}
5958

6059
/** {@inheritDoc} */
61-
public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
62-
throws ScmException {
60+
public BranchScmResult executeCommand(
61+
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
6362
String branchName = parameters.getString(CommandParameter.BRANCH_NAME);
6463

6564
ScmBranchParameters scmBranchParameters =

maven-scm-api/src/main/java/org/apache/maven/scm/command/changelog/AbstractChangeLogCommand.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.apache.maven.scm.ScmBranch;
2626
import org.apache.maven.scm.ScmException;
2727
import org.apache.maven.scm.ScmFileSet;
28-
import org.apache.maven.scm.ScmResult;
2928
import org.apache.maven.scm.ScmVersion;
3029
import org.apache.maven.scm.command.AbstractCommand;
3130
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -35,7 +34,7 @@
3534
* @author Olivier Lamy
3635
*
3736
*/
38-
public abstract class AbstractChangeLogCommand extends AbstractCommand implements ChangeLogCommand {
37+
public abstract class AbstractChangeLogCommand extends AbstractCommand<ChangeLogScmResult> implements ChangeLogCommand {
3938
@Deprecated
4039
protected abstract ChangeLogScmResult executeChangeLogCommand(
4140
ScmProviderRepository repository,
@@ -67,8 +66,8 @@ protected ChangeLogScmResult executeChangeLogCommand(
6766
/**
6867
* {@inheritDoc}
6968
*/
70-
public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
71-
throws ScmException {
69+
public ChangeLogScmResult executeCommand(
70+
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
7271
Date startDate = parameters.getDate(CommandParameter.START_DATE, null);
7372

7473
Date endDate = parameters.getDate(CommandParameter.END_DATE, null);

maven-scm-api/src/main/java/org/apache/maven/scm/command/checkin/AbstractCheckInCommand.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.maven.scm.CommandParameters;
2323
import org.apache.maven.scm.ScmException;
2424
import org.apache.maven.scm.ScmFileSet;
25-
import org.apache.maven.scm.ScmResult;
2625
import org.apache.maven.scm.ScmVersion;
2726
import org.apache.maven.scm.command.AbstractCommand;
2827
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -33,15 +32,15 @@
3332
* @author Olivier Lamy
3433
*
3534
*/
36-
public abstract class AbstractCheckInCommand extends AbstractCommand {
35+
public abstract class AbstractCheckInCommand extends AbstractCommand<CheckInScmResult> {
3736
public static final String NAME = "check-in";
3837

3938
protected abstract CheckInScmResult executeCheckInCommand(
4039
ScmProviderRepository repository, ScmFileSet fileSet, String message, ScmVersion scmVersion)
4140
throws ScmException;
4241

43-
public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
44-
throws ScmException {
42+
public CheckInScmResult executeCommand(
43+
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
4544
String message = parameters.getString(CommandParameter.MESSAGE);
4645

4746
ScmVersion scmVersion = parameters.getScmVersion(CommandParameter.SCM_VERSION, null);

maven-scm-api/src/main/java/org/apache/maven/scm/command/checkout/AbstractCheckOutCommand.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.maven.scm.CommandParameters;
2323
import org.apache.maven.scm.ScmException;
2424
import org.apache.maven.scm.ScmFileSet;
25-
import org.apache.maven.scm.ScmResult;
2625
import org.apache.maven.scm.ScmVersion;
2726
import org.apache.maven.scm.command.AbstractCommand;
2827
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -33,7 +32,7 @@
3332
* @author Olivier Lamy
3433
*
3534
*/
36-
public abstract class AbstractCheckOutCommand extends AbstractCommand {
35+
public abstract class AbstractCheckOutCommand extends AbstractCommand<CheckOutScmResult> {
3736
/**
3837
* Execute Check out command line in a recursive check out way.
3938
*
@@ -70,8 +69,8 @@ protected abstract CheckOutScmResult executeCheckOutCommand(
7069
throws ScmException;
7170

7271
/** {@inheritDoc} */
73-
public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
74-
throws ScmException {
72+
public CheckOutScmResult executeCommand(
73+
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
7574
ScmVersion scmVersion = parameters.getScmVersion(CommandParameter.SCM_VERSION, null);
7675
boolean recursive = parameters.getBoolean(CommandParameter.RECURSIVE, true);
7776
boolean shallow = parameters.getBoolean(CommandParameter.SHALLOW, false);

maven-scm-api/src/main/java/org/apache/maven/scm/command/diff/AbstractDiffCommand.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.maven.scm.CommandParameters;
2323
import org.apache.maven.scm.ScmException;
2424
import org.apache.maven.scm.ScmFileSet;
25-
import org.apache.maven.scm.ScmResult;
2625
import org.apache.maven.scm.ScmVersion;
2726
import org.apache.maven.scm.command.AbstractCommand;
2827
import org.apache.maven.scm.provider.ScmProviderRepository;
@@ -37,14 +36,14 @@
3736
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
3837
*
3938
*/
40-
public abstract class AbstractDiffCommand extends AbstractCommand {
39+
public abstract class AbstractDiffCommand extends AbstractCommand<DiffScmResult> {
4140
protected abstract DiffScmResult executeDiffCommand(
4241
ScmProviderRepository repository, ScmFileSet fileSet, ScmVersion startRevision, ScmVersion endRevision)
4342
throws ScmException;
4443

4544
/** {@inheritDoc} */
46-
public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
47-
throws ScmException {
45+
public DiffScmResult executeCommand(
46+
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
4847
ScmVersion startRevision = parameters.getScmVersion(CommandParameter.START_SCM_VERSION, null);
4948

5049
ScmVersion endRevision = parameters.getScmVersion(CommandParameter.END_SCM_VERSION, null);

maven-scm-api/src/main/java/org/apache/maven/scm/command/edit/AbstractEditCommand.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,19 @@
2121
import org.apache.maven.scm.CommandParameters;
2222
import org.apache.maven.scm.ScmException;
2323
import org.apache.maven.scm.ScmFileSet;
24-
import org.apache.maven.scm.ScmResult;
2524
import org.apache.maven.scm.command.AbstractCommand;
2625
import org.apache.maven.scm.provider.ScmProviderRepository;
2726

2827
/**
2928
*
3029
*/
31-
public abstract class AbstractEditCommand extends AbstractCommand {
30+
public abstract class AbstractEditCommand extends AbstractCommand<EditScmResult> {
3231
/** {@inheritDoc} */
33-
public ScmResult executeCommand(ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters)
34-
throws ScmException {
32+
public EditScmResult executeCommand(
33+
ScmProviderRepository repository, ScmFileSet fileSet, CommandParameters parameters) throws ScmException {
3534
return executeEditCommand(repository, fileSet);
3635
}
3736

38-
protected abstract ScmResult executeEditCommand(ScmProviderRepository repository, ScmFileSet fileSet)
37+
protected abstract EditScmResult executeEditCommand(ScmProviderRepository repository, ScmFileSet fileSet)
3938
throws ScmException;
4039
}

0 commit comments

Comments
 (0)