cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Re: Comment acceder au contexte authentication depuis le flowscript
Date Fri, 19 Aug 2005 07:59:30 GMT
Marc Salvetti wrote:

> <snip/>
>
>>
>> Hmm... en remontant la piste depuis setXML, on trouve que 
>> SessionContext.getState() renvoie null. 
>
>
> Comment est-ce que tu arrive a voir ça ds la trace ???


Facile, c'est comme le marc de café. Je peux bien l'avouer, je suis en 
fait Mme Irma sous un pseudo :-D

Plus sérieusement, voici le chemin que j'ai suivi.

Tout d'abord, la partie intéressante de la stacktrace
Caused by: java.lang.NullPointerException
   at 
org.apache.cocoon.webapps.authentication.context.AuthenticationContext.setXML(AuthenticationContext.java:214)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:324)
   at 
org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:230)

Ce qu'on voit là, c'est que le pb est dans setXML(), à la ligne 214, 
appelé depuis le flowscript (NativeMethod.call() suivi d'un appel par 
réflection).

La ligne 214 de AuthenticationContext, dans sa version de la 2.1.7:
        final String applicationName = this.getState().getApplicationName();

Qu'est ce qui peut provoquer une NPE là-dedans? "this" ne peut pas être 
nul, c'est l'objet courant. C'est donc le résultat de getState() qui est 
nul.

En remontant le code qui se déroule dans getState() jusque dans 
DefaultAuthenticationManager, on trouve qu'il s'agit de la valeur de 
l'attribut de requête REQUEST_STATE_KEY. Et le seul endroit où il est 
renseigné est dans setState(), lui-même appelé uniquement par 
DefaultAuthenticationManager dans les méthodes login() et 
checkAuthentication().

Là où je ne pige pas la cause de l'erreur, c'est que 
checkAuthentication() appelle setState() lorsque l'utilisateur a été 
reconnu comme déjà authentifié (credentials stockés en attribut de 
session). Et donc en principe, si on est passé dans <map:act 
type="auth-protect"> l'état devrait être initialisé et on ne devrait pas 
avoir cette NPE.

Est-tu bien sûr que ta requête passe par l'action auth-protect?

Et est-ce vraiment lié au release?

Sylvain

-- 
Sylvain Wallez                        Anyware Technologies
http://people.apache.org/~sylvain     http://www.anyware-tech.com
Apache Software Foundation Member     Research & Technology Director


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Mime
View raw message