Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -793,6 +793,15 @@ public void log(final Throwable error, final Map<String, Object> custom, final S
rollbar.log(error, custom, description, level);
}

/**
* Send payload to Rollbar.
*
* @param payload JSON payload string.
*/
public void sendJsonPayload(String json) {
rollbar.sendJsonPayload(json);
}

/**
* report an exception to Rollbar
* @param throwable the exception that occurred.
Expand Down
14 changes: 14 additions & 0 deletions rollbar-api/src/main/java/com/rollbar/api/payload/Payload.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,23 @@ public class Payload implements JsonSerializable {

private final Data data;

public final String json;

private Payload(Builder builder) {
this.accessToken = builder.accessToken;
this.data = builder.data;
this.json = null;
}

/**
* Constructor.
*
* @param json the JSON payload.
*/
public Payload(String json) {
this.accessToken = null;
this.data = null;
this.json = json;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,13 @@ public void shouldReturnAsJson() {

assertEquals(expected, payload.asJson());
}
}

@Test
public void shouldReturnJsonAsJson() {
String json = "{\"foo\":\"bar\"}";

Payload payload = new Payload(json);

assertEquals(json, payload.json);
}
}
19 changes: 18 additions & 1 deletion rollbar-java/src/main/java/com/rollbar/notifier/Rollbar.java
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,23 @@ public void close(boolean wait) throws Exception {
this.config.sender().close(wait);
}

/**
* Send JSON payload.
*
* @param json the json payload.
*/
public void sendJsonPayload(String json) {
try {
this.configReadLock.lock();
Config config = this.config;
this.configReadLock.unlock();

sendPayload(config, new Payload(json));
} catch (Exception e) {
LOGGER.error("Error while sending payload to Rollbar: {}", e);
}
}

private void process(ThrowableWrapper error, Map<String, Object> custom, String description,
Level level, boolean isUncaught) {
this.configReadLock.lock();
Expand All @@ -652,7 +669,7 @@ private void process(ThrowableWrapper error, Map<String, Object> custom, String
LOGGER.debug("Notifier disabled.");
return;
}

// Pre filter
if (config.filter() != null && config.filter().preProcess(level, error.getThrowable(), custom,
description)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ public JsonSerializerImpl(boolean prettyPrint) {

@Override
public String toJson(Payload payload) {
if (payload.json != null) {
return payload.json;
}

StringBuilder builder = new StringBuilder();
serializeValue(builder, payload, 0);
return builder.toString();
Expand Down
14 changes: 14 additions & 0 deletions rollbar-java/src/test/java/com/rollbar/notifier/RollbarTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,20 @@ public Data transform(Data data) {
sut.log(error, null, null, Level.ERROR);
}

@Test
public void shouldSendPayloadAsJson() {
Config config = withAccessToken("access_token")
.sender(sender)
.build();
Rollbar sut = new Rollbar(config);
String json = "{\"foo\":\"bar\"}";
Payload payload = new Payload(json);

sut.sendJsonPayload(json);

verify(sender).send(payload);
}

@Test
public void shouldLogWithLogMethod() {
Config config = withAccessToken(ACCESS_TOKEN)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;

import com.rollbar.api.payload.Payload;
import com.rollbar.notifier.sender.result.Result;
import org.junit.Test;

Expand Down Expand Up @@ -42,4 +43,15 @@ public void shouldDeserializeSuccessResponse() {

assertThat(sut.resultFrom(SUCCESS_RESPONSE), is(result));
}
}

@Test
public void shouldSerializeJsonPayload() {
String json = "{\"foo\":\"bar\"}";

Payload payload = new Payload(json);

JsonSerializerImpl sut = new JsonSerializerImpl();

assertThat(sut.toJson(payload), is(json));
}
}