Skip to content

Commit a76ec37

Browse files
matthew29tangcopybara-github
authored andcommitted
chore: Support _self key in request object config
PiperOrigin-RevId: 804484893
1 parent 38703c7 commit a76ec37

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/main/java/com/google/genai/Common.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,13 @@ static void setValueByPath(ObjectNode jsonObject, String[] path, Object value) {
102102
}
103103

104104
String keyToSet = path[path.length - 1];
105-
JsonNode valueNode = JsonSerializable.toJsonNode(value);
106-
Transformers.updateJsonNode(currentObject, keyToSet, valueNode);
105+
if (keyToSet.equals("_self") && value instanceof ObjectNode) {
106+
ObjectNode sourceNode = (ObjectNode) value;
107+
currentObject.setAll(sourceNode);
108+
} else {
109+
JsonNode valueNode = JsonSerializable.toJsonNode(value);
110+
Transformers.updateJsonNode(currentObject, keyToSet, valueNode);
111+
}
107112
}
108113

109114
/**

src/test/java/com/google/genai/CommonTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,19 @@ public void testSetValueByPath_firstArrayElement() {
7272
assertEquals("v4", data.get("a").get("b").get(0).get("c").asText());
7373
}
7474

75+
@Test
76+
public void testSetValueByPath_selfKey() {
77+
ObjectNode data = JsonSerializable.objectMapper.createObjectNode();
78+
data.putObject("a").putObject("b");
79+
ObjectNode value = JsonSerializable.objectMapper.createObjectNode();
80+
value.put("c", "v");
81+
Common.setValueByPath(data, new String[] {"_self"}, value);
82+
83+
// expected output: {a: {b: {}}, c: "v"}
84+
assertEquals("", data.get("a").get("b").asText());
85+
assertEquals("v", data.get("c").asText());
86+
}
87+
7588
@Test
7689
public void testGetValueByPath_simpleObject() {
7790
ObjectNode data = JsonSerializable.objectMapper.createObjectNode();

0 commit comments

Comments
 (0)