1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.fit.buildtools.cxf;
20
21 import java.lang.annotation.Annotation;
22 import java.lang.reflect.Type;
23 import java.util.Date;
24 import javax.ws.rs.ext.ParamConverter;
25 import javax.ws.rs.ext.ParamConverterProvider;
26 import org.springframework.util.StringUtils;
27
28 public class DateParamConverterProvider implements ParamConverterProvider {
29
30 private static class DateParamConverter implements ParamConverter<Date> {
31
32 @Override
33 public Date fromString(final String value) {
34 if (!StringUtils.hasText(value)) {
35 return null;
36 }
37 try {
38 return new Date(Long.parseLong(value));
39 } catch (final NumberFormatException e) {
40 throw new IllegalArgumentException("Unparsable date: " + value, e);
41 }
42 }
43
44 @Override
45 public String toString(final Date value) {
46 return value == null ? null : String.valueOf(value.getTime());
47 }
48 }
49
50 @Override
51 @SuppressWarnings("unchecked")
52 public <T> ParamConverter<T> getConverter(
53 final Class<T> rawType, final Type genericType, final Annotation[] annotations) {
54
55 if (Date.class.equals(rawType)) {
56 return (ParamConverter<T>) new DateParamConverter();
57 }
58
59 return null;
60 }
61 }