static void serializeHeaders()

in google-http-client/src/main/java/com/google/api/client/http/HttpHeaders.java [935:973]


  static void serializeHeaders(HttpHeaders headers,
      StringBuilder logbuf,
      StringBuilder curlbuf,
      Logger logger,
      LowLevelHttpRequest lowLevelHttpRequest,
      Writer writer) throws IOException {
    HashSet<String> headerNames = new HashSet<String>();
    for (Map.Entry<String, Object> headerEntry : headers.entrySet()) {
      String name = headerEntry.getKey();
      Preconditions.checkArgument(headerNames.add(name),
          "multiple headers of the same name (headers are case insensitive): %s", name);
      Object value = headerEntry.getValue();
      if (value != null) {
        // compute the display name from the declared field name to fix capitalization
        String displayName = name;
        FieldInfo fieldInfo = headers.getClassInfo().getFieldInfo(name);
        if (fieldInfo != null) {
          displayName = fieldInfo.getName();
        }
        Class<? extends Object> valueClass = value.getClass();
        if (value instanceof Iterable<?> || valueClass.isArray()) {
          for (Object repeatedValue : Types.iterableOf(value)) {
            addHeader(logger,
                logbuf,
                curlbuf,
                lowLevelHttpRequest,
                displayName,
                repeatedValue,
                writer);
          }
        } else {
          addHeader(logger, logbuf, curlbuf, lowLevelHttpRequest, displayName, value, writer);
        }
      }
    }
    if (writer != null) {
      writer.flush();
    }
  }