CQP, restore CQL error messages
fr - slh 09/02/2021
Depuis TXM 0.8.1, on a perdu en finesse de messages de diagnostic des
problèmes courants en CQL.
En cas de problème, les messages d’erreurs dans la console incluent une
stacktrace brute et une stacktrace synthètique, comme ci-dessous (cas A
et cas B, je n’ai pas analysé tous les cas).
En fait, les stacktraces ne sont pas utiles à l’utilisateur et je me demande si elles sont utiles aux développeurs dans la mesure où il s’agit d’erreurs de syntaxe (pas du logiciel).
Voici ce qu’il faut a minima afficher pour chacun de ces cas :
- cas A :
Concordance de <#[^0-9]#>dans le corpus
CORPUSDEDEVELOPPEMENTTXT…
Erreur interne liée à la requête CQL, abandon de la commande.
- cas B :
Concordance de <[^0-9>dans le corpus CORPUSDEDEVELOPPEMENTTXT…
Erreur de syntaxe d’expression régulière, abandon de la commande.
Si on pouvait faire plus précis et exhaustif, ce serait mieux. Il faut généraliser à tous les cas d’erreur retournés par CQP/CQi.
Cas A
Concordance de <#[^0-9]#> dans le corpus CORPUSDEDEVELOPPEMENTTXT...
org.txm.searchengine.cqserverException.CqiClErrorInternal:
at org.txm.searchengine.cqMemCqiClient.throwExceptionFromCqi(MemCqiClient.java:165)
at org.txm.searchengine.cqMemCqiClient.throwExceptionFromCqi(MemCqiClient.java:67)
at org.txm.searchengine.cqMemCqiClient.cqpQuery(MemCqiClient.java:409)
at org.txm.searchengine.cqcorpus.CQPCorpus.query(CQPCorpus.java:1360)
at org.txm.searchengine.cqCQPSearchEngine.query(CQPSearchEngine.java:415)
at org.txm.concordance.core.functions.Concordance._compute(Concordance.java:319)
at org.txm.core.results.TXMResult.compute(TXMResult.java:2441)
at org.txm.core.results.TXMResult.compute(TXMResult.java:2327)
at org.txm.rceditors.TXMEditor$4.run(TXMEditor.java:977)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
org.txm.searchengine.cqclientExceptions.CqiClientException: org.txm.searchengine.cqserverException.CqiClErrorInternal:
at org.txm.searchengine.cqcorpus.CQPCorpus.query(CQPCorpus.java:1370)
at org.txm.searchengine.cqCQPSearchEngine.query(CQPSearchEngine.java:415)
at org.txm.concordance.core.functions.Concordance._compute(Concordance.java:319)
at org.txm.core.results.TXMResult.compute(TXMResult.java:2441)
at org.txm.core.results.TXMResult.compute(TXMResult.java:2327)
at org.txm.rceditors.TXMEditor$4.run(TXMEditor.java:977)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: org.txm.searchengine.cqserverException.CqiClErrorInternal:
at org.txm.searchengine.cqMemCqiClient.throwExceptionFromCqi(MemCqiClient.java:165)
at org.txm.searchengine.cqMemCqiClient.throwExceptionFromCqi(MemCqiClient.java:67)
at org.txm.searchengine.cqMemCqiClient.cqpQuery(MemCqiClient.java:409)
at org.txm.searchengine.cqcorpus.CQPCorpus.query(CQPCorpus.java:1360)
... 6 more
TXMResult.compute(): Exception occurs during computing: org.txm.searchengine.cqclientExceptions.CqiClientException: org.txm.searchengine.cqserverException.CqiClErrorInternal: .
Stacktrace:
[1] org.txm.core.results.TXMResult.compute TXMResult.java, 2556
[2] org.txm.core.results.TXMResult.compute TXMResult.java, 2327
[3] org.txm.rceditors.TXMEditor$4. run TXMEditor.java, 977
Cas B
Concordance de <[^0-9> dans le corpus P1S8...
org.txm.searchengine.cqserverException.CqiClErrorRegex:
at org.txm.searchengine.cqMemCqiClient.throwExceptionFromCqi(MemCqiClient.java:156)
at org.txm.searchengine.cqMemCqiClient.throwExceptionFromCqi(MemCqiClient.java:67)
...
at org.txm.searchengine.cqMemCqiClient.cqpQuery(MemCqiClient.java:409)
at org.txm.searchengine.cqcorpus.CQPCorpus.query(CQPCorpus.java:1435)
... 6 more
TXMResult.compute(): Exception occurs during computing: org.txm.searchengine.cqclientExceptions.CqiClientException: org.txm.searchengine.cqserverException.CqiClErrorRegex: .
Stacktrace:
[1] org.txm.core.results.TXMResult.compute TXMResult.java, 2554
[2] org.txm.core.results.TXMResult.compute TXMResult.java, 2326
[3] org.txm.rceditors.TXMEditor$4. run TXMEditor.java, 979
Solution
- remove the unnecessary full stacktraces
- catch CQP error messages when Concordance.compute() fails
- catch CQP error messages when ConcordanceEditor.updateEditorFromResult() and highlight the CQL query field
(from redmine: issue id 3018, created on 2021/02/09 by Matthieu Decorde)