@Override public Class<MODEL> getModelType() { return converter.getModelType(); }
/** * Checks if the type of given {@link Property} is admitted as document identifier value type. Admitted types are: * {@link String}, {@link BigInteger} and {@link ObjectId}. * @param property Property to check * @return <code>true</code> if given type is admitted as document identifier type, <code>false</code> otherwise */ @SuppressWarnings("rawtypes") private static boolean isValidDocumentIdPropertyType(Property<?> property) { final Class<?> type = property.getConverter().map(c -> (Class) c.getModelType()).orElse(property.getType()); return isAdmittedDocumentIdType(type); }
return TypeUtils.isAssignable(value.getClass(), converter.getModelType());
@SuppressWarnings({ "rawtypes", "unchecked" }) @Override public T write(PropertyBox propertyBox, T instance, boolean ignoreMissing) { ObjectUtils.argumentNotNull(propertyBox, "PropertyBox must be not null"); ObjectUtils.argumentNotNull(instance, "Bean instance must be not null"); propertyBox.stream().filter(p -> !p.isReadOnly()).filter(p -> Path.class.isAssignableFrom(p.getClass())) .map(p -> (Path<?>) p).forEach(p -> { getProperty(p, ignoreMissing).ifPresent(bp -> { final Property<Object> property = ((Property) p); final Object boxValue = propertyBox.getValue(property); Object value = boxValue; // check conversion if (!TypeUtils.isAssignable(bp.getType(), property.getType())) { value = property.getConverter() .filter(c -> TypeUtils.isAssignable(bp.getType(), c.getModelType())) .map(c -> ((PropertyValueConverter) c).toModel(boxValue, property)) .orElse(boxValue); } write(bp, p.getType(), value, instance); }); }); return instance; }
property.getConverter().filter(c -> (type != null && TypeUtils.isAssignable(type, c.getModelType()))) .map(cv -> ((PropertyValueConverter) cv).fromModel(value, property)).orElse(value), instanceToWrite);
@SuppressWarnings("unchecked") @Override public <MODEL> B elementConverter(PropertyValueConverter<E, MODEL> elementConverter) { ObjectUtils.argumentNotNull(elementConverter, "Element value converter must be not null"); return converter(new CollectionCallbackPropertyValueConverter<>(getType(), elementConverter.getModelType(), v -> elementConverter.fromModel(v, (Property<E>) this), v -> elementConverter.toModel(v, (Property<E>) this), getDefaultInstanceProvider())); }
@SuppressWarnings("unchecked") @Override public <MODEL> B elementConverter(PropertyValueConverter<E, MODEL> elementConverter) { ObjectUtils.argumentNotNull(elementConverter, "Element value converter must be not null"); return converter(new CollectionCallbackPropertyValueConverter<>(getType(), elementConverter.getModelType(), v -> elementConverter.fromModel(v, (Property<E>) this), v -> elementConverter.toModel(v, (Property<E>) this), getDefaultInstanceProvider())); }