diff --git a/src/main/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacher.java b/src/main/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacher.java index 0e915b71..69ab105b 100644 --- a/src/main/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacher.java +++ b/src/main/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacher.java @@ -29,7 +29,10 @@ public DefaultRPADatasetCacher(RPACachingService rpaCachingService) { public String cache(String datasetId) throws RequestProcessingException { String randomId; try { - randomId = rpaCachingService.cacheAndGenerateRandomId(datasetId, ""); + // Replaced "" with null because passing an empty string would break the logic downstream. + // An empty string would match the first version available, while in this scenario, + // when the version is not provided, we want to select the latest version. Passing null achieves this. + randomId = rpaCachingService.cacheAndGenerateRandomId(datasetId, null); } catch (Exception e) { this.logCachingException(e); throw new RequestProcessingException(e.getMessage()); diff --git a/src/test/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacherTest.java b/src/test/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacherTest.java index 3e3ae905..37e4f64f 100644 --- a/src/test/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacherTest.java +++ b/src/test/java/gov/nist/oar/distrib/service/rpa/DefaultRPADatasetCacherTest.java @@ -11,6 +11,7 @@ import org.mockito.junit.MockitoJUnitRunner; import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; @@ -30,7 +31,7 @@ public void setUp() { MockitoAnnotations.initMocks(this); rpaDatasetCacher = new DefaultRPADatasetCacher(rpaCachingService); datasetId = "mds2-2909"; - version = ""; + version = null; } @Test @@ -65,7 +66,7 @@ public void testCache_invalidDatasetId() throws Exception { String invalidDatasetId = "ark:/invalid_id"; // Throw an IllegalArgumentException for the invalid datasetId when the cacheAndGenerateRandomId method is called - when(rpaCachingService.cacheAndGenerateRandomId(eq(invalidDatasetId), anyString())) + when(rpaCachingService.cacheAndGenerateRandomId(eq(invalidDatasetId), any())) .thenThrow(new IllegalArgumentException("Invalid dataset ID format: " + invalidDatasetId)); rpaDatasetCacher.cache(invalidDatasetId);