io.dropwizard.vavr.jersey.CollectionParameterExtractor Maven / Gradle / Ivy
package io.dropwizard.vavr.jersey;
import io.vavr.collection.Seq;
import io.vavr.control.Option;
import org.glassfish.jersey.server.internal.inject.MultivaluedParameterExtractor;
import javax.ws.rs.core.MultivaluedMap;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
class CollectionParameterExtractor> implements MultivaluedParameterExtractor> {
private final String name;
private final Option defaultValue;
private final Function fromString;
private final Function, B> collBuilder;
CollectionParameterExtractor(final String name,
final Option defaultValue,
final Function fromString,
final Function, B> collBuilder) {
this.name = name;
this.defaultValue = defaultValue;
this.fromString = fromString;
this.collBuilder = collBuilder;
}
@Override
public String getName() {
return this.name;
}
@Override
public String getDefaultValueString() {
return this.defaultValue.getOrNull();
}
@Override
public Seq extract(final MultivaluedMap parameters) {
return this.collBuilder.apply(
Option.of(parameters.get(this.name))
.getOrElse(() -> defaultValue.map(Collections::singletonList).getOrElse(Collections.emptyList()))
).map(this.fromString);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy