com.shapestone.event.client.EventClient Maven / Gradle / Ivy
package com.shapestone.event.client;
import com.shapestone.rest.jersey.hystrix.rx.HystrixRxCommand;
import com.shapestone.rest.jersey.hystrix.rx.HystrixRxMethod;
import com.shapestone.event.Event;
import org.glassfish.jersey.client.rx.rxjava.RxObservable;
import rx.Observable;
import javax.ws.rs.client.Client;
import javax.ws.rs.core.GenericType;
import java.util.List;
import static java.util.UUID.randomUUID;
import static javax.ws.rs.client.Entity.entity;
import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
/**
* Name: Michael Williams
* Date: 10/23/16.
*/
public class EventClient {
private EventClientData eventClientData;
private Client client;
public EventClient(EventClientData eventClientData, Client client) {
this.eventClientData = eventClientData;
this.client = client;
}
public Observable> addEvents(List events) {
return this.addEvents(events, null);
}
public Observable> addEvents(List events, String correlationId) {
final HystrixRxMethod>> hystrixMethod = () ->
RxObservable.from(client.target(eventClientData.getUrl()))
.path("/events")
.request()
.header("correlationId", determineCorrelationId(correlationId))
.rx()
.post(entity(events, APPLICATION_JSON), new GenericType>(){});
return new HystrixRxCommand<>(eventClientData, hystrixMethod, "addEvents").observe();
}
private String determineCorrelationId(String correlationId) {
return correlationId != null ? correlationId : randomUUID().toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy