All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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