/*
 * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
 * The software in this package is published under the terms of the CPAL v1.0
 * license, a copy of which has been included with this distribution in the
 * LICENSE.txt file.
 */
package org.mule.runtime.core.internal.client;

import org.mule.runtime.core.api.client.OperationOptions;

/**
 * Default implementation for {@link org.mule.runtime.core.api.client.OperationOptions}
 */
public class SimpleOptions implements OperationOptions {

  private final Long responseTimeout;
  private final boolean outbound;

  public SimpleOptions(Long responseTimeout, boolean outbound) {
    this.responseTimeout = responseTimeout;
    this.outbound = outbound;
  }

  @Override
  public Long getResponseTimeout() {
    return responseTimeout;
  }

  public boolean isOutbound() {
    return outbound;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof SimpleOptions)) {
      return false;
    }

    SimpleOptions that = (SimpleOptions) o;

    if (responseTimeout == null ? that.responseTimeout != null : !responseTimeout.equals(that.responseTimeout)) {
      return false;
    }

    return true;
  }

  @Override
  public int hashCode() {
    final Long responseTimeout = getResponseTimeout();
    return responseTimeout != null ? responseTimeout.hashCode() : 0;
  }
}
