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 bf2234a89883e652037d894c6682fc8afc09c150 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Fri Oct 16 16:53:18 2015 +0200 ajout de l'injecteur pour le type Class --- .../web/ObserveWebApplicationListener.java | 2 + .../web/injector/ObserveClassInjector.java | 46 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) 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 5f90a88..764a415 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,6 +24,7 @@ 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.ObserveClassInjector; import fr.ird.observe.application.web.injector.ObserveDataSourceConfigurationInjector; import fr.ird.observe.application.web.injector.ObserveDtoInjector; import fr.ird.observe.services.dto.ObserveDbUserDto; @@ -59,6 +60,7 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { Gson gson = applicationContext.getGsonSupplier().get(); context.addInjector(new ObserveDataSourceConfigurationInjector(gson)); + context.addInjector(new ObserveClassInjector()); context.addInjector(new ObserveDtoInjector(gson)); context.addConverter(new ObserveDtoConverter(gson), ObserveDbUserDto.class); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveClassInjector.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveClassInjector.java new file mode 100644 index 0000000..31cd878 --- /dev/null +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/injector/ObserveClassInjector.java @@ -0,0 +1,46 @@ +package fr.ird.observe.application.web.injector; + +import com.google.common.base.Preconditions; +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; + +/** + * @author Sylvain Bavencoff - bavencoff@codelutin.com + */ +public class ObserveClassInjector 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) { + + Class<?> result = null; + + if (type.equals(Class.class)) { + + Call.ParameterTree parameterTree = call.getParameterTree().getObject().get(name); + Preconditions.checkNotNull(parameterTree, "Le paramètre " + name + " n'as pas été trouvé, recompiler (parameter)!"); + + String className = ((String[]) parameterTree.getValue())[0]; + className = className.replace("\"", ""); + try { + result = Class.forName(className); + } catch (ClassNotFoundException cnfe) { + if (log.isErrorEnabled()) { + log.error("An exception occurred", cnfe); + } + throw new JsonParseException("Class not found: " + className, cnfe); + } + + } + + return result; + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.