/** * Gets a Java properties from the given S3 location, and puts the key-value pairs into the given parameters. If either bucket name or object key is null, * this method does nothing. * * @param s3BucketName S3 bucket name * @param s3ObjectKey S3 object key * @param parameters parameters to merge */ private void putParametersFromS3(String s3BucketName, String s3ObjectKey, Map<String, Object> parameters) { if (s3BucketName != null && s3ObjectKey != null) { S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = storageHelper.getS3FileTransferRequestParamsDto(); Properties properties = s3Dao.getProperties(s3BucketName, s3ObjectKey, s3FileTransferRequestParamsDto); parameters.putAll(javaPropertiesHelper.toMap(properties)); } }
@Bean public JavaPropertiesHelper javaPropertiesHelper() { return new JavaPropertiesHelper(); }
@Override public Properties getProperties(String bucketName, String key, S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto) { AmazonS3Client s3Client = getAmazonS3(s3FileTransferRequestParamsDto); try { S3Object s3Object = getS3Object(s3Client, bucketName, key, true); return javaPropertiesHelper.getProperties(s3Object.getObjectContent()); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("The properties file in S3 bucket '" + bucketName + "' and key '" + key + "' is invalid.", e); } finally { s3Client.shutdown(); } }
@Override public Properties getProperties(String bucketName, String key, S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto) { AmazonS3Client s3Client = getAmazonS3(s3FileTransferRequestParamsDto); try { S3Object s3Object = getS3Object(s3Client, bucketName, key, true); return javaPropertiesHelper.getProperties(s3Object.getObjectContent()); } catch (IllegalArgumentException e) { throw new IllegalArgumentException("The properties file in S3 bucket '" + bucketName + "' and key '" + key + "' is invalid.", e); } finally { s3Client.shutdown(); } }
@Test public void testGetPropertiesFromInputStream() { ByteArrayInputStream inputStream = new ByteArrayInputStream("foo=bar".getBytes()); Properties properties = javaPropertiesHelper.getProperties(inputStream); Assert.assertEquals("properties value 'foo'", "bar", properties.get("foo")); }
/** * Gets a Java properties from the given S3 location, and puts the key-value pairs into the given parameters. If either bucket name or object key is null, * this method does nothing. * * @param s3BucketName S3 bucket name * @param s3ObjectKey S3 object key * @param parameters parameters to merge */ private void putParametersFromS3(String s3BucketName, String s3ObjectKey, Map<String, Object> parameters) { if (s3BucketName != null && s3ObjectKey != null) { S3FileTransferRequestParamsDto s3FileTransferRequestParamsDto = storageHelper.getS3FileTransferRequestParamsDto(); Properties properties = s3Dao.getProperties(s3BucketName, s3ObjectKey, s3FileTransferRequestParamsDto); parameters.putAll(javaPropertiesHelper.toMap(properties)); } }
@Bean public JavaPropertiesHelper javaPropertiesHelper() { return new JavaPropertiesHelper(); }
@Test public void testGetPropertiesFromString() { Properties properties = javaPropertiesHelper.getProperties("foo=bar"); Assert.assertEquals("properties value 'foo'", "bar", properties.get("foo")); } }
@Test public void testToMap() { Properties properties = new Properties(); properties.setProperty("a", "b"); properties.setProperty("c", "d"); Map<String, Object> map = javaPropertiesHelper.toMap(properties); Assert.assertEquals("map size", 2, map.size()); Assert.assertEquals("map ['a']", map.get("a"), "b"); Assert.assertEquals("map ['b']", map.get("c"), "d"); }
s3Object.setObjectContent(new ByteArrayInputStream(new byte[] {0})); when(mockS3Operations.getS3Object(any(), any())).thenReturn(s3Object); when(mockJavaPropertiesHelper.getProperties(any(InputStream.class))).thenThrow(new IllegalArgumentException("message"));
s3Object.setObjectContent(new ByteArrayInputStream(new byte[] {0})); when(mockS3Operations.getS3Object(any(), any())).thenReturn(s3Object); when(mockJavaPropertiesHelper.getProperties(any(InputStream.class))).thenThrow(new RuntimeException("message"));