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