Erreur Outdated deprecated method

4.0
Tags: #<Tag:0x00007f7d74a182d8>
Erreur Outdated deprecated method
0

#1

Bonjour,

J’ai 4 messages d’erreur identiques quand je mets à jour une instance d’un objet m’évoquant une “Outdated deprecated method” :

2018-05-14 13:49:26,207 ERROR [com.simplicite.util.ScriptedObjectDB] SIMPLICITE|http://c49bab047143:8080||ERROR|system|com.simplicite.util.ScriptedObjectDB|[] syntax in expressions||Event: Outdated deprecated method, call stack: com.simplicite.util.AppLog.deprecation[519]
com.simplicite.util.ObjectCore.prepareExpression[3576]
com.simplicite.util.ScriptedObjectDB.evalExpression[258]
com.simplicite.util.ObjectCore.evalExpression[2938]
com.simplicite.util.FieldValidation.eval[363]
com.simplicite.util.ObjectField.eval[2512]
com.simplicite.util.ObjectDB.evalCalculatedFields[1717]
com.simplicite.util.engine.ObjectManager.update[1881]
com.simplicite.util.engine.ObjectManager.save[2516]
com.simplicite.util.ObjectDirect.save[424]
com.simplicite.util.ObjectDB.save[886]
com.simplicite.util.tools.BusinessObjectTool.update[241]
com.simplicite.util.tools.BusinessObjectTool.save[215]
com.simplicite.util.tools.BusinessObjectTool.validateAndSave[257]
com.simplicite.util.ScriptedObjectDB.callFunction[215]
com.simplicite.util.ScriptedObjectDB.callFunction[189]
com.simplicite.util.ScriptedObjectDB.postSave[611]
com.simplicite.util.engine.ObjectManager.save[2522]
com.simplicite.util.ObjectDirect.save[424]
com.simplicite.util.ObjectDB.save[886]
com.simplicite.webapp.tools.JSONServletTool.update[900]
com.simplicite.webapp.ObjectJson.update[352]
com.simplicite.webapp.tools.JSONServletTool.businessObjectService[476]
com.simplicite.webapp.servlets.AbstractJSONServlet.service[82]
com.simplicite.webapp.filters.AuthMethodFilter.doFilter[112]

J’ai beau débugué le script de l’objet pas à pas et jusqu’à mettre tout le code en commentaire je n’arrive pas à trouver d’où vient le problème.

Est ce que vous aurez des pistes pour corriger cette erreur qui en passant ne dégrade pas le fonctionnement implémenté?

En vous remerciant

Zouhair


(David AZOULAY) #2

Les messages de logs de type “deprecation” indiquent des utilisations d’APIs deprecated ou de syntaxes d’expressions qui ne sont plus sensées être utilisées.

Il y a 2 étapes dans la deprecation, au début (i.e. pendant au moins 1 version) c’est juste un warning de “simple deprecation” qui suggère de changer son code ou son paramétrage, ensuite on passe en “outdated deprecation” et ça devient des erreurs. Ca signifie que ces APIs ou syntaxes ne sont plus gérées, qu’elles ne sont plus garanties de fonctionner et qu’elles vont bientôt définitivement disparaître.

Là c’est à priori des expressions (valeur par défaut et/ou champ calculé) en [<nom de l'attribut>] ce qui est une syntaxe deprecated depuis la 2.6 et qui doit être réécrit en [VALUE:<nom du l'attribut>].

Ce point ainsi que les autres points d’attention relatifs aux deprecations sont décrits dans le document suivant: https://www.simplicite.io/resources/4.0/upgrading.md


#3

Merci beaucoup David ! C’est corrigé

Zouhair


(David AZOULAY) #4

OK super, si tu vois d’autre warning de “simple deprecation”, fais les modifs recommandées avant que ça ne devienne des “outdated deprecation”.

Dans la plupart des cas “outdated deprecated” veut vraiment dire que ça ne marche plus (ou seulement dans des cas particuliers). Là tu as eu de la chance c’est une syntaxe ancienne qui pose surtout pb pour les expressions complexes mais qui marche encore dans des cas simples. En tout cas elle va bientôt ne plus être supportée.


#5

Dans ce cas là, je me permets de t’embêter encore un peu. Depuis un moment nous avons ce message que je n’arrive pas à interpréter :

2018-05-14 14:58:33,004 WARN [com.simplicite.webapp.Application] SIMPLICITE|http://c49bab047143:8080||WARN|system|com.simplicite.webapp.Application|Application.fireEvent||Event: Deprecated method, please use Events.pushObject


(David AZOULAY) #6

Ce warning est niveau socle, il signifie à priori que votre instance ne gère pas les websockets et, du coup, certains events (ex: entre le modeler et le formulaire) sur la UI legacy sont notifiés via un “ancien” canal de push considéré comme deprecated (et je ne sais pas s’il marche encore ou pas). Je pense que ça ne concerne pas la UI responsive.

@francois je dis pas de bêtises ?