This is an automated email from the git hooks/post-receive script. New commit to branch feature/7549 in repository observe. See http://git.codelutin.com/observe.git commit 9392baeb7ca51d029ce4508e561893b2f1ad3f08 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Wed Sep 30 09:46:03 2015 +0200 ajout du converter pour les DTO (refs #7549) --- .../web/ObserveWebApplicationListener.java | 3 ++ .../controller/v1/DataSourceServiceController.java | 6 ++-- .../ObserveDtoConverter.java} | 34 ++++++++++++---------- .../web/injector/ObserveDtoInjector.java | 30 ++++++++++++++++++- 4 files changed, 53 insertions(+), 20 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 37bd2ea..5f90a88 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 @@ -23,8 +23,10 @@ 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.ObserveDataSourceConfigurationInjector; import fr.ird.observe.application.web.injector.ObserveDtoInjector; +import fr.ird.observe.services.dto.ObserveDbUserDto; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.WebMotionServerListener; @@ -58,6 +60,7 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { context.addInjector(new ObserveDataSourceConfigurationInjector(gson)); context.addInjector(new ObserveDtoInjector(gson)); + context.addConverter(new ObserveDtoConverter(gson), ObserveDbUserDto.class); context.getServletContext().setAttribute( ObserveWebApplicationContext.APPLICATION_CONTEXT_PARAMETER, applicationContext); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java index 6e713c8..6225f59 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/DataSourceServiceController.java @@ -34,7 +34,7 @@ import fr.ird.observe.services.configuration.ObserveDataSourceConnectionRest; import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.DataSourceCreateWithNoReferentialImportException; import fr.ird.observe.services.dto.IncompatibleDataSourceCreateConfigurationException; -import fr.ird.observe.services.dto.UserDto; +import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.service.DataSourceService; import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; import fr.ird.observe.services.service.DatabaseNotFoundException; @@ -111,12 +111,12 @@ public class DataSourceServiceController extends ObserveServiceControllerSupport } @Override - public Set<UserDto> getUsers() { + public Set<ObserveDbUserDto> getUsers() { return getAuthenticatedService().getUsers(); } @Override - public void applySecurity(Set<UserDto> users) { + public void applySecurity(Set<ObserveDbUserDto> users) { getAuthenticatedService().applySecurity(users); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/converter/ObserveDtoConverter.java similarity index 59% copy from observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java copy to observe-application-web/src/main/java/fr/ird/observe/application/web/converter/ObserveDtoConverter.java index 8efd2ed..a892019 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/converter/ObserveDtoConverter.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.web.injector; +package fr.ird.observe.application.web.converter; /* * #%L @@ -24,49 +24,51 @@ package fr.ird.observe.application.web.injector; import com.google.gson.Gson; import fr.ird.observe.services.dto.ObserveDto; +import org.apache.commons.beanutils.converters.AbstractConverter; 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 ObserveDtoInjector implements ExecutorParametersInjectorHandler.Injector { +public class ObserveDtoConverter extends AbstractConverter { /** Logger. */ - private static final Log log = LogFactory.getLog(ObserveDtoInjector.class); + private static final Log log = LogFactory.getLog(ObserveDtoConverter.class); protected final Gson gson; - public ObserveDtoInjector(Gson gson) { + public ObserveDtoConverter(Gson gson) { this.gson = gson; } + @Override - public Object getValue(Mapping mapping, Call call, String name, Class<?> type, Type generic) { + protected <T> T convertToType(Class<T> type, Object value) throws Throwable { + T observeDto = null; - ObserveDto observeDto = null; if (ObserveDto.class.isAssignableFrom(type)) { - Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); - - String gsonContent= ((String[])parameterTree.getValue())[0]; + String gsonContent = value.toString(); - observeDto = gson.fromJson(gsonContent, generic); + observeDto = gson.fromJson(gsonContent, type); if (log.isInfoEnabled()) { - log.info("Inject observeDto: " + observeDto); + log.info("convert observeDto: " + observeDto); } + } else { + throw conversionException(type, value); } return observeDto; } + + @Override + protected Class<?> getDefaultType() { + return ObserveDto.class; + } } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java index 8efd2ed..5694eee 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveDtoInjector.java @@ -24,6 +24,7 @@ package fr.ird.observe.application.web.injector; import com.google.gson.Gson; import fr.ird.observe.services.dto.ObserveDto; +import org.apache.commons.beanutils.converters.AbstractConverter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.debux.webmotion.server.call.Call; @@ -37,7 +38,7 @@ import java.lang.reflect.Type; * * @author Tony Chemit - chemit@codelutin.com */ -public class ObserveDtoInjector implements ExecutorParametersInjectorHandler.Injector { +public class ObserveDtoInjector extends AbstractConverter implements ExecutorParametersInjectorHandler.Injector { /** Logger. */ private static final Log log = LogFactory.getLog(ObserveDtoInjector.class); @@ -69,4 +70,31 @@ public class ObserveDtoInjector implements ExecutorParametersInjectorHandler.Inj return observeDto; } + + @Override + protected <T> T convertToType(Class<T> type, Object value) throws Throwable { + T observeDto = null; + + if (ObserveDto.class.isAssignableFrom(type)) { + + String gsonContent = value.toString(); + + observeDto = gson.fromJson(gsonContent, type); + + if (log.isInfoEnabled()) { + log.info("convert observeDto: " + observeDto); + } + + } else { + throw conversionException(type, value); + } + + return observeDto; + + } + + @Override + protected Class<?> getDefaultType() { + return ObserveDto.class; + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.