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

View File

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

View File

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

View File

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