@Override public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { Class<?> clazz = elementType.toClass(); return super.canEncode(elementType, mimeType) && ByteBuffer.class.isAssignableFrom(clazz); }
@Override public boolean canWrite(ResolvableType elementType, @Nullable MediaType mediaType) { return (mediaType == null || MediaType.TEXT_EVENT_STREAM.includes(mediaType) || ServerSentEvent.class.isAssignableFrom(elementType.toClass())); }
@Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { return (ByteBuffer.class.isAssignableFrom(elementType.toClass()) && super.canDecode(elementType, mimeType)); }
@Override public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { if (super.canEncode(elementType, mimeType)) { Class<?> outputClass = elementType.toClass(); return (outputClass.isAnnotationPresent(XmlRootElement.class) || outputClass.isAnnotationPresent(XmlType.class)); } else { return false; } }
@Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { return (DataBuffer.class.isAssignableFrom(elementType.toClass()) && super.canDecode(elementType, mimeType)); }
@Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { Class<?> outputClass = elementType.toClass(); return (outputClass.isAnnotationPresent(XmlRootElement.class) || outputClass.isAnnotationPresent(XmlType.class)) && super.canDecode(elementType, mimeType); }
@Override public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { Class<?> clazz = elementType.toClass(); return super.canEncode(elementType, mimeType) && DataBuffer.class.isAssignableFrom(clazz); }
@Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { return (Resource.class.isAssignableFrom(elementType.toClass()) && super.canDecode(elementType, mimeType)); }
@Override public boolean canEncode(ResolvableType elementType, @Nullable MimeType mimeType) { return super.canEncode(elementType, mimeType) && ResourceRegion.class.isAssignableFrom(elementType.toClass()); }
private boolean isSingleValueMap(MethodParameter parameter) { if (!MultiValueMap.class.isAssignableFrom(parameter.getParameterType())) { ResolvableType[] genericTypes = ResolvableType.forMethodParameter(parameter).getGenerics(); if (genericTypes.length == 2) { return !List.class.isAssignableFrom(genericTypes[1].toClass()); } } return false; }
private boolean isSingleValueMap(MethodParameter parameter) { if (!MultiValueMap.class.isAssignableFrom(parameter.getParameterType())) { ResolvableType[] genericTypes = ResolvableType.forMethodParameter(parameter).getGenerics(); if (genericTypes.length == 2) { return !List.class.isAssignableFrom(genericTypes[1].toClass()); } } return false; }
@Override protected Class<?> getReturnValueType(@Nullable Object returnValue, MethodParameter returnType) { if (returnValue != null) { return returnValue.getClass(); } else { Type type = getHttpEntityType(returnType); type = (type != null ? type : Object.class); return ResolvableType.forMethodParameter(returnType, type).toClass(); } }
@Override public Class<?> getParameterType() { if (this.returnValue != null) { return this.returnValue.getClass(); } if (!ResolvableType.NONE.equals(this.returnType)) { return this.returnType.toClass(); } return super.getParameterType(); }
/** * Resolve the specified generic type against the given TypeVariable map. * <p>Used by Spring Data. * @param genericType the generic type to resolve * @param map the TypeVariable Map to resolved against * @return the type if it resolves to a Class, or {@code Object.class} otherwise */ @SuppressWarnings("rawtypes") public static Class<?> resolveType(Type genericType, Map<TypeVariable, Type> map) { return ResolvableType.forType(genericType, new TypeVariableMapVariableResolver(map)).toClass(); }
@Override public boolean canRead(ResolvableType elementType, @Nullable MediaType mediaType) { return ((MULTIVALUE_TYPE.isAssignableFrom(elementType) || (elementType.hasUnresolvableGenerics() && MultiValueMap.class.isAssignableFrom(elementType.toClass()))) && (mediaType == null || MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(mediaType))); }
@Override public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) { JavaType javaType = getObjectMapper().getTypeFactory().constructType(elementType.getType()); // Skip String: CharSequenceDecoder + "*/*" comes after return (!CharSequence.class.isAssignableFrom(elementType.toClass()) && getObjectMapper().canDeserialize(javaType) && supportsMimeType(mimeType)); }
private Class<?> getPayloadType(MethodParameter parameter) { Type genericParamType = parameter.getGenericParameterType(); ResolvableType resolvableType = ResolvableType.forType(genericParamType).as(Message.class); return resolvableType.getGeneric().toClass(); }
@Test public void resolveVariableGenericArrayUnknownWithFallback() throws Exception { ResolvableType type = ResolvableType.forField(Fields.class.getField("variableTypeGenericArray")); assertThat(type.getType().toString(), equalTo("T[]")); assertThat(type.isArray(), equalTo(true)); assertThat(type.toClass(), equalTo((Class) Object.class)); }
@Override public boolean supports(HandlerResult result) { Class<?> valueType = resolveReturnValueType(result); if (isSupportedType(valueType)) { return true; } ReactiveAdapter adapter = getAdapter(result); return adapter != null && !adapter.isNoValue() && isSupportedType(result.getReturnType().getGeneric().toClass()); }