Hi Adam.
This area is a little inflexible. The only way i can see how to
currently do this is to define your own annotation say @NullOnEmpty
then define a general wrapping StringReaderProvider that operates on
that annotation:
@Provider
public class NullOnEmptyStringReaderProvider
implements StringReaderProvider<String> {
@Context StringReaderWorkers ws;
@Override
public StringReader<String> getStringReader(
Class<?> type, Type genericType, Annotation[] annotations) {
if (/ NullOnEmpty is present /) {
final StringReader sr = ws.getStringReader(type,
genericType, new Annotation[0]);
return new StringReader<String>() {
@Override
public String fromString(String value) {
if (value.isEmpty()) {
return null;
} else {
return sr.fromString(value);
}
}
};
} else {
return null;
}
}
}
Paul.
On Dec 6, 2010, at 10:31 PM, Adam Walczak wrote:
> Is the any way in Jersey to make it treat empty strings in parameter
> injection as null's ?
>
> I tried something hacky like:
>
> @Provider
> public class StringStringReaderProvider
> implements StringReaderProvider<String> {
>
> @Override
> public StringReader<String> getStringReader(
> Class<?> type, Type genericType, Annotation[] annotations) {
> return new StringReader<String>() {
>
> @Override
> public String fromString(String value) {
> if(value == null) {
> return null;
> } else if(value.isEmpty()) {
> return null;
> } else {
> return value;
> }
> }
> };
> }
>
> }
>
> but it didn't work :o)
>
> --
> Adam Walczak
> www.adamwalczak.info
> +48 604 188 992