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

com.outbrain.ob1k.client.ctx.AbstractClientRequestContext Maven / Gradle / Ivy

The newest version!
package com.outbrain.ob1k.client.ctx;

import com.outbrain.ob1k.client.endpoints.AbstractClientEndpoint;

/**
 * Created by aronen on 4/25/14.
 *
 * represent a single call on the client side.
 */
public abstract class AbstractClientRequestContext implements ClientRequestContext {
  protected final String remoteTarget;
  protected final Object[] params;
  protected final Endpoint clientEndpoint;
  protected final int executionIndex;
  protected final String url;

  public AbstractClientRequestContext(final String remoteTarget, final Object[] params, final Endpoint endpoint) {
    this(remoteTarget, params, endpoint, 0);
  }

  protected AbstractClientRequestContext(final String remoteTarget, final Object[] params, final Endpoint clientEndpoint,
                                         final int executionIndex) {
    this.remoteTarget = remoteTarget;
    this.params = params;
    this.clientEndpoint = clientEndpoint;
    this.executionIndex = executionIndex;
    this.url = createUrl(remoteTarget, clientEndpoint);
  }

  private static String createUrl(final String remoteTarget, final AbstractClientEndpoint clientEndpoint) {
    final String methodPath = clientEndpoint.endpoint.getMethodPath();
    return remoteTarget.endsWith("/") || methodPath.startsWith("/") ? remoteTarget + methodPath : remoteTarget + "/" + methodPath;
  }

  @Override
  public String getUrl() {
    return url;
  }

  @Override
  public String getRemoteTarget() {
    return remoteTarget;
  }

  @Override
  public int getExecutionIndex() {
    return executionIndex;
  }

  @Override
  public Object[] getParams() {
    return params;
  }

  @Override
  public String getServiceMethodName() {
    return clientEndpoint.endpoint.getMethod().getName();
  }

  @Override
  public String getServiceClassName() {
    return clientEndpoint.endpoint.getServiceType().getSimpleName();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy