This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit 6608e8e368170a51e482f0a80bcf12b033e63380 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Sep 7 14:08:49 2015 +0200 Ajout d'injecteurs pour récuperer les paramètres dans les controlleurs --- .../web/ObserveWebApplicationListener.java | 36 ++++------------ .../application/web/injector/FormDtoInjector.java | 50 ++++++++++++++++++++++ .../application/web/injector/IdDtoInjector.java | 50 ++++++++++++++++++++++ .../ObserveDataSourceConfigurationInjector.java | 43 +++++++++++++++++++ 4 files changed, 151 insertions(+), 28 deletions(-) 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 f25db9d..eedbd98 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 @@ -1,17 +1,15 @@ package fr.ird.observe.application.web; -import fr.ird.observe.application.web.request.ObserveWebRequestContext; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import com.google.gson.Gson; +import fr.ird.observe.application.web.injector.FormDtoInjector; +import fr.ird.observe.application.web.injector.IdDtoInjector; +import fr.ird.observe.application.web.injector.ObserveDataSourceConfigurationInjector; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.WebMotionServerListener; -import org.debux.webmotion.server.call.Call; import org.debux.webmotion.server.call.ServerContext; -import org.debux.webmotion.server.handler.ExecutorParametersInjectorHandler; import org.debux.webmotion.server.mapping.Mapping; -import java.lang.reflect.Type; - /** * @author Tony Chemit : chemit@codelutin.com */ @@ -35,29 +33,11 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { throw new ObserveWebApplicationContextInitException("Impossible d'initialiser le context applicatif", e); } - context.addInjector(new ExecutorParametersInjectorHandler.Injector() { - - @Override - public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { - - ObserveDataSourceConfiguration dataSourceConfiguration = null; - if (type.equals(ObserveDataSourceConfiguration.class)) { - - // on recupère la configuration de source de données depuis le requestContext - ObserveWebRequestContext requestContext = ObserveWebRequestContext.getRequestContext(call.getContext()); - - dataSourceConfiguration = requestContext.getDataSourceConfiguration(); - - if (log.isInfoEnabled()) { - log.info("Inject dataSourceConfiguration: " + dataSourceConfiguration); - } - - } - - return dataSourceConfiguration; + Gson gson = applicationContext.getGsonSupplier().get(); - } - }); + context.addInjector(new ObserveDataSourceConfigurationInjector()); + context.addInjector(new IdDtoInjector(gson)); + context.addInjector(new FormDtoInjector(gson)); context.getServletContext().setAttribute( ObserveWebApplicationContext.APPLICATION_CONTEXT_PARAMETER, applicationContext); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/FormDtoInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/FormDtoInjector.java new file mode 100644 index 0000000..6bcb302 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/FormDtoInjector.java @@ -0,0 +1,50 @@ +package fr.ird.observe.application.web.injector; + +import com.google.gson.Gson; +import fr.ird.observe.services.dto.FormDto; +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; + +/** + * Created on 07/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class FormDtoInjector implements ExecutorParametersInjectorHandler.Injector { + + /** Logger. */ + private static final Log log = LogFactory.getLog(FormDtoInjector.class); + + protected final Gson gson; + + public FormDtoInjector(Gson gson) { + this.gson = gson; + } + + @Override + public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + + FormDto formDto = null; + if (type.isAssignableFrom(FormDto.class)) { + + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + + String gsonContent= ((String[])parameterTree.getValue())[0]; + + formDto = gson.fromJson(gsonContent, generic); + + if (log.isInfoEnabled()) { + log.info("Inject formDto: " + formDto); + } + + } + + return formDto; + + } +} diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/IdDtoInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/IdDtoInjector.java new file mode 100644 index 0000000..5ff658a --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/IdDtoInjector.java @@ -0,0 +1,50 @@ +package fr.ird.observe.application.web.injector; + +import com.google.gson.Gson; +import fr.ird.observe.services.dto.IdDto; +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; + +/** + * Created on 07/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class IdDtoInjector implements ExecutorParametersInjectorHandler.Injector { + + /** Logger. */ + private static final Log log = LogFactory.getLog(IdDtoInjector.class); + + protected final Gson gson; + + public IdDtoInjector(Gson gson) { + this.gson = gson; + } + + @Override + public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + + IdDto idDto = null; + if (type.isAssignableFrom(IdDto.class)) { + + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + + String gsonContent = ((String[]) parameterTree.getValue())[0]; + + idDto = gson.fromJson(gsonContent, generic); + + if (log.isInfoEnabled()) { + log.info("Inject idDto: " + idDto); + } + + } + + return idDto; + + } +} diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDataSourceConfigurationInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDataSourceConfigurationInjector.java new file mode 100644 index 0000000..19fcbb9 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDataSourceConfigurationInjector.java @@ -0,0 +1,43 @@ +package fr.ird.observe.application.web.injector; + +import fr.ird.observe.application.web.request.ObserveWebRequestContext; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +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; + +/** + * Created on 07/09/15. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class ObserveDataSourceConfigurationInjector implements ExecutorParametersInjectorHandler.Injector { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ObserveDataSourceConfigurationInjector.class); + + @Override + public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + + ObserveDataSourceConfiguration dataSourceConfiguration = null; + if (type.equals(ObserveDataSourceConfiguration.class)) { + + // on recupère la configuration de source de données depuis le requestContext + ObserveWebRequestContext requestContext = ObserveWebRequestContext.getRequestContext(call.getContext()); + + dataSourceConfiguration = requestContext.getDataSourceConfiguration(); + + if (log.isInfoEnabled()) { + log.info("Inject dataSourceConfiguration: " + dataSourceConfiguration); + } + + } + + return dataSourceConfiguration; + + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.