Skip to content

Commit f848bb0

Browse files
committed
java: Don't override customer transformationParams
1 parent 3accaaf commit f848bb0

File tree

6 files changed

+89
-8
lines changed

6 files changed

+89
-8
lines changed

java/lib/src/main/java/com/svix/api/Message.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// this file is @generated
22
package com.svix.api;
33

4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.fasterxml.jackson.databind.node.ObjectNode;
46
import com.svix.SvixHttpClient;
57
import com.svix.Utils;
68
import com.svix.exceptions.ApiException;
@@ -135,10 +137,23 @@ public MessageOut create(
135137
if (options.idempotencyKey != null) {
136138
headers.put("idempotency-key", options.idempotencyKey);
137139
}
138-
HashMap<String, Object> trParam = new HashMap<>();
139-
trParam.put("rawPayload", messageIn.getPayload());
140-
messageIn.setTransformationsParams(trParam);
141-
messageIn.setPayload("");
140+
if (messageIn.getTransformationsParams() != null) {
141+
// load in the transformationsParams
142+
ObjectMapper mapper = new ObjectMapper();
143+
String trParamsJson = mapper.writeValueAsString(messageIn.getTransformationsParams());
144+
ObjectNode loadedTrParams = mapper.readValue(trParamsJson, ObjectNode.class);
145+
// only set rawPayload if not already set
146+
if (loadedTrParams.get("rawPayload") == null) {
147+
loadedTrParams.put("rawPayload", messageIn.getPayload());
148+
}
149+
messageIn.setTransformationsParams(loadedTrParams);
150+
messageIn.setPayload("");
151+
} else {
152+
HashMap<String, Object> trParam = new HashMap<>();
153+
trParam.put("rawPayload", messageIn.getPayload());
154+
messageIn.setTransformationsParams(trParam);
155+
messageIn.setPayload("");
156+
}
142157
return this.client.executeRequest(
143158
"POST", url.build(), Headers.of(headers), messageIn, MessageOut.class);
144159
}

java/lib/src/test/com/svix/test/WiremockTests.java

+49
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.HashMap;
2626
import java.util.HashSet;
2727
import java.util.List;
28+
import java.util.Map;
2829

2930
public class WiremockTests {
3031
@Rule
@@ -458,4 +459,52 @@ public void octothorpeInUrlQuery() throws Exception {
458459

459460
wireMockRule.verify(1, getRequestedFor(urlEqualTo("/api/v1/app/app1/msg?tag=test%23test")));
460461
}
462+
463+
@Test
464+
public void headersInTransformationParamsNotOverwritten() throws Exception {
465+
Svix svx = testClient();
466+
wireMockRule.stubFor(
467+
WireMock.post(urlEqualTo("/api/v1/app/app1/msg"))
468+
.willReturn(WireMock.ok().withBodyFile("MessageOut.json")));
469+
470+
String jsonPayload = "{\"key\":\"val\",\"key1\":[\"list\"]}";
471+
MessageIn msg = new MessageIn().payload(jsonPayload).eventType("event.type").transformationsParams(Map.of("headers",Map.of( "header-key","header-val")));
472+
svx.getMessage().create("app1", msg);
473+
474+
// file in java/lib/src/test/resources/__files/ExpectedMsgCreateBodyWithHeaders.json
475+
String expectedBody =
476+
wireMockRule
477+
.getOptions()
478+
.filesRoot()
479+
.getTextFileNamed("__files/ExpectedMsgCreateBodyWithHeaders.json")
480+
.readContentsAsString();
481+
wireMockRule.verify(
482+
1,
483+
postRequestedFor(urlEqualTo("/api/v1/app/app1/msg"))
484+
.withRequestBody(equalTo(expectedBody)));
485+
}
486+
@Test
487+
public void jsonEncodedMessageIn() throws Exception {
488+
Svix svx = testClient();
489+
wireMockRule.stubFor(
490+
WireMock.post(urlEqualTo("/api/v1/app/app1/msg"))
491+
.willReturn(WireMock.ok().withBodyFile("MessageOut.json")));
492+
493+
String jsonPayload = "{\"key\":\"val\",\"key1\":[\"list\"]}";
494+
MessageIn msg = new MessageIn().payload(jsonPayload).eventType("event.type");
495+
svx.getMessage().create("app1", msg);
496+
497+
// file in java/lib/src/test/resources/__files/ExpectedMsgCreateBody2.json
498+
String expectedBody =
499+
wireMockRule
500+
.getOptions()
501+
.filesRoot()
502+
.getTextFileNamed("__files/ExpectedMsgCreateBody2.json")
503+
.readContentsAsString();
504+
wireMockRule.verify(
505+
1,
506+
postRequestedFor(urlEqualTo("/api/v1/app/app1/msg"))
507+
.withRequestBody(equalTo(expectedBody)));
508+
}
509+
461510
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"eventType":"event.type","payload":"","transformationsParams":{"rawPayload":"{\"key\":\"val\",\"key1\":[\"list\"]}"}}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"eventType":"event.type","payload":"","transformationsParams":{"headers":{"header-key":"header-val"},"rawPayload":"{\"key\":\"val\",\"key1\":[\"list\"]}"}}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1-
HashMap<String, Object> trParam = new HashMap<>();
2-
trParam.put("rawPayload", messageIn.getPayload());
3-
messageIn.setTransformationsParams(trParam);
4-
messageIn.setPayload("");
1+
if (messageIn.getTransformationsParams() != null) {
2+
// load in the transformationsParams
3+
ObjectMapper mapper = new ObjectMapper();
4+
String trParamsJson = mapper.writeValueAsString(messageIn.getTransformationsParams());
5+
ObjectNode loadedTrParams = mapper.readValue(trParamsJson, ObjectNode.class);
6+
// only set rawPayload if not already set
7+
if (loadedTrParams.get("rawPayload") == null) {
8+
loadedTrParams.put("rawPayload", messageIn.getPayload());
9+
}
10+
messageIn.setTransformationsParams(loadedTrParams);
11+
messageIn.setPayload("");
12+
} else {
13+
HashMap<String, Object> trParam = new HashMap<>();
14+
trParam.put("rawPayload", messageIn.getPayload());
15+
messageIn.setTransformationsParams(trParam);
16+
messageIn.setPayload("");
17+
}

java/templates/api_resource.java.jinja

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import java.io.IOException;
1010
import java.util.Collections;
1111
import java.util.Map;
1212
import java.util.HashMap;
13+
import com.fasterxml.jackson.databind.ObjectMapper;
14+
import com.fasterxml.jackson.databind.node.ObjectNode;
1315

1416
import okhttp3.Headers;
1517
import okhttp3.HttpUrl;

0 commit comments

Comments
 (0)