Skip to content

Commit 3d9cf34

Browse files
authored
fix parameter parsing bug for create connector input (#1210)
Signed-off-by: Yaliang Wu <[email protected]>
1 parent 89dab70 commit 3d9cf34

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.Map;
2525

2626
import static org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken;
27+
import static org.opensearch.ml.common.utils.StringUtils.getParameterMap;
2728

2829
@Data
2930
public class MLCreateConnectorInput implements ToXContentObject, Writeable {
@@ -125,7 +126,7 @@ public static MLCreateConnectorInput parse(XContentParser parser) throws IOExcep
125126
protocol = parser.text();
126127
break;
127128
case CONNECTOR_PARAMETERS_FIELD:
128-
parameters = parser.mapStrings();
129+
parameters = getParameterMap(parser.map());
129130
break;
130131
case CONNECTOR_CREDENTIAL_FIELD:
131132
credential = parser.mapStrings();

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,25 @@ public void testParse() throws Exception {
163163
});
164164
}
165165

166+
@Test
167+
public void testParse_ArrayParameter() throws Exception {
168+
String expectedInputStr = "{\"name\":\"test_connector_name\"," +
169+
"\"description\":\"this is a test connector\",\"version\":\"1\",\"protocol\":\"http\"," +
170+
"\"parameters\":{\"input\":[\"test input value\"]},\"credential\":{\"key\":\"test_key_value\"}," +
171+
"\"actions\":[{\"action_type\":\"PREDICT\",\"method\":\"POST\",\"url\":\"https://test.com\"," +
172+
"\"headers\":{\"api_key\":\"${credential.key}\"}," +
173+
"\"request_body\":\"{\\\"input\\\": \\\"${parameters.input}\\\"}\"," +
174+
"\"pre_process_function\":\"connector.pre_process.openai.embedding\"," +
175+
"\"post_process_function\":\"connector.post_process.openai.embedding\"}]," +
176+
"\"backend_roles\":[\"role1\",\"role2\"],\"add_all_backend_roles\":false," +
177+
"\"access_mode\":\"PUBLIC\"}";
178+
testParseFromJsonString(expectedInputStr, parsedInput -> {
179+
assertEquals("test_connector_name", parsedInput.getName());
180+
assertEquals(1, parsedInput.getParameters().size());
181+
assertEquals("[\"test input value\"]", parsedInput.getParameters().get("input"));
182+
});
183+
}
184+
166185
@Test
167186
public void testParseWithDryRun() throws Exception {
168187
String expectedInputStrWithDryRun = "{\"dry_run\":true}";

0 commit comments

Comments
 (0)