public void setParameterValues()

in google-cloud-spanner-hibernate-dialect/src/main/java/com/google/cloud/spanner/hibernate/types/internal/ArrayJavaTypeDescriptor.java [87:117]


  public void setParameterValues(Properties parameters) {
    // Throw error if type is used on a non-List field.
    if (!parameters.get(DynamicParameterizedType.RETURNED_CLASS).equals(List.class.getName())) {
      String message =
          String.format(
              "Found invalid type annotation on field: %s. "
                  + "The SpannerArrayListType must be applied on a java.util.List entity field.",
              parameters.get(DynamicParameterizedType.PROPERTY));

      throw new IllegalArgumentException(message);
    }

    // Get the class and the field name.
    Class<?> entityClass = getClass(parameters.getProperty(DynamicParameterizedType.ENTITY));
    Field field =
        FieldUtils.getDeclaredField(
            entityClass, parameters.getProperty(DynamicParameterizedType.PROPERTY), true);

    Type genericType = field.getGenericType();
    if (genericType instanceof ParameterizedType) {
      ParameterizedType parameterizedType = (ParameterizedType) genericType;

      // Note: This is safe since we know the type is List<T> at this point.
      Class<?> listParamType = (Class<?>) parameterizedType.getActualTypeArguments()[0];
      spannerType = listParamType;
      spannerTypeCode = getSpannerTypeCode(listParamType);
    } else {
      throw new IllegalArgumentException(
          "You must specify an explicit parameterized type for your List type; i.e. List<Integer>");
    }
  }