Erreur de compilation hookBegin

Request description

Bonjour,

j’ai une erreur de compilation lorsque j’essaye d’implémenter le hook de la documentation dans un objet du module Démo :

Message de la pop-in du code editor :

Java compilation error (status 1)
/usr/local/tomcat/webapps/ROOT/WEB-INF/src/com/simplicite/objects/Demo/DemoProduct.java:40: error: method does not override or implement a method from a supertype
  @Override
  ^
/usr/local/tomcat/webapps/ROOT/WEB-INF/src/com/simplicite/objects/Demo/DemoProduct.java:47: error: reference to hookBegin is ambiguous
    super.hookBegin(hook, maxTime, maxStack);
         ^
  both method hookBegin(String,int,int,Object...) in ObjectCore and method hookBegin(String,Object...) in ObjectCore match
2 errors

PS: je ne retrouve plus le tableau avec l’ordre des hooks dans la documentation. Il me semblait qu’elle était dans la partie Tutoriel

Technical information

Instance /health
[Platform]
Status=OK
Version=6.2.15
BuiltOn=2025-08-15 11:39
Git=6.2/309efbdf46b217e3145711d1c47c3e5ad5459aa5
Encoding=UTF-8
EndpointIP=100.88.242.57
EndpointURL=http://lbc-77449-app-7bbc4db5bc-9dbht:8080
TimeZone=Europe/Paris
SystemDate=2025-10-31 09:41:50

[Application]
ApplicationVersion=1.0.0
ContextPath=
ContextURL=https://ldm-app.ext.gke2.dev.gcp.renault.com
ActiveSessions=1
LastLoginDate=2025-10-31 09:19:06

[Server]
ServerActiveSessions=9
ServerSessionTimeout=30
CronStarted=true

[JavaVM]
HeapFree=202654
HeapSize=573440
HeapMaxSize=3758080
TotalFreeSize=3387294

[Cache]
ObjectCache=213
ObjectCacheMax=10000
ObjectCacheRatio=2
ProcessCache=0
ProcessCacheMax=10000
ProcessCacheRatio=0
APIGrantCache=0
APIGrantCacheMax=1000
APIGrantRatio=0

[Healthcheck]
Date=2025-10-31 09:41:50
ElapsedTime=8
Simplicité logs
Java compilation error (status 1)
/usr/local/tomcat/webapps/ROOT/WEB-INF/src/com/simplicite/objects/Demo/DemoProduct.java:40: error: method does not override or implement a method from a supertype
  @Override
  ^
/usr/local/tomcat/webapps/ROOT/WEB-INF/src/com/simplicite/objects/Demo/DemoProduct.java:47: error: reference to hookBegin is ambiguous
    super.hookBegin(hook, maxTime, maxStack);
         ^
  both method hookBegin(String,int,int,Object...) in ObjectCore and method hookBegin(String,Object...) in ObjectCore match
2 errors
Browser logs
---paste content of the **relevant** browser-side logs---
Other relevant information

----E.g. type of deployment, browser vendor and version, etc.----

La documentation (et le snippet de l’éditeur de code) n’était pas à jour, la signature de cette méthode est:

@Override
protected void hookBegin(
    String hook,
    int maxTime,
    int maxStack,
    Object... args)
  throws HookException
{
    // ...		
}

C’est corrigé au niveau de la doc. Ce le sera au niveau du snippet dans la prochaine révision 6.2.18 qui sera releasée aujourd’hui.

Merci pour ton retour rapide.

Les 4 méthodes sont introuvables également dans la javadoc( si possible d’update svp).

Concernant la maj de la doc , peut-on esperer retrouver le tableaux des business object hooks ainsi que l’ordre d’éxecution (lifecycle d’un objet) ?

Ces méthodes sont protected c’est pour cela qu’elles n’apparaissent pas dans la Javadoc (méthodes publiques uniquement). Leur usage n’a de sens que dans un contexte de strict debugging/optimisation des développements, nous préférons donc ne pas trop les mettre en avant.

Pour ce qui est des appels des hooks vous pouvez activer leur traçage (traceHooks) pour voir précisément ceux qui sont appelés dans tel ou tel contexte et dans quel ordre, cf. Basic code examples | Simplicité Documentation. Attention, là aussi utiliser ce traçage n’a de sens qu’en développement pour des phases de debugging/optimisation, il ne faut jamais livrer du code avec ces traces au risque d’avoir de très mauvaises performances.

Autre approche moins intrusive dans le code (donc sans risque de livrer des choses inappropriées en prod) pour suivre les appels de hooks c’est de passer votre code au debugger en démarrant votre instance en mode remote debug, cf. Remote debug | Simplicité Documentation

Ces méthodes sont implémentées dans le cas d’une étude de performance sur des actions et hooks ciblées.

Concernant les hooks et leurs executions, j’ai pu retrouver l’enchainement mais l’image des hooks “historiques” était quand même bien pratique :grin:

C’est ce que j’entends par “optimisation”, gardez en tête que ces méthodes ajoutent des traitements qui ont un coût, donc les performances que vous obtenez avec sont moins bonnes que celles que vous aurez sans.

Autrement dit, c’est un outillage d’ingénierie qui sert à cibler les traitements qui prennent trop de temps et les optimiser, ce n’est pas un outillage pour mesurer les performances (pour cela faites plutôt des benchs sur des scénarii et jeux de données représentatifs avec des outils ad hoc)