J’ai un business object avec code custo dont j’ai commenté des getField pour investiguer une erreur que je voyais dans les logs. Le problème c’est qu’au rechargement de la vue d’administration de ce business object après modification, j’ai eu une NPE puis la disparition de l’intégralité du code de mon business object. En cliquant sur éditer : la fenêtre de choix de langage apparaît et si je choisis Java, j’ai un code vierge pour cet objet. En remettant le code initial de mon objet (avant commentaires) et sauvegardant, la NPE apparaît de nouveau et le code redisparaît.
Le problème vient peut-être d’autre chose mais c’est les seules actions que j’ai réussi à déterminer.
Le code de mon objet avant commentaires :
package com.simplicite.objects.RenaultSites;
import java.util.ArrayList;
import java.util.List;
import com.simplicite.util.Globals;
import com.simplicite.util.ObjectDB;
import com.simplicite.util.ObjectField;
import com.simplicite.util.Tool;
/**
* Real estate identifier value
*/
public class SitesRealEstateAssetIdentifierValue extends com.simplicite.commons.RenaultSites.SitesCommon {
private static final long serialVersionUID = 1L;
/** Hook override */
@Override
public void postLoad() {
setIdentifierField("sitesIdvIdentifier", "ADV", 8, null);
}
/** Hook override */
@Override
public void initList(ObjectDB parent) {
// XOR pattern => both FK visible on list
getField("sitesIdvReaId").setVisibility(ObjectField.VIS_BOTH);
getField("sitesIdvAcpId").setVisibility(ObjectField.VIS_BOTH);
}
/** Hook override */
@Override
public void initCreate() {
// XOR pattern => both FK visible on create form
getField("sitesIdvReaId").setVisibility(ObjectField.VIS_BOTH);
getField("sitesIdvAcpId").setVisibility(ObjectField.VIS_BOTH); // Ligne commentée n°1
}
/** Hook override */
@Override
public void initUpdate() {
// XOR pattern => only relevant FK visible on update form
// ObjectField f = getField("sitesIdvReaId");
// f.setVisibility(f.isEmpty() ? ObjectField.VIS_HIDDEN : ObjectField.VIS_BOTH);
// f = getField("sitesIdvAcpId");
// f.setVisibility(f.isEmpty() ? ObjectField.VIS_HIDDEN : ObjectField.VIS_BOTH);
}
/** Hook override */
@Override
public void initCopy() {
initUpdate();
}
/** Hook override */
@Override
public List<String> postValidate() {
List<String> errs = new ArrayList<>();
// Enforce XOR on links
int n = 0;
if (!Tool.isEmpty(getFieldValue("sitesIdvReaId"))) n++;
if (!Tool.isEmpty(getFieldValue("sitesIdvAcpId"))) n++; // Ligne commentée n°2
if (n!=1)
errs.add("SITES_IDV_XOR");
return Tool.merge(errs, super.postValidate(), false);
}
}
La NPE :
2019-06-27 23:43:38,634 FATAL [com.simplicite.util.ObjectDirect] SIMPLICITE|http://12d81b031d6d:8080||FCOREOM002|system|com.simplicite.util.ObjectDirect|init||Error init Object SitesRealEstateAssetIdentifierValue for user system
java.lang.NullPointerException
at com.simplicite.util.SharedScript.getSource(SharedScript.java:116)
at com.simplicite.util.engine.CoreCache.getDocScript(CoreCache.java:2068)
at com.simplicite.util.engine.ObjectLoader.loadFromDB(ObjectLoader.java:477)
at com.simplicite.util.engine.ObjectLoader.getClone(ObjectLoader.java:155)
at com.simplicite.util.engine.ObjectLoader.load(ObjectLoader.java:86)
at com.simplicite.util.ObjectDirect.init(ObjectDirect.java:42)
at com.simplicite.util.ObjectDB.init(ObjectDB.java:223)
at com.simplicite.util.ObjectDB.load(ObjectDB.java:203)
at com.simplicite.util.engine.CoreCache.instantiateObject(CoreCache.java:2972)
at com.simplicite.util.engine.CoreCache.getObject(CoreCache.java:2931)
at com.simplicite.util.engine.CoreCache.preCompileObject(CoreCache.java:345)
at com.simplicite.util.engine.CoreCache.getObjectDefinition(CoreCache.java:2861)
at com.simplicite.objects.System.ObjectFieldSystem.getStyle(ObjectFieldSystem.java:147)
at com.simplicite.util.tools.JSONTool.objectFieldMetaDataToJson(JSONTool.java:865)
at com.simplicite.util.tools.JSONTool.rowMetaDataToJson(JSONTool.java:1620)
at com.simplicite.util.tools.JSONTool.listToJson(JSONTool.java:2128)
at com.simplicite.util.tools.JSONTool.list(JSONTool.java:2449)
at com.simplicite.webapp.tools.JSONServletTool.search(JSONServletTool.java:689)
at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:218)
at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:194)
at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:519)
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.AuthMethodFilter.doFilter(AuthMethodFilter.java:115)
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.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 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:490)
at com.simplicite.tomcat.valves.APISessionValve.invoke(Unknown Source)
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:678)
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:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Est-ce que le code partagé “SitesCommon” existe bien toujours sur cette instance ? Est-ce qu’il compile toujours ? De ce que je vois ça semble un pb lié à ce code partagé…
Pour investiguer un pb comme celui là j’aurais besoin de pouvoir le reproduire sur une instance sur notre serveur cloud (que je peux si besoin cloner et passer en mode debug). Bref reproduis tu ce pb sur une instance du serveur renault.simplicite.io ?
Dans la mesure où, avec PostgreSQL les docs sont stockées en base (dans des BLOBs) et que le pb se produit à la lecture d’un tel doc, ça vaudrait donc peut être la peine d’avoir au moins une instance calée sur la même version de PostgreSQL que celle que vous utilisez on premises (à savoir 10.6 si j’en crois ton /health). On ne sait jamais…
Je vais regarder si je peux changer facilement la version de PostgreSQL sur le serveur renault.simplicite.io.
@bmo a reconnu ce problème qui lui était arrivé il y a deux ans. Pour lui c’est un problème au niveau de la sauvegarde du fichier car le fichier n’a pas bien été supprimé de la base et à la sauvegarde il y a un problème de clé. On a retesté et on constate bien l’erreur suivante à la sauvegarde du code du business object :
2019-06-28 10:53:01,376 ERROR [com.simplicite.util.ObjectDirect] SIMPLICITE|http://12d81b031d6d:8080||ECORED0001|system|com.simplicite.util.ObjectDirect|save||Error DocumentSystem
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "m_document_uk"
Detail: Key (dbd_path)=(ObjectInternal/obo_script_id/0/2111/SitesRealEstateAssetIdentifierValue.java) already exists.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:120)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)
at com.simplicite.util.engine.DBAccess.update(DBAccess.java:1528)
at com.simplicite.util.engine.ObjectManager.create(ObjectManager.java:1675)
at com.simplicite.util.engine.ObjectManager.save(ObjectManager.java:2706)
at com.simplicite.util.ObjectDirect.save(ObjectDirect.java:442)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:946)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:933)
at com.simplicite.util.tools.DocTool.upload(DocTool.java:526)
at com.simplicite.util.engine.ObjectManager.upload(ObjectManager.java:1772)
at com.simplicite.util.engine.ObjectManager.update(ObjectManager.java:2301)
at com.simplicite.util.engine.ObjectManager.save(ObjectManager.java:2727)
at com.simplicite.util.ObjectDirect.save(ObjectDirect.java:442)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:946)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:933)
at com.simplicite.util.tools.EditorTool.save(EditorTool.java:253)
at com.simplicite.util.tools.EditorTool.service(EditorTool.java:65)
at com.simplicite.webapp.tools.JSONServletTool.applicationService(JSONServletTool.java:296)
at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:70)
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.AuthMethodFilter.doFilter(AuthMethodFilter.java:115)
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.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 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:490)
at com.simplicite.tomcat.valves.APISessionValve.invoke(Unknown Source)
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:678)
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:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Edit : on a tenté de trouver l’entrée dans m_document pour le business object en question en faisant une recherche de document pour Path *SitesRealEstateAssetIdentifierValue* mais sans succès. Si c’est bien ce qu’on doit corriger, comment peut-on retrouver la clé du code de cet objet pour purger la table ?
Mmm bizarre, la unique key de m_document c’est le dbd_path donc la requête pour trouver le doublon ça devrait $etre du genre select * from m_document where dbd_path like '%SitesRealEstateAssetIdentifierValue%' => ça donne quoi ?
J’ai tenté le Synchronize documents, ça donne ce résultat :
Document fields:
Reset m_object.obj_script_id for row_id=2111
Reset m_xml.xsp_log_id for row_id=173
Reset m_xml.xsp_log_id for row_id=165
Reset m_xml.xsp_log_id for row_id=168
Reset m_xml.xsp_log_id for row_id=170
Reset m_xml.xsp_log_id for row_id=171
Reset m_xml.xsp_log_id for row_id=174
Reset m_xml.xsp_log_id for row_id=177
Reset m_xml.xsp_log_id for row_id=166
Reset m_xml.xsp_log_id for row_id=167
Reset m_xml.xsp_log_id for row_id=169
Reset m_xml.xsp_log_id for row_id=172
Reset m_xml.xsp_log_id for row_id=175
Reset m_xml.xsp_log_id for row_id=176
Reset m_xml.xsp_log_id for row_id=178
Reset m_xml.xsp_src_id for row_id=173
Reset m_xml.xsp_src_id for row_id=170
Reset m_xml.xsp_src_id for row_id=171
Reset m_xml.xsp_src_id for row_id=174
Reset m_xml.xsp_src_id for row_id=168
Reset m_xml.xsp_src_id for row_id=177
Reset m_xml.xsp_src_id for row_id=167
Reset m_xml.xsp_src_id for row_id=169
Reset m_xml.xsp_src_id for row_id=172
Reset m_xml.xsp_src_id for row_id=166
Reset m_xml.xsp_src_id for row_id=175
Reset m_xml.xsp_src_id for row_id=176
Reset m_xml.xsp_src_id for row_id=178
Reset m_xml.xsp_src_id for row_id=165
Document entries:
Summary:
0 document fields fixed because of missing document.
29 document fields reset because of missing document.
0 document imported as BLOB.
0 document exported from BLOB to disk.
0 document(s) deleted because of missing physical file.
0 documents(s) deleted because not used by any document field.
0 file(s) deleted because not referenced as document.
Après ça, j’ai tenté de resauvegarder le code de mon Business Object mais j’ai toujours une Stack, différente cette fois-ci (et le code ne reste toujours pas) :
2019-06-28 14:34:15,857 ERROR [com.simplicite.util.ObjectDirect] SIMPLICITE|http://12d81b031d6d:8080||ECORED0001|system|com.simplicite.util.ObjectDirect|save||Error DocumentSystem
org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "m_document_uk"
Detail: Key (dbd_path)=(ObjectInternal/obo_script_id/0/2111/SitesRealEstateAssetIdentifierValue.java) already exists.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:120)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)
at org.apache.tomcat.dbcp.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)
at com.simplicite.util.engine.DBAccess.update(DBAccess.java:1528)
at com.simplicite.util.engine.ObjectManager.create(ObjectManager.java:1675)
at com.simplicite.util.engine.ObjectManager.save(ObjectManager.java:2706)
at com.simplicite.util.ObjectDirect.save(ObjectDirect.java:442)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:946)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:933)
at com.simplicite.util.tools.DocTool.upload(DocTool.java:526)
at com.simplicite.util.engine.ObjectManager.upload(ObjectManager.java:1772)
at com.simplicite.util.engine.ObjectManager.update(ObjectManager.java:2301)
at com.simplicite.util.engine.ObjectManager.save(ObjectManager.java:2727)
at com.simplicite.util.ObjectDirect.save(ObjectDirect.java:442)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:946)
at com.simplicite.util.ObjectDB.save(ObjectDB.java:933)
at com.simplicite.util.tools.EditorTool.save(EditorTool.java:253)
at com.simplicite.util.tools.EditorTool.service(EditorTool.java:65)
at com.simplicite.webapp.tools.JSONServletTool.applicationService(JSONServletTool.java:296)
at com.simplicite.webapp.servlets.AbstractJSONServlet.service(AbstractJSONServlet.java:70)
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.AuthMethodFilter.doFilter(AuthMethodFilter.java:115)
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.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 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:490)
at com.simplicite.tomcat.valves.APISessionValve.invoke(Unknown Source)
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:678)
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:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Pour select * from m_document where dbd_path like '%.java' je vois tous les fichiers sauf celui dont on parle ici.
Pour le select * from m_document where dbd_name is null or dbd_path is null je n’ai aucun résultat.
Pour vérifier la structure de la base et potentiellement chercher des index, j’ai une demande d’accès à la base en cours…
Ma demande sur la structure de base c’est au cas où la colonne dbd_path ne serait pas de type text mais un varchar pas assez grand pour ce nom relativement long. Mais franchement je comprendrais pas pourquoi.
Quid de la requête select * from m_document where dbd_object_id = 2111 ?
implique forcément que la requête select * from m_document where dbd_path = 'ObjectInternal/obo_script_id/0/2111/SitesRealEstateAssetIdentifierValue.java' renvoie une ligne !
Où alors il y a une truc très subtil qui se produit mais je ne vois vraiment pas quoi…
Je viens de refaire tout le use case ce matin et j’ai toujours une erreur mais ce n’est plus la même. Elle apparaît désormais lorsque j’ouvre le business object SitesRealEstateAssetIdentifierValue après avoir collé le code, sauvegardé et vidé le cache ; et l’erreur est la suivante :
2019-07-01 09:38:03,171 FATAL [com.simplicite.util.ObjectDirect] SIMPLICITE|http://71e4dd1fef56:8080||FCOREOM002|system|com.simplicite.util.ObjectDirect|init||Error init Object SitesRealEstateAssetIdentifierValue for user system
java.lang.NullPointerException
at com.simplicite.util.SharedScript.getSource(SharedScript.java:116)
at com.simplicite.util.engine.CoreCache.getDocScript(CoreCache.java:2068)
at com.simplicite.util.engine.ObjectLoader.loadFromDB(ObjectLoader.java:477)
at com.simplicite.util.engine.ObjectLoader.getClone(ObjectLoader.java:155)
at com.simplicite.util.engine.ObjectLoader.load(ObjectLoader.java:86)
at com.simplicite.util.ObjectDirect.init(ObjectDirect.java:42)
at com.simplicite.util.ObjectDB.init(ObjectDB.java:223)
at com.simplicite.util.ObjectDB.load(ObjectDB.java:203)
at com.simplicite.util.engine.CoreCache.instantiateObject(CoreCache.java:2972)
at com.simplicite.util.engine.CoreCache.getObject(CoreCache.java:2931)
at com.simplicite.util.engine.CoreCache.preCompileObject(CoreCache.java:345)
at com.simplicite.util.engine.CoreCache.getObjectDefinition(CoreCache.java:2861)
at com.simplicite.objects.System.ObjectFieldSystem.getStyle(ObjectFieldSystem.java:147)
at com.simplicite.util.tools.JSONTool.objectFieldMetaDataToJson(JSONTool.java:865)
at com.simplicite.util.tools.JSONTool.rowMetaDataToJson(JSONTool.java:1620)
at com.simplicite.util.tools.JSONTool.listToJson(JSONTool.java:2128)
at com.simplicite.util.tools.JSONTool.list(JSONTool.java:2449)
at com.simplicite.webapp.tools.JSONServletTool.search(JSONServletTool.java:689)
at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:218)
at com.simplicite.webapp.ObjectJson.search(ObjectJson.java:194)
at com.simplicite.webapp.tools.JSONServletTool.businessObjectService(JSONServletTool.java:519)
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:115)
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:490)
at com.simplicite.tomcat.valves.APISessionValve.invoke(Unknown Source)
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:678)
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:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:853)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1587)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
J’y ai importé le module exporté depuis ton instance + complété avec le code que tu m’as transmis par mail.
Je n’ai pas de pb visible…
Juste si je décommente la partie suivante du code:
ObjectField f = getField("sitesIdvReaId");
f.setVisibility(f.isEmpty() ? ObjectField.VIS_HIDDEN : ObjectField.VIS_BOTH);
f = getField("sitesIdvAcpId");
f.setVisibility(f.isEmpty() ? ObjectField.VIS_HIDDEN : ObjectField.VIS_BOTH);
J’ai alors un pb d’attribut sitesIdvAcpId inconnu à l’exécution:
CORED0001|system|com.simplicite.objects.RenaultSites.SitesRealEstateAssetIdentifierValue|getField|Error Object SitesRealEstateAssetIdentifierValue: unknown field sitesIdvAcpId.
ECORED0001|system|com.simplicite.webapp.ObjectContextWeb|setContext|Error Error in initList hook for object SitesRealEstateAssetIdentifierValue