Problème de copie d'entité si un champ Date est nulle.
Je fais des copies de dto dont tous les champs ne sont pas remplis (certains sont null) sans problème. Mais pour un dto avec un champ Date null, j'ai l'erreur [1]. Je n'ai aucun problème si la date est non nulle. Caused by: org.nuiton.wikitty.WikittyException: Can't copy source object dto:c405535b-3ec1-4b65-9a32-a8a3829d8af3:2.1.20 at org.nuiton.wikitty.entities.BusinessEntityImpl.copyFrom(BusinessEntityImpl.java:114) at org.nuiton.wikitty.dto.DTOHelper.fromDto(DTOHelper.java:59) at fr.inra.refcomp.services.StorageServiceImpl.saveAgent(StorageServiceImpl.java:413) at fr.inra.refcomp.server.StorageServiceImpl.saveAgent(StorageServiceImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) Caused by: org.apache.commons.beanutils.ConversionException: No value specified for 'Date' at org.apache.commons.beanutils.converters.AbstractConverter.handleMissing(AbstractConverter.java:310) at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:136) at org.apache.commons.beanutils.converters.ConverterFacade.convert(ConverterFacade.java:60) at org.apache.commons.beanutils.BeanUtilsBean.convert(BeanUtilsBean.java:1078) at org.apache.commons.beanutils.BeanUtilsBean.copyProperty(BeanUtilsBean.java:437) at org.nuiton.wikitty.WikittyUtil.copyBean(WikittyUtil.java:1035) at org.nuiton.wikitty.entities.BusinessEntityImpl.copyFrom(BusinessEntityImpl.java:112) at org.nuiton.wikitty.dto.DTOHelper.fromDto(DTOHelper.java:59) at fr.inra.refcomp.services.StorageServiceImpl.saveAgent(StorageServiceImpl.java:413) at fr.inra.refcomp.server.StorageServiceImpl.saveAgent(StorageServiceImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
On Wed, 08 Dec 2010 14:09:10 +0100 Jean Couteau <couteau@codelutin.com> wrote:
Je fais des copies de dto dont tous les champs ne sont pas remplis (certains sont null) sans problème. Mais pour un dto avec un champ Date null, j'ai l'erreur [1]. Je n'ai aucun problème si la date est non nulle. Je dirais (juste histoire de la ramener...) qu'il fallait pas utiliser BeanUtils :)
J'avais parlé de notre api qui fait bien les choses mais wikitty n'en n'a pas voulu donc tant pis pour vous... C'est toujours plaisant de voir qu'en interne on arrive même pas à utiliser notre propre libs, alors j'imagine même pas que quelqu'un de l'extérieur ai envie :)
Caused by: org.nuiton.wikitty.WikittyException: Can't copy source object dto:c405535b-3ec1-4b65-9a32-a8a3829d8af3:2.1.20 at org.nuiton.wikitty.entities.BusinessEntityImpl.copyFrom(BusinessEntityImpl.java:114) at org.nuiton.wikitty.dto.DTOHelper.fromDto(DTOHelper.java:59) at fr.inra.refcomp.services.StorageServiceImpl.saveAgent(StorageServiceImpl.java:413) at fr.inra.refcomp.server.StorageServiceImpl.saveAgent(StorageServiceImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) Caused by: org.apache.commons.beanutils.ConversionException: No value specified for 'Date' at org.apache.commons.beanutils.converters.AbstractConverter.handleMissing(AbstractConverter.java:310) at org.apache.commons.beanutils.converters.AbstractConverter.convert(AbstractConverter.java:136) at org.apache.commons.beanutils.converters.ConverterFacade.convert(ConverterFacade.java:60) at org.apache.commons.beanutils.BeanUtilsBean.convert(BeanUtilsBean.java:1078) at org.apache.commons.beanutils.BeanUtilsBean.copyProperty(BeanUtilsBean.java:437) at org.nuiton.wikitty.WikittyUtil.copyBean(WikittyUtil.java:1035) at org.nuiton.wikitty.entities.BusinessEntityImpl.copyFrom(BusinessEntityImpl.java:112) at org.nuiton.wikitty.dto.DTOHelper.fromDto(DTOHelper.java:59) at fr.inra.refcomp.services.StorageServiceImpl.saveAgent(StorageServiceImpl.java:413) at fr.inra.refcomp.server.StorageServiceImpl.saveAgent(StorageServiceImpl.java:85) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207) at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243) at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) _______________________________________________ Wikitty-users mailing list Wikitty-users@list.nuiton.org http://list.nuiton.org/cgi-bin/mailman/listinfo/wikitty-users
On Wed, 8 Dec 2010 18:49:37 +0100 chemit <chemit@codelutin.com> wrote:
On Wed, 08 Dec 2010 14:09:10 +0100 Jean Couteau <couteau@codelutin.com> wrote:
Je fais des copies de dto dont tous les champs ne sont pas remplis (certains sont null) sans problème. Mais pour un dto avec un champ Date null, j'ai l'erreur [1]. Je n'ai aucun problème si la date est non nulle. Je dirais (juste histoire de la ramener...) qu'il fallait pas utiliser BeanUtils :)
J'avais parlé de notre api qui fait bien les choses mais wikitty n'en n'a pas voulu donc tant pis pour vous...
J'en veux bien, mais meme si elle est bien documentée (javadoc presente) il manque l'essentiel comment l'utiliser :( (il faudrait des exemples par exemple dans package-info.java plutot que ce qu'il y a dedans actuellement ;) Moi j'ai besoin de la methode Binder.copyExcluding(I source, O target, String... propertyNames); Comment je fais ? Ce que j'aimerais c'est avoir seulement ca a faire: BinderUtil.copyExcluding(dto, business, "version"); et aussi BinderUtil.copyExcluding(business, dto, "version"); Sachant que dto et business implante la même interface. Et c'est exactement ce que propose BeanUtils a l'exclusion pret (il ne le permet pas) :(. Alors pourquoi utiliser une api que je ne comprend pas alors qu'il y en a une qui me tend les bras avec ca joli methode ? Et bien parce que une fois essayer l'api qui me tend les bras, il s'avère qu'elle ne fonctionne pas :(. D'ou mais question pour utilise l'api de nuiton-utils. ps: la presentation de petite lib comme celle-la en reunion dev aurait vraiment sa place, si tu veux que tout le monde sache qu'elle existe et sache comme l'utiliser. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
On Wed, 8 Dec 2010 23:27:22 +0100 Benjamin POUSSIN <poussin@codelutin.com> wrote:
J'en veux bien, mais meme si elle est bien documentée (javadoc presente) il manque l'essentiel comment l'utiliser :( (il faudrait des exemples par exemple dans package-info.java plutot que ce qu'il y a dedans actuellement ;) je regarderais pour faire une docs friendly.
Moi j'ai besoin de la methode
Binder.copyExcluding(I source, O target, String... propertyNames);
Comment je fais ? Ce que j'aimerais c'est avoir seulement ca a faire:
BinderUtil.copyExcluding(dto, business, "version"); et aussi BinderUtil.copyExcluding(business, dto, "version");
Sachant que dto et business implante la même interface.
Et c'est exactement ce que propose BeanUtils a l'exclusion pret (il ne le permet pas) :(. oui c'était l'un des but de l'api :)
Alors pourquoi utiliser une api que je ne comprend pas alors qu'il y en a une qui me tend les bras avec ca joli methode ? Et bien parce que une fois essayer l'api qui me tend les bras, il s'avère qu'elle ne fonctionne pas :(. D'ou mais question pour utilise l'api de nuiton-utils. Oui donc en gros on préfère utiliser des trucs extérieurs plutôt que ce que ses petits camarades ont fait, je trouve ça vachement sympa :)
En ce qui concerne les docs, je regarderais ce qu'il y a mais ça me paraissait clair (mais pas pour toi:)).
ps: la presentation de petite lib comme celle-la en reunion dev aurait vraiment sa place, si tu veux que tout le monde sache qu'elle existe et sache comme l'utiliser.
Oui pourquoi pas, au passage y'a jamais eu de présentation de commons-bean en réunion dev et pourtant tu t'en sers ;)
participants (3)
-
Benjamin POUSSIN -
chemit -
Jean Couteau