
com.v5analytics.webster.parameterProviders.OptionalParameterProviderFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of webster Show documentation
Show all versions of webster Show documentation
Minimalist web framework, that has an express.js like API.
package com.v5analytics.webster.parameterProviders;
import com.v5analytics.webster.ParameterValueConverter;
import com.v5analytics.webster.WebsterException;
import com.v5analytics.webster.annotations.Optional;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class OptionalParameterProviderFactory extends ValueParameterProviderFactory {
@Override
public boolean isHandled(Method handleMethod, Class parameterType, Annotation[] parameterAnnotations) {
return getOptionalAnnotation(parameterAnnotations) != null;
}
@Override
public ParameterProvider createParameterProvider(Method handleMethod, Class parameterType, Annotation[] parameterAnnotations) {
Optional optionalAnnotation = getOptionalAnnotation(parameterAnnotations);
if (optionalAnnotation == null) {
throw new WebsterException("Could not find optional annotation");
}
ParameterValueConverter parameterValueConverter = createParameterValueConverter(optionalAnnotation.parameterValueConverter());
String defaultValue = getDefaultValueFromAnnotation(optionalAnnotation);
return new OptionalParameterProvider<>(parameterType, optionalAnnotation, parameterValueConverter, defaultValue);
}
private String getDefaultValueFromAnnotation(Optional optionalAnnotation) {
if (optionalAnnotation.defaultValue().equals(Optional.NOT_SET)) {
return null;
}
return optionalAnnotation.defaultValue();
}
private static Optional getOptionalAnnotation(Annotation[] annotations) {
for (Annotation annotation : annotations) {
if (annotation instanceof Optional) {
return (Optional) annotation;
}
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy