Skip to content

Commit eb2a0c8

Browse files
committed
Deprecate internal checksum APIs and move checksum algorithms from http-auth-aws module to checksums module
1 parent 8f2c7ba commit eb2a0c8

File tree

36 files changed

+202
-114
lines changed

36 files changed

+202
-114
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "deprecation",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Deprecate internal checksum algorithm classes."
6+
}

build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,8 @@
303303
<!-- Retrieves and updates crc value in update() -->
304304
<Match>
305305
<Or>
306-
<Class name="software.amazon.awssdk.http.auth.aws.internal.signer.checksums.SdkCrc32CChecksum"/>
307-
<Class name="software.amazon.awssdk.http.auth.aws.internal.signer.checksums.SdkCrc32Checksum"/>
306+
<Class name="software.amazon.awssdk.checksums.internal.SdkCrc32CChecksum"/>
307+
<Class name="software.amazon.awssdk.checksums.internal.SdkCrc32Checksum"/>
308308
<Class name="software.amazon.awssdk.core.internal.checksums.factory.SdkCrc32C"/>
309309
<Class name="software.amazon.awssdk.core.internal.checksums.factory.SdkCrc32"/>
310310
</Or>

core/checksums/pom.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,19 @@
4545
<version>${awsjavasdk.version}</version>
4646
</dependency>
4747

48+
<dependency>
49+
<groupId>software.amazon.awssdk</groupId>
50+
<artifactId>utils</artifactId>
51+
<version>${awsjavasdk.version}</version>
52+
</dependency>
53+
54+
<dependency>
55+
<groupId>software.amazon.awssdk.crt</groupId>
56+
<artifactId>aws-crt</artifactId>
57+
<version>${awscrt.version}</version>
58+
<optional>true</optional>
59+
</dependency>
60+
4861
<dependency>
4962
<groupId>org.junit.jupiter</groupId>
5063
<artifactId>junit-jupiter</artifactId>
Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,48 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.checksums;
16+
package software.amazon.awssdk.checksums;
1717

1818
import java.nio.ByteBuffer;
1919
import java.util.zip.Checksum;
20-
import software.amazon.awssdk.annotations.SdkInternalApi;
20+
import software.amazon.awssdk.annotations.SdkProtectedApi;
21+
import software.amazon.awssdk.checksums.internal.Crc32CChecksum;
22+
import software.amazon.awssdk.checksums.internal.Crc32Checksum;
23+
import software.amazon.awssdk.checksums.internal.Crc64NvmeChecksum;
24+
import software.amazon.awssdk.checksums.internal.Md5Checksum;
25+
import software.amazon.awssdk.checksums.internal.Sha1Checksum;
26+
import software.amazon.awssdk.checksums.internal.Sha256Checksum;
27+
import software.amazon.awssdk.checksums.spi.ChecksumAlgorithm;
2128

2229
/**
2330
* Extension of {@link Checksum} to support checksums and checksum validations used by the SDK that are not provided by the JDK.
2431
*/
25-
@SdkInternalApi
32+
@SdkProtectedApi
2633
public interface SdkChecksum extends Checksum {
2734

35+
/**
36+
* Returns an {@link SdkChecksum} based on the {@link ChecksumAlgorithm} provided.
37+
* UnsupportedOperationException will be thrown for unsupported algorithm.
38+
*/
39+
static SdkChecksum forAlgorithm(ChecksumAlgorithm algorithm) {
40+
switch (algorithm.algorithmId()) {
41+
case "CRC32C":
42+
return new Crc32CChecksum();
43+
case "CRC32":
44+
return new Crc32Checksum();
45+
case "SHA1":
46+
return new Sha1Checksum();
47+
case "SHA256":
48+
return new Sha256Checksum();
49+
case "MD5":
50+
return new Md5Checksum();
51+
case "CRC64NVME":
52+
return new Crc64NvmeChecksum();
53+
default:
54+
throw new UnsupportedOperationException("Unsupported checksum algorithm: " + algorithm);
55+
}
56+
}
57+
2858
/**
2959
* Returns the computed checksum in a byte array rather than the long provided by {@link #getValue()}.
3060
*
@@ -49,7 +79,6 @@ default void update(byte[] b) {
4979
update(b, 0, b.length);
5080
}
5181

52-
5382
/**
5483
* Updates the current checksum with the bytes from the specified buffer.
5584
* <p>
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.checksums;
16+
package software.amazon.awssdk.checksums.internal;
1717

1818
import java.util.zip.Checksum;
1919
import software.amazon.awssdk.annotations.SdkInternalApi;
20+
import software.amazon.awssdk.checksums.SdkChecksum;
2021

2122
/**
2223
* Base class for CRC related checksums
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.checksums;
16+
package software.amazon.awssdk.checksums.internal;
1717

18-
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.ChecksumUtil.longToByte;
18+
import static software.amazon.awssdk.utils.NumericUtils.longToByte;
1919

2020
import java.util.Arrays;
2121
import java.util.zip.Checksum;
2222
import software.amazon.awssdk.annotations.SdkInternalApi;
23+
import software.amazon.awssdk.checksums.SdkChecksum;
2324
import software.amazon.awssdk.crt.checksums.CRC32C;
2425
import software.amazon.awssdk.utils.ClassLoaderHelper;
2526

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.checksums;
16+
package software.amazon.awssdk.checksums.internal;
1717

18-
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.ChecksumUtil.longToByte;
18+
import static software.amazon.awssdk.utils.NumericUtils.longToByte;
1919

2020
import java.util.Arrays;
2121
import java.util.zip.Checksum;
2222
import software.amazon.awssdk.annotations.SdkInternalApi;
23+
import software.amazon.awssdk.checksums.SdkChecksum;
2324
import software.amazon.awssdk.crt.checksums.CRC32;
2425
import software.amazon.awssdk.utils.ClassLoaderHelper;
2526

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,33 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.checksums;
16+
package software.amazon.awssdk.checksums.internal;
1717

18-
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.ChecksumUtil.longToByte;
19-
import static software.amazon.awssdk.http.auth.aws.internal.signer.util.OptionalDependencyLoaderUtil.getCrc64Nvme;
18+
import static software.amazon.awssdk.utils.DependencyValidate.requireClass;
19+
import static software.amazon.awssdk.utils.NumericUtils.longToByte;
2020

2121
import java.util.zip.Checksum;
2222
import software.amazon.awssdk.annotations.SdkInternalApi;
23+
import software.amazon.awssdk.checksums.SdkChecksum;
2324
import software.amazon.awssdk.crt.checksums.CRC64NVME;
2425

2526
/**
2627
* Implementation of {@link SdkChecksum} to calculate an CRC64NVME checksum.
2728
*/
2829
@SdkInternalApi
2930
public final class Crc64NvmeChecksum extends BaseCrcChecksum {
31+
private static final String CRT_CRC64NVME_PATH = "software.amazon.awssdk.crt.checksums.CRC64NVME";
32+
private static final String CRT_MODULE = "software.amazon.awssdk.crt:aws-crt";
3033

3134
public Crc64NvmeChecksum() {
3235
super(getCrc64Nvme());
3336
}
3437

38+
private static CRC64NVME getCrc64Nvme() {
39+
requireClass(CRT_CRC64NVME_PATH, CRT_MODULE, "CRC64NVME");
40+
return new CRC64NVME();
41+
}
42+
3543
@Override
3644
public Checksum cloneChecksum(Checksum checksum) {
3745
if (checksum instanceof CRC64NVME) {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.util;
16+
package software.amazon.awssdk.checksums.internal;
1717

1818
import java.security.MessageDigest;
1919
import java.security.NoSuchAlgorithmException;
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.http.auth.aws.internal.signer.checksums;
16+
package software.amazon.awssdk.checksums.internal;
1717

1818
import java.security.MessageDigest;
1919
import software.amazon.awssdk.annotations.SdkInternalApi;
20-
import software.amazon.awssdk.http.auth.aws.internal.signer.util.DigestAlgorithm;
20+
import software.amazon.awssdk.checksums.SdkChecksum;
2121

2222
/**
2323
* Implementation of {@link SdkChecksum} to calculate an MD5 checksum.

0 commit comments

Comments
 (0)