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

by.stub.yaml.stubs.StubResponse Maven / Gradle / Ivy

/*
A Java-based HTTP stub server

Copyright (C) 2012 Alexander Zagniotov, Isa Goksu and Eric Mrak

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see .
 */

package by.stub.yaml.stubs;

import by.stub.utils.StringUtils;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Alexander Zagniotov
 * @since 6/14/12, 1:09 AM
 */
public class StubResponse {

   private String status = "200";
   private String body = null;
   private byte[] file = null;
   private String latency = null;
   private Map headers = Collections.synchronizedMap(new HashMap());

   public StubResponse() {

   }

   public String getStatus() {
      return status;
   }

   public void setStatus(final String status) {
      this.status = status;
   }

   public String getBody() {
      return (StringUtils.isSet(body) ? body : "");
   }


   public void setBody(final String body) {
      this.body = body;
   }

   public Map getHeaders() {
      return headers;
   }

   public void setHeaders(final Map headers) {
      this.headers = headers;
   }

   public String getLatency() {
      return latency;
   }

   public void setLatency(final String latency) {
      this.latency = latency;
   }

   public void setFile(final byte[] file) {
      this.file = file;
   }

   //Used by reflection when populating stubby admin page with stubbed information
   public byte[] getFile() {
      return file;
   }

   public byte[] getResponseBody() {
      if (file == null) {
         return getBody().getBytes(StringUtils.utf8Charset());
      }
      return file != null ? file : "".getBytes(StringUtils.utf8Charset());
   }

   public boolean isConfigured() {
      return (status != null && (body != null || file != null));
   }

   public StubResponseTypes getStubResponseType() {
      return StubResponseTypes.DEFAULT;
   }

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

      final StubResponse that = (StubResponse) o;

      if (!body.equals(that.body)) return false;
      if (!headers.equals(that.headers)) return false;
      if (!status.equals(that.status)) return false;

      return true;
   }

   @Override
   public int hashCode() {
      int result = status.hashCode();
      result = 31 * result + body.hashCode();
      result = 31 * result + headers.hashCode();
      return result;
   }

   @Override
   public String toString() {
      final StringBuffer sb = new StringBuffer();
      sb.append("StubResponse");
      sb.append("{status='").append(status).append('\'');
      sb.append(", body='").append(body).append('\'');
      sb.append(", latency='").append(latency).append('\'');
      sb.append(", headers=").append(headers);
      sb.append('}');
      return sb.toString();
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy