Fix generics as far as possible

This commit is contained in:
René Pfeuffer
2020-11-12 08:10:01 +01:00
parent 923526bafa
commit 8e10f7e7ed
4 changed files with 9 additions and 6 deletions

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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));
}