Skip to content

Commit c025b81

Browse files
committed
Fix parser poc
Signed-off-by: Sicheng Song <sicheng.song@outlook.com>
1 parent d81cb7f commit c025b81

File tree

4 files changed

+44
-9
lines changed

4 files changed

+44
-9
lines changed

common/src/main/java/org/opensearch/ml/common/connector/HttpConnector.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
import static org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken;
99
import static org.opensearch.ml.common.connector.ConnectorProtocols.HTTP;
1010
import static org.opensearch.ml.common.connector.ConnectorProtocols.validateProtocol;
11-
import static org.opensearch.ml.common.utils.StringUtils.getParameterMap;
12-
import static org.opensearch.ml.common.utils.StringUtils.isJson;
11+
import static org.opensearch.ml.common.utils.StringUtils.*;
1312

1413
import java.io.IOException;
1514
import java.time.Instant;
@@ -129,7 +128,7 @@ public HttpConnector(String protocol, XContentParser parser) throws IOException
129128
connectorClientConfig = ConnectorClientConfig.parse(parser);
130129
break;
131130
case MODEL_INTERFACE_FIELD:
132-
modelInterface = getParameterMap(parser.map());
131+
modelInterface = getInterfaceMap(parser.map());
133132
break;
134133
default:
135134
parser.skipChildren();

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import java.util.Map;
2828

2929
import static org.opensearch.core.xcontent.XContentParserUtils.ensureExpectedToken;
30-
import static org.opensearch.ml.common.utils.StringUtils.getParameterMap;
30+
import static org.opensearch.ml.common.utils.StringUtils.*;
3131

3232
@Data
3333
public class MLCreateConnectorInput implements ToXContentObject, Writeable {
@@ -182,7 +182,7 @@ public static MLCreateConnectorInput parse(XContentParser parser, boolean update
182182
connectorClientConfig = ConnectorClientConfig.parse(parser);
183183
break;
184184
case AbstractConnector.MODEL_INTERFACE_FIELD:
185-
modelInterface = getParameterMap(parser.map());
185+
modelInterface = getInterfaceMap(parser.map());
186186
break;
187187
default:
188188
parser.skipChildren();

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

+23-4
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
1919
import java.security.AccessController;
2020
import java.security.PrivilegedActionException;
2121
import java.security.PrivilegedExceptionAction;
22-
import java.util.ArrayList;
23-
import java.util.HashMap;
24-
import java.util.List;
25-
import java.util.Map;
22+
import java.util.*;
2623
import java.util.regex.Matcher;
2724
import java.util.regex.Pattern;
2825

@@ -94,6 +91,28 @@ public static Map<String, Object> fromJson(String jsonStr, String defaultKey) {
9491
return result;
9592
}
9693

94+
public static Map<String, String> getInterfaceMap(Map<String, ?> interfaceObjs) {
95+
Map<String, String> parameters = new HashMap<>();
96+
for (String key : interfaceObjs.keySet()) {
97+
if (Objects.equals(key, "input") || Objects.equals(key, "output")) {
98+
Object value = interfaceObjs.get(key);
99+
try {
100+
AccessController.doPrivileged((PrivilegedExceptionAction<Void>) () -> {
101+
if (value instanceof String) {
102+
parameters.put(key, (String)value);
103+
} else {
104+
parameters.put(key, gson.toJson(value));
105+
}
106+
return null;
107+
});
108+
} catch (PrivilegedActionException e) {
109+
throw new RuntimeException(e);
110+
}
111+
}
112+
}
113+
return parameters;
114+
}
115+
97116
@SuppressWarnings("removal")
98117
public static Map<String, String> getParameterMap(Map<String, ?> parameterObjs) {
99118
Map<String, String> parameters = new HashMap<>();

common/src/test/java/org/opensearch/ml/common/utils/StringUtilsTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,23 @@ public void getParameterMap() {
115115
Assert.assertEquals("[1.01,\"abc\"]", parameterMap.get("key5"));
116116
}
117117

118+
@Test
119+
public void getInterfaceMap() {
120+
Map<String, Object> parameters = new HashMap<>();
121+
parameters.put("input", "value1");
122+
parameters.put("output", 2);
123+
parameters.put("key3", 2.1);
124+
parameters.put("key4", new int[]{10, 20});
125+
parameters.put("key5", new Object[]{1.01, "abc"});
126+
Map<String, String> interfaceMap = StringUtils.getInterfaceMap(parameters);
127+
Assert.assertEquals(2, interfaceMap.size());
128+
Assert.assertEquals("value1", interfaceMap.get("input"));
129+
Assert.assertEquals("2", interfaceMap.get("output"));
130+
Assert.assertNull(interfaceMap.get("key3"));
131+
Assert.assertNull(interfaceMap.get("key4"));
132+
Assert.assertNull(interfaceMap.get("key5"));
133+
}
134+
118135
@Test
119136
public void processTextDocs() {
120137
List<String> processedDocs = StringUtils.processTextDocs(Arrays.asList("abc \n\n123\"4", null, "[1.01,\"abc\"]"));

0 commit comments

Comments
 (0)