Hi guys,
I'm currently writing an action which merges some things from the request
and deli into the AuthenticationContext.
I just don't seem to get the Context, though.
I'd prefer to get it as DOM (a Document or DocumentFragment), so I don't
really want to use streamContextFragment(..) from the sessionManager like
Cocoon's SessionPreTransformer does.
I have the ContextManager and the SessionManager.
I tried with the AuthenticationContextProvider (though I'm really not sure
why this is needed at all), but it returned a NullPointerException.
Well, the action (shortened to the important bits) looks like this:
public void service(ServiceManager manager)... {
super.service(manager);
try {
getDeli();
getContextManager();
getSessionManager();
}
catch (ProcessingException pe) {
throw new ServiceException("Error looking up components.");
}
}
public Map act( ...) ..{
if
(contextManager.existsContext(AuthenticationConstants.SESSION_CONTEXT_NAME))
{
authContext =
(AuthenticationContext)contextManager.getContext(AuthenticationConstants.SES
SION_CONTEXT_NAME);
System.out.println("1st way:
"+sessionManager.getContextFragment(authContext.getName(),"/authentication")
.toString());
System.out.println("2nd way:
"+authContext.getXML("/authentication").toString());}
}
So far this is only for debugging purpose to see if I get the context or not
- but it doesn't look so. This is what the console says:
1st way: [#document-fragment: null]
2nd way: [#document-fragment: null]
My first question would be:
Which is the best way to obtain the authentication context? Via the
SessionManager, ContextManager.. or AuthenticationContextProvider? Is there
any striking difference?
Second question of course: How do I get the context??
The pipeline part looks like this:
<map:act type="auth-protect">
<map:parameter name="handler" value="portalhandler"/>
...
<!-- my action: -->
<map:act type="updateModel">
<map:parameter name="requestParam" value="xml:Foo"/>
</map:act>
...
<map:transform type="session"/>
<map:transform
src="{global:trans}outputauthentication.xsl"/>
<map:transform type="session"/>
...
</map:act>
Funnily the outputauthentication stylesheet (see below) returns the context,
so it must be possible with my action as well :O
<xsl:template match="/">
<authContext ...>
<session:getxml context="authentication"
path="/authentication"/>
</authContext>
</xsl:template>
Thank you for your help!
Cheers and Merry Christmas,
Stefan
P.S.: Using Cocoon 2.1.6 on Tomcat 5.0.28 on JDK 1.4.2_06