diff options
author | liamfallon <liam.fallon@ericsson.com> | 2018-04-24 23:47:45 +0100 |
---|---|---|
committer | liamfallon <liam.fallon@ericsson.com> | 2018-04-24 23:54:17 +0100 |
commit | 303742b965387dacfeedda939323424716cf9b7c (patch) | |
tree | 116bcf136d0c99e57c3242c18a770990776fcfee /BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java | |
parent | 30b44d3e752d44f8f870594a05464c9e1c5158b6 (diff) |
Add JUnit for direct Sonar Nexus REST interface
JUnit tests and changes to the source code to fix issues that were
identified in JUnit testing.
JUnit testing runs tests towards the Nexus server at
https://nexus.onap.org
If that server does not exist then the unit tests will fail
but as the nexus serveir is required for the build to work then
it should be OK to use that server for unit testing. This removes
the need to write complex (and less effective) Mockito type
unit tests.
Issue-ID: POLICY-700
Change-Id: I4aa33a1022033b42bb1fd1fa36785a8e0216b887
Signed-off-by: liamfallon <liam.fallon@ericsson.com>
Diffstat (limited to 'BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java')
-rw-r--r-- | BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java | 103 |
1 files changed, 74 insertions, 29 deletions
diff --git a/BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java b/BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java index eec37392e..1288b5982 100644 --- a/BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java +++ b/BRMSGateway/src/main/java/org/onap/policy/brms/api/nexus/NexusRestSearchParameters.java @@ -45,11 +45,12 @@ public class NexusRestSearchParameters { private static final String COUNT_QUERY_PARAM = "count"; private static final String REPOSITORY_ID_QUERY_PARAM = "repositoryId"; - private enum SearchType { - KEYWORD, // Search using a keyword - FILTER, // Search using a group ID, artifact ID, version, packaging type, and/or classifier filter - CLASS_NAME, // Search for a class name - CHECKSUM // Search for artifacts matching a certain checksum + /** The type of searches that can be performed. */ + public enum SearchType { + KEYWORD, /** Search using a keyword. */ + FILTER, /** Search using a group ID, artifact ID, version, packaging type, and/or classifier filter. */ + CLASS_NAME, /** Search for a class name. */ + CHECKSUM /** Search for artifacts matching a certain checksum. */ } // The type of search to perform @@ -76,15 +77,19 @@ public class NexusRestSearchParameters { * Specify searching using a keyword. * * @param keyword The keyword to search for + * @return this object to allow chaining of methods * @throws NexusRestWrapperException on invalid keywords */ - public void useKeywordSearch(final String keyword) throws NexusRestWrapperException { + public NexusRestSearchParameters useKeywordSearch(final String keyword) throws NexusRestWrapperException { + clearSearchParameters(); + if (isNullOrBlank(keyword)) { throw new NexusRestWrapperException("keyword must be specified for Nexus keyword searches"); } searchType = SearchType.KEYWORD; this.keyword = keyword; + return this; } /** @@ -95,14 +100,18 @@ public class NexusRestSearchParameters { * @param version The version to filter on * @param packagingType The packaging type to filter on * @param classifier The classifier to filter on + * @return this object to allow chaining of methods * @throws NexusRestWrapperException on invalid filters */ - public void useFilterSearch(final String groupId, final String artifactId, final String version, - final String packagingType, final String classifier) throws NexusRestWrapperException { + public NexusRestSearchParameters useFilterSearch(final String groupId, final String artifactId, + final String version, final String packagingType, final String classifier) + throws NexusRestWrapperException { + clearSearchParameters(); + if (isNullOrBlank(groupId) && isNullOrBlank(artifactId) && isNullOrBlank(version) - && isNullOrBlank(packagingType) && isNullOrBlank(classifier)) { + && isNullOrBlank(packagingType) && isNullOrBlank(classifier)) { throw new NexusRestWrapperException( - "at least one filter parameter must be specified for Nexus keyword searches"); + "at least one filter parameter must be specified for Nexus filter searches"); } searchType = SearchType.FILTER; @@ -111,36 +120,45 @@ public class NexusRestSearchParameters { this.version = version; this.packagingType = packagingType; this.classifier = classifier; + return this; } /** * Specify searching using a class name. * * @param className The class name to search for + * @return this object to allow chaining of methods * @throws NexusRestWrapperException on invalid className */ - public void useClassNameSearch(final String className) throws NexusRestWrapperException { + public NexusRestSearchParameters useClassNameSearch(final String className) throws NexusRestWrapperException { + clearSearchParameters(); + if (isNullOrBlank(className)) { - throw new NexusRestWrapperException("className must be specified for Nexus keyword searches"); + throw new NexusRestWrapperException("className must be specified for Nexus class name searches"); } searchType = SearchType.CLASS_NAME; this.className = className; + return this; } /** * Specify searching using a checksum. * * @param checksum The checksum to search for + * @return this object to allow chaining of methods * @throws NexusRestWrapperException on invalid checksum */ - public void useChecksumSearch(final String checksum) throws NexusRestWrapperException { + public NexusRestSearchParameters useChecksumSearch(final String checksum) throws NexusRestWrapperException { + clearSearchParameters(); + if (isNullOrBlank(checksum)) { - throw new NexusRestWrapperException("checksum must be specified for Nexus keyword searches"); + throw new NexusRestWrapperException("checksum must be specified for Nexus checksum searches"); } searchType = SearchType.CHECKSUM; this.checksum = checksum; + return this; } /** @@ -152,7 +170,7 @@ public class NexusRestSearchParameters { */ public NexusRestSearchParameters setRepositoryId(String repositoryId) throws NexusRestWrapperException { if (isNullOrBlank(repositoryId)) { - throw new NexusRestWrapperException("repositoryId must be specified for Nexus keyword searches"); + throw new NexusRestWrapperException("a repositoryId must be specified"); } this.repositoryId = repositoryId; @@ -168,7 +186,7 @@ public class NexusRestSearchParameters { */ public NexusRestSearchParameters setFrom(int from) throws NexusRestWrapperException { if (from < 0) { - throw new NexusRestWrapperException("from cannot be less than 0 for Nexus keyword searches"); + throw new NexusRestWrapperException("from cannot be less than 0 when from is specified"); } this.from = from; @@ -184,7 +202,7 @@ public class NexusRestSearchParameters { */ public NexusRestSearchParameters setCount(int count) throws NexusRestWrapperException { if (count < 1) { - throw new NexusRestWrapperException("count cannot be less than 1 for Nexus keyword searches"); + throw new NexusRestWrapperException("count cannot be less than 1 when count is specified"); } this.count = count; @@ -200,13 +218,17 @@ public class NexusRestSearchParameters { */ public URI getSearchUri(final String nexusServerUrl) throws NexusRestWrapperException { if (isNullOrBlank(nexusServerUrl)) { - throw new NexusRestWrapperException("nexusServerUrl must be specified for Nexus keyword searches"); + throw new NexusRestWrapperException("nexusServerUrl must be specified for the search URI"); + } + + if (searchType == null) { + throw new NexusRestWrapperException("search parameters have not been set"); } // Use a URI builder to build up the search URI UriBuilder uriBuilder = UriBuilder - .fromPath(nexusServerUrl) - .path(NEXUS_LUCENE_SEARCH_PATH); + .fromPath(nexusServerUrl) + .path(NEXUS_LUCENE_SEARCH_PATH); switch (searchType) { case KEYWORD: @@ -226,7 +248,7 @@ public class NexusRestSearchParameters { break; default: - throw new NexusRestWrapperException("search parameters have not been specified for the NExus search"); + throw new NexusRestWrapperException("search parameters have not been specified for the Nexus search"); } // Add the repository ID query parameter is required @@ -258,19 +280,19 @@ public class NexusRestSearchParameters { * @param uriBuilder The builder to add query parameters to */ private void getFitlerSearchUri(UriBuilder uriBuilder) { - if (null != groupId) { + if (!isNullOrBlank(groupId)) { uriBuilder.queryParam(GROUP_ID_QUERY_PARAM, groupId); } - if (null != artifactId) { + if (!isNullOrBlank(artifactId)) { uriBuilder.queryParam(ARTIFACT_ID_QUERY_PARAM, artifactId); } - if (null != version) { + if (!isNullOrBlank(version)) { uriBuilder.queryParam(VERSION_QUERY_PARAM, version); } - if (null != packagingType) { + if (!isNullOrBlank(packagingType)) { uriBuilder.queryParam(PACKAGING_TYPE_QUERY_PARAM, packagingType); } - if (null != classifier) { + if (!isNullOrBlank(classifier)) { uriBuilder.queryParam(CLASSIFIER_QUERY_PARAM, classifier); } } @@ -346,11 +368,34 @@ public class NexusRestSearchParameters { return null == parameter || parameter.trim().isEmpty(); } + /** + * Clear all search parameters. + * + */ + private void clearSearchParameters() { + searchType = null; + + keyword = null; + groupId = null; + artifactId = null; + version = null; + packagingType = null; + classifier = null; + className = null; + checksum = null; + + repositoryId = null; + + // Scope filters + from = -1; + count = -1; + } + @Override public String toString() { return "NexusRestSearchParameters [searchType=" + searchType + ", keyword=" + keyword + ", groupId=" + groupId - + ", artifactId=" + artifactId + ", version=" + version + ", packagingType=" + packagingType - + ", classifier=" + classifier + ", className=" + className + ", checksum=" + checksum - + ", repositoryId=" + repositoryId + ", from=" + from + ", count=" + count + "]"; + + ", artifactId=" + artifactId + ", version=" + version + ", packagingType=" + packagingType + + ", classifier=" + classifier + ", className=" + className + ", checksum=" + checksum + + ", repositoryId=" + repositoryId + ", from=" + from + ", count=" + count + "]"; } } |