private DataBridgeBaseManifestDto getDataBridgeBaseManifestDto() { DataBridgeBaseManifestDto dataBridgeBaseManifestDto = new DataBridgeBaseManifestDto(); dataBridgeBaseManifestDto.setNamespace("testNamespace"); dataBridgeBaseManifestDto.setBusinessObjectDefinitionName("testBusinessObjectDefinitionName"); dataBridgeBaseManifestDto.setBusinessObjectFormatUsage("testBusinessObjectFormatUsage"); dataBridgeBaseManifestDto.setBusinessObjectFormatFileType("testBusinessObjectFormatFileType"); dataBridgeBaseManifestDto.setBusinessObjectFormatVersion("testBusinessObjectFormatVersion"); dataBridgeBaseManifestDto.setPartitionKey("testPartitionKey"); dataBridgeBaseManifestDto.setPartitionValue("testPartitionValue"); dataBridgeBaseManifestDto.setSubPartitionValues(Arrays.asList("testSubPartitionValue1", "testSubPartitionValue2")); return dataBridgeBaseManifestDto; }
/** * Validates a manifest. * * @param manifest the manifest to validate. * * @throws IllegalArgumentException if the manifest is not valid. */ protected void validateManifest(M manifest) throws IllegalArgumentException { Assert.hasText(manifest.getBusinessObjectDefinitionName(), "Manifest business object definition name must be specified."); Assert.hasText(manifest.getBusinessObjectFormatFileType(), "Manifest business object format file type must be specified."); Assert.hasText(manifest.getBusinessObjectFormatUsage(), "Manifest business object format usage must be specified."); Assert.hasText(manifest.getPartitionKey(), "Manifest business object format partition key must be specified."); Assert.hasText(manifest.getPartitionValue(), "Manifest business object data partition value must be specified."); } }
uriPathBuilder.append(HERD_APP_REST_URI_PREFIX + "/businessObjectData"); if (StringUtils.isNotBlank(manifest.getNamespace())) uriPathBuilder.append("/namespaces/").append(manifest.getNamespace()); uriPathBuilder.append("/businessObjectDefinitionNames/").append(manifest.getBusinessObjectDefinitionName()); uriPathBuilder.append("/businessObjectFormatUsages/").append(manifest.getBusinessObjectFormatUsage()); uriPathBuilder.append("/businessObjectFormatFileTypes/").append(manifest.getBusinessObjectFormatFileType()); uriPathBuilder.append("/businessObjectFormatVersions/").append(manifest.getBusinessObjectFormatVersion()); uriPathBuilder.append("/s3KeyPrefix"); .setPath(uriPath).setParameter("partitionKey", manifest.getPartitionKey()).setParameter("partitionValue", manifest.getPartitionValue()) .setParameter("createNewVersion", createNewVersion.toString()); if (!CollectionUtils.isEmpty(manifest.getSubPartitionValues())) uriBuilder.setParameter("subPartitionValues", herdStringHelper.join(manifest.getSubPartitionValues(), "|", "\\")); if (StringUtils.isNotBlank(manifest.getStorageName())) uriBuilder.setParameter("storageName", manifest.getStorageName());
.setPath(String.join("/", HERD_APP_REST_URI_PREFIX, "businessObjectData", "upload", "credential", "namespaces", manifest.getNamespace(), "businessObjectDefinitionNames", manifest.getBusinessObjectDefinitionName(), "businessObjectFormatUsages", manifest.getBusinessObjectFormatUsage(), "businessObjectFormatFileTypes", manifest.getBusinessObjectFormatFileType(), "businessObjectFormatVersions", manifest.getBusinessObjectFormatVersion(), "partitionValues", manifest.getPartitionValue())) .setParameter("storageName", storageName); if (manifest.getSubPartitionValues() != null) uriBuilder.setParameter("subPartitionValues", herdStringHelper.join(manifest.getSubPartitionValues(), "|", "\\"));
/** * Calls getS3KeyPrefix() method and makes assertions. * * @param namespace the namespace * @param subPartitionValues the list of sub-partition values * @param businessObjectDataVersion the version of the business object data, may be null * @param useSsl specifies whether to use SSL or not * * @throws Exception if an error is encountered */ private void testGetS3KeyPrefix(String namespace, List<String> subPartitionValues, Integer businessObjectDataVersion, String storageName, boolean useSsl) throws Exception { dataBridgeWebClient.regServerAccessParamsDto.setUseSsl(useSsl); DataBridgeBaseManifestDto manifest = getUploaderInputManifestDto(); manifest.setNamespace(namespace); manifest.setSubPartitionValues(subPartitionValues); manifest.setStorageName(storageName); Boolean createNewVersion = false; S3KeyPrefixInformation s3KeyPrefix = dataBridgeWebClient.getS3KeyPrefix(manifest, businessObjectDataVersion, createNewVersion); assertNotNull("s3KeyPrefix is null", s3KeyPrefix); }
/** * When manifest specifies null storage name Assert return StorageEntity.MANAGED_STORAGE */ @Test public void testGetStorageNameFromManifestAssertReturnDefaultWhenStorageNameNull() { DataBridgeController dataBridgeController = new BasicDataBridgeController(); DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); manifest.setStorageName(null); String value = dataBridgeController.getStorageNameFromManifest(manifest); assertEquals(StorageEntity.MANAGED_STORAGE, value); }
@Test public void testReadJsonManifestNoPartitionValue() throws Exception { DataBridgeBaseManifestDto dataBridgeBaseManifestDto = getDataBridgeBaseManifestDto(); dataBridgeBaseManifestDto.setPartitionValue(null); testReadJsonManifest(dataBridgeBaseManifestDto, "Manifest business object data partition value must be specified."); }
@Test public void testReadJsonManifestNoDefinitionName() throws Exception { DataBridgeBaseManifestDto dataBridgeBaseManifestDto = getDataBridgeBaseManifestDto(); dataBridgeBaseManifestDto.setBusinessObjectDefinitionName(null); testReadJsonManifest(dataBridgeBaseManifestDto, "Manifest business object definition name must be specified."); }
@Test public void testReadJsonManifestNoFileType() throws Exception { DataBridgeBaseManifestDto dataBridgeBaseManifestDto = getDataBridgeBaseManifestDto(); dataBridgeBaseManifestDto.setBusinessObjectFormatFileType(null); testReadJsonManifest(dataBridgeBaseManifestDto, "Manifest business object format file type must be specified."); }
@Test public void testReadJsonManifestNoFormatUsage() throws Exception { DataBridgeBaseManifestDto dataBridgeBaseManifestDto = getDataBridgeBaseManifestDto(); dataBridgeBaseManifestDto.setBusinessObjectFormatUsage(null); testReadJsonManifest(dataBridgeBaseManifestDto, "Manifest business object format usage must be specified."); }
/** * When manifest does not specify storage name Assert return StorageEntity.MANAGED_STORAGE */ @Test public void testGetStorageNameFromManifestAssertReturnDefaultWhenStorageNull() { DataBridgeController dataBridgeController = new BasicDataBridgeController(); DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); String value = dataBridgeController.getStorageNameFromManifest(manifest); assertEquals(StorageEntity.MANAGED_STORAGE, value); }
uriPathBuilder.append(HERD_APP_REST_URI_PREFIX + "/businessObjectData"); if (StringUtils.isNotBlank(manifest.getNamespace())) uriPathBuilder.append("/namespaces/").append(manifest.getNamespace()); uriPathBuilder.append("/businessObjectDefinitionNames/").append(manifest.getBusinessObjectDefinitionName()); uriPathBuilder.append("/businessObjectFormatUsages/").append(manifest.getBusinessObjectFormatUsage()); uriPathBuilder.append("/businessObjectFormatFileTypes/").append(manifest.getBusinessObjectFormatFileType()); uriPathBuilder.append("/businessObjectFormatVersions/").append(manifest.getBusinessObjectFormatVersion()); uriPathBuilder.append("/s3KeyPrefix"); .setPath(uriPath).setParameter("partitionKey", manifest.getPartitionKey()).setParameter("partitionValue", manifest.getPartitionValue()) .setParameter("createNewVersion", createNewVersion.toString()); if (!CollectionUtils.isEmpty(manifest.getSubPartitionValues())) uriBuilder.setParameter("subPartitionValues", herdStringHelper.join(manifest.getSubPartitionValues(), "|", "\\")); if (StringUtils.isNotBlank(manifest.getStorageName())) uriBuilder.setParameter("storageName", manifest.getStorageName());
/** * When manifest specifies storage name Assert return storage name */ @Test public void testGetStorageNameFromManifestAssertReturnStorageName() { DataBridgeController dataBridgeController = new BasicDataBridgeController(); DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); manifest.setStorageName("test"); String value = dataBridgeController.getStorageNameFromManifest(manifest); assertEquals("test", value); }
/** * Retrieves S3 key prefix from the herd registration server. * * @param businessObjectData the business object data * * @return the S3 key prefix * @throws JAXBException if a JAXB error was encountered * @throws IOException if an I/O error was encountered * @throws URISyntaxException if a URI syntax error was encountered * @throws KeyStoreException if a key store exception occurs * @throws NoSuchAlgorithmException if a no such algorithm exception occurs * @throws KeyManagementException if key management exception */ public S3KeyPrefixInformation getS3KeyPrefix(BusinessObjectData businessObjectData) throws IOException, JAXBException, URISyntaxException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { DataBridgeBaseManifestDto dataBridgeBaseManifestDto = new DataBridgeBaseManifestDto(); dataBridgeBaseManifestDto.setNamespace(businessObjectData.getNamespace()); dataBridgeBaseManifestDto.setBusinessObjectDefinitionName(businessObjectData.getBusinessObjectDefinitionName()); dataBridgeBaseManifestDto.setBusinessObjectFormatUsage(businessObjectData.getBusinessObjectFormatUsage()); dataBridgeBaseManifestDto.setBusinessObjectFormatFileType(businessObjectData.getBusinessObjectFormatFileType()); dataBridgeBaseManifestDto.setBusinessObjectFormatVersion(String.valueOf(businessObjectData.getBusinessObjectFormatVersion())); dataBridgeBaseManifestDto.setPartitionKey(businessObjectData.getPartitionKey()); dataBridgeBaseManifestDto.setPartitionValue(businessObjectData.getPartitionValue()); dataBridgeBaseManifestDto.setSubPartitionValues(businessObjectData.getSubPartitionValues()); dataBridgeBaseManifestDto.setStorageName(businessObjectData.getStorageUnits().get(0).getStorage().getName()); return super.getS3KeyPrefix(dataBridgeBaseManifestDto, businessObjectData.getVersion(), Boolean.FALSE); }
/** * Validates a manifest. * * @param manifest the manifest to validate. * * @throws IllegalArgumentException if the manifest is not valid. */ protected void validateManifest(M manifest) throws IllegalArgumentException { Assert.hasText(manifest.getBusinessObjectDefinitionName(), "Manifest business object definition name must be specified."); Assert.hasText(manifest.getBusinessObjectFormatFileType(), "Manifest business object format file type must be specified."); Assert.hasText(manifest.getBusinessObjectFormatUsage(), "Manifest business object format usage must be specified."); Assert.hasText(manifest.getPartitionKey(), "Manifest business object format partition key must be specified."); Assert.hasText(manifest.getPartitionValue(), "Manifest business object data partition value must be specified."); } }
/** * When manifest specifies blank text storage name Assert return StorageEntity.MANAGED_STORAGE */ @Test public void testGetStorageNameFromManifestAssertReturnDefaultWhenStorageNameBlank() { DataBridgeController dataBridgeController = new BasicDataBridgeController(); DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); manifest.setStorageName(BLANK_TEXT); String value = dataBridgeController.getStorageNameFromManifest(manifest); assertEquals(StorageEntity.MANAGED_STORAGE, value); }
@Test public void testGetBusinessObjectDataUploadCredential3() throws Exception { DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); manifest.setNamespace("test1"); manifest.setBusinessObjectDefinitionName("test2"); manifest.setBusinessObjectFormatUsage("test3"); manifest.setBusinessObjectFormatFileType("test4"); manifest.setBusinessObjectFormatVersion("test5"); manifest.setPartitionValue("test6"); manifest.setSubPartitionValues(Arrays.asList("test7", "test8")); String storageName = "test8"; Integer businessObjectDataVersion = null; Boolean createNewVersion = true; uploaderWebClient.getRegServerAccessParamsDto().setUseSsl(true); BusinessObjectDataUploadCredential businessObjectDataUploadCredential = uploaderWebClient.getBusinessObjectDataUploadCredential(manifest, storageName, businessObjectDataVersion, createNewVersion); Assert.assertNotNull(businessObjectDataUploadCredential); AwsCredential awsCredential = businessObjectDataUploadCredential.getAwsCredential(); Assert.assertNotNull(awsCredential); Assert.assertEquals("https://testWebServiceHostname:1234/herd-app/rest/businessObjectData/upload/credential/namespaces/test1" + "/businessObjectDefinitionNames/test2/businessObjectFormatUsages/test3/businessObjectFormatFileTypes/test4/businessObjectFormatVersions/test5" + "/partitionValues/test6?storageName=test8&subPartitionValues=test7%7Ctest8&createNewVersion=true", awsCredential.getAwsAccessKey()); }
@Test public void testGetBusinessObjectDataUploadCredential1() throws Exception { DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); manifest.setNamespace("test1"); manifest.setBusinessObjectDefinitionName("test2"); manifest.setBusinessObjectFormatUsage("test3"); manifest.setBusinessObjectFormatFileType("test4"); manifest.setBusinessObjectFormatVersion("test5"); manifest.setPartitionValue("test6"); manifest.setSubPartitionValues(Arrays.asList("test7", "test8")); String storageName = "test8"; Integer businessObjectDataVersion = 1234; Boolean createNewVersion = false; uploaderWebClient.getRegServerAccessParamsDto().setUseSsl(false); BusinessObjectDataUploadCredential businessObjectDataUploadCredential = uploaderWebClient.getBusinessObjectDataUploadCredential(manifest, storageName, businessObjectDataVersion, createNewVersion); Assert.assertNotNull(businessObjectDataUploadCredential); AwsCredential awsCredential = businessObjectDataUploadCredential.getAwsCredential(); Assert.assertNotNull(awsCredential); Assert.assertEquals("http://testWebServiceHostname:1234/herd-app/rest/businessObjectData/upload/credential/namespaces/test1" + "/businessObjectDefinitionNames/test2/businessObjectFormatUsages/test3/businessObjectFormatFileTypes/test4/businessObjectFormatVersions/test5" + "/partitionValues/test6?storageName=test8&subPartitionValues=test7%7Ctest8&businessObjectDataVersion=1234&createNewVersion=false", awsCredential.getAwsAccessKey()); }
@Test public void testGetBusinessObjectDataUploadCredential2() throws Exception { DataBridgeBaseManifestDto manifest = new DataBridgeBaseManifestDto(); manifest.setNamespace("test1"); manifest.setBusinessObjectDefinitionName("test2"); manifest.setBusinessObjectFormatUsage("test3"); manifest.setBusinessObjectFormatFileType("test4"); manifest.setBusinessObjectFormatVersion("test5"); manifest.setPartitionValue("test6"); String storageName = "test8"; Integer businessObjectDataVersion = 1234; Boolean createNewVersion = null; uploaderWebClient.getRegServerAccessParamsDto().setUseSsl(true); BusinessObjectDataUploadCredential businessObjectDataUploadCredential = uploaderWebClient.getBusinessObjectDataUploadCredential(manifest, storageName, businessObjectDataVersion, createNewVersion); Assert.assertNotNull(businessObjectDataUploadCredential); AwsCredential awsCredential = businessObjectDataUploadCredential.getAwsCredential(); Assert.assertNotNull(awsCredential); Assert.assertEquals("https://testWebServiceHostname:1234/herd-app/rest/businessObjectData/upload/credential/namespaces/test1" + "/businessObjectDefinitionNames/test2/businessObjectFormatUsages/test3/businessObjectFormatFileTypes/test4/businessObjectFormatVersions/test5" + "/partitionValues/test6?storageName=test8&businessObjectDataVersion=1234", awsCredential.getAwsAccessKey()); }