wrap lookup command result in java.util.Optional to clarify api

This commit is contained in:
Eduard Heimbuch
2020-10-20 14:07:06 +02:00
parent 018ebf03ba
commit c005944a5c
4 changed files with 107 additions and 11 deletions

View File

@@ -29,6 +29,7 @@ import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.io.SVNRepository;
import java.util.Arrays;
import java.util.Optional;
@Slf4j
public class SvnLookupCommand extends AbstractSvnCommand implements LookupCommand {
@@ -38,18 +39,28 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman
}
@Override
public <T> T lookup(LookupCommandRequest request) {
public <T> Optional<T> lookup(LookupCommandRequest request) {
try {
SVNRepository repository = context.open();
if (request.getArgs()[0].equalsIgnoreCase("props")) {
if (Arrays.stream(request.getArgs()).anyMatch(a -> a.equalsIgnoreCase("uuid"))) {
return (T) repository.getRepositoryUUID(false);
}
if (requestContainsArg(request, "props")) {
return lookupProps(request);
}
} catch (SVNException | ClassCastException e) {
log.error("Invalid lookup request", e);
} catch (SVNException e) {
log.error("Lookup failed: ", e);
}
return null;
return Optional.empty();
}
private <T> Optional<T> lookupProps(LookupCommandRequest request) throws SVNException {
if (requestContainsArg(request, "uuid")) {
SVNRepository repository = context.open();
return Optional.of((T) repository.getRepositoryUUID(true));
}
log.debug("No result found on lookup");
return Optional.empty();
}
private boolean requestContainsArg(LookupCommandRequest request, String props) {
return Arrays.stream(request.getArgs()).anyMatch(a -> a.equalsIgnoreCase(props));
}
}