This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new ae6c09b827 HDDS-12302. Fix parameter number warning in SignatureInfo
(#7863)
ae6c09b827 is described below
commit ae6c09b8276c3d73a828db127094a65ea7cd23a8
Author: Peter Lee <[email protected]>
AuthorDate: Thu Feb 13 18:47:21 2025 +0800
HDDS-12302. Fix parameter number warning in SignatureInfo (#7863)
---
.../ozone/s3/signature/AWSSignatureProcessor.java | 5 +-
.../s3/signature/AuthorizationV2HeaderParser.java | 15 +-
.../s3/signature/AuthorizationV4HeaderParser.java | 21 ++-
.../s3/signature/AuthorizationV4QueryParser.java | 21 ++-
.../hadoop/ozone/s3/signature/SignatureInfo.java | 157 ++++++++++++++-------
5 files changed, 130 insertions(+), 89 deletions(-)
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AWSSignatureProcessor.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AWSSignatureProcessor.java
index d517154de8..2135d374af 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AWSSignatureProcessor.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AWSSignatureProcessor.java
@@ -90,10 +90,7 @@ public SignatureInfo parseSignature() throws OS3Exception {
}
}
if (signatureInfo == null) {
- signatureInfo = new SignatureInfo(
- Version.NONE,
- "", "", "", "", "", "", "", false
- );
+ signatureInfo = new SignatureInfo.Builder(Version.NONE).build();
}
signatureInfo.setUnfilteredURI(
context.getUriInfo().getRequestUri().getPath());
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV2HeaderParser.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV2HeaderParser.java
index 1384456005..1c3c15d20e 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV2HeaderParser.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV2HeaderParser.java
@@ -66,16 +66,9 @@ public SignatureInfo parseSignature() throws
MalformedResourceException {
if (isBlank(accessKeyID) || isBlank(signature)) {
throw new MalformedResourceException(authHeader);
}
- return new SignatureInfo(
- Version.V2,
- "",
- "",
- accessKeyID,
- signature,
- "",
- "",
- "",
- false
- );
+ return new SignatureInfo.Builder(Version.V2)
+ .setAwsAccessId(accessKeyID)
+ .setSignature(signature)
+ .build();
}
}
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4HeaderParser.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4HeaderParser.java
index d4b648bd00..df43948198 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4HeaderParser.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4HeaderParser.java
@@ -91,17 +91,16 @@ public SignatureInfo parseSignature() throws
MalformedResourceException {
Credential credentialObj = parseCredentials(split[0]);
String signedHeaders = parseSignedHeaders(split[1]);
String signature = parseSignature(split[2]);
- return new SignatureInfo(
- Version.V4,
- credentialObj.getDate(),
- dateHeader,
- credentialObj.getAccessKeyID(),
- signature,
- signedHeaders,
- credentialObj.createScope(),
- algorithm,
- true
- );
+ return new SignatureInfo.Builder(Version.V4)
+ .setDate(credentialObj.getDate())
+ .setDateTime(dateHeader)
+ .setAwsAccessId(credentialObj.getAccessKeyID())
+ .setSignature(signature)
+ .setSignedHeaders(signedHeaders)
+ .setCredentialScope(credentialObj.createScope())
+ .setAlgorithm(algorithm)
+ .setSignPayload(true)
+ .build();
}
/**
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4QueryParser.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4QueryParser.java
index 98e53fc570..0596af3953 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4QueryParser.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/AuthorizationV4QueryParser.java
@@ -91,17 +91,16 @@ public SignatureInfo parseSignature() throws
MalformedResourceException {
validateSignedHeaders();
validateSignature();
- return new SignatureInfo(
- Version.V4,
- credential.getDate(),
- queryParameters.get("X-Amz-Date"),
- credential.getAccessKeyID(),
- queryParameters.get("X-Amz-Signature"),
- queryParameters.get("X-Amz-SignedHeaders"),
- credential.createScope(),
- queryParameters.get("X-Amz-Algorithm"),
- false
- );
+ return new SignatureInfo.Builder(Version.V4)
+ .setDate(credential.getDate())
+ .setDateTime(queryParameters.get("X-Amz-Date"))
+ .setAwsAccessId(credential.getAccessKeyID())
+ .setSignature(queryParameters.get("X-Amz-Signature"))
+ .setSignedHeaders(queryParameters.get("X-Amz-SignedHeaders"))
+ .setCredentialScope(credential.createScope())
+ .setAlgorithm(queryParameters.get("X-Amz-Algorithm"))
+ .setSignPayload(false)
+ .build();
}
/**
diff --git
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/SignatureInfo.java
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/SignatureInfo.java
index d1db38a50a..e251ac46f7 100644
---
a/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/SignatureInfo.java
+++
b/hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/signature/SignatureInfo.java
@@ -58,58 +58,36 @@ public class SignatureInfo {
public SignatureInfo() { }
- @SuppressWarnings("checkstyle:ParameterNumber")
- public SignatureInfo(
- Version version,
- String date,
- String dateTime,
- String awsAccessId,
- String signature,
- String signedHeaders,
- String credentialScope,
- String algorithm,
- boolean signPayload
- ) {
- initialize(version, date, dateTime, awsAccessId, signature, signedHeaders,
- credentialScope, algorithm, signPayload, null, null);
- }
-
- public void initialize(
- SignatureInfo signatureInfo
- ) {
- initialize(signatureInfo.getVersion(), signatureInfo.getDate(),
- signatureInfo.getDateTime(), signatureInfo.getAwsAccessId(),
- signatureInfo.getSignature(), signatureInfo.getSignedHeaders(),
- signatureInfo.getCredentialScope(), signatureInfo.getAlgorithm(),
- signatureInfo.isSignPayload(), signatureInfo.getUnfilteredURI(),
- signatureInfo.getStringToSign());
- }
-
- @SuppressWarnings({"checkstyle:ParameterNumber", "checkstyle:HiddenField"})
- public void initialize(
- Version version,
- String date,
- String dateTime,
- String awsAccessId,
- String signature,
- String signedHeaders,
- String credentialScope,
- String algorithm,
- boolean signPayload,
- String uri,
- String stringToSign
- ) {
- this.version = version;
- this.date = date;
- this.dateTime = dateTime;
- this.awsAccessId = awsAccessId;
- this.signature = signature;
- this.signedHeaders = signedHeaders;
- this.credentialScope = credentialScope;
- this.algorithm = algorithm;
- this.signPayload = signPayload;
- this.unfilteredURI = uri;
- this.stringToSign = stringToSign;
+ private SignatureInfo(Builder b) {
+ initialize(b);
+ }
+
+ public void initialize(SignatureInfo signatureInfo) {
+ initialize(new Builder(signatureInfo.getVersion())
+ .setDate(signatureInfo.getDate())
+ .setDateTime(signatureInfo.getDateTime())
+ .setAwsAccessId(signatureInfo.getAwsAccessId())
+ .setSignature(signatureInfo.getSignature())
+ .setSignedHeaders(signatureInfo.getSignedHeaders())
+ .setCredentialScope(signatureInfo.getCredentialScope())
+ .setAlgorithm(signatureInfo.getAlgorithm())
+ .setSignPayload(signatureInfo.isSignPayload())
+ .setUnfilteredURI(signatureInfo.getUnfilteredURI())
+ .setStringToSign(signatureInfo.getStringToSign()));
+ }
+
+ private void initialize(Builder b) {
+ this.version = b.version;
+ this.date = b.date;
+ this.dateTime = b.dateTime;
+ this.awsAccessId = b.awsAccessId;
+ this.signature = b.signature;
+ this.signedHeaders = b.signedHeaders;
+ this.credentialScope = b.credentialScope;
+ this.algorithm = b.algorithm;
+ this.signPayload = b.signPayload;
+ this.unfilteredURI = b.unfilteredURI;
+ this.stringToSign = b.stringToSign;
}
public String getAwsAccessId() {
@@ -170,4 +148,79 @@ public void setStrToSign(String strToSign) {
public enum Version {
NONE, V4, V2;
}
+
+ /**
+ * Builder class for SignatureInfo.
+ */
+ public static class Builder {
+ private Version version;
+ private String date = "";
+ private String dateTime = "";
+ private String awsAccessId = "";
+ private String signature = "";
+ private String signedHeaders = "";
+ private String credentialScope = "";
+ private String algorithm = "";
+ private boolean signPayload = true;
+ private String unfilteredURI = null;
+ private String stringToSign = null;
+
+ public Builder(Version version) {
+ this.version = version;
+ }
+
+ public Builder setDate(String date) {
+ this.date = date;
+ return this;
+ }
+
+ public Builder setDateTime(String dateTime) {
+ this.dateTime = dateTime;
+ return this;
+ }
+
+ public Builder setAwsAccessId(String awsAccessId) {
+ this.awsAccessId = awsAccessId;
+ return this;
+ }
+
+ public Builder setSignature(String signature) {
+ this.signature = signature;
+ return this;
+ }
+
+ public Builder setSignedHeaders(String signedHeaders) {
+ this.signedHeaders = signedHeaders;
+ return this;
+ }
+
+ public Builder setCredentialScope(String credentialScope) {
+ this.credentialScope = credentialScope;
+ return this;
+ }
+
+ public Builder setAlgorithm(String algorithm) {
+ this.algorithm = algorithm;
+ return this;
+ }
+
+ public Builder setSignPayload(boolean signPayload) {
+ this.signPayload = signPayload;
+ return this;
+ }
+
+ public Builder setUnfilteredURI(String uri) {
+ this.unfilteredURI = uri;
+ return this;
+ }
+
+ public Builder setStringToSign(String stringToSign) {
+ this.stringToSign = stringToSign;
+ return this;
+ }
+
+ public SignatureInfo build() {
+ return new SignatureInfo(this);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]