@Override public void reject(Exception exception) { thisContext.reject(exception); }
@Override public Optional<byte[]> convert(NettyPartData object, Class<byte[]> targetType, ConversionContext context) { try { return Optional.of(object.getBytes()); } catch (IOException e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<CompletedFileUpload> convert(FileUpload upload, Class<CompletedFileUpload> targetType, ConversionContext context) { try { if (!upload.isCompleted()) { return Optional.empty(); } return Optional.of(new NettyCompletedFileUpload(upload)); } catch (Exception e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<Object> convert(Attribute object, Class<Object> targetType, ConversionContext context) { try { return conversionService.convert(object.getValue(), targetType, context); } catch (IOException e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<Number> convert(CharSequence object, Class<Number> targetType, ConversionContext context) { String value = object.toString().toUpperCase(Locale.ENGLISH); try { if (value.endsWith("KB")) { long size = Long.valueOf(value.substring(0, value.length() - 2)) * KB_UNIT; return ConversionService.SHARED.convert(size, targetType); } if (value.endsWith("MB")) { long size = Long.valueOf(value.substring(0, value.length() - 2)) * KB_UNIT * KB_UNIT; return ConversionService.SHARED.convert(size, targetType); } if (value.endsWith("GB")) { long size = Long.valueOf(value.substring(0, value.length() - 2)) * KB_UNIT * KB_UNIT * KB_UNIT; return ConversionService.SHARED.convert(size, targetType); } Long size = Long.valueOf(value); return ConversionService.SHARED.convert(size, targetType); } catch (NumberFormatException e) { context.reject(value, e); return Optional.empty(); } } }
@Override public Optional<byte[]> convert(HttpData upload, Class<byte[]> targetType, ConversionContext context) { try { if (!upload.isCompleted()) { return Optional.empty(); } ByteBuf byteBuf = upload.getByteBuf(); return conversionService.convert(byteBuf, targetType, context); } catch (Exception e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<CharSequence> convert(HttpData upload, Class<CharSequence> targetType, ConversionContext context) { try { if (!upload.isCompleted()) { return Optional.empty(); } ByteBuf byteBuf = upload.getByteBuf(); return conversionService.convert(byteBuf, targetType, context); } catch (Exception e) { context.reject(e); return Optional.empty(); } } }
/** * Registers a default converter. * * @param conversionService The conversion service */ protected void registerDefaultConverters(ConversionService<?> conversionService) { conversionService.addConverter( CharSequence.class, MediaType.class, (object, targetType, context) -> { if (StringUtils.isEmpty(object)) { return Optional.empty(); } else { final String str = object.toString(); try { return Optional.of(new MediaType(str)); } catch (IllegalArgumentException e) { context.reject(e); return Optional.empty(); } } }); }
/** * Type converter for {@link Readable} types. * @param resourceResolver The resource resolver. * @return The type converter * @since 1.1.0 */ @Singleton protected @Nonnull TypeConverter<CharSequence, Readable> readableTypeConverter(ResourceResolver resourceResolver) { return (object, targetType, context) -> { String pathStr = object.toString(); Optional<ResourceLoader> supportingLoader = resourceResolver.getSupportingLoader(pathStr); if (!supportingLoader.isPresent()) { context.reject(pathStr, new ConfigurationException( "No supported resource loader for path [" + pathStr + "]. Prefix the path with a supported prefix such as 'classpath:' or 'file:'" )); return Optional.empty(); } else { final Optional<URL> resource = resourceResolver.getResource(pathStr); if (resource.isPresent()) { return Optional.of(Readable.of(resource.get())); } else { context.reject(object, new ConfigurationException("No resource exists for value: " + object)); return Optional.empty(); } } }; } }
@Override public Optional<Object> convert(NettyPartData object, Class<Object> targetType, ConversionContext context) { try { if (targetType.isAssignableFrom(ByteBuffer.class)) { return Optional.of(object.getByteBuffer()); } else if (targetType.isAssignableFrom(InputStream.class)) { return Optional.of(object.getInputStream()); } else { ByteBuf byteBuf = object.getByteBuf(); try { return conversionService.convert(byteBuf, targetType, context); } finally { byteBuf.release(); } } } catch (IOException e) { context.reject(e); return Optional.empty(); } } }
@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter(URI.class, LoadBalancer.class, (TypeConverter<URI, LoadBalancer>) (object, targetType, context) -> { try { return Optional.of(LoadBalancer.fixed(object.toURL())); } catch (MalformedURLException e) { context.reject(e); return Optional.empty(); } }); conversionService.addConverter(URL.class, LoadBalancer.class, (Function<URL, LoadBalancer>) LoadBalancer::fixed); conversionService.addConverter(String.class, LoadBalancer.class, (Function<String, LoadBalancer>) url -> { try { return LoadBalancer.fixed(new URL(url)); } catch (MalformedURLException e) { return null; } }); } }
@Override public Optional<Object> convert(FileUpload object, Class<Object> targetType, ConversionContext context) { try { if (!object.isCompleted()) { return Optional.empty(); } String contentType = object.getContentType(); ByteBuf byteBuf = object.getByteBuf(); if (StringUtils.isNotEmpty(contentType)) { MediaType mediaType = new MediaType(contentType); Optional<MediaTypeCodec> registered = decoderRegistryProvider.get().findCodec(mediaType); if (registered.isPresent()) { MediaTypeCodec decoder = registered.get(); Object val = decoder.decode(targetType, new ByteBufInputStream(byteBuf)); return Optional.of(val); } else { return conversionService.convert(byteBuf, targetType, context); } } return conversionService.convert(byteBuf, targetType, context); } catch (Exception e) { context.reject(e); return Optional.empty(); } } }
return Optional.of(IOUtils.readText(reader)); } catch (IOException e) { context.reject(e); return Optional.empty(); return Optional.of(IOUtils.readText(reader)); } catch (IOException e) { context.reject(e); return Optional.empty(); return Optional.of(format.parse(object.toString())); } catch (ParseException e) { context.reject(object, e); return Optional.empty(); return Optional.ofNullable(Paths.get(object.toString())); } catch (Exception e) { context.reject("Invalid path [" + object + " ]: " + e.getMessage(), e); return Optional.empty(); return Optional.of(converted); } catch (NumberFormatException e) { context.reject(object, e); return Optional.empty(); return Optional.of(converted); } catch (NumberFormatException e) { context.reject(object, e); return Optional.empty();
@Override public Optional<Object[]> convert(ArrayNode node, Class<Object[]> targetType, ConversionContext context) { try { Object[] result = objectMapper.treeToValue(node, targetType); return Optional.of(result); } catch (JsonProcessingException e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<JsonNode> convert(Object object, Class<JsonNode> targetType, ConversionContext context) { try { return Optional.of(objectMapper.valueToTree(object)); } catch (IllegalArgumentException e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<Object> convert(JsonNode node, Class<Object> targetType, ConversionContext context) { try { if (CharSequence.class.isAssignableFrom(targetType) && node instanceof ObjectNode) { return Optional.of(node.toString()); } else { Object result = objectMapper.treeToValue(node, targetType); return Optional.of(result); } } catch (JsonProcessingException e) { context.reject(e); return Optional.empty(); } } }
@Override public Optional<HttpStatus> convert(Number object, Class<HttpStatus> targetType, ConversionContext context) { try { HttpStatus status = HttpStatus.valueOf(object.shortValue()); return Optional.of(status); } catch (IllegalArgumentException e) { context.reject(object, e); return Optional.empty(); } } }
/** * Registers a default converter. * * @param conversionService The conversion service */ protected void registerDefaultConverters(ConversionService<?> conversionService) { conversionService.addConverter( CharSequence.class, MediaType.class, (object, targetType, context) -> { if (StringUtils.isEmpty(object)) { return Optional.empty(); } else { final String str = object.toString(); try { return Optional.of(new MediaType(str)); } catch (IllegalArgumentException e) { context.reject(e); return Optional.empty(); } } }); }
@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter(URI.class, LoadBalancer.class, (TypeConverter<URI, LoadBalancer>) (object, targetType, context) -> { try { return Optional.of(LoadBalancer.fixed(object.toURL())); } catch (MalformedURLException e) { context.reject(e); return Optional.empty(); } }); conversionService.addConverter(URL.class, LoadBalancer.class, (Function<URL, LoadBalancer>) LoadBalancer::fixed); conversionService.addConverter(String.class, LoadBalancer.class, (Function<String, LoadBalancer>) url -> { try { return LoadBalancer.fixed(new URL(url)); } catch (MalformedURLException e) { return null; } }); } }
@Override public void register(ConversionService<?> conversionService) { conversionService.addConverter(URI.class, LoadBalancer.class, (TypeConverter<URI, LoadBalancer>) (object, targetType, context) -> { try { return Optional.of(LoadBalancer.fixed(object.toURL())); } catch (MalformedURLException e) { context.reject(e); return Optional.empty(); } }); conversionService.addConverter(URL.class, LoadBalancer.class, (Function<URL, LoadBalancer>) LoadBalancer::fixed); conversionService.addConverter(String.class, LoadBalancer.class, (Function<String, LoadBalancer>) url -> { try { return LoadBalancer.fixed(new URL(url)); } catch (MalformedURLException e) { return null; } }); } }