diff --git a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java index 794771d81a..2c047b97eb 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/LookupCommandBuilder.java @@ -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 Optional lookup(Class type, String... args) { + LookupCommandRequest request = new LookupCommandRequest<>(); request.setType(type); request.setArgs(args); return lookupCommand.lookup(request); diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java index 57cf4f7851..363d50ec4e 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommand.java @@ -34,5 +34,5 @@ public interface LookupCommand { * @param request Arguments provided for the lookup. * @return Result of provided type. */ - Optional lookup(LookupCommandRequest request); + Optional lookup(LookupCommandRequest request); } diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java index a3ceb13414..0094351038 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/LookupCommandRequest.java @@ -29,7 +29,7 @@ import lombok.Setter; @Getter @Setter -public class LookupCommandRequest { - private Class type; +public class LookupCommandRequest { + private Class type; private String[] args; } diff --git a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java index e23018095a..ed79e40e25 100644 --- a/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java +++ b/scm-plugins/scm-svn-plugin/src/main/java/sonia/scm/repository/spi/SvnLookupCommand.java @@ -38,7 +38,7 @@ public class SvnLookupCommand extends AbstractSvnCommand implements LookupComman } @Override - public Optional lookup(LookupCommandRequest request) { + public Optional lookup(LookupCommandRequest 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 Optional lookupProps(LookupCommandRequest request) throws SVNException { + private Optional lookupProps(LookupCommandRequest 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)); }