This is an automated email from the git hooks/post-receive script. New commit to branch feature/8124-VerifConfigurationSource in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit a313cd471a5cf463724ac6368f881ba5b0c637db Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Mar 15 12:15:56 2016 +0100 utilisé le même format pour les dates pour la contruction de la requêt coté client et son interprétation coté serveur(see #8124). --- .../web/ObserveWebApplicationListener.java | 3 ++ .../application/web/injector/DateInjector.java | 52 ++++++++++++++++++++++ ...bserveDataSourceConfigurationRestConstants.java | 5 +++ .../services/ObserveServiceFactoryRest.java | 5 ++- 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java index 7e7e0fd..0ce1488 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java @@ -24,10 +24,12 @@ package fr.ird.observe.application.web; import com.google.gson.Gson; import fr.ird.observe.application.web.converter.ObserveDtoConverter; +import fr.ird.observe.application.web.injector.DateInjector; import fr.ird.observe.application.web.injector.ObserveClassInjector; import fr.ird.observe.application.web.injector.ObserveDataSourceConfigurationInjector; import fr.ird.observe.application.web.injector.ObserveDtoInjector; import fr.ird.observe.application.web.injector.ObserveReferenceSetRequestInjector; +import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationRestConstants; import fr.ird.observe.services.dto.ObserveDbUserDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -64,6 +66,7 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { context.addInjector(new ObserveClassInjector()); context.addInjector(new ObserveDtoInjector(gson)); context.addInjector(new ObserveReferenceSetRequestInjector(gson)); + context.addInjector(new DateInjector(ObserveDataSourceConfigurationRestConstants.DATE_FORMAT)); context.addConverter(new ObserveDtoConverter(gson), ObserveDbUserDto.class); context.getServletContext().setAttribute( diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/DateInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/DateInjector.java new file mode 100644 index 0000000..ae741aa --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/DateInjector.java @@ -0,0 +1,52 @@ +package fr.ird.observe.application.web.injector; + +import com.google.gson.JsonParseException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.debux.webmotion.server.call.Call; +import org.debux.webmotion.server.handler.ExecutorParametersInjectorHandler; +import org.debux.webmotion.server.mapping.Mapping; + +import java.lang.reflect.Type; +import java.text.DateFormat; +import java.text.ParseException; +import java.util.Date; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class DateInjector implements ExecutorParametersInjectorHandler.Injector{ + + private static final Log log = LogFactory.getLog(DateInjector.class); + + protected DateFormat dateFormat; + + public DateInjector(DateFormat dateFormat) { + this.dateFormat = dateFormat; + } + + @Override + public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + Date result = null; + + if (type.equals(Date.class)) { + + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + + if (parameterTree != null) { + String dateString = ((String[]) parameterTree.getValue())[0]; + try { + result = dateFormat.parse(dateString); + } catch (ParseException e) { + if (log.isErrorEnabled()) { + log.error("An exception occurred", e); + } + throw new JsonParseException("no parse to date from " + dateString, e); + } + } + + } + + return result; + } +} diff --git a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java index 2a049a7..fed7969 100644 --- a/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java +++ b/observe-services-configuration-rest/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceConfigurationRestConstants.java @@ -22,6 +22,9 @@ package fr.ird.observe.services.configuration; * #L% */ +import java.text.DateFormat; +import java.text.SimpleDateFormat; + /** * Created on 04/09/15. * @@ -43,4 +46,6 @@ public interface ObserveDataSourceConfigurationRestConstants { String REQUEST_ADMIN_API_KEY = "adminApiKey"; + DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); + } diff --git a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java index a695ff0..3c76716 100644 --- a/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java +++ b/observe-services-rest/src/main/java/fr/ird/observe/services/ObserveServiceFactoryRest.java @@ -53,6 +53,7 @@ import java.io.IOException; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.util.Collection; +import java.util.Date; /** * Created on 16/08/15. @@ -323,7 +324,9 @@ public class ObserveServiceFactoryRest extends ObserveServiceFactorySupport impl requestBuilder.addParameter(name, (String) value); // Make sure String is not converted to JSON } else if (value != null && value instanceof Collection) { requestBuilder.addParameter(name, (Collection) value); // Make sure List is not converted to JSON - } else { + } else if (value != null && value instanceof Date) { + requestBuilder.addParameter(name, DATE_FORMAT.format(value)); + } else if (value != null) { requestBuilder.addParameter(name, value); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.