コード例 #1
0
 public static PrimitiveTypes forType(Class<?> type) {
   for (PrimitiveTypes primitive : PrimitiveTypes.values()) {
     if (primitive.supports(type)) {
       return primitive;
     }
   }
   return null;
 }
コード例 #2
0
  @Override
  public Object readFrom(
      Class<Object> type,
      Type genericType,
      Annotation[] annotations,
      MediaType mediaType,
      MultivaluedMap<String, String> httpHeaders,
      InputStream entityStream)
      throws IOException, WebApplicationException {
    final String entityString = readFromAsString(entityStream, mediaType);
    if (entityString.isEmpty()) {
      throw new NoContentException(LocalizationMessages.ERROR_READING_ENTITY_MISSING());
    }
    final PrimitiveTypes primitiveType = PrimitiveTypes.forType(type);
    if (primitiveType != null) {
      return primitiveType.convert(entityString);
    }

    final Constructor constructor =
        AccessController.doPrivileged(ReflectionHelper.getStringConstructorPA(type));
    if (constructor != null) {
      try {
        return type.cast(constructor.newInstance(entityString));
      } catch (Exception e) {
        throw new MessageBodyProcessingException(
            LocalizationMessages.ERROR_ENTITY_PROVIDER_BASICTYPES_CONSTRUCTOR(type));
      }
    }

    if (AtomicInteger.class.isAssignableFrom(type)) {
      return new AtomicInteger((Integer) PrimitiveTypes.INTEGER.convert(entityString));
    }

    if (AtomicLong.class.isAssignableFrom(type)) {
      return new AtomicLong((Long) PrimitiveTypes.LONG.convert(entityString));
    }

    throw new MessageBodyProcessingException(
        LocalizationMessages.ERROR_ENTITY_PROVIDER_BASICTYPES_UNKWNOWN(type));
  }
コード例 #3
0
  private boolean canProcess(Class<?> type) {
    if (PrimitiveTypes.forType(type) != null) {
      return true;
    }
    if (Number.class.isAssignableFrom(type)) {
      final Constructor constructor =
          AccessController.doPrivileged(ReflectionHelper.getStringConstructorPA(type));
      if (constructor != null) {
        return true;
      }
      if (AtomicInteger.class.isAssignableFrom(type) || AtomicLong.class.isAssignableFrom(type)) {
        return true;
      }
    }

    return false;
  }