Skip to content

Commit 0326043

Browse files
committed
addressing comment, added a common method in utils to remove code redundnancy
Signed-off-by: Dhrubo Saha <[email protected]>
1 parent 5b1d2bd commit 0326043

14 files changed

+128
-132
lines changed

common/src/main/java/org/opensearch/ml/common/transport/connector/MLCreateConnectorRequest.java

+8-21
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.opensearch.ml.common.transport.connector;
77

88
import static org.opensearch.action.ValidateActions.addValidationError;
9-
import static org.opensearch.ml.common.utils.StringUtils.isSafeText;
9+
import static org.opensearch.ml.common.utils.StringUtils.validateFields;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.UncheckedIOException;
15+
import java.util.HashMap;
16+
import java.util.Map;
1517

1618
import org.opensearch.action.ActionRequest;
1719
import org.opensearch.action.ActionRequestValidationException;
@@ -39,29 +41,14 @@ public MLCreateConnectorRequest(StreamInput in) throws IOException {
3941

4042
@Override
4143
public ActionRequestValidationException validate() {
42-
ActionRequestValidationException exception = null;
43-
4444
if (mlCreateConnectorInput == null) {
45-
return addValidationError("ML Connector input can't be null", exception);
46-
}
47-
48-
String modelName = mlCreateConnectorInput.getName();
49-
String description = mlCreateConnectorInput.getDescription();
50-
51-
if (modelName != null && !isSafeText(modelName)) {
52-
exception = addValidationError(
53-
"Model connector name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
54-
exception
55-
);
56-
}
57-
if (description != null && !isSafeText(description)) {
58-
exception = addValidationError(
59-
"Model connector description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
60-
exception
61-
);
45+
return addValidationError("ML Connector input can't be null", null);
6246
}
47+
Map<String, String> fieldsToValidate = new HashMap<>();
48+
fieldsToValidate.put("Model connector name", mlCreateConnectorInput.getName());
49+
fieldsToValidate.put("Model connector description", mlCreateConnectorInput.getDescription());
6350

64-
return exception;
51+
return validateFields(fieldsToValidate);
6552
}
6653

6754
@Override

common/src/main/java/org/opensearch/ml/common/transport/connector/MLUpdateConnectorRequest.java

+7-17
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.opensearch.ml.common.transport.connector;
77

88
import static org.opensearch.action.ValidateActions.addValidationError;
9-
import static org.opensearch.ml.common.utils.StringUtils.isSafeText;
9+
import static org.opensearch.ml.common.utils.StringUtils.validateFields;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.UncheckedIOException;
15+
import java.util.HashMap;
16+
import java.util.Map;
1517

1618
import org.opensearch.action.ActionRequest;
1719
import org.opensearch.action.ActionRequestValidationException;
@@ -59,23 +61,11 @@ public ActionRequestValidationException validate() {
5961
if (updateContent == null) {
6062
exception = addValidationError("Update connector content can't be null", exception);
6163
} else {
62-
String modelName = updateContent.getName();
63-
String description = updateContent.getDescription();
64-
65-
if (modelName != null && !isSafeText(modelName)) {
66-
exception = addValidationError(
67-
"Model connector name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.). Max length: 1000 characters.",
68-
exception
69-
);
70-
}
71-
if (description != null && !isSafeText(description)) {
72-
exception = addValidationError(
73-
"Model connector description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.). Max length: 1000 characters.",
74-
exception
75-
);
76-
}
64+
Map<String, String> fieldsToValidate = new HashMap<>();
65+
fieldsToValidate.put("Model connector name", updateContent.getName());
66+
fieldsToValidate.put("Model connector description", updateContent.getDescription());
67+
exception = validateFields(fieldsToValidate);
7768
}
78-
7969
return exception;
8070
}
8171

common/src/main/java/org/opensearch/ml/common/transport/model/MLUpdateModelRequest.java

+8-22
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.opensearch.ml.common.transport.model;
77

88
import static org.opensearch.action.ValidateActions.addValidationError;
9-
import static org.opensearch.ml.common.utils.StringUtils.isSafeText;
9+
import static org.opensearch.ml.common.utils.StringUtils.validateFields;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.UncheckedIOException;
15+
import java.util.HashMap;
16+
import java.util.Map;
1517

1618
import org.opensearch.action.ActionRequest;
1719
import org.opensearch.action.ActionRequestValidationException;
@@ -45,29 +47,13 @@ public MLUpdateModelRequest(StreamInput in) throws IOException {
4547

4648
@Override
4749
public ActionRequestValidationException validate() {
48-
ActionRequestValidationException exception = null;
49-
5050
if (updateModelInput == null) {
51-
return addValidationError("Update Model Input can't be null", exception);
52-
}
53-
54-
String modelName = updateModelInput.getName();
55-
String description = updateModelInput.getDescription();
56-
57-
if (modelName != null && !isSafeText(modelName)) {
58-
exception = addValidationError(
59-
"Model name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
60-
exception
61-
);
62-
}
63-
if (description != null && !isSafeText(description)) {
64-
exception = addValidationError(
65-
"Model description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
66-
exception
67-
);
51+
return addValidationError("Update Model Input can't be null", null);
6852
}
69-
70-
return exception;
53+
Map<String, String> fieldsToValidate = new HashMap<>();
54+
fieldsToValidate.put("Model Name", updateModelInput.getName());
55+
fieldsToValidate.put("Model Description", updateModelInput.getDescription());
56+
return validateFields(fieldsToValidate);
7157
}
7258

7359
@Override

common/src/main/java/org/opensearch/ml/common/transport/model_group/MLRegisterModelGroupRequest.java

+8-20
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.opensearch.ml.common.transport.model_group;
77

88
import static org.opensearch.action.ValidateActions.addValidationError;
9-
import static org.opensearch.ml.common.utils.StringUtils.isSafeText;
9+
import static org.opensearch.ml.common.utils.StringUtils.validateFields;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.UncheckedIOException;
15+
import java.util.HashMap;
16+
import java.util.Map;
1517

1618
import org.opensearch.action.ActionRequest;
1719
import org.opensearch.action.ActionRequestValidationException;
@@ -45,29 +47,15 @@ public MLRegisterModelGroupRequest(StreamInput in) throws IOException {
4547

4648
@Override
4749
public ActionRequestValidationException validate() {
48-
ActionRequestValidationException exception = null;
49-
5050
if (registerModelGroupInput == null) {
51-
return addValidationError("Model group input can't be null", exception);
51+
return addValidationError("Model group input can't be null", null);
5252
}
5353

54-
String modelName = registerModelGroupInput.getName();
55-
String description = registerModelGroupInput.getDescription();
56-
57-
if (modelName != null && !isSafeText(modelName)) {
58-
exception = addValidationError(
59-
"Model group name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
60-
exception
61-
);
62-
}
63-
if (description != null && !isSafeText(description)) {
64-
exception = addValidationError(
65-
"Model group description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
66-
exception
67-
);
68-
}
54+
Map<String, String> fieldsToValidate = new HashMap<>();
55+
fieldsToValidate.put("Model group name", registerModelGroupInput.getName());
56+
fieldsToValidate.put("Model group description", registerModelGroupInput.getDescription());
6957

70-
return exception;
58+
return validateFields(fieldsToValidate);
7159
}
7260

7361
@Override

common/src/main/java/org/opensearch/ml/common/transport/model_group/MLUpdateModelGroupRequest.java

+8-20
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.opensearch.ml.common.transport.model_group;
77

88
import static org.opensearch.action.ValidateActions.addValidationError;
9-
import static org.opensearch.ml.common.utils.StringUtils.isSafeText;
9+
import static org.opensearch.ml.common.utils.StringUtils.validateFields;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.UncheckedIOException;
15+
import java.util.HashMap;
16+
import java.util.Map;
1517

1618
import org.opensearch.action.ActionRequest;
1719
import org.opensearch.action.ActionRequestValidationException;
@@ -45,29 +47,15 @@ public MLUpdateModelGroupRequest(StreamInput in) throws IOException {
4547

4648
@Override
4749
public ActionRequestValidationException validate() {
48-
ActionRequestValidationException exception = null;
49-
5050
if (updateModelGroupInput == null) {
51-
return addValidationError("Update Model group input can't be null", exception);
51+
return addValidationError("Update Model group input can't be null", null);
5252
}
5353

54-
String modelName = updateModelGroupInput.getName();
55-
String description = updateModelGroupInput.getDescription();
56-
57-
if (modelName != null && !isSafeText(modelName)) {
58-
exception = addValidationError(
59-
"Model group name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
60-
exception
61-
);
62-
}
63-
if (description != null && !isSafeText(description)) {
64-
exception = addValidationError(
65-
"Model group description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
66-
exception
67-
);
68-
}
54+
Map<String, String> fieldsToValidate = new HashMap<>();
55+
fieldsToValidate.put("Model group name", updateModelGroupInput.getName());
56+
fieldsToValidate.put("Model group description", updateModelGroupInput.getDescription());
6957

70-
return exception;
58+
return validateFields(fieldsToValidate);
7159
}
7260

7361
@Override

common/src/main/java/org/opensearch/ml/common/transport/register/MLRegisterModelRequest.java

+8-20
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@
66
package org.opensearch.ml.common.transport.register;
77

88
import static org.opensearch.action.ValidateActions.addValidationError;
9-
import static org.opensearch.ml.common.utils.StringUtils.isSafeText;
9+
import static org.opensearch.ml.common.utils.StringUtils.validateFields;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.UncheckedIOException;
15+
import java.util.HashMap;
16+
import java.util.Map;
1517

1618
import org.opensearch.action.ActionRequest;
1719
import org.opensearch.action.ActionRequestValidationException;
@@ -45,29 +47,15 @@ public MLRegisterModelRequest(StreamInput in) throws IOException {
4547

4648
@Override
4749
public ActionRequestValidationException validate() {
48-
ActionRequestValidationException exception = null;
49-
5050
if (registerModelInput == null) {
51-
return addValidationError("ML input can't be null", exception);
51+
return addValidationError("ML input can't be null", null);
5252
}
5353

54-
String modelName = registerModelInput.getModelName();
55-
String description = registerModelInput.getDescription();
56-
57-
if (modelName != null && !isSafeText(modelName)) {
58-
exception = addValidationError(
59-
"Model name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
60-
exception
61-
);
62-
}
63-
if (description != null && !isSafeText(description)) {
64-
exception = addValidationError(
65-
"Model description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.)",
66-
exception
67-
);
68-
}
54+
Map<String, String> fieldsToValidate = new HashMap<>();
55+
fieldsToValidate.put("Model name", registerModelInput.getModelName());
56+
fieldsToValidate.put("Model description", registerModelInput.getDescription());
6957

70-
return exception;
58+
return validateFields(fieldsToValidate);
7159
}
7260

7361
@Override

common/src/main/java/org/opensearch/ml/common/utils/StringUtils.java

+21
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
package org.opensearch.ml.common.utils;
77

8+
import static org.opensearch.action.ValidateActions.addValidationError;
9+
810
import java.nio.ByteBuffer;
911
import java.nio.charset.StandardCharsets;
1012
import java.security.AccessController;
@@ -28,6 +30,7 @@
2830
import org.json.JSONException;
2931
import org.json.JSONObject;
3032
import org.opensearch.OpenSearchParseException;
33+
import org.opensearch.action.ActionRequestValidationException;
3134

3235
import com.fasterxml.jackson.core.JsonProcessingException;
3336
import com.fasterxml.jackson.databind.JsonNode;
@@ -516,4 +519,22 @@ public static boolean isSafeText(String value) {
516519
return value.matches(SAFE_INPUT_REGEX);
517520
}
518521

522+
public static ActionRequestValidationException validateFields(Map<String, String> fields) {
523+
ActionRequestValidationException exception = null;
524+
525+
for (Map.Entry<String, String> entry : fields.entrySet()) {
526+
String key = entry.getKey();
527+
String value = entry.getValue();
528+
529+
if (value != null && !isSafeText(value)) {
530+
exception = addValidationError(
531+
key + " can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:)",
532+
exception
533+
);
534+
}
535+
}
536+
537+
return exception;
538+
}
539+
519540
}

common/src/test/java/org/opensearch/ml/common/transport/connector/MLCreateConnectorRequestTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public void validateWithUnsafeModelConnectorName() {
167167
MLCreateConnectorRequest request = MLCreateConnectorRequest.builder().mlCreateConnectorInput(unsafeInput).build();
168168
ActionRequestValidationException exception = request.validate();
169169
assertEquals(
170-
"Validation Failed: 1: Model connector name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.);",
170+
"Validation Failed: 1: Model connector name can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:);",
171171
exception.getMessage()
172172
);
173173
}
@@ -191,7 +191,7 @@ public void validateWithUnsafeModelConnectorDescription() {
191191
MLCreateConnectorRequest request = MLCreateConnectorRequest.builder().mlCreateConnectorInput(unsafeInput).build();
192192
ActionRequestValidationException exception = request.validate();
193193
assertEquals(
194-
"Validation Failed: 1: Model connector description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.);",
194+
"Validation Failed: 1: Model connector description can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:);",
195195
exception.getMessage()
196196
);
197197
}

common/src/test/java/org/opensearch/ml/common/transport/connector/MLUpdateConnectorRequestTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public void validate_Exception_UnsafeConnectorName() {
197197

198198
ActionRequestValidationException exception = request.validate();
199199
assertEquals(
200-
"Validation Failed: 1: Model connector name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.). Max length: 1000 characters.;",
200+
"Validation Failed: 1: Model connector name can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:);",
201201
exception.getMessage()
202202
);
203203
}
@@ -215,7 +215,7 @@ public void validate_Exception_UnsafeConnectorDescription() {
215215

216216
ActionRequestValidationException exception = request.validate();
217217
assertEquals(
218-
"Validation Failed: 1: Model connector description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.). Max length: 1000 characters.;",
218+
"Validation Failed: 1: Model connector description can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:);",
219219
exception.getMessage()
220220
);
221221
}

common/src/test/java/org/opensearch/ml/common/transport/model/MLUpdateModelRequestTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ public void validate_Exception_InvalidName() {
134134
MLUpdateModelRequest request = MLUpdateModelRequest.builder().updateModelInput(input).build();
135135
ActionRequestValidationException exception = request.validate();
136136
assertEquals(
137-
"Validation Failed: 1: Model name can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.);",
137+
"Validation Failed: 1: Model Name can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:);",
138138
exception.getMessage()
139139
);
140140
}
@@ -160,7 +160,7 @@ public void validate_Exception_InvalidDescription() {
160160
MLUpdateModelRequest request = MLUpdateModelRequest.builder().updateModelInput(input).build();
161161
ActionRequestValidationException exception = request.validate();
162162
assertEquals(
163-
"Validation Failed: 1: Model description can only contain letters, digits, spaces, underscores (_), hyphens (-), and dots (.);",
163+
"Validation Failed: 1: Model Description can only contain letters, digits, spaces, underscores (_), hyphens (-), dots (.), and colons (:);",
164164
exception.getMessage()
165165
);
166166
}

0 commit comments

Comments
 (0)