je migre en V4 l’application Karta développée en simplicité v3.
La liste des projets s’affiche très bien. (objet CrbKartaProjet).
quand je sélectionne un projet pour afficher le détail, pas de pb non plus.
Par contre, quand je reviens à la liste, j’ai de façon aléatoire ce message, la liste des projets est vide, je dois me déconnecter pour qu’elle s’affiche à nouveau :
2020-04-07 14:15:48,660 WARN [com.simplicite.webapp.servlets.ui.JSONServlet] SIMPLICITE|https://dev-sim:10513/karta|/karta|WARN|system|com.simplicite.webapp.servlets.ui.JSONServlet|service||Evénement: Service error
java.lang.NullPointerException
at com.simplicite.util.tools.JSONTool.actionToJson(JSONTool.java:1926)
at com.simplicite.util.tools.JSONTool.objectMetaDataToJson(JSONTool.java:1270)
at com.simplicite.util.tools.JSONTool.metadata(JSONTool.java:2333)
at com.simplicite.util.tools.JSONTool.metadata(JSONTool.java:2328)
at com.simplicite.webapp.ObjectJson.metadata(ObjectJson.java:80)
at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:532)
at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.RewriteFilter.doFilter(RewriteFilter.java:77)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:133)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at com.simplicite.tomcat.valves.APISessionValve.invoke(APISessionValve.java:187)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Votre objet a-t-il un print template en liste ?
A voir s’il fonctionne quand la liste s’affiche, et pourquoi il disparaît après ouverture du formulaire.
j’ai réécrit mon code en JAVA.
et j’ai toujours des messages de service error :
2020-05-13 12:35:15,563 WARN [com.simplicite.webapp.servlets.ui.JSONServlet] SIMPLICITE|https://dev-sim:10513/karta|/karta|WARN|system|com.simplicite.webapp.servlets.ui.JSONServlet|service||Evénement: Service error
java.lang.NullPointerException
at com.simplicite.util.tools.JSONTool.actionToJson(JSONTool.java:1931)
at com.simplicite.util.tools.JSONTool.objectMetaDataToJson(JSONTool.java:1273)
at com.simplicite.util.tools.JSONTool.metadata(JSONTool.java:2338)
at com.simplicite.util.tools.JSONTool.metadata(JSONTool.java:2333)
at com.simplicite.webapp.ObjectJson.metadata(ObjectJson.java:80)
at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:535)
at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.RewriteFilter.doFilter(RewriteFilter.java:77)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:136)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at com.simplicite.tomcat.valves.APISessionValve.invoke(APISessionValve.java:187)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Le NPE se passe niveau socle sur cette ligne de code:
label = obj.getPrintTemplate(pt).getDisplay();
Comme obj ne peut pas être nul ici c’est donc forcément getPrintTemplate(pt) qui est nul.
Or ce pt est extrait du nom d’une action standard qui se nomme print_<pt>.
La seule explication que je vois c’est donc que vous avez une action qui s’appelle print_* et dont le * ne correspond pas à un nom de publication de votre objet.
Vous êtes forcément dans un cas particulier car on ne voit vraiment pas comment cette erreur pourrait se produire.
On essaie donc juste de comprendre ce cas particulier pour essayer de reproduire le pb.
Essayez donc de nous aider un peu plus ce cas particulier en nous indiquant précisément tout ce qui rend cet objet particulier au niveau de son paramétrage ou de son code.
En attendant on va rajouter un try/catch sur cette partie du code pour trapper ce NPE qui ne devrait pas se produire, ça donnera peut être des pistes.
Il faudrait nous donner le paramétrage de ces 4 PrintTemplate (simple export XML) pour voir s’il y a un problème de chargement des metadata dans un contexte de liste.
j’ai aussi ce message parfois :
2020-05-13 12:06:25,452 WARN [com.simplicite.webapp.servlets.ui.JSONServlet] SIMPLICITE|https://Rec-sim:10283/karta|/karta|WARN|system|com.simplicite.webapp.servlets.ui.JSONServlet|service||Evénement: Service error
java.lang.NullPointerException
at com.simplicite.util.ObjectDB.search(ObjectDB.java:733)
at com.simplicite.util.tools.JSONTool.list(JSONTool.java:2594)
at com.simplicite.webapp.tools.JSONServletTool.search(JSONServletTool.java:710)
at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:219)
at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:195)
at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:540)
at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.RewriteFilter.doFilter(RewriteFilter.java:77)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.simplicite.webapp.filters.AuthMethodFilter.doFilter(AuthMethodFilter.java:136)
at com.simplicite.webapp.filters.AbstractFilter.doFilter(AbstractFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at com.simplicite.tomcat.valves.APISessionValve.invoke(APISessionValve.java:187)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:830)
Le try/catch permettra de retourner des metadata sans l’action qui est en défaut, ce qui ne bloquera plus l’affichage du formulaire ou de la liste. Mais ne corrigera pas le fait que l’action Print ait disparue…
Je vois un problème de robustesse en cas d’appel à setPrintTemplateVisibility(false) via hook. Est-ce que vous utilisez cette méthode ?
Dans ce cas, le getPrintTemplate peut retourner null ce qui expliquerait le NPE.