DurationToNumberConverter Class — spring-boot Architecture
Architecture documentation for the DurationToNumberConverter class in DurationToNumberConverter.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot/src/main/java/org/springframework/boot/convert/DurationToNumberConverter.java lines 38–69
final class DurationToNumberConverter implements GenericConverter {
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
return Collections.singleton(new ConvertiblePair(Duration.class, Number.class));
}
@Override
public @Nullable Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
if (source == null) {
return null;
}
return convert((Duration) source, getDurationUnit(sourceType), targetType.getObjectType());
}
private @Nullable ChronoUnit getDurationUnit(TypeDescriptor sourceType) {
DurationUnit annotation = sourceType.getAnnotation(DurationUnit.class);
return (annotation != null) ? annotation.value() : null;
}
private Object convert(Duration source, @Nullable ChronoUnit unit, Class<?> type) {
try {
return type.getConstructor(String.class)
.newInstance(String.valueOf(DurationStyle.Unit.fromChronoUnit(unit).longValue(source)));
}
catch (Exception ex) {
ReflectionUtils.rethrowRuntimeException(ex);
throw new IllegalStateException(ex);
}
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free