io.crnk.rs.internal.legacy.provider.QueryParamProvider Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of crnk-rs Show documentation
Show all versions of crnk-rs Show documentation
JSON API framework for Java
package io.crnk.rs.internal.legacy.provider;
import java.io.IOException;
import java.util.List;
import javax.ws.rs.QueryParam;
import javax.ws.rs.container.ContainerRequestContext;
import com.fasterxml.jackson.databind.ObjectMapper;
public class QueryParamProvider implements RequestContextParameterProvider {
@Override
public Object provideValue(Parameter parameter, ContainerRequestContext requestContext, ObjectMapper objectMapper) {
Object returnValue;
List value =
requestContext.getUriInfo().getQueryParameters().get(parameter.getAnnotation(QueryParam.class).value());
if (value == null || value.isEmpty()) {
return null;
}
else {
if (String.class.isAssignableFrom(parameter.getType())) {
// Given a query string: ?x=y&x=z, JAX-RS will return a value of y.
returnValue = value.get(0);
}
else if (Iterable.class.isAssignableFrom(parameter.getType())) {
returnValue = value;
}
else {
try {
returnValue = objectMapper.readValue(value.get(0), parameter.getType());
}
catch (IOException e) {
throw new IllegalStateException(e);
}
}
}
return returnValue;
}
@Override
public boolean provides(Parameter parameter) {
return parameter.isAnnotationPresent(QueryParam.class);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy