package elw.web;
import org.springframework.web.bind.annotation.PathVariable;
import java.beans.PropertyEditorSupport;
import java.lang.Enum;
/**
* Simple bridging from {@link PathVariable} to {@link Enum}-based
* method parameters.
*/
public class EnumPropertyEditor extends PropertyEditorSupport {
private final Enum[] values;
public EnumPropertyEditor(Enum[] values) {
this.values = values;
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
final Enum value = fromString(text, values);
if (value != null) {
setValue(value);
return;
}
throw new IllegalArgumentException("no such ListStyle: " + text);
}
@Override
public String getAsText() {
final Enum listStyle =
(Enum) getValue();
return listStyle.toString();
}
public static <E extends Enum> E fromString(
final String text, final E[] valuesArr
) {
for (E value : valuesArr) {
if (value.toString().equalsIgnoreCase(text)) {
return value;
}
}
return null;
}
}