java.lang.NullPointerException: Cannot invoke "org.json.JSONObject.getString(String)" because "this.m_creds" is null

,

Bonjour,

NPE / m_creds is null sur une instance “front” v4.0-P25 instanciant un ObjectServiceSimplicite hébergé sur une instance “back” v5.1.4:

  • front : Version=4.0.P25 BuiltOn=2021-09-28 22:59 (revision 680201342705438284ecf4de6c17600177b839b1)
  • back : Version=5.1.4 BuiltOn=2021-09-28 23:05 Git=release/50bf90c0522a87f35dbfed9b3880d279f8a30dc7
2021-09-30 14:17:52,023 ERROR [com.simplicite.util.ObjectDirect] SIMPLICITE|http://ad549ae0e704:8080||ECORED0001|system|com.simplicite.util.ObjectDirect|search||Erreur IT4ITProduct
    java.lang.NullPointerException: Cannot invoke "org.json.JSONObject.getString(String)" because "this.m_creds" is null
     at com.simplicite.util.ObjectServiceSimplicite.getAPI(ObjectServiceSimplicite.java:47)

Avec quelle config niveau objet et credentials ?

On va rendre plus robuste au NPE mais il doit y avoir un pb de settings à la base.

Bonjour David, merci pour ton retour rapide.

Filtre (searchspec) paramétré au niveau de l’objet (fait partie du delivery)

{
	"credentials": "IT4IT_SERVICES_CREDENTIALS",
	"remoteName": "IT4ITProduct"
}

Paramètre système IT4IT_SERVICES_CREDENTIALS

{
	"url": "https://int.rfi.dev.aws.renault.com",
	"username": "services",
	"password": "*******",
	"encoding": "UTF-8"
}

Ca semble OK mais à la lecture du code si m_creds est null c’est à priori qu’il y a eu une erreur de parsing (ou autre) de la configuration au moment du postLoad.

Peux tu faire un clear cache partiel sur l’objet et regarder les logs en y accédant. Merci

J’ai tenté les clear cache et les redéploiements… j’ai aussi vérifié qu’il n’y a pas de caractère non UF8… :face_with_head_bandage:

Je veux dire au moment où on accède la première fois à l’objet après un clear cache, le postLoad est appelé, c’est lui qui parse la configuration et ça catche les exceptions pour les tracer dans les logs

Donc ma question est y-a-t-il des traces d’erreur à ce moment ?

Si le postLoad ne s’est pas bien passé alors le NPE en question peut effectivement se produire, on va rendre ça plus propre en évitant le NPE et en mettant une erreur plus explicite mais ça ne résoudra pas ton pb qui est ailleurs.

PS: par hasard as-tu surchargé le hook postLoad de ton objet ? Si oui il faut impérativement appeler le super.postLoad() pour ce genre d’objets service

à nouveau, la honte me submerge… j’ai ajouté une surcharge du postLoad pour paramétrer du debug dans le code de l’objet service et j’ai zappé le super.postLoad()… :flushed:

OK ans la prochaine version ce cas ne finira pas en NPE mais avec un message (un peu) plus clair genre “No credentials” ou “No configuration”.

L’idéal serait toutefois que ce traitement ne soit pas fait dans le postLoad mais dans le load je vais regarder si c’est possible

1 Like

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.