mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-02 11:35:57 +01:00
Fix generics as far as possible
This commit is contained in:
@@ -37,13 +37,13 @@ import java.util.Optional;
|
|||||||
public class LookupCommandBuilder {
|
public class LookupCommandBuilder {
|
||||||
|
|
||||||
private final LookupCommand lookupCommand;
|
private final LookupCommand lookupCommand;
|
||||||
private final LookupCommandRequest request = new LookupCommandRequest();
|
|
||||||
|
|
||||||
public LookupCommandBuilder(LookupCommand lookupCommand) {
|
public LookupCommandBuilder(LookupCommand lookupCommand) {
|
||||||
this.lookupCommand = lookupCommand;
|
this.lookupCommand = lookupCommand;
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T> Optional<T> lookup(Class<T> type, String... args) {
|
public <T> Optional<T> lookup(Class<T> type, String... args) {
|
||||||
|
LookupCommandRequest<T> request = new LookupCommandRequest<>();
|
||||||
request.setType(type);
|
request.setType(type);
|
||||||
request.setArgs(args);
|
request.setArgs(args);
|
||||||
return lookupCommand.lookup(request);
|
return lookupCommand.lookup(request);
|
||||||
|
|||||||
@@ -34,5 +34,5 @@ public interface LookupCommand {
|
|||||||
* @param request Arguments provided for the lookup.
|
* @param request Arguments provided for the lookup.
|
||||||
* @return Result of provided type.
|
* @return Result of provided type.
|
||||||
*/
|
*/
|
||||||
<T> Optional<T> lookup(LookupCommandRequest request);
|
<T> Optional<T> lookup(LookupCommandRequest<T> request);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import lombok.Setter;
|
|||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class LookupCommandRequest {
|
public class LookupCommandRequest<T> {
|
||||||
private Class<?> type;
|
private Class<T> type;
|
||||||
private String[] args;
|
private String[] args;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> Optional<T> lookup(LookupCommandRequest request) {
|
public <T> Optional<T> lookup(LookupCommandRequest<T> request) {
|
||||||
try {
|
try {
|
||||||
if (request.getArgs().length > 1 && "propget".equalsIgnoreCase(request.getArgs()[0])) {
|
if (request.getArgs().length > 1 && "propget".equalsIgnoreCase(request.getArgs()[0])) {
|
||||||
return lookupProps(request);
|
return lookupProps(request);
|
||||||
@@ -50,8 +50,11 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman
|
|||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> Optional<T> lookupProps(LookupCommandRequest request) throws SVNException {
|
private <T> Optional<T> lookupProps(LookupCommandRequest<T> request) throws SVNException {
|
||||||
if (request.getArgs()[1].equalsIgnoreCase("uuid")) {
|
if (request.getArgs()[1].equalsIgnoreCase("uuid")) {
|
||||||
|
if (!request.getType().equals(String.class)) {
|
||||||
|
throw new IllegalArgumentException("uuid can only be returned as String");
|
||||||
|
}
|
||||||
SVNRepository repository = context.open();
|
SVNRepository repository = context.open();
|
||||||
return Optional.of((T) repository.getRepositoryUUID(true));
|
return Optional.of((T) repository.getRepositoryUUID(true));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user