Java Code Examples for com.google.api.client.util.Types#iterableOf()

The following examples show how to use com.google.api.client.util.Types#iterableOf() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: XmlNamespaceDictionary.java    From google-http-java-client with Apache License 2.0 6 votes vote down vote up
private void computeAliases(Object element, SortedSet<String> aliases) {
  for (Map.Entry<String, Object> entry : Data.mapOf(element).entrySet()) {
    Object value = entry.getValue();
    if (value != null) {
      String name = entry.getKey();
      if (!Xml.TEXT_CONTENT.equals(name)) {
        int colon = name.indexOf(':');
        boolean isAttribute = name.charAt(0) == '@';
        if (colon != -1 || !isAttribute) {
          String alias = colon == -1 ? "" : name.substring(name.charAt(0) == '@' ? 1 : 0, colon);
          aliases.add(alias);
        }
        Class<?> valueClass = value.getClass();
        if (!isAttribute && !Data.isPrimitive(valueClass) && !valueClass.isEnum()) {
          if (value instanceof Iterable<?> || valueClass.isArray()) {
            for (Object subValue : Types.iterableOf(value)) {
              computeAliases(subValue, aliases);
            }
          } else {
            computeAliases(value, aliases);
          }
        }
      }
    }
  }
}
 
Example 2
Source File: UrlEncodedContent.java    From google-http-java-client with Apache License 2.0 6 votes vote down vote up
public void writeTo(OutputStream out) throws IOException {
  Writer writer = new BufferedWriter(new OutputStreamWriter(out, getCharset()));
  boolean first = true;
  for (Map.Entry<String, Object> nameValueEntry : Data.mapOf(data).entrySet()) {
    Object value = nameValueEntry.getValue();
    if (value != null) {
      String name = CharEscapers.escapeUri(nameValueEntry.getKey());
      Class<? extends Object> valueClass = value.getClass();
      if (value instanceof Iterable<?> || valueClass.isArray()) {
        for (Object repeatedValue : Types.iterableOf(value)) {
          first = appendParam(first, writer, name, repeatedValue);
        }
      } else {
        first = appendParam(first, writer, name, value);
      }
    }
  }
  writer.flush();
}
 
Example 3
Source File: HttpHeaders.java    From google-http-java-client with Apache License 2.0 6 votes vote down vote up
/**
 * Returns an unmodifiable list of the header string values for the given header name.
 *
 * @param name header name (may be any case)
 * @return header string values or empty if not found
 * @since 1.13
 */
public List<String> getHeaderStringValues(String name) {
  Object value = get(name.toLowerCase(Locale.US));
  if (value == null) {
    return Collections.emptyList();
  }
  Class<? extends Object> valueClass = value.getClass();
  if (value instanceof Iterable<?> || valueClass.isArray()) {
    List<String> values = new ArrayList<String>();
    for (Object repeatedValue : Types.iterableOf(value)) {
      values.add(toStringValue(repeatedValue));
    }
    return Collections.unmodifiableList(values);
  }
  return Collections.singletonList(toStringValue(value));
}
 
Example 4
Source File: GoogleHttpClientEdgeGridRequestSigner.java    From AkamaiOPEN-edgegrid-java with Apache License 2.0 6 votes vote down vote up
@Override
protected Request map(HttpRequest request) {
    Request.RequestBuilder builder = Request.builder()
            .method(request.getRequestMethod())
            .uri(request.getUrl().toURI())
            .body(serializeContent(request));
    for (Map.Entry<String, Object> entry : request.getHeaders().entrySet()) {
        Object value = entry.getValue();
        if (value instanceof Iterable<?> || value.getClass().isArray()) {
            for (Object repeatedValue : Types.iterableOf(value)) {
                // NOTE: Request is about to throw an exception!
                builder.header(entry.getKey(), toStringValue(repeatedValue));
            }
        } else {
            builder.header(entry.getKey(), toStringValue(value));
        }
    }
    return builder.build();
}
 
Example 5
Source File: HttpHeaders.java    From google-http-java-client with Apache License 2.0 5 votes vote down vote up
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();
  }
}
 
Example 6
Source File: HttpHeaders.java    From google-http-java-client with Apache License 2.0 5 votes vote down vote up
/**
 * Returns the first header string value for the given header name.
 *
 * @param name header name (may be any case)
 * @return first header string value or {@code null} if not found
 * @since 1.13
 */
public String getFirstHeaderStringValue(String name) {
  Object value = get(name.toLowerCase(Locale.US));
  if (value == null) {
    return null;
  }
  Class<? extends Object> valueClass = value.getClass();
  if (value instanceof Iterable<?> || valueClass.isArray()) {
    for (Object repeatedValue : Types.iterableOf(value)) {
      return toStringValue(repeatedValue);
    }
  }
  return toStringValue(value);
}
 
Example 7
Source File: XmlNamespaceDictionary.java    From google-http-java-client with Apache License 2.0 4 votes vote down vote up
void serialize(XmlSerializer serializer, String elementNamespaceUri, String elementLocalName)
    throws IOException {
  boolean errorOnUnknown = this.errorOnUnknown;
  if (elementLocalName == null) {
    if (errorOnUnknown) {
      throw new IllegalArgumentException("XML name not specified");
    }
    elementLocalName = "unknownName";
  }
  serializer.startTag(elementNamespaceUri, elementLocalName);
  // attributes
  int num = attributeNames.size();
  for (int i = 0; i < num; i++) {
    String attributeName = attributeNames.get(i);
    int colon = attributeName.indexOf(':');
    String attributeLocalName = attributeName.substring(colon + 1);
    String attributeNamespaceUri =
        colon == -1
            ? null
            : getNamespaceUriForAliasHandlingUnknown(
                errorOnUnknown, attributeName.substring(0, colon));
    serializer.attribute(
        attributeNamespaceUri, attributeLocalName, toSerializedValue(attributeValues.get(i)));
  }
  // text
  if (textValue != null) {
    serializer.text(toSerializedValue(textValue));
  }
  // elements
  num = subElementNames.size();
  for (int i = 0; i < num; i++) {
    Object subElementValue = subElementValues.get(i);
    String subElementName = subElementNames.get(i);
    Class<? extends Object> valueClass = subElementValue.getClass();
    if (subElementValue instanceof Iterable<?> || valueClass.isArray()) {
      for (Object subElement : Types.iterableOf(subElementValue)) {
        if (subElement != null && !Data.isNull(subElement)) {
          new ElementSerializer(subElement, errorOnUnknown)
              .serialize(serializer, subElementName);
        }
      }
    } else {
      new ElementSerializer(subElementValue, errorOnUnknown)
          .serialize(serializer, subElementName);
    }
  }
  serializer.endTag(elementNamespaceUri, elementLocalName);
}
 
Example 8
Source File: JsonGenerator.java    From google-http-java-client with Apache License 2.0 4 votes vote down vote up
private void serialize(boolean isJsonString, Object value) throws IOException {
  if (value == null) {
    return;
  }
  Class<?> valueClass = value.getClass();
  if (Data.isNull(value)) {
    writeNull();
  } else if (value instanceof String) {
    writeString((String) value);
  } else if (value instanceof Number) {
    if (isJsonString) {
      writeString(value.toString());
    } else if (value instanceof BigDecimal) {
      writeNumber((BigDecimal) value);
    } else if (value instanceof BigInteger) {
      writeNumber((BigInteger) value);
    } else if (value instanceof Long) {
      writeNumber((Long) value);
    } else if (value instanceof Float) {
      float floatValue = ((Number) value).floatValue();
      Preconditions.checkArgument(!Float.isInfinite(floatValue) && !Float.isNaN(floatValue));
      writeNumber(floatValue);
    } else if (value instanceof Integer || value instanceof Short || value instanceof Byte) {
      writeNumber(((Number) value).intValue());
    } else {
      double doubleValue = ((Number) value).doubleValue();
      Preconditions.checkArgument(!Double.isInfinite(doubleValue) && !Double.isNaN(doubleValue));
      writeNumber(doubleValue);
    }
  } else if (value instanceof Boolean) {
    writeBoolean((Boolean) value);
  } else if (value instanceof DateTime) {
    writeString(((DateTime) value).toStringRfc3339());
  } else if ((value instanceof Iterable<?> || valueClass.isArray())
      && !(value instanceof Map<?, ?>)
      && !(value instanceof GenericData)) {
    writeStartArray();
    for (Object o : Types.iterableOf(value)) {
      serialize(isJsonString, o);
    }
    writeEndArray();
  } else if (valueClass.isEnum()) {
    String name = FieldInfo.of((Enum<?>) value).getName();
    if (name == null) {
      writeNull();
    } else {
      writeString(name);
    }
  } else {
    writeStartObject();
    // only inspect fields of POJO (possibly extends GenericData) but not generic Map
    boolean isMapNotGenericData = value instanceof Map<?, ?> && !(value instanceof GenericData);
    ClassInfo classInfo = isMapNotGenericData ? null : ClassInfo.of(valueClass);
    for (Map.Entry<String, Object> entry : Data.mapOf(value).entrySet()) {
      Object fieldValue = entry.getValue();
      if (fieldValue != null) {
        String fieldName = entry.getKey();
        boolean isJsonStringForField;
        if (isMapNotGenericData) {
          isJsonStringForField = isJsonString;
        } else {
          Field field = classInfo.getField(fieldName);
          isJsonStringForField = field != null && field.getAnnotation(JsonString.class) != null;
        }
        writeFieldName(fieldName);
        serialize(isJsonStringForField, fieldValue);
      }
    }
    writeEndObject();
  }
}